MLAB
TRAIN02A
Spínací automat pro vláčky Milan Horkel
Tento modul vnikl na základě potřeby zajistit na výstavě stavebnice Lego automatické spínání vlakových modelů a to tak, aby spínání nebylo závislé na počítači a fungovalo automaticky při zapojení napájení spínacími hodinami. Zařízení je vybaveno 8 reléovými výstupy a 8 galvanicky oddělenými vstupy, které jsou dále vybaveny manuálními tlačítky. Jeho vlastnosti jsou z větší části dány firmwarem a v případě potřeby lze měnit parametry spínání přes USB rozhraní z počítače.
1. Technické parametry Parametr
Hodnota
Poznámka
Počet výstupů
8 reléových spínačů/přepínačů
Max 5A
Počet vstupů
8 galvanicky oddělených
Doplněné manuálními tlačítky
Vlastní inteligence
Firmware
Procesor ATmega8
Konfigurace
Pomocí USB rozhraní
Sériové rozhraní
Vlastní napájení
12V / 0.5V
Samostatný zdroj
Rozměry
202 x 152 x 25 mm
Výška nad základnou
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
1 / 16
MLAB
TRAIN02A 2. Popis konstrukce 2.1. Úvodem
konstrukce vznikla pro automatické řízení vlaků modelové železnice postavené ze stavebnice Lego. Železnice vyžaduje dva typy ovládání. Obyčejné spínání a přepínání směru. Pro spínání je použito 8 standardních relé s vhodně zapojenými kontakty. Spínače jsou galvanicky oddělené od zbytku elektroniky i navzájem od sebe. Dále je zařízení vybaveno 8 galvanicky oddělenými vstupy a 8 tlačítky. Pro snadné nastavování parametrů spínání je dále zařízení vybaveno USB rozhraním pomocí kterého lze standardním terminálovým programem komunikovat s firmwarem zařízení. Oživením jiným firmwarem lze ze zde popsaného hardwaru vykouzlit zařízení s mnoha dalšími funkcemi a schopnostmi.
2.2. Zapojení modulu Jádrem zařízení je řídící procesor zapojený obvyklým způsobem. Procesor je doplněn resetovacím tlačítkem, programovacím konektorem a volitelně krystalem. Procesor běží v režimu interního RC generátoru hodin na kmitočtu 8MHz, přesnost časování je tak omezena na cca 1%. V případě potřeby přesnějšího časování je možné osadit externí krystal.
RE4 RE3 RE2 RE1
PC6/RESET# PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/XCK/T0 VCC GND PB6/XTAL1/TOSC1 PB7/XTAL2/TOSC2 PD5/T1 PD6/AIN0 PD7/AIN1 PB0/ICP1
ADC5/SCL/PC5 ADC4/SDA/PC4 ADC3/PC3 ADC2/PC2 ADC1/PC1 ADC0/PC0 GND AREF AVCC SCK/PB5 MISO/PB4 MOSI/OC2/PB3 SS#/OC1B/PB2 OC1A/PB1
ATmega8 (DIP28)
28 27 26 25 24 23 22 21 20 19 18 17 16 15
ATMEL ISP SW0 SW1 SW2 SW3 SW4 SW5 AREF PB5 PB4 PB3
VCC+5V
R1 10k PC6
SW8 P-B1720
SW7 RE0
RESET
C6 100nF
M203 DIL28_300 Socket
PB5
2
R2 1K
1
2
2
X1 #8MHz B
XTAL
C5 #33pF 1
C4 #33pF 1
JUMP2x3
1
U1
ATmega8L-8PU DIP28_300
A
PB3
2
RE7 RE6 RE5
2 4 6
2 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14
MISO VTG SCK MOSI RST# GND
1
M202 JUMPER
J11 JUMP2X2
PC6 CPU_RXD CPU_TXD
VCC+5V
J12
2
M201 JUMPER
2 4
1 3 5
1
USB_TXD USB_RXD
1 3
C3 100nF
1
C2 100nF
1
C1 4u7/16V C0805
PB4 PB5 PC6
2
2
2
VCC+5V
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
2 / 16
SW6
MLAB
TRAIN02A
Dále je k procesoru připojeno USB sérové rozhraní na bázi obvodu FTDI. Zapojení obsahuje indikační LED diody. Pro správnou činnost je třeba provést nastavení obvodu FTDI tak, aby výstup CBUS3 byl nastaven jako indikátor aktivity na sériové lince. Viz postup oživení.
M1 M2
USBDM 1 USBDP 1 2
VCC USBDM USBDP GND
C10 47pF 1
USB
C11 47pF
2
2
R3 27
12 2 2
R4 27
9 8 11
VCC
USB
USBDM USBDP
5 13
3V3OUT VCCIO TXD RXD RTS# CTS#
RESET#
CBUS0 CBUS1 CBUS2 CBUS3
GND GND
C13 100nF 1
1
1
C12 100nF
1
5 6
C9 4u7/16V C0805 U2
1 2 3 4
2
J10 USB_B_01
C8 100nF 1
1
C7 100nF
VCC+3.3V
2
2
2
L1 MI0805K400R-10 PCB Footprint = R1206 1 2
10 3 1 4 2 6
USB_TXD USB_RXD TPS1 USB_RTS# TPS2 USB_CTS#
USB_RTS# USB_CTS#
15 14 7 16
D1 CBUS3 1
FT230XS
2 C R5 330
FTDI USB
1
Use FT_PROG utility and set CBUS3 as Activity
A
HCL-1503-4(GREEN) USB ACTIVITY D2 2 A
R6 330
VCC+3.3V
C
HCL-1505-4(RED) USB POWER
Celé zařízení je napájeno napájecím adaptérem 12V. Toto napětí napájí cívky relé, Procesor je napájen stabilizovaným napětím 5V.
C16 4u7/16V C0805
+12V 1 3 5 7
IN
OUT
2
+5V LM7805T
C
C15 100nF
VCC+5V
U4
2
1 R8 1k
1
GND GND
D5 HCL-1505-4(RED)
2
C17 100nF
D4 M6 SMA
J15 JUMP2X3
A
1
J14 JUMP2X4
1 3 5
C
POWER +12V Cca 300mA
R7 1
A2
10MQ040N SMA
1
3 4
VCC+12V C
2
D3
1
A
2
K375A
1 3 2
1
J13
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
3 / 16
MLAB
TRAIN02A
Relé zajišťují výkonové výstupy. Na obrázku je zobrazena jen část z 8 výstupů. Nezobrazené výstupy jsou zapojeny stejně. Relé se spínají pomocí běžného obvodu ULN2803A. U jednotlivých relé jsou umístěny indikační diody. Vstupy budicího obvodu jsou vyvedeny na hřebínek a lze tak ovládat relé i přímo bez použití procesoru (šikovné i při oživování). Kontakty relé jsou zapojeny tak, že je lze využít buď jako jednoduchý spínač (použijeme prostřední svorky 2 a 3), nebo jako obraceč směru (přívod na svorky 1 a 2, zátěž na svorky 3 a 4). RE0 FTR-F1CA012V
2 7
RE0 RE1 RE2 RE3 RE4 RE5 RE6 RE7
1 2 3 4 5 6 7 8 9
J8
8
4
5
C
A 2
RE4 FTR-F1CA012V VCC+12V
U3 I0 O0# I1 O1# I2 O2# I3 O3# I4 O4# I5 O5# I6 O6# I7 O7# GND VD
7
3
1 R100 1k
J4 WAGO256_x04 1 2 3 4
1 6 8
4
5
C
A 2
VCC+12V
1
2 7
3 1 6 8
4
5
C
A 2
D101 HCL-1505-4(RED)
RE5 FTR-F1CA012V
2 7
J1 WAGO256_x04 1 2 3 4
3
VCC+12V
1 R101 1k
J5 WAGO256_x04 1 2 3 4
1 6 8
4
5
C
A 2
VCC+12V
1
C14 4u7/16V C0805
D104 HCL-1505-4(RED)
R104 1k
D105 HCL-1505-4(RED)
R105 1k
1
ULN2803A
REP0 REP1 REP2 REP3 REP4 REP5 REP6 REP7
18 17 16 15 14 13 12 11 10
2
VCC+12V
RE1 FTR-F1CA012V
2
1 2 3 4 5 6 7 8 9
1 6
D100 HCL-1505-4(RED)
JUMP9
RE0 RE1 RE2 RE3 RE4 RE5 RE6 RE7
3
J0 WAGO256_x04 1 2 3 4
Obvodu ULN 2803 obsahuje 8 darlingtonových budičů a ochranných diod, to vše za pár korun.
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
4 / 16
MLAB
TRAIN02A
Vstupy na sobě nezávislé a galvanicky oddělené od elektroniky pomocí optronů. Schéma ukazuje zapojení několika vstupů, zbývající vstupy jsou zapojené stejně. Aktivita vstupů je indikována indikačními diodami. Vstupy jsou polarizované a chráněné proti přepólování. Rozsah vstupního napětí je dáno použitými omezovacími odpory. 1
2 R200 1k8
SW0 C
I0P I0N I1P I1N I2P I2N I3P I3N
LA C
A
ALC
C
Q200 PC357 E
J9 WAGO256_x16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
D200 D220 1N4148SMD HCL-1503-4(GREEN) 2 R201 1k8
SW1 C
LA
1
E
C
A
ALC
C
Q201 PC357
D201 D221 1N4148SMD HCL-1503-4(GREEN)
R = (Umax - 3V) / 0.005A 12V --> 1k8 / 80mW 24V --> 2k2 / 250mW Paralelně ke vstupům jsou zapojena manuální tlačítka. J16
2 SW7 P-DT6GE 1
SW6 P-DT6GE 1
SW5 P-DT6GE 1
1
SW4 P-DT6GE
2
2
2
2 SW3 P-DT6GE 1
SW2 P-DT6GE 1
1
SW1 P-DT6GE 1
SW0 P-DT6GE
JUMP9
2
2
SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7 2
9 8 7 6 5 4 3 2 1
PUSH BUTTONS
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
5 / 16
TRAIN02A
MLAB
2.3. Mechanická konstrukce Zařízení je v provedení obřího MLAB modulu. Vzhledem k tomu, že vstupy a výstupy používají průmyslové WAGO svorky, je třeba desku plošného spoje přimontovat na pevnou podložku a ve vhodných místech desku podložit izolačním materiálem. Síla potřebná pro zmáčknutí svorek WAGO je značná. Svorky WAGO jsou robustní a spolehlivé, ale současně jsou i poměrně drahé. Představují asi 1/3 nákladů na zařízení. Lze je nahradit levnějšími šroubovacími svorkami s roztečí 5mm.
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
6 / 16
TRAIN02A
MLAB
3. Osazení a oživení
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
7 / 16
TRAIN02A
MLAB
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
8 / 16
MLAB
TRAIN02A
Pro snazší osazení je zde detail osazení součástek v oblasti USB rozhraní.
Reference
Hodnota
Pouzdro
R7
1 (možno osadit feritovou perlu)
R1206
R4, R3
27
R0805
R5, R6
330
R0805
R2, R8, R100-R107
1k
R0805
R200-R207
1k8 (drátové vývody)
RL090
R1
10k
R0805
C4, C5
#33pF (doporučuji osadit)
C0805
C10, C11
47pF
C0805
C2, C3, C6, C7, C8, C12, C13, C15, C17
100nF
C0805
C1, C9, C14, C16
4u7/16V
C0805
MI0805K400R-10
R1206
Odpory
Kondenzátory
Indukčnosti L1
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
9 / 16
MLAB
TRAIN02A Diody D200-D207
1N4148SMD
SOD87
D4
M6
SMA
D3
10MQ040N
SMA
D1, D220-D227 (GREEN)
HCL-1503-4 / OF-SMD3216G (TME)
LED1206REV
D2, D5, D100-D107 (RED)
HCL-1505-4 / OF-SMD3216R (TME)
LED1206REV
U1
ATmega8L-8PU
DIP28_300
U2
FT230XS
SSO16_154
U3
ULN2803A
DIP18_300
U4
LM7805T
TO220/L
#8MHz
XTAL050
PC357
PC357
FTR-F1CA012V
RELAY29x13_8pin
SW0-SW7
P-DT6GE / KS01-BV-RED (TME)
PUSH120
SW8
P-B1720 / B3F-1000 (TME)
PUSH050x050
J0-J7
WAGO256_x04
WAGO256_x04
J9
WAGO256_x16
WAGO256_x16
48ks
WAGO svorka
9ks
WAGO čelíčko
Diody LED
Integrované obvody
Krystal X1 Optrony Q200-Q207 Relé RE0-RE7 Tlačítka
Svorky WAGO
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
10 / 16
MLAB
TRAIN02A Konektory J13
K375A
K375A
J10
USB_B_01
USB_B_01
J8, J16
JUMP9
JUMP9
J11
JUMP2X2
JUMP2X2
J12, J15
JUMP2x3
JUMP2x3
J14
JUMP2X4
JUMP2X4
M101
PCB_TRAIN01A
Plošný spoj
M102
Power Supply 12V
Napájecí zdroj 12V/1.2A
M201, M202
JUMPER
Jumper propojka
M203
DIL28_300 Socket
Precizní patice DIL28 úzká
5ks
Šroub M3x6 pozink, válcová hlava
4ks
Matice M3 pozink
4ks
Podložka M3 pozink
4ks
Sloupek M3x5 šroub/matice
Jumpery
Ostatní materiál
3.1. Osazení a oživení Osazujeme postupně a postupně i oživujeme. Konstrukce nemá žádné záludnosti. Procesor se vkládá do patice až otestování zdroje. LED diody jsou SMD typu a osazují tak, aby koukaly skrz plošný spoj (tzv. reverzní montáž) zde vyvrtanými otvory.
3.1.1. Napájecí zdroj a stabilizátor Kontrolujeme napětí 5V na konektoru J15.
3.1.2. Reléové výstupy a budicí obvod ULN Kontrolujeme spínání jednotlivých relé. K testování spínání využijeme konektor J9 a napětí +5V z konektoru J15.
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
11 / 16
TRAIN02A
MLAB
3.1.3. Obvody USB rozhraní Spojíme USB_RXD a USB_TXD na konektoru J11 a otestujeme programem terminálu z osobního počítače (možná bude potřeba nainstalovat ovladače pro obvod FTDI). Zapisované znaky se musejí opakovat na terminálu. Po odstranění propojky z J11 opakování znaků nenastane (tedy pokud váš terminál nemá nastavené lokální echo odesílaných znaků). Pokud komunikace pracuje správně zapojíme propojky na J11 do provozního stavu USB_TXDCPU_RXD a CPU_TXD-USB_RXD. V této fázi můžeme nastavit konfiguraci obvodu FTDI dle postupu v kapitole Nastavení.
3.1.4. Obvody procesoru Zde není žádná záludnost. Nezapomeneme osadit drátové propojky (jsou vyznačeny na potisku). Procesor se vkládá do patice a programuje se přímo v zapojení. Po naprogramování firmwaru deska ožije a začne spínat. Nezapomeneme nahrát i defaultní obsah paměti EEPROM procesoru. Chování firmwaru je popsáno v návodu firmwaru.
3.1.5. Obvody vstupů a tlačítek Osazení tlačítek a oddělených vstupů je finální částí. Ověřujeme za pomoci firmwaru. Nejdříve ověříme, že pracují všechna tlačítka a pak postupně otestujeme jednotlivé galvanicky oddělené vstupy. Na vstupní svorky připojujeme 5-12V zdroj čímž dojde k aktivaci vstupů stejně, jako v případě tlačítek. Zkontrolujeme i svit indikačních diod.
3.1.6. Mechanické podložení Plošný spoj je pod svorkami a tlačítky podložen izolačním materiálem (pro malá napětí vyhoví i dřevěná latička 5x5 mm). Základnu tvoří například deska z dřevotřísky za pár korun.
3.2. Nastavení Obvod FTDI je vhodné nastavit pomocí utility FT_Prog.exe výrobce (nutno vyčenichat na webu výrobce, program je tam dobře schován na stránce http://www.ftdichip.com/Support/Utilities.htm (kdo ví, kde bude příště). Pro usnadnění nastavení je připravena konfigurace v souboru http://www.mlab.cz/PermaLink/TRAIN/EEPROM/FTDI_230X_TRAIN.xml .
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
12 / 16
TRAIN02A
MLAB
3.2.1. Nastavení identifikace Zařízení pojmenujeme.
3.2.2. Nastavení výstupu CBUS3 Výstup je připojen na indikační LED a je nastaven na indikaci aktivity RX/TX na sérovém portu.
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
13 / 16
MLAB
TRAIN02A 4. Programové vybavení Návod popisuje firmware TRAIN_TIMER verze 1.00.
4.1. Uživatelský návod Program má za úkol v nastavených intervalech přepínat jednotlivé reléové výstupy. Zadává se čas sepnutí a čas vypnutí v sekundách. Dále lze definovat rozsah náhodného času o který se prodlouží čas sepnutí a nezávisle čas vypnutí. Například zadá-li se čas prodloužení zapnutí 10 sekund, bude čas sepnutí prodloužen o náhodnou hodnotu 0 až 10 sekund. Nastavení spínacích časů lze měnit za běhu pomocí terminálu připojeném k USB rozhraní a může být natrvalo zapsáno do paměti EEPROM procesoru ATmega.
4.1.1. Tovární nastavení Toto nastavení je zapsáno ve zdrojovém kódu firmwaru a při programování se zapíše do paměti EEPROM procesoru. Je zvoleno nastavení, které je vhodné i pro účely testování funkčnosti hardwaru. Kanál
Čas zapnutí
Čas vypnutí
Náhodný přídavek k zapnutí
Náhodný přídavek k vypnutí
0
1
9
0
0
1
2
8
0
0
2
3
7
0
0
3
4
6
0
0
4
5
5
0
0
5
6
4
0
0
6
7
3
0
0
7
8
2
0
0
Tvar signálu
4.1.2. Test funkčnosti Test funkčnosti výstupů spočívá v ověření, že všechna výstupní relé spínají dle tabulky a že indikační diody u relé správně indikují. Test funkčnosti tlačítek se provádí jejich mačkáním s tím, že dojde k okamžitému přepnutí výstupu (při nejbližší celé sekundě). Stejně se testují i galvanicky oddělené vstupy pomocí pomocného napětí. I zde musejí správně indikovat diodové indikátory vstupů. TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
14 / 16
MLAB
TRAIN02A 4.1.3. Nastavení pomocí terminálu
Zařízení připojíme k počítači a pokud jsou nainstalované drivery pro FTDI čip objeví se ve správci zařízení nový sériový port (označený například COM12). Pokud v systému drivery chybí, lze je stáhnout z webu výrobce na adrese http://www.ftdichip.com/Drivers/D2XX.htm pro všechny běžné operační systémy. Dále spustíme terminálový program, například oblíbený bezplatný putty a v něm otevřeme port zařízení a po resetu zařízení uvidíme stávající nastavení a jednoducho nápovědu. Train Timer ---------------(c) miho 2013 WWW.MLAB.CZ 1.00 COMMAND CHANNEL TIME_ON TIME_OFF RND_ON RND_OFF ----------------------------------------------------------CONFIG 0 1 9 0 0 CONFIG 1 2 8 0 0 CONFIG 2 3 7 0 0 CONFIG 3 4 6 0 0 CONFIG 4 5 5 0 0 CONFIG 5 6 4 0 0 CONFIG 6 7 3 0 0 CONFIG 7 8 2 0 0 Command Mode MANUAL CONFIG Channel On Off Random_On Random_Off SAVE LIST
-----
Start Interactive Mode Set Time Config Save to EEPROM Display Curent Settings
>
Pro jednotlivé kanály můžeme změnit nastavení příkazem CONFIG, příkazem SAVE se nastavení uloží natrvalo do EEPROM procesoru a příkazem LIST můžeme zobrazit stávající nastavení. CONFIG 3 30 10 5 15 SAVE LIST
Výše uvedené nastavení definuje čas sepnutí kanálu 3 na čas 30 až 35 sekund a čas vypnutí na čas 10 až 25 sekund. Tip: Vlastní nastavení v podobě posloupnosti příkazů si můžeme připravit do textového souboru a jeho obsah poté vložit do terminálu. Jeho provedením dojde k nastavení nových hodnot. Jeden takový soubor je připravený v adresáři se zdrojáky.
4.1.4. Manuální ovládání přes USB Po zadání příkazu MANUAL se přepne firmware do režimu přímého ovládání (časovače stále běží, nechceme-li aby běžely, nastavíme u příslušného kanálu nové časy zapnutí a vypnutí na nulu a tím pádem nám automat nebude zasahovat do ručního přepínání).
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
15 / 16
TRAIN02A
MLAB
> MANUAL Interactive Mode 0..7 A..H a..h ESC
Reverse Channel 0..7 (and reset timer) Set Channel 0..7 on Set Channel 0..7 off Return from Interactive Mode
>
Zadáním číslic 0..7 zkracujeme čas přepnutí (stejně jako stiskem tlačítek) pro příslušný kanál 0..7 (dojde k okamžitému přepnutí, ale nejbližší další přepnutí je možné až po 1 sekundě). Zadáním písmen a..h vynucujeme okamžité vypnutí kanálu 0..7 bez ovlivnění časovačů. Zadáním písmen A..H vynucujeme okamžité zapnutí kanálu 0..7 bez ovlivnění časovačů.
4.2. Popis programu Program je psaný narychlo a není nijak optimalizován. Velkou část paměti programu spotřebují knihovny jazyka C, zejména funkce printf() a scanf(), které by stálo za to v případě nedostatku místa nahradit úspornějšími vlastními funkcemi.
5. Chyby a náměty Bylo by vhodné doplnit signál USB_RX odporem do země aby byl signál v klidu při vypnutém hlavním napájení.
TRAIN02A.cs / 2013-06-09 / miho / http://www.mlab.cz/PermaLink/TRAIN
16 / 16