Classix

From PaparazziUAV
Revision as of 07:38, 14 February 2008 by Cdewagter (talk | contribs) (→‎TODO)
Jump to navigation Jump to search

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 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

Classix autopilot with Gumstix daughterboard
Classix Dual MCUs


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
  • 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 would allow for image processing, heavy communications, or payload support.

Architecture

Classix Architecture.jpg

Pinout

Classix v099 pinout.png

  1. 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 componnents 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 and connect the P0.23 pin 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 with 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
Classix Modification to solve startup/programming issues