Difference between revisions of "Classix"
(added actual gumstix board type) |
|||
(26 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
The Classix autopilot was designed for advanced applications. Dual processors provide a true hardware segregation of critical code for reliability - allowing the user to run experimental navigation or payload control software without fear of a processor crash causing a total loss of control. A [http://www.gumstix.com Gumstix] header is included so that the autopilot can be directly interfaced with this small onboard Linux PC for advanced video processing, sensor management, or sophisticated navigation routines such as sense-and-avoid or target following. | <div style="float: right; width: 25%"><categorytree style="float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;" mode=pages>Autopilots</categorytree></div> | ||
__TOC__ | |||
The Classix autopilot was designed for advanced applications. Dual processors provide a true hardware segregation of critical code for reliability - allowing the user to run experimental navigation or payload control software without fear of a processor crash causing a total loss of control. A [http://www.gumstix.com Gumstix] header (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) is included so that the autopilot can be directly interfaced with this small onboard Linux PC for advanced video processing, sensor management, or sophisticated navigation routines such as sense-and-avoid or target following. | |||
<br> | |||
Very few Classix boards have been produced and are flying. The Classix is really just a developer's board, intended for very sophisticated payload applications. If you are looking for a bare LPC2148 board, the Olimex [http://olimex.com/dev/lpc-h2148.html LPC-H2148] boards might be a good choice. | |||
== Classix Control Board == | == Classix Control Board == | ||
Line 17: | Line 22: | ||
* 2 [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] busses | * 2 [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] busses | ||
* 2 [http://en.wikipedia.org/wiki/I2c I<sup>2</sup>C] | * 2 [http://en.wikipedia.org/wiki/I2c I<sup>2</sup>C] | ||
* Connector to dock with a [http://www.gumstix.com Gumstix] board | * Connector to dock with a [http://www.gumstix.com Gumstix] board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) | ||
* 5V input | * 5V input | ||
* 3.3V linear regulator & 3.7V linear regulator (for Gumstix) | * 3.3V linear regulator & 3.7V linear regulator (for Gumstix) | ||
Line 30: | Line 35: | ||
With 2 MCUs this system is very robust, 1 MCU can handle all critical code, fly-by-wire and such, and the other can handle all autonomous processing. In the case of autonomous code error, the aircraft may be saved via manual control and the fbw MCU. | With 2 MCUs this system is very robust, 1 MCU can handle all critical code, fly-by-wire and such, and the other can handle all autonomous processing. In the case of autonomous code error, the aircraft may be saved via manual control and the fbw MCU. | ||
The ability to dock with a [http://www.gumstix.com Gumstix] board would allow for image processing, heavy communications, or payload support. | The ability to dock with a [http://www.gumstix.com Gumstix] board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) would allow for image processing, heavy communications, or payload support. | ||
== Architecture == | == Architecture == | ||
Line 37: | Line 42: | ||
== Pinout == | == Pinout == | ||
[[Image:Classix_v099_pinout. | [[Image:Classix_v099_pinout.png]] | ||
# Note that FOO2 is used for PPM_in ... | |||
== BOM == | == BOM == | ||
The materials list can be produced from the Eagle CAD files on the [[Downloads|downloads]] page. | The materials list can be produced from the Eagle CAD files on the [[Downloads|downloads]] page. | ||
'''Jan 2008:''' Following list contains the digikey part numbers for the Classix board without the audio filter. If (for some reason I don't understand) no gumstix is needed some marked components can be skipped. [[User:Cdewagter|cdewagter]] | |||
<small> | |||
{| | |||
|-valign="top" | |||
|Qty ||Value ||Device ||Parts ||Digi-Key || Special | |||
|-valign="top" | |||
|2 || ||53047-03 ||AUDIO, FBW_CON_RC ||'''WM1732-ND''' || | |||
|-valign="top" | |||
|2 || ||53047-04 ||AP_CON_I2C, FBW_CON_I2C ||'''WM1733-ND'''|| | |||
|-valign="top" | |||
|1 || ||53047-05 ||X1 ||'''WM1734-ND''' || | |||
|-valign="top" | |||
|3 || ||53047-06 ||AP_CON_ANALOG0, CON_GPS, FBW_CON_ANALOG ||'''WM1735-ND'''|| | |||
|-valign="top" | |||
|2 || ||53047-07 ||CON_SPI0, CON_SPI1 ||'''WM1736-ND'''|| | |||
|-valign="top" | |||
|5 || ||53047-08 ||AP_CON_ANALOG1, AP_CON_SERIAL, FBW_CON_PWM, FBW_CON_SERIAL, GUM_CON_SERIAL ||'''WM1737-ND'''|| | |||
|-valign="top" | |||
|3 || ||CPOL-EUA/3216-18R ||C7, C18, C27 ||'''399-3686-1-ND''' ||Gumstix: -1 | |||
|-valign="top" | |||
|2 || ||CPOL-EUB/3528-21R ||C8, C13 ||'''495-1677-1-ND''' ||Gumstix: -1 | |||
|-valign="top" | |||
|1 || ||D-SOD-80 ||D1 ||'''568-3411-2-ND''' ||Gumstix: -1 | |||
|-valign="top" | |||
|4 || ||LEDCHIP-LED0805 ||LED1, LED2, LED3, LED4 ||'''67-1636-1-ND'''|| | |||
|-valign="top" | |||
|3 ||1.5K ||R-EU_R0603 ||R16, R19, R22 ||'''311-1.5KGRCT-ND'''|| | |||
|-valign="top" | |||
|4 ||1K ||R-EU_R0603 ||R23, R24, R25, R26 ||'''311-1.0KGRCT-ND''' || | |||
|-valign="top" | |||
|1 ||4.7K ||R-EU_R0603 ||R8 ||'''311-4.7KGRCT-ND'''|| | |||
|-valign="top" | |||
|11 ||10k ||R-EU_R0603 ||R1, R2, R3, R4, R5, R6, R7, R27, R28, R20, R21 ||'''311-10KGRCT-ND'''|| | |||
|-valign="top" | |||
|4 ||33R ||R-EU_R0603 ||R14, R15, R17, R18 ||'''311-33GRCT-ND'''|| | |||
|-valign="top" | |||
|6 ||18pF ||C-EUC0603 ||C28, C29, C30, C31, C32, C33 ||'''399-1052-1-ND''' || | |||
|-valign="top" | |||
|2 ||22pF ||C-EUC0603 ||C15, C16 ||'''399-1053-1-ND'''|| | |||
|-valign="top" | |||
|15 ||100nF ||C-EUC0603 ||C1, C2, C3, C4, C5, C6, C9, C10, C11, C12, C14, C17, C19, C20, C21, C22 ||'''399-5089-1-ND'''|| Gumstix: -1 | |||
|-valign="top" | |||
|1 ||HIROSE60 ||BASIXGUMSTIX ||U$17 ||'''H5204CT-ND''' || Gumstix: -1 | |||
|-valign="top" | |||
|1 ||CRYSTAL_CTS ||CRYSTAL_CTS ||U$20 ||'''CTX639CT-ND'''|| | |||
|-valign="top" | |||
|2 ||DDTA143 ||MUN2111T1 ||Q1, Q2 ||'''DDTA143ZCADICT-ND'''|| | |||
|-valign="top" | |||
|2 ||LPC2148 ||LPC2148 ||AP, FBW ||'''568-1765-ND'''|| | |||
|-valign="top" | |||
|2 ||REG1117 ||REG1117 ||IC1, IC2 ||'''LM1117MP-3.3CT-ND'''|| Gumstix: -1 | |||
|- | |||
|} | |||
</small> | |||
== Assembly == | == Assembly == | ||
Here are a few observation from my Classix assembly/programming (see Tiny_Assembly for more info): | Here are a few observation from my Classix assembly/programming (see Tiny_Assembly for more info): | ||
* | |||
* | * check the polarity of all parts, compare to a picture of a working reference board | ||
* use a microscope or a magnifying glass to check for short circuits | |||
* use a power supply for first tests, not a battery, limit the current to about 100mA, use a voltage of about 5V | |||
* the 5V should not drop due to current limiting, measure the 3.7V and the 3.3V supply on the board | |||
-> wrong voltages: check the parts around the power supply | |||
* measure the current, it should be around 40mA at 5V with the LPC running and no code loaded | |||
* attach one reset to GND, current should reduce to 30mA at 5V | |||
-> check if reset signal can be measured at the LPC reset pin 57 | |||
* check the 12MHz at LPC pin 61, XTAL2 (XTAL_out) | |||
* connect TXD and RXD of either AP_Serial or FBW_Serial to the serial port of your PC through a 3.3V-USB-RS232 converter (LPC_TXD_0 - PC_RX, LPC_RX_0 - PC_TX), attach LPC_P0.14 to ground or connect to a pushbutton and reset the board | |||
* run the serial ROM loader lpc21isp to flash USB bootloader with | |||
make upload_bl PROC=GENERIC | |||
-> check the rx/tx pins for data if flashing does not succeed | |||
* deattach the LPC_P0.14, reset the board, current should be around 160 mA @ 5V when both AP and FWB are programmed | |||
* the USB bootloader outputs debug information with 115200 8N1 on the serial port | |||
picocom -b 115200 /dev/ttyUSB0 | |||
* connect USB+ (D+), USB- (D-), and GND of AP or FBW with your PC, reset the board. Note that there is no connection to P0.23 on the Classix v0.99 and thus you will get a "Broken Pipe" error at the end of the programming. Furthermore, if you don't always connect it to ground, the code won't always start after a reset! | |||
* the PC will detect a new USB device, check with "dmesg" and "lsusb" - they should both show a USB device with VID/PID 7070:1234 | |||
-> if a new USB device is detected but does not accept new address, the USBconnect worked, but not the communication, check USB+ and USB- | |||
* flash the autopilot with | |||
make AIRCRAFT=myplane clean_ac ap.upload | |||
(where myplane is the name of your airframe as defined in conf/conf.xml... Try with AIRCRAFT=TJ1 if you don't know what to use) | |||
* check telemetry through serial port, messages should be displayed | |||
* test A/D converters for supply voltage and IR sensors | |||
* check modem, connect tx, rx, gnd and supply | |||
* try to aquire sats outside | |||
== TODO == | == TODO == | ||
Line 54: | Line 142: | ||
* No onboard 5V VR 2A VR for Servos | * No onboard 5V VR 2A VR for Servos | ||
* No onboard GPS | * No onboard GPS | ||
* No connection to P0.23... result in random behavior of the USB Bootloader and a "Broken Pipe" error message when programming, even if the programming is successfull! | |||
The above being said , the first 2 items should be easily fixed by modifying the schematic(s) for the classix and regenerating the board layout in eagle(adding the necessary lines etc) or generating a servo driver and 5v VR board to interface with the classix for now till the above is completed. The last one is clearly a bug! | |||
* To solve this bug one needs to connect the LPC2148's pin nr 58 (P0.23) using a resistor bridge (say; 4.7k / 10k to reduce the usb 5V below 3.3V) to the serial connector which pulls the P0.23 pin up when in programming mode and to the ground when no USB is connected. The only pin on the serial connector that is not strictly required at some stage is the reset pin. (Remove power supply also resets) So it is suggested to convert the reset pins on the serial connector to P0.23 pins for USB programming. With 5V on this pin from USB during power-up the classix will be in programming mode, otherwise it will ALWAYS boot instantly. [[User:Cdewagter|cdewagter]] ( or flash a bootloader which uses another pin ... make bl PROC=[TINY|FBW|AP|GENERIC] )[[User:Poine|poine]] | |||
[[Image:ModifiedClassixCDW.JPG|thumb|Classix Modification to solve startup/programming issues]] | |||
[[Category:Autopilots]] [[Category:User_Documentation]] |
Latest revision as of 15:38, 12 March 2012
The Classix autopilot was designed for advanced applications. Dual processors provide a true hardware segregation of critical code for reliability - allowing the user to run experimental navigation or payload control software without fear of a processor crash causing a total loss of control. A Gumstix header (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) is included so that the autopilot can be directly interfaced with this small onboard Linux PC for advanced video processing, sensor management, or sophisticated navigation routines such as sense-and-avoid or target following.
Very few Classix boards have been produced and are flying. The Classix is really just a developer's board, intended for very sophisticated payload applications. If you are looking for a bare LPC2148 board, the Olimex LPC-H2148 boards might be a good choice.
Classix Control Board
Features
- Dual LPC2148 MCUs
- 14 ADC channels
- 2 UARTs
- 6 PWM outputs
- 2 R/C Receiver inputs
- 2 combined USB clients
- 2 SPI busses
- 2 I2C
- Connector to dock with a Gumstix board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix)
- 5V input
- 3.3V linear regulator & 3.7V linear regulator (for Gumstix)
- Audio (for data downlink without a modem)
- 2 LEDs (status display)
- 12 grams
- 89 x 30mm
The Classix Control Board use 2 Philips LPC2148 ARM7 based microcontroller. The ARM7 is a low-power 32-bit RISC processor core and the Philips LPC2148 has 512KB on-chip Flash ROM, 40KB RAM and can be clocked at 60MHz.
With 2 MCUs this system is very robust, 1 MCU can handle all critical code, fly-by-wire and such, and the other can handle all autonomous processing. In the case of autonomous code error, the aircraft may be saved via manual control and the fbw MCU.
The ability to dock with a Gumstix board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) would allow for image processing, heavy communications, or payload support.
Architecture
Pinout
- Note that FOO2 is used for PPM_in ...
BOM
The materials list can be produced from the Eagle CAD files on the downloads page.
Jan 2008: Following list contains the digikey part numbers for the Classix board without the audio filter. If (for some reason I don't understand) no gumstix is needed some marked components can be skipped. cdewagter
Qty | Value | Device | Parts | Digi-Key | Special |
2 | 53047-03 | AUDIO, FBW_CON_RC | WM1732-ND | ||
2 | 53047-04 | AP_CON_I2C, FBW_CON_I2C | WM1733-ND | ||
1 | 53047-05 | X1 | WM1734-ND | ||
3 | 53047-06 | AP_CON_ANALOG0, CON_GPS, FBW_CON_ANALOG | WM1735-ND | ||
2 | 53047-07 | CON_SPI0, CON_SPI1 | WM1736-ND | ||
5 | 53047-08 | AP_CON_ANALOG1, AP_CON_SERIAL, FBW_CON_PWM, FBW_CON_SERIAL, GUM_CON_SERIAL | WM1737-ND | ||
3 | CPOL-EUA/3216-18R | C7, C18, C27 | 399-3686-1-ND | Gumstix: -1 | |
2 | CPOL-EUB/3528-21R | C8, C13 | 495-1677-1-ND | Gumstix: -1 | |
1 | D-SOD-80 | D1 | 568-3411-2-ND | Gumstix: -1 | |
4 | LEDCHIP-LED0805 | LED1, LED2, LED3, LED4 | 67-1636-1-ND | ||
3 | 1.5K | R-EU_R0603 | R16, R19, R22 | 311-1.5KGRCT-ND | |
4 | 1K | R-EU_R0603 | R23, R24, R25, R26 | 311-1.0KGRCT-ND | |
1 | 4.7K | R-EU_R0603 | R8 | 311-4.7KGRCT-ND | |
11 | 10k | R-EU_R0603 | R1, R2, R3, R4, R5, R6, R7, R27, R28, R20, R21 | 311-10KGRCT-ND | |
4 | 33R | R-EU_R0603 | R14, R15, R17, R18 | 311-33GRCT-ND | |
6 | 18pF | C-EUC0603 | C28, C29, C30, C31, C32, C33 | 399-1052-1-ND | |
2 | 22pF | C-EUC0603 | C15, C16 | 399-1053-1-ND | |
15 | 100nF | C-EUC0603 | C1, C2, C3, C4, C5, C6, C9, C10, C11, C12, C14, C17, C19, C20, C21, C22 | 399-5089-1-ND | Gumstix: -1 |
1 | HIROSE60 | BASIXGUMSTIX | U$17 | H5204CT-ND | Gumstix: -1 |
1 | CRYSTAL_CTS | CRYSTAL_CTS | U$20 | CTX639CT-ND | |
2 | DDTA143 | MUN2111T1 | Q1, Q2 | DDTA143ZCADICT-ND | |
2 | LPC2148 | LPC2148 | AP, FBW | 568-1765-ND | |
2 | REG1117 | REG1117 | IC1, IC2 | LM1117MP-3.3CT-ND | Gumstix: -1 |
Assembly
Here are a few observation from my Classix assembly/programming (see Tiny_Assembly for more info):
- check the polarity of all parts, compare to a picture of a working reference board
- use a microscope or a magnifying glass to check for short circuits
- use a power supply for first tests, not a battery, limit the current to about 100mA, use a voltage of about 5V
- the 5V should not drop due to current limiting, measure the 3.7V and the 3.3V supply on the board
-> wrong voltages: check the parts around the power supply
- measure the current, it should be around 40mA at 5V with the LPC running and no code loaded
- attach one reset to GND, current should reduce to 30mA at 5V
-> check if reset signal can be measured at the LPC reset pin 57
- check the 12MHz at LPC pin 61, XTAL2 (XTAL_out)
- connect TXD and RXD of either AP_Serial or FBW_Serial to the serial port of your PC through a 3.3V-USB-RS232 converter (LPC_TXD_0 - PC_RX, LPC_RX_0 - PC_TX), attach LPC_P0.14 to ground or connect to a pushbutton and reset the board
- run the serial ROM loader lpc21isp to flash USB bootloader with
make upload_bl PROC=GENERIC
-> check the rx/tx pins for data if flashing does not succeed
- deattach the LPC_P0.14, reset the board, current should be around 160 mA @ 5V when both AP and FWB are programmed
- the USB bootloader outputs debug information with 115200 8N1 on the serial port
picocom -b 115200 /dev/ttyUSB0
- connect USB+ (D+), USB- (D-), and GND of AP or FBW with your PC, reset the board. Note that there is no connection to P0.23 on the Classix v0.99 and thus you will get a "Broken Pipe" error at the end of the programming. Furthermore, if you don't always connect it to ground, the code won't always start after a reset!
- the PC will detect a new USB device, check with "dmesg" and "lsusb" - they should both show a USB device with VID/PID 7070:1234
-> if a new USB device is detected but does not accept new address, the USBconnect worked, but not the communication, check USB+ and USB-
- flash the autopilot with
make AIRCRAFT=myplane clean_ac ap.upload (where myplane is the name of your airframe as defined in conf/conf.xml... Try with AIRCRAFT=TJ1 if you don't know what to use)
- check telemetry through serial port, messages should be displayed
- test A/D converters for supply voltage and IR sensors
- check modem, connect tx, rx, gnd and supply
- try to aquire sats outside
TODO
As noted in the IRC channel the clasix lacks certain "conveniences" of the tiny
- No onboard CD4015B for a servo driver
- No onboard 5V VR 2A VR for Servos
- No onboard GPS
- No connection to P0.23... result in random behavior of the USB Bootloader and a "Broken Pipe" error message when programming, even if the programming is successfull!
The above being said , the first 2 items should be easily fixed by modifying the schematic(s) for the classix and regenerating the board layout in eagle(adding the necessary lines etc) or generating a servo driver and 5v VR board to interface with the classix for now till the above is completed. The last one is clearly a bug!
- To solve this bug one needs to connect the LPC2148's pin nr 58 (P0.23) using a resistor bridge (say; 4.7k / 10k to reduce the usb 5V below 3.3V) to the serial connector which pulls the P0.23 pin up when in programming mode and to the ground when no USB is connected. The only pin on the serial connector that is not strictly required at some stage is the reset pin. (Remove power supply also resets) So it is suggested to convert the reset pins on the serial connector to P0.23 pins for USB programming. With 5V on this pin from USB during power-up the classix will be in programming mode, otherwise it will ALWAYS boot instantly. cdewagter ( or flash a bootloader which uses another pin ... make bl PROC=[TINY|FBW|AP|GENERIC] )poine