//////////////////////////////////////////////////////////////// // // PURPOSE: This contains ServoModule parameters for Tethys. // // NOTES: All values (except "strings") must be followed by // a unit abbreviation (or one of the unit-like // abbreviations: n/a, bool, enum, count). // //////////////////////////////////////////////////////////////// // General control surface limits mtrLimitHi = 16369 count; // High physical limit for motor controllers mtrLimitLo = 0 count; // Low physical limit for motor controllers massLimitHi = 144180 count; // High physical limit for mass motor controller massLimitLo = -157965 count; // Low physical limit for mass motor controller BuoyancyServo_enable = 1 bool; BuoyancyServo_useHardware = 1 bool; buoyancyCtrlAddress = 6 enum; // Address of the physical motor controller unit on the 485 bus buoyancyCurrLimit = 100 %; // Percent of current allowed buoyancyOvrloadTmout = 10000 ms; // ms until an overload is reported buoyancyPIDw = 1500 count; buoyancyPIDx = 0 count; buoyancyPIDy = 3000 count; buoyancyVelocity = 800 n/a; buoyancyAccel = 800 n/a; buoyancyDefault = 945.0 cc; // default amount of oil to be stored in the bladder buoyancyNeutral = 300.0 cc; // amount of oil stored in the bladder when the vehicle is neutral buoyancyCountsPerCC = 7.446016 count/cc;// counts on the A/D per ml of fluid pumped buoyancyLimitHi = 8200 count; // High physical limit for motor controllers buoyancyLimitLo = 475 count; // Low physical limit for motor controller buoyancyLimitHiCC = 955 cc; // High limit for oil. Should be less than the above physical limit for motor controller buoyancyLimitLoCC = 80 cc; // Low limit for oil. Should be less than the above physical limit for motor controller buoyancyPumpDepth = 75.0 m; // Depth must be <= this value in order to safely pump buoyancyDeviation = 10.0 cc; // Number of ml deviation allowed between expected and actual buoyancyCheckingTimeout = 5.0 min; // If the buoyancy is idling, this is how often to check for actual position. If there's a leak. This is when we'll find it. ElevatorServo_enable = 1 bool; ElevatorServo_useHardware = 1 bool; ElevatorServo_offset = 0 degree; // Elevator motor controller values elevCountsPerDeg = 454.666 count/arcdeg; //195; //motor "ticks" per degree of control surface motion elevMtrCenter = 8184 count; //0 degrees "centered" control surface elevPIDw = 500 count; // Proportional gain elevPIDx = 100 count; // Integral gain elevPIDy = 400 count; // Differential gain elevCurrLimit = 10 %; // Percent of current allowed elevCtrlAddress = 1 enum; // Address of the physical motor controller unit on the 485 bus elevDeviation = .25 arcdeg; // Number of degrees deviation allowed between expected and actual elevLimit = 15. arcdeg; // max elevator angle MassServo_enable = 1 bool; MassServo_useHardware = 1 bool; massPositionLimit = 30 mm; // max offset forward or aft of center massPositionDelay = 7.0 s; // Time (in seconds) after pitch setting change // to use elevator control. After this time, // the elevator is zeroed, and mass control takes over. // Mass shift motor controller values massCtrlAddress = 4 enum; // Address of the physical motor controller unit on the 485 bus massCurrLimit = 100 %; // Percent of current allowed massOvrloadTmout = 1000 ms; // ms until an overload is reported massTks = 250015 count; // Total encoder ticks for full mass shift travel massTksPerMm = 2465.8859 count/mm;// Number of ticks for one rotation (1 mm of travel) massAccel = 20000 n/a; // Encoder ticks / 32.768 per second squared massVelocity = 60000 n/a; // Encoder ticks / 32.768 per scond massDeviation = 0.5 mm; // Deviation allowed between expected and actual massDefault = 0.0 cm; // Position of mass at pitch=0 at neutral buoyancy RudderServo_enable = 1 bool; RudderServo_useHardware = 1 bool; RudderServo_offset = 0 degree; // Rudder motor controller values ruddCountsPerDeg = 454.666 count/arcdeg; //130; 65; // motor "ticks" per degree of control surface motion ruddMtrCenter = 8184 count; // 0 degrees "centered" control surface ruddPIDw = 500 count; // Proportional gain ruddPIDx = 100 count; // Integral gain ruddPIDy = 400 count; // Differential gain ruddCurrLimit = 10 %; // Percent of current allowed ruddCtrlAddress = 2 enum; // Address of the physical motor controller unit on the 485 bus ruddDeviation = .25 arcdeg; // Number of degrees deviation allowed between expected and actual // NOTE: For rudder/elevator velocity can currently be set as high as 2000000 with acceleration at 4000. 08/11/209 - Kieft rudLimit = 14.5 arcdeg; //Max rudder angle rudDeadband = .1 arcdeg; //Degree of rounding in output values ThrusterServo_enable = 1 bool; ThrusterServo_useHardware = 1 bool; // Thruster motor controller values thrustCtrlAddress = 3 enum; // Address of the physical motor controller unit on the 485 bus thrustCurrLimit = 50 %; // Percent of current allowed thrustPIDw = 8000 count; thrustPIDx = 100 count; thrustPIDy = 60000 count; thrustTimeout = 1000 ms; // Timeout in ms to wait before throwing overload error thrustAccel = 1 n/a; // Encoder ticks / 32.768 per second squared thrustEncoderTks = 32.768 count/s; // encoder tick/second multiplier tksPerRev = 32 count/rev; // encoder ticks/revolution as seen by the controller // when feeding back HALL A&B to the encoder inputs thrustDeviation = 25 count; // Number of encoder ticks deviation allowed between expected and actual allowableBadVelocity = 5 count; // Number of bad "getVelocity" readings allowed before throwing a fault. // NOTE: 10" prop = .187706 m per revolution in wake // 300 rpm == 1m/sec and 150 rpm == .5m/sec. See propPitch