Difference between revisions of "Tiny v1.1"

From PaparazziUAV
Jump to navigation Jump to search
(Redirecting to Tiny/v1.1)
 
(29 intermediate revisions by 11 users not shown)
Line 1: Line 1:
The Tiny autopilot was designed with an end user application in mind.
#REDIRECT [[Tiny/v1.1]]
 
== Features ==
 
* Single LPC2148 MCU
* 8 Analog input channels 0V - 3.3V
* 1 3.3V TTL UART (5V tolerant)
* 7 PWM outputs
* 1 R/C receiver PWM frame input
* 1 [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] bus
* 1 [http://en.wikipedia.org/wiki/I2c I<sup>2</sup>C] bus
* 1 USB (client)
* Integrated GPS receiver and patch antenna (4Hz update)
* 5V/2A switching power supply & 3.3V linear regulator
* 2 LEDs (status display)
* 1 button (initiate launch)
* 25 grams
* 63 x 35mm (smaller then a business card)
 
The Tiny autopilot uses a single Philips LPC2148 ARM7 based microcontroller.
The [http://www.arm.com/products/CPUs/families/ARM7Family.html ARM7] is a low-power 32-bit RISC processor core and the [http://www.standardics.philips.com/products/lpc2000/ Philips LPC2148] has 512KB on-chip Flash ROM, 40KB RAM and can be clocked at 60MHz.
 
Although critical control code such as the R/C interface and servo output are well segregated in Paparazzi software and well protected from interference from flaws in the stability/navigation/comm/payload code, great care must be taken when experimenting with new software as some errors can cause a the processor to halt or stall for extended periods causing total loss of control.  The dual processor [[Classix]] addresses this risk by runnning critical code on a separate independent processor.
 
The schematics are available from the [http://cvs.savannah.nongnu.org/viewcvs/paparazzi3/hw/controller/?root=paparazzi CVS repository].
<br>
[[Image:tiny_proto1_top_small.jpg]]
[[Image:tiny_proto1_bot_small.jpg]]
 
== Architecture ==
 
[[Image:Tiny_v099_Architecture.gif]]
 
== Pinout ==
'''(Tiny13 v1.1)'''
 
[[Image:Tiny13_v1_1_pinout.gif]]
 
Wire colors:
* USB- : white
* USB+ : green
* LPC_SSEL : orange
 
'''SERIAL 1'''
 
{|
|1
|GND
|''self explanatory''
|-
|2
|3.3V
|''self explanatory''
|-
|3
|SDA0
|OD OUTPUT, INPUT - I2C0 data input/output
|-
|4
|SCL0
|OD OUTPUT, INPUT - I2C0 clock input/output
|-
|5
|P0.14
|INPUT - In-Circuit Serial Programming (ISP) enable - LOW on this pin during boot up to enable
|-
|6
|RESET
|INPUT - External Reset input - A LOW on this pin performs a hardware reset
|-
|7
|RXD_0
|INPUT - UART0 Serial Input (used by ISP Serial Bootloader) (5V TOLERANT)
|-
|8
|TXD_0
|OUTPUT - UART0 Serial Output (used by ISP Serial Bootloader) (5V TOLERANT)
|}
 
'''SERIAL 2'''
 
{|
|1
|GND
|''self explanatory''
|-
|2
|3.3V
|''self explanatory''
|-
|3
|SCK
|INPUT, OUTPUT - Serial clock for SPI0. SPI clock output from master or input to slave
|-
|4
|MISO
|INPUT, OUTPUT - Master In Slave OUT for SPI0. Data input to SPI master or data output from SPI slave
|-
|5
|MOSI
|INPUT, OUTPUT - Master Out Slave In for SPI0. Data output from SPI master or data input to SPI slave
|-
|6
|SSEL
|INPUT - Slave Select for SSP. Selects the SSP interface as a slave (SSEL1)
|-
|7
|INT
|INPUT - External interrupt 2 input (EINT2)
|-
|8
|USB+
|INPUT, OUTPUT - USB bidirectional D+ line
|-
|9
|USB-
|INPUT, OUTPUT - USB bidirectional D- line
|-
|10
|P0.23
|INPUT - Indicates the presence of USB bus power (VBUS) (5V TOLERANT)
|-
|}
 
'''RC'''
 
{|
|1
|GND
|common ground
|-
|2
|5V
|POWER_OUTPUT - 5V Rail from Tiny
|-
|3
|PPM_IN
|INPUT - PPM Stream from RC Receiver (5V TOLERANT)
|-
|4
|NC
|''no connection''
|-
|5
|NC
|''no connection''
|-
|}
 
'''ANALOG'''
 
{|
|1
|GND
|
|-
|2
|3.3V
|
|-
|3
|ADC_0
|
|-
|4
|ADC_1
|
|-
|5
|ADC_2
|
|-
|6
|ADC_3
|
|-
|7
|ADC_4
|
|-
|8
|ADC_5
|
|-
|9
|ADC_6
|
|-
|10
|ADC_7
|
|-
|}
 
P0.14 - Holding this pin low for at least 3mS after a RESET (or power up) instructs the controller to enter programming mode.
 
For reference, Matthew Currie is assembling his Tiny(s) with WS Deans Micro 2R connectors for power as they are a common R/C product and are quite high quality.  They do not have a positive lock mechanism but insert under a lot of pressure.  They do not require any special crimping tools and withstand up to 10A.  Miraterre uses the JST connector, their pinout is unknown (until Jeremy edits this wiki)
 
[[Image:Wsdm3007.png]]
 
== Bill of Materials (BOM) ==
 
Please note that there are differences between 0.9, 0.99, and 1.1.  Choose the version that matches your hardware.
 
=== Tiny 1.1 BOM ===
 
[http://www.recherche.enac.fr/paparazzi/wiki/images/b/b1/1.1_bom.zip 1.1_bom.zip]
 
=== Tiny 0.99 BOM ===
<small>
{|
|-valign="top"
|Qty ||Value||Device||Parts||Manufacturer||PN||distr PN
|-valign="top"
||7 || - ||53047-03 ||CAMERA, RC_RX, S0, S1, S3, S4, S5 ||Molex ||53047-0310 ||DK WM1732-ND
|-valign="top"
||1 || - ||53047-04 ||VIDEO_TX ||Molex ||53047-0410 ||DK WM1733-ND
|-valign="top"
||1 || - ||53047-08 ||SERIAL_1 ||Molex ||53047-0810 ||DK WM1737-ND
|-valign="top"
||2 || - ||53047-10 ||ANALOG, SERIAL_2 ||Molex ||53047-1010 ||DK WM1739-ND
|-valign="top"
||1 ||FUTABA_BEND ||FUTABA_BEND ||CON_ESC || - || - || -
|-valign="top"
||2 ||LEDCHIP ||LED0805 ||LED1, LED2 ||Kingbright ||APT2012EC ||MO 604-APT2012EC
|-valign="top"
||1 ||B3S ||B3S ||SW1 || OMRON ELECTRONICS || B3S-1002 || RS 183-717
|-valign="top"
||1 ||0.47uH ||L-EUL2012C ||L2 || WURTH ELEKTRONIK || 74479032 || RS 308-8564
|-valign="top"
||1 ||15uH ||WE_PD ||L1 ||Pulse ||P1168.153T ||MO 673-P1168.153T
|-valign="top"
||2 ||33R ||R-EU_R1005 ||R9, R10 ||Yageo ||RC0402JR-0733L ||DK 311-33JRCT-ND
|-valign="top"
||1 ||150R ||R-EU_R1005 ||R12 ||Yageo ||RC0402JR-07150L ||DK 311-150JRCT-ND
|-valign="top"
||3 ||1K ||R-EU_R1005 ||R2, R3, R8 ||Yageo ||RC0402JR-071KL ||DK 311-1.0KJRCT-ND
|-valign="top"
||1 ||1.5K ||R-EU_R1005 ||R11 ||Yageo ||RC0402JR-071K5L ||DK 311-1.5KJRCT-ND
|-valign="top"
||2 ||3.3K ||R-EU_R1005 ||R6, R15 ||Yageo ||RC0402JR-073K3L ||DK 311-3.3KJRCT-ND
|-valign="top"
||1 ||4.7K ||R-EU_R1005 ||R1 ||Yageo ||RC0402JR-074K7L ||DK 311-4.7KJRCT-ND
|-valign="top"
||7 ||10K ||R-EU_R1005 ||R4, R5, R13, R14, R16, R17, R18 ||Yageo ||RC0402JR-0710KL ||DK 311-10KJRCT-ND
|-valign="top"
||2 ||12K ||R-EU_R1005 ||R103, R105 ||Yageo ||RC0402JR-0712KL ||DK 311-12KJRCT-ND
|-valign="top"
||1 ||15K ||R-EU_R1005 ||R7 ||Yageo ||RC0402JR-0715KL ||DK 311-15KJRCT-ND
|-valign="top"
||2 ||56K ||R-EU_R1005 ||R102, R104 ||Yageo ||RC0402JR-0756KL ||DK 311-56KJRCT-ND
|-valign="top"
||1 ||100K ||R-EU_R1005 ||R101 ||Yageo ||RC0402JR-07100KL ||DK 311-100KJRCT-ND
|-valign="top"
||3 ||18pF ||C-EUC0402K ||C3, C7, C10 ||TDK ||C1005C0G1H180J ||DK 445-1238-1-ND
|-valign="top"
||2 ||22pF ||C-EUC0402K ||C8_1, C9_1 ||Yageo ||CC0402JRNPO9BN220 ||DK 311-1018-1-ND
|-valign="top"
||1 ||100pF ||C-EUC0402K ||C103 ||Kemet ||C0402C101J3GACTU ||DK 399-1022-1-ND
|-valign="top"
||1 ||220pF ||C-EUC0402K ||C102 ||Kemet ||C0402C221K5RACTU ||DK 399-1030-1-ND
|-valign="top"
||1 ||220pF/50V ||C-EUC1206K ||C4 ||Yageo ||CC1206KRX7R9BB221 ||DK 311-1164-1-ND
|-valign="top"
||1 ||1nF ||C-EUC0402K ||C104 ||Kemet ||C0402C102K3RACTU ||DK 399-1031-1-ND
|-valign="top"
||1 ||3.3nF ||C-EUC0402K ||C101 ||Kemet ||C0402C332K5RACTU ||DK 399-3070-1-ND
|-valign="top"
||1 ||22nF/50V ||C-EUC1206K ||C6 ||Yageo ||CC1206KRX7R9BB222 ||DK 311-1176-1-ND
|-valign="top"
||8 ||100nF ||C-EUC0402K ||C1_1, C2, C3_1, C4_1, C5_1, C6_1, C7_1, C106 ||Kemet ||C0402C104K8PACTU ||DK 99-3027-1-ND
|-valign="top"
||3 ||100nF ||C-EUC0603 ||C8, C9, C21 ||Kemet ||C0603C104J4RACTU ||DK 399-1097-1-ND
|-valign="top"
||1 ||10uF ||CPOL-EUA/3216-18R ||C18, C105 ||Kemet ||T491A106M010AS ||DK 399-1564-1-ND MO-80-T491A106K010
|-valign="top"
||1 ||22uF ||CPOL-EUB/3528-21R ||C20 ||Kemet ||B45196H1226M209 ||DK 495-2185-1-ND
|-valign="top"
||1 ||47uF/16V ||CPOL-EUD/7343-31R ||C5 ||Kemet ||B45197A3476K409 ||DK 495-1544-1-ND
|-valign="top"
||1 ||330uF/10V ||CPOL-EUD/7343-31R ||C1 ||Kemet ||B45197A2337K509 ||DK 495-1536-1-ND
|-valign="top"
||1 ||0.2F ||J1ROUND ||C77 ||Panasonic - ECG ||EEC-EN0F204J1 ||DK P11070CT-ND
|-valign="top"
||1 ||AD8552RU ||AD8552RU ||IC2 ||Analog Devices Inc ||AD8552ARU ||DK AD8552ARU-ND
|-valign="top"
||1 ||BAS70 ||BAS70 ||D1 ||Micro Commercial Co. ||BAS40-TP ||DK BAS40TPMSCT-ND
|-valign="top"
||1 ||STPS2L ||STPS2L ||D2 ||STMicroelectronics ||STPS2L30A ||DK 497-3759-1-ND
|-valign="top"
||1 ||CD4015B ||CD4015B ||IC1 ||Texas Instruments ||CD4015BPWR ||DK 296-14090-1-ND
|-valign="top"
||1 ||12MHz ||CRYSTAL_CTS ||Q1 ||CTS-Frequency Controls ||405C35B12M00000 ||DK CTX639CT-ND
|-valign="top"
||1 ||DDTA143 ||MUN2111T1 ||T1 ||Diodes Inc ||DDTA143ZCA-7 ||DK DDTA143ZCADICT-ND
|-valign="top"
||1 ||L5973D ||L5973D ||REG1 ||STMicroelectronics ||L5973D013TR ||DK 497-3638-1-ND
|-valign="top"
||1 ||REG1117 ||REG1117 ||REG2 ||National Semiconductor ||LM1117MP-3.3 ||DK LM1117MP-3.3CT-ND
|-valign="top"
||1 ||LEA-4P ||LEA-4P ||GPS ||Microblox ||LEA-4P-0-000-0 || -
|-valign="top"
||1 ||GPS_ANT_13 ||GPS_ANT_13 ||ANTENNA ||Sangshin || KSA-ST1580MS13 || -
|-valign="top"
||1 ||LPC2148 ||LPC2148 ||MCU ||Philips ||LPC2148FBD64-S ||DK 568-1765-ND
|-
|}
 
DK = digikey
 
MO = mouser
 
RS = radiospares
</small>
 
== Programming ==
 
The Philips LPC21xx series ARM7 microcontrollers include hardware ISP (InCircuit Serial Programming) and can initially programmed through its serial interface UART0.  For convenience sake, we load a USB Bootloader onto the Tiny via the built in serial bootloader.  This allows us to upload new code / flight plans quickly and conveniently while freeing up the Serial UART0 for a radio modem.
 
=== Installing the USB Bootloader ===
 
''If you were supplied with a Tiny Autopilot it may have already had the second bootloader installed, please check with your supplier.  If so skip this section.''
 
You will need to convert the PC's RS232 Serial with voltage levels of +/-13V to 3.3V (or 5V) TTL in order to communicate directly with the device.  This can be accomplished in multiple ways.  The easiest and most convenient method is to purchase or build a USB -> Serial 3.3V adapter similar to this one [http://www.ftdichip.com/Products/EvaluationKits/TTL-232R-3V3.htm TTL-232R-3V3]
Here's a few other examples:
[http://www.sparkfun.com/commerce/product_info.php?products_id=199]
[http://www.sparkfun.com/commerce/product_info.php?products_id=718]
[http://www.pololu.com/products/pololu/0391/]
[http://www.hvwtech.com/products_view.asp?CatID=166&SubCatID=183&SubSubCatID=0&ProductID=409]
 
Make up a wiring harness similar to the following.  You may vary the details however this is a working solution:
 
TINY RXD0 <-- PC SERIAL TX (5V or 3.3V)<br />
TINY TXD0 --> PC SERIAL RX (5V or 3.3V)<br />
TINY RESET --> ''optional'' wired to ground through a pushbutton so you can reset<br />
TINY P0.14 (SERIAL1-5) --> attach to ground, or wire through a pushbutton to ground<br />
TINY GND --> PC SERIAL ADAPTER GND<br />
 
Once this wiring is ready you will be ready to send the USB Bootloader to the Tiny from the PC.
 
To prepare the Tiny to accept programming over its serial port you must have pin P0.14 LOW for at least 3mS while it is powering up or resetting.  While it is still powered up it is ready to accept code over serial.  Proceed now to instructions to load it via software.
 
'''In Linux'''
 
From your paparazzi3 folder in linux, type:
 
make upload_bl PROC=GENERIC
 
This will begin compiling your USB Bootloader and then attempt to transfer it to the Autopilot. This will also assume you are using a USB -> Serial adapter for the connection.  It uses /dev/ttyUSB0 by default. If your adapter is mapped to a different tty, you will need to modify the Makefile accordingly.
 
'''In Windows'''
 
If for some reason you need to program your Tiny's USB Bootloader in windows start grabbing the following utility from Philips [http://www.nxp.com/files/markets/microcontrollers/philips_flash_utility.zip Philips Flash Utility].  You will then prepare the Tiny and boot it into the ISP bootloader as mentioned above but program it with this utility.  You will need to copy your compiled bl.hex file from Linux of course.

Latest revision as of 02:34, 11 December 2011

Redirect to: