UAV V2 platform - Core of the board is the SiRF III GPS system (EM406) - Baud rate is 4800, uses NMEA protocol (National Marine Electronics Association) - uses ASCII serial communications, allows for unidirectional communications, w/ listeners able to accurately parse information. - There is also some way to establish primary/secondary "talkers." - Antenna is built-in. it is best to orient the plane of the antenna parallel to the ground. - CPU is a Microchip dsPIC30F4011 - 16-bit architecture, 40-bit accumulators - C compiler - clock speed up to 120MHz - 2 USARTs (universal synchronous/asynchronous reciever/transmitter) on the dsPIC30F4011, one for GPS -> CPU, and one for CPU -> GPS - One connected to GPS, other can be used for debugging - Vectored, prioritized interrupts - dedicated ISRs for each resource, 7 levels of priority - Free running PWM generator, controlled by three 16-bit duty cycle registers - Free running buffered A/D convertor - samples 7 analog input channels - 16-bit capture inputs measure pulse widths of each channel, generate separate interrupt for each - Mapping of program space into data space, easy to make lookup tables - Oscillator - can drive the CPU at 8, 16, 32, 64, or 120 MHz - Gyros & 3-axis accelerometer - Three Analog Devices ADXRS401 gyroscopes, one per axis - sensitivity is approx 15 mV/deg/sec - max range is +/- 75 deg/sec - use a reference voltage so that the gyro output does not vary w/ supply voltage, i.e., discharging batteries - One 3-axis Freescale MMA7260 accelerometer - sensitivity is approx 800 mV/g - max range is +/- 1.5 g - accelerometer measures net acceleration minus g - output voltage is proportional to the supply voltage. - Both of these are high-gain devices, to improve noise/drift performance - Dynamic range is somewhat small - output of gyros and accelerometer are analog voltages. - zero rotation & zero accel corresponds to approx. half voltage. - motionless output voltages of gyros/accelerometers vary from unit to unit, so we should self-zero them by using the output voltages at power up to be baselines. - Highest recommended update rate to servos is approx. 50Hz. - will want to use a decimation filter (makes signals discrete) between the sampling processing and control processing. - implement a first order digital low-pass filter w/ freq. between 50Hz and 400Hz... filter updates its output w/ each control processing read its output asynchronously - Radio/Servo input/output pulses - interface b/w servos and RC receiver is 7 PWM I/O pins on the board. - 4 PWM inputs from RC receiver labeled "Radio," indicated as I1 - I4. - 4th input pin could be used to change from auto/manual control, for example. - PWM inputs are trhough interrupt-on-change pins. Each pin can be assigned its own interrupt routine, and each pin can use a capture function to measure pulse width. - 3 PWM outputs, collectively labeled "Servos." - Standard RC 5V TTL servo pulses. - Pulse width is b/w 1 and 2ms., w/ approx. 20ms between pulses. - Between pulses, signal is a TTL low, and the pulse is a TTL high. Can use this to measure the characteristics of our own RC radio. - *** It is important to respect the delay between pulses, because there is a pulse-stretcher within the servos, so if we try to reduce this delay, the puse stretchers in the servos will fuck up. - Can use the PWN controllers to create properly-spaced pulses. - Use the period to dictate spacing b/w pulses, and use the duty cycle to control pulse widths. - Servos can be connected directly to the board. - No direct physical connection on board b/w PWN inputs and outputs. - Manual control of servos from radio can reliably be performed as a "pass-through" in software, by assigning a high priority level to the input pins, and keeping manual control software simple. - Can also connect servos directly ot the radio, if, for example, we want to use more than 3 servos, or we want to test one servo independently while manually controlling the other two. - Board works well w/ 5V. - has not been tested w/ LiPo batteries.