Railnet

Návrh otvoreného projektu Dežo (pracovný názov pre nový FRED)

DCC | Jozef Kiss, 25. 09. 2006 (8674 zhliadnutí)

Súčasný FRED je low-cost ovládač na Loconet zbernicu. Bol vyvinutý v r. 1998, teda už je to dosť „dávno“. Spoliehal sa na vtedajšiu súčiastkovú základňu - vtedy najmodernejší jednočip PIC 16F84. Doba ale pokročila a bolo by žiadúce vytvoriť niečo čo bude môcť byť alternatíva k Fredovi a pritom to bude jednoduchšie na stavbu, lacnejšie a bude mať lepšie funkcie. V Nemecku síce už rok existuje nová verzia "FREDi", ale údajne sú s ním problémy a jeho zverejnenie sa stále odďaluje. Je postavený na čipe Atmel.

Základné požiadavky na Deža:
1. Minimum súčiastok
FRED má dosť veľa pasívnych súčiastok, obvod na detekciu nosnej je „analógový“, rovnako obvody na snímanie polohy potenciometra sú na báze RC člena a merania šírky impulzu.
Dežo by mal vystačiť: PIC a jeden obvod (ešte neviem aký) na rozhranie s Loconet a potom už iba tlačítka, prepínač, potenciometer a konektor

2. Jednoduchšia amatérska výroba
- FRED má dvojstranný plošný spoj s prekovenými dierami, používa smd súčiastky. Dežo by sa mal uspokojiť s jednostranným pl. Spojom, a žiadne smd.

3. Viac funkcií
Nové zvukové dekódery používajú funkcie na rôzne zvuky, bolo by dobré aby Dežo mal aspoň 8 funkcií, alebo 6 a shift (čiže 12)

4. rozšíriteľnosť a modularita
Už dlho sa uvažuje o tzv. CardFred, teda Fred s nejakou „čipovou“ kartou, ktorá určuje adresu lokomotívy. Teda zasunutím „niečoho“ do Deža sa nastaví adresa loko a netreba použiť funkciu „dispach“

5. programovací jazyk
Použiť nejaký „vyšší“ programovací jazyk. FRED bol programovaný v MASM pre PIC, pre Deža by som navrhoval JAL v2: http://pic.flappie.nl/


Obvody:
Pôvodný PIC nahradíme napr. PIC 16F88. Ten má čítače, USART a A/D prevodník.
Navrhujem použiť intrený RC oscilátor, ten je fabricky kalibrovaný, to musí stačiť....(a máme 2 voľné piny), ušetrili sme kryštál a prípadné dva kondíky.
Detekciu nosnej navrhujem urobiť pomocou časovača, ktorý sa bude nastavovať každým bitom paketu. Bude prednastavený na hodnotu od ktorej po dosiahnutie hodnoty FF uplynie práve čas potrebný na zistenie „zbernica voľná“ (1,6ms)
Na príjem a vysielanie dát použijem vstavaný USART, teda sw môe bežať asynchronne od príjmu a vysielania dát.
Na zistenie polohy potenciometra použijeme intrený A/D prevodník, s tým že sa bude čakať na prevod.
Tlačítka a prepínač použijeme v štandardnom režime, v prípade potreby 12 funkcií použijeme maticu 4x4 a skenovanie
Možné riešenie F1 až F12 - otočný prepínač a tlačítko aktivácie nastavenej funkcie

SW
JAL je projekt jedného programátora (Wouter van Ooijen, http://www.voti.nl/jal/index_1.html ), ktorému „liezlo“ na nervy komplikované rutinné programovanie v MASM. Napísal vyšší jazyk ktorý má vhodné konštrukcie pre programovanie jednočipov. Projekt ustrnul vo verzii 0.45. Následne sa toho chytil Stef Mientki a vytvoril IDE a simulátor a tento projekt je veľmi živý (http://pic.flappie.nl/). Existuje už veľké množstvo knižníc a množstvo väčších aj menších projektov, ktoré už úspešne fungujú, teda je sa z čoho učiť.
Použitím virtuálnych premenných sa zvyšuje prehľadnosť a zrozumiteľnosť kódu.
Keďže na príjem a vysielanie sa použije USART, ktorý vyslanie a príjem bajtu obslúži asynchrónne, je možné celý SW postaviť nie na prerušeniach ako FRED, ale na jednoduchom poolingu. (možno)
Príjem paketu je potrebný iba v prípade režimu dispach, kde sa na paket čaká, inak sa len vysiela. Vysielanie je možné ak je zbernica voľná.
Čiže hlavná slučka je:


Začiatok:
Zisti potenciometer
Zisti tlačítka
Ak je dispach choď na dispach
Ak nie je zmena tak začiatok
Čakaj na voľnú zbernicu
Vyšli paket
Choď na začiatok
Dispatch:
Obsluha dispatch
Choď na začiatok


Loconet: (definícia)

Elektricky: zberica (prúdová slučka)
„Master“ by mal linku napájať prúdovým zdrojom 15mA, pričom napätie nezaťaženej zbernice je obvykle 12V.
Na linku sa pristupuje systémom wired-or (pull-down)
Medzera (nik nevysiela) 4-12V
Bit (vysiela) 0-4 V
Zariadenie musí by schopné „vyslať“ signál uzemnením linky, pričom musí byť schopné „stiahnuť 50mA, a vydržať 35V v neaktívnom stave.



Dĺžka bitu je 60uS .... rýchlosť vysielania je 16,66 Kbaud
Priblíženie je 16,475 (1,5%)
Byte je 1 štartbit, 8 bit data, 1 stop bit, LSB prvý

CDBACKOFF - voľná zbernice je po 20 bitoch, t.j. 1,2ms. Po tomto čase môže vysielať iba master, ostatní vysielajú po + 6bit (360uS) teda celkove po cca 1,6ms . Povolený rozptyl pre CDBACKOFF je 180uS

Pri vysielaní je vysielajúci povinný sledovať, či to čo vysiela je „správne“ (teda že nedošlo ku kolízii). Norma hovorí o kontrole per bit a per byte. FRED používa kontrolu kolízie len pri štartbite.


Pokračovanie....

Hľadám pár šialencov, ktorí sa chcú pridať a podieľať sa na vývoji...
Aktuálny stav: čo funguje
  • časové slučky, rôzne oneskorenia, použitím timeru a prerušenia
  • SW príjem paketu z Loconetu
  • SW vyslanie paketu na Loconet
[Akt. známka: 0 / Počet hlasov: 0] -      + 

Pridať nový komentár

zdeno 26.09.2006 17:18:48

noseni drivi do lesa

ahoj, krasne, kde jsi byl, kdyz jsem projektoval huga a hledal partnery na vyvoj. ted , kdyz je hugo hotovy a 100% funkcny, vyjdes s novym projektem. je to tak trochu truc podnik. ted delam huga 4 verze, kde pouzivam 89lp2052 atmel, ktery je o dva rady lepsi nez 89c2051 a zajistuje super parametry pro funkci huga. nepouzivam zadne exkluzivni soucastky a hugo nepotrebuje kalibraci. ahojz

Reagovať

jki 26.09.2006 17:59:46

zverejni kód, použité nástroje, urob to "otvorené" a môžeme sa baviť :-)

Reagovať

zdeno 27.09.2006 19:37:43

ahoj, pokecame v ziline, bylo by dobre , kdyby prijelo co nejvic zainteresovanych. --- jinak zdrojaky netajim, zatim nikdo nemel zajem. --- pouzivam pinnacle 52, je na ftp zababova. vsechno programuji v assembleri. --- atmel lp2052 je novinka a jeste sam to moc neovladam. ma to strasne moc novych funkci, ktere se musim naucit pouzivat. --- ted mam problemy, zastavil jsem vsechny hobby aktivity. ahojz

Reagovať

jki 27.09.2006 20:57:08

pinacle 52 je 30dňový shareware, alebo 100$. nie, neprosím. ja chcem používať naozaj free a open source nástroje, nie pokútne získaný sw. ja sa živím programovaním.

Reagovať

zdeno 28.09.2006 08:15:34

ahoj, takova malichernost, jako je pouzivani pinnacle52. to nemas opravdu jine a dulezitejsi problemy ? jinak pinnacle je limitovan do zpracovani 2kb kodu a je opravdu free. pouzivam ho ctyri roky. jinak existuje asi 50 jinych prekladacu.:-))) --- nepouzivam nadstavby, programuji primo v assembleri, je to lepsi a hlavne rychlejsi a prehlednejsi, pokud se to dobre okomentuje. --- jinak ted delam tak trochu na simulatoru 2052, kde pinnacle parametrami nestaci. --- ahojz

Reagovať

zdeno 06.11.2006 20:37:08

otazka

začiatok: zisti potenciometer zisti tlačítka ak je dispach choď na dispach nechapem, jaky dispach ? co je to ? prosim o vysvetleni. ak nie je zmena tak začiatok čakaj na voľnú zbernicu vyšli paket choď na začiatok dispatch: obsluha dispatch prosim o vysvetleni obsluhy ? choď na začiatok

Reagovať

Pridať nový komentár