Railnet

Čtečka proměnných #CV

DCC | Zdeno Janeček, 05. 12. 2011 (5503 zhliadnutí)

Mám asi 40 dekodérů a spravování jejich proměnných mi nevyhovovalo jak po stránce přístupu, tak i archivace. Navíc mám pár dekodérů příslušenství a i u těch je dost důležité mít někde uložené, jak a co mají nastavené. Právě archivace všech parametrů CV mne přinutila vymyslet tuto čtečku. Prvotní impuls na vytvoření vzniknul při používání JMRI programu, který umožňuje čteni, zápis a archivaci všech dekodérů. Minibox není vhodný, protože nemá výstup do souboru a RKDCC je zas neskladný a není moc flexibilní.

 

Program JMRI je klíčový pro používání mého zařízení a protože je pod licencí GNU, tak je volný a použitelný pro komerční i nekomerční použití. Najdete ho na adrese http://jmri.sourceforge.net/download/, kde si vyberete verzi podle operačního systému, který používáte. Tento program používá runtime Java a je třeba si nainstalovat podporu, která je taky FREE. Používání JMRI je celkem intuitivní a myslím, že nebude problém se ho naučit a používat, pro toho, kdo bude využívat můj adaptér. Právě použití programu JMRI mi umožnilo číst, měnit a zálohovat všechny CV u mých dekodérů. Další věc, která urychlila vývoj adaptéru, byl vývoj ovladače Ewa, který dokáže ovládat dvě lokomotivy současně a na testování jsem potřeboval dvě lokomotivy se stejným průběhem křivky rychlosti a dynamiky a to se nastavuje právě v CV registrech.

Dost jsem spekuloval nad tím, jak to udělat a navrhnul jsem asi 4 různé typy čtečky, ale ani jedno mi nevyhovovalo. Jako přiklad uvedu RS232 a samostatný zdroj, další byl USB a násobič napětí nebo USB plus zdroj napětí apod. Nakonec jsem vymyslel úplně svoje řešení, kdy výstupní napětí z procesoru násobím dvěma na hrnečkovém trafu z ferit hmoty H22 a Al = 4200. Primár má 60 závitů x 0.2 mm a sekundár 120 závitů x 0.2mm. Odpory 8 x 68Ω jsou optimum pro kmitočet 8kHz, na kterém běží DCC a indukční zátěž okolo 20mH. Pokud by se někdo obával o mikroprocesor, tak může jit až na hodnoty 100 Ω. Minimum je 56Ω. Na činnost to nemá vplyv. Druh feritu a typ nutno dodržet, jinak není garantováno správné čtení, protože práce do vysoké indukčnosti, je podmínkou korektní činnosti, protože klidový proud obvodu musí byt pod 3mA.

Jako všechno , nic není jednoduché a i moje řešení má svoje problémy a specifika. Je nutné s tím počítat a doufám, že se do stavby nepustí začátečník. Myslím, že i zkušený amatér s tím bude mít problémy, pokud nebude mít příslušné přístrojové vybavení. Spousta věcí se totiž nedá napsat a předpokládá se jejich znalost. Tím třeba myslím znalost správných FTDI ovladačů na USB a jak se instalují. Zrovna tohle moje zařízení patří mezi ty, které vypadají snadno a jednoducho, ale jen tak vypadají. Samotný přípravek je jednoduchý a neschovává v sobě žádné problémy, ale spojení všech tří věcí (JMRI, USB a čtečka) do funkčního celku není zrovna uživatelsky příjemné.
Schéma čtecího a zapisovacího adaptéru.

Přípravek se funkčně skládá ze tří věcí, USB/TTL převodník, generátor DCC a snímač odpovědi od dekodéru.

  1. je použité standardní zapojení a je mnohokrát odzkoušené. Problém je v přenosovém USART kmitočtu, 16666 Baudu, který není standardně používán a musí se nastavit v registrech FT232R na správnou hodnotu. Ale v poslední verzi JMRI pro MS100 je už zabudováno přepsání na 16666 Baudu a není nutné ho upravovat. Program sám zjisti USB rozhraní a nainstaluje rychlost 16666 Baud na USART.
  2. Mikroprocesor Attina2313 čte správy od JMRI a podle příkazu na slot 124 generuje DCC pakety pro dekodér. Zatím je zabudovaný pouze DIRECT mód a bajtové vyčtení a zápis, které musí mít povinně implementovány všechny dekodéry. Plánuji naprogramovat bitovou manipulaci, která je hlavně pro čtení velmi rychlá.
  3. Snímač potvrzovacího impulsu je dělený jumper přepínačem, aby ho šlo nastavit pro různé klidové proudy dekodérů. V zásadě by neměl klidový proud přesahovat hodnotu 10mA, jinak je čtení nesprávné a zmatečné. Pro impuls 60mA podle normy NMRA je ideální hodnota 0,7V / 0,06A = 11.7 Ω , to je 8j2 + 1j8 +1j8 = 11,8 Ω. Takže se spojí piny jumperu 3 a 4. Hodnota 0,7V je otevírací pro tranzistor BC337 a potvrzovací impuls se přečte na pinu INT1 procesoru.

 Na to, jak je to jednoduché, tak jsem tomu věnoval dost času. Ne proto, ze bych nevěděl co chci, ale pro to, že některé věci jsou náročné na vyhledávání a ještě se musí vědět, kde to hledat. Ve skutečnosti se tu používají až tři velmi různé protokoly (USB, Loconet, DCC) a je to dost poznat a při návrhu je nutné to respektovat.

Znalostní knihovny okolo tohoto adaptéru jsou veliké, že vlastně ani nevím odkud začít. Asi nejsnadnější bude začít od té „nejlehčí“ a to je USB. Tady nás vlastně nemusí zajímat, jak to funguje, ale je nutné zabezpečit podmínky funkčnosti. Teda použít správný driver pro FT232R. Najdete ho na http://www.ftdichip.com/Drivers/VCP.htm. Použijte radši setup verzi. Nejlepší je, když si instalační program sám najde příslušný driver.

Další v pořadí je Loconet, který komunikuje přes slot 124 pomocí paketů E7h a EFh. Výklad použitých proměnných je na http://www.digitrax.com/ftp/loconetpersonaledition.pdf kde najdete podrobnosti.

Poslední je vytváření DCC paketu podle normy NMRA a čtení ACK odpovědi, které najdete na http://www.nmra.org/standards/DCC/standards_rps/RP-923.pdf, nastavení a umístění #CV najdete na
http://www.nmra.org/standards/DCC/standards_rps/RP-9.2.2%202007%20July.pdf

Tohle jsou základní knihovny, které musí ovládat každý, kdo by chtěl něco podobné navrhnout a pochopitelně ještě spoustu dalších, které jsou použity, ale nesouvisejí přímo. Jako třeba Eagle, Ponyprog, DCCshow, datasheety všech součástek apod.

Další je program JMRI a to přesně DecoderPro, který najdete na výše uvedeném linku v sekci download. Program se instaluje a instalace je v pohodě. Taky spolupráce s mým adaptérem je v pořádku, pokud se dostanete přes problém s 16666 Baud, který je nestandardní. Je zajímavé, že JMRI v tomto není ustálené a není znormované, jak to udělat. Aspoň jsem to nenašel.

V zásadě jediný problém, na který jsem narazil opravdu tvrdě, je chyba programu JMRI, který nemá ošetřenou chybu v inicializaci. Jedná se o to, že když si nakonfigurujete nějaký port , třeba COM 6 a potom port nebude přístupný, tak se nedá JMRI nastartovat a program je zaseknutý. Jediné co pomůže, je reinstalace JMRI nebo nějak připojit chybějící port. Taky chybějící adaptér způsobí zaseknutí JMRI, ale to se dá snadno opravit připojením adaptéru a restartem JMRI. Jinak náhodou jsem přišel na to, že když je port ve vzduchu, tak stačí počkat a JMRI po velmi dlouhé době nastartuje a je možná změna portu. Dlouhá doba je podle mne víc jak ½ hodiny.

Mám vytvořené dvě verze programu do čtečky CV a to pro bitové a bajtové vyčtení obsahu konfiguračních proměnných. Pokud vlastníte dekodéry, které podporují bitové vyčtení, tak je tento program jednoznačně výhodnější, protože je velmi rychlý. Vyčtení jednoho bajtu trvá přesně stejnou dobu, asi ¾ vteřiny, naproti tomu bajtové vyčtení je proměnné od ½, až do několika sekund. To závisí na tom, jaká hodnota je v CV zapsaná. Zápis pro obě verze je bajtový, protože tady není o čem spekulovat. Ono se to stává v poslední době skoro pravidlem, že pracujeme s BLACKBOXy, kde máme definované parametry a ty musíme navzájem mezi sebou sladit. Takže jediné, na čem jsem se mohl vyřádit je program do mikroprocesoru, který sám o sobě je klasická Černá skřínka.

Vyrobené tři kusy, všechny jsou funkční.

Hex kod pro bitovou čtečku a bytový zápis.
Vytvořené v Bascom Basic.
Kmitočet 8MHz, interní.

:1000000012C018958AC21895189518951895D0C2DF
:10001000189518951895189518951DC217C218951A
:100020001895189518958FED8DBFC8ECE8EB4E2EFE
:10003000DD275D2EEEE7F0E0A0E6B0E0A89584B7FE
:10004000082E877F84BF88E1992781BD91BD8827CD
:100050008D933197E9F78DE189B980E082B988E124
:100060008AB9662480EF88BB8FEF87BB82E082BBB2
:1000700082E181BB86E083B9579A85B7837F886028
:1000800085BF8BB780688BBF82E083BF82E080BF73
:1000900089B7846089BF89B7816089BF8AE38CBFD3
:1000A00084E786BF8FEF8093810080E08093820099
:1000B0008FEF809383008AE38093890084E786BF73
:1000C0008AE38CBF989899989A989B9878942DD2A7
:1000D000082F013009F056C031E0A1E721D200918C
:1000E00071000F3E09F401C0F2CF8091710080933E
:1000F00073003DE0A4E714D280E08093720081E0B9
:1001000080937100009171000E3010F009F010C062
:1001100000917200A1E7AD90A2E7AA0D4C910427CF
:10012000A2E70C93A1E78C918F5F8C9308F4EACF40
:10013000009172000F3F09F40CC0C399FECF84EB0D
:1001400022D28FE720D280E41ED284E71CD2BFCF18
:1001500008C084EB18D28FE716D281E014D285E371
:1001600012D20091760040E40423A1E70C930091A1
:100170007100003009F002C006D004C0003409F05C
:1001800001C04DD0A4CF88EE8093850000918500FA
:100190000F3E10F009F011C0EAD091E0A6E800D2BD
:1001A000A3E38C9180FBA6E88C9187F98C93A5E85A
:1001B0008C918F5F8C9308F4E9CF87EE8093850054
:1001C000D6D0A6E80C9107FB00270EF401E04427E7
:1001D000A3E38C9180FB0EF44395041709F005C04E
:1001E00081E08093770094D019C080E080937700FD
:1001F00080917B0080937100A6E88C9187FBA1E73A
:100200008C9181F98C938091710080937B00009197
:1002100086004FE70423ADE70C937AD0089580E081
:100220008093810080E08093820080E0809383004F
:1002300081E080938A00FAD08CE7809381008091DE
:100240007B0080937100A1E78C9184FBA1E88C91E5
:1002500080F98C93A1E78C9185FBA1E88C9181F9C1
:100260008C9380917C0080938200A1E78C9180FB2D
:10027000A2E88C9187F98C9380917D008093830014
:10028000A1E78C9181FBA3E88C9187F98C93009175
:100290008100409182000427A1E70C930091710036
:1002A000409183000427A4E80C93989880E0809301
:1002B0008A00BCD080E08093810080E0809382003F
:1002C00080E08093830081E080938A00AFD08FEF3D
:1002D0008093810080E0809382008FEF8093830081
:1002E00081E080938A00A2D00027A3E38C9180FB59
:1002F0000EF401E040E0041709F005C082E08093AD
:10030000770006D004C080E08093770001D0089584
:1003100087EE8093730080E08093720081E0809389
:100320007100009171000D3010F009F010C00091C3
:100330007200A1E7AD90A2E7AA0D4C910427A2E7B5
:100340000C93A1E78C918F5F8C9308F4EACFA2E71E
:10035000E1E7F0E0A190E2E7F0E0EA0D8C91809512
:1003600080839299FECF3EE0A3E708D1089580E014
:100370008093810080E08093820080E080938300FE
:1003800081E080938A0052D088E780938100809139
:100390007C008093820080917B0080937100A1E7B4
:1003A0008C9184FBA1E88C9180F98C93A1E78C91CE
:1003B00085FBA1E88C9181F98C93A1E78C9180FB5E
:1003C000A2E88C9187F98C938091850080938300BB
:1003D00000918100409182000427A1E70C930091D5
:1003E0007100409183000427A4E80C93989880E062
:1003F00080938A001BD080E08093810080E080930E
:10040000820080E08093830081E080938A000ED098
:100410008FEF8093810080E0809382008FEF809344
:10042000830081E080938A0001D008959A989A9B76
:10043000FECF9A989A9BFECF9A989A9BFECF9A9855
:100440009A9BFECF9A989A9BFECF08958F9380EF48
:1004500088BB8F9118958F938FE088BB4F934FB7D0
:100460004F935F936F937F9380918900682F660FFE
:10047000762F770F40918700439540938700463150
:1004800008F440C0463139F46CBF76BF509181000A
:100490005093880039C04F3108F427C04F3139F4E8
:1004A0006CBF76BF50918200509388002DC04832B7
:1004B00008F41BC0483239F46CBF76BF50918300FA
:1004C0005093880021C0413308F40FC0413359F4E0
:1004D00050918A00513091F06CBF76BF50918400EA
:1004E0005093880011C04A3348F450918800550F4A
:1004F0005093880038F06CBF76BF06C09A9A552793
:10050000509387008CBF66BF7F916F915F914F9131
:100510004FBF4F918F91C3981895989AC39A189589
:100520000AD08D933A95E1F7089580917000882361
:1005300009F081E008950F929F93AF93BF937F934B
:10054000809170008823E1F3F894809170008A957F
:100550008093700090916E00A0E6A90F0024B01D5A
:100560008C9193959E3009F4992790936E0078941E
:100570007F91BF91AF919F910F9008958D9103D07E
:100580003A95E1F708955D9BFECF8CB908953197B8
:10059000F1F70895689462F80895E89462F8089570
:1005A000903029F08C9186959A95E9F78C9308956F
:1005B0007F930F93AF93BF938F939F938FB78F9337
:1005C000809170000EE0081B19F49CB1E3DF11C0AC
:1005D00000916F00A0E677279CB1A00FB71F9C93F6
:1005E00083958093700003950E3009F400270093E3
:1005F0006F008F918FBF9F918F91BF91AF910F919E
:040600007F91189539
:00000001FF 

 

[Akt. známka: 0,00 / Počet hlasov: 3] -      + 

Pridať nový komentár

dano 08.12.2011 20:16:26

SPROGII

Ahoj Zdeno,

vyborny clanok. Som rad, ze potom ako som si urobil prestavku v pisani to tu neumrelo :) ale uz zacinam pisat aj ja opat...

Apropo, JRMI a PC. Pri potulkach po internete ma JKI cca pred 2 rokmi upozornil na take nieco ako SPROGII - http://www.sprog-dcc.co.uk/ . Podla prilozenych PDF schemach je to nieco podobne a za 50libier sa to da kupit hotove v krabicke. Co som aj urobil, teda Jozef a ja som mu nanutil tych 2000SKK, co to vtedy bolo, za to.

Ako pises taketo pomocky su skvele a je vyborne, ze aj na Slovensku mame odbornika co to vie. Podla mna by si tiez mohol hodit sem "komercnu" cenu, nech pripadny zaujemca si to nemusi robit.

Sqveli clanok - dal som "5".

DanoM

Reagovať

zdeno 09.12.2011 19:09:38

kdo mne pozna, vi, ze nejsem nenazrany a spoustu veci jsem lidem delal za cenu soucastek. Ale to dokaze velmi malo lidi ocenit ;-)
---
Cena je 20 Eur , kompletne hotove v krabicke. Poslal jsem Petovi fotku, hadam ji sem zavesi.

Reagovať

Pridať nový komentár