Loconet / DCC s použitím arduino

Vše pro digitální provoz - dotazy, praxe, návody, postupy, normy, kompatibilita atd.

Moderátoři: Michal Dalecký, Jarda H., Rudolf

Re: Loconet / DCC s použitím arduino

Příspěvekod Jirka_US » sob 11 čer, 2016 10:47 pm

Schází mi tu informace pro ty, kteří si to nedovedou najít, a to kolik detekčních úseků (nebo jiných detekovaných událostí pro zpětných hlášení) můžeš připojit k DCC++. A bohužel, nemožnost využít Train Controller je pro dost lidí podstatná. Se zbytkem se souhlasit dát.

- info o celkovem poctu useku doplnim, jakmile bude testovani u konce.
- ad TC, no nevim, ten kdo ma na koupi TC za ca. 9tis a vice asi nebude resit centralu DCC++ za ca. deset dolaru....,ikdyz DCC++ je spravna cesta jak naklady na "digital" snizit na celkem prijatelnou miru. A v kazdem pripade je skoda, ze se zatim neobjevil prispevek jak DCC++ pripojit k TC.
Jirka
Jirka_US
 
Příspěvky: 1155
Registrován: sob 08 kvě, 2010 5:56 am

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 12 čer, 2016 7:02 am

pokud to nekoho zajima, tak jsem prisel na to, jak nahrat pocatecni stavy do EEPROM do Arduino Mega 2560.
Ale myslim si, ze to pujde na vsechny Arduina. Zatim jine nemam, tak nemuzu otestovat.
---
Pouzivam GUI rozhranie Burn-O-Mat na Avrdude a pouzil jsem konfiguraci "Avrdude.comf" z Arduino-IDE i samotne Avrdude.exe,
kde je vlastne uz vsechno hotove.
Do Burn-O-Mat nastavite cesty ku obema souborum Avrdude a nastavite programator na Wiring a prislusny port. Je dost blbe, ze rozsah portu je jen do 8, parametr USB je nepouzitelny. Proto je nutne v spravci zarizeni priradit port od 1 do 8, pokud jsou volne.
Taky je dulezite nastavit switch na -D, ktery dovoli strankove mazani Flash. Tim si neznicite bootloader.
---
cesty na oba soubory jsou pro Wokna a vzorovou instalaci:
C:\Program Files\Arduino\hardware\tools\avr\bin\avrdude.exe
C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.comf
---
GUI rozhrani Avrdude
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.php
Přílohy
burn.JPG
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 12 čer, 2016 7:19 am

zdeno píše:Dost mi vadi, ze bootloader blokuje zmenu "fuse's". Je to blbe, zvlast pokud je nenastavena fuses EESAVE.
Sice bootloader chrani sam sebe a EEPROM, ale zase nedovoluje do EEPROM cokoliv nahrat.
Nevím, jestli používáš jinej boot loader než jí, ale já normálně eeprom nahrávám. On to ten loader podporuje, jediné co jsem upravoval je, aby to nahrávání provádělo přímo grafické rozhraní, které to normálně nedělá. Z řádku to jde volat kdykoli si vzpomeneš. Konec konců na stránce je to myslím celkem dost popsané.

zdeno píše:Jinak rozmyslam vytvorit uplne novy bootloader, ktery umozni menit Fuses a zapisovat EEPROM a samozrejme Flash. Tento je prilis alibisticky a jednoucelovy.
Problem asi bude, jak ho tam dostat, kdyz je skoro vsechno zablokovane.
Zvláštní je, že dokumentace upozorňuje na nebezpečí, že boot loader není self protected a že umožňuje naopak přehrát všechno. Krom toho, že ty desky mají vyvedené ISP piny.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod TonikM » ned 12 čer, 2016 8:09 am

zdeno píše:pokud to nekoho zajima, tak jsem prisel na to, jak nahrat pocatecni stavy do EEPROM do Arduino Mega 2560.
Ale myslim si, ze to pujde na vsechny Arduina. Zatim jine nemam, tak nemuzu otestovat.
--- ...


Pokud ti jde o nahraní pouze prvotních údajů, tak to řeším tak, že si vyberu jeden byte (vetšinou první pozici v EEPROM), ten přečtu a pokud tam je něco jiného než zvolený byte (ten si určím vlastně náhodně v programu), tak to znamená nahraj obsah, který je v kódu.
Pokud se shodují, je to bráno že už je tam správný obsah. Pokud potřebuji změnit, změním si porovnávaný byte (většinou si tam dávám číslo verze).

Myslím, že je to použitelné a jednoduché.
TonikM
 
Příspěvky: 97
Registrován: čtv 22 led, 2015 5:50 pm

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 12 čer, 2016 8:22 am

TonikM píše:Pokud se shodují, je to bráno že už je tam správný obsah. Pokud potřebuji změnit, změním si porovnávaný byte (většinou si tam dávám číslo verze).

aj ja jsem nad necim podobnym premyslel, ale to neni dokonale.
Tim myslim, ze potrebujes tri sady udaju. Jednu startovaci (tovarni nastaveni), druhou provozni a treti zmenene hodnoty. Bylo by neprakticke nemit moznost menit hodnoty v EEPROM.
Pokud ti ale smaze celou EEPROM, tak je nestastne, kdyz se nahraji tovarni hodnoty a ty se musi nasledne upravovat podle reality.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod TonikM » ned 12 čer, 2016 8:44 am

Celou EEprom by jsi nikdy neměl mazat, to snad jen při nějaké poruše a pak je lepší, kdyz tam bude výchozí stav, aby se ti to nezopakovalo a věděl jsi co tam vlastně máš. Takže stačí jediná sada na start a ostatní věci máš právě v EEPROM. Pro práci s eeprom jsou i různé knihovny, podle toho co chceš zapisovat a jak.
Se na to díváš asi dost paranoidním pohledem. Tenhle způsob ti má nahradit to, že nemůžeš běžně z Arduino IDE nahrávat EEPROM.
TonikM
 
Příspěvky: 97
Registrován: čtv 22 led, 2015 5:50 pm

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 12 čer, 2016 1:09 pm

TonikM píše:Pokud ti jde o nahraní pouze prvotních údajů, tak to řeším tak, že si vyberu jeden byte (vetšinou první pozici v EEPROM), ten přečtu a pokud tam je něco jiného než zvolený byte (ten si určím vlastně náhodně v programu), tak to znamená nahraj obsah, který je v kódu.
Pokud se shodují, je to bráno že už je tam správný obsah. Pokud potřebuji změnit, změním si porovnávaný byte (většinou si tam dávám číslo verze).

A není to nebezpečné, pokud se ti dostane arduino, kde nějakým nedopatřením není tvůj progam, ale je tam jiný který tam zanechal stejnou hodnotu?
Není čistější si tam ten obsah nahrát? Myslel jsem, že jsi větší machr na tyhle jednoduché záležitosti.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod TonikM » ned 12 čer, 2016 1:46 pm

fulda píše:Pokud ti jde o nahraní po... na tyhle jednoduché záležitosti.


Tak pravděpodobnost je to dá se říci 1024 na 254-tou? Ano, přiznávám se, že pokud používám pro onu proměnnou první byte, je pravděpodobnost mnohem menší. Programátor si může vybrat, jak jsem tam zmiňoval své místo, třeba někde ke konci EEPROM, čímž se dramaticky zvedá ona nemožnost náhody. Pokud volím náhodně místo uložení a obsah (záměrně nepočítám hodnoty 00 a FF). Další možností je použít dva byte a nemusí být za sebou. Dále se to dá podpořit třeba potřebou propojení propojky atd... myslím, že řešení a celkem úspěšně používaných je spousta. ŠLO TU JEN O NAPOVĚDU. Je dost inteligentní, aby si možnost sám rozšířil podle sebe.
Rozhodně je to přenositelnější než tvé úpravy. Předpokládám, že se tu stále bavíme o Arduinu a né o vývoji profi firmy, což není myslím ani tvůj obor, podle toho co tu dokážeš napsat, že?

Koukám, že i jinde se dnes snažíš něco plácat do větru. Asi začíná okurková sezóna :-))))
TonikM
 
Příspěvky: 97
Registrován: čtv 22 led, 2015 5:50 pm

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 12 čer, 2016 6:45 pm

TonikM píše:Tak pravděpodobnost je to dá se říci 1024 na 254-tou? Ano, přiznávám se, že pokud používám pro onu proměnnou první byte, je pravděpodobnost mnohem menší. Programátor si může vybrat, jak jsem tam zmiňoval své místo, třeba někde ke konci EEPROM, čímž se dramaticky zvedá ona nemožnost náhody. Pokud volím náhodně místo uložení a obsah (záměrně nepočítám hodnoty 00 a FF). Další možností je použít dva byte a nemusí být za sebou. Dále se to dá podpořit třeba potřebou propojení propojky atd... myslím, že řešení a celkem úspěšně používaných je spousta. ŠLO TU JEN O NAPOVĚDU. Je dost inteligentní, aby si možnost sám rozšířil podle sebe.
Rozhodně je to přenositelnější než tvé úpravy. Předpokládám, že se tu stále bavíme o Arduinu a né o vývoji profi firmy, což není myslím ani tvůj obor, podle toho co tu dokážeš napsat, že?

A čím je to lepší a přenositlnější?
Já tomu moc nerozumím, ale já si pořád myslím, že je lepší opravit Arduino IDE aby fungovalo normálně, než dlat všeliaké pákohyby a spoléhat na to, že nikdo předtím neudělal podobné.

Ještě je možné si udělat progam, který má jen v setup() nastavení té eeprom a má prázdný loop(). Prostě ho nahraješ a spustíš před tím, než nahraješ ten vlastní užitečný program. Ale i to mi přijde dost komplikované.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod TonikM » ned 12 čer, 2016 7:28 pm

Přenositelnosti kódu. Tvé řešení úpravy kódu je sice zdánlivě hezké (určitě skoro správné) , ale pro šíření kódu nesprávné řešení. Arduino vždy bylo zaměřené na přenositelnost v komunitě. Je třeba si uvědomit, co Arduino je a tak se i chovat.

Ta tvá CHYBA je známá nevýhoda Arduina, když budeš hledat, zjistíš , že nejsi zdaleka, ale opravdu zdaleka jediný, kdo se tím zabýval, ale "upravovat" to zřejmě nebudou, to už by to udělali dávno. Prostě z nějakého interního důvodu je to takto navrženo. Přiznám se nepátral jsem nikdy proč, ale hledal jsem spíše možná řešení.

Je celkem jedno, jestli to dáš do setup nebo loop, protože i v loop můžeš kód spustit pouze jednou. Je třeba hledat řešení, které může být součásti jednoho kódu součástí jednoho programu. Pravě, jako nastíněné řešení. Daji se tím i řešit přechody na novější verze i se zachováním konfigurace.

Vše záleží jen na kreativitě. Je lepší si umět poradit než doufat, že jednou někdo změní svůj záměr (záměrně nepíši chybu).
TonikM
 
Příspěvky: 97
Registrován: čtv 22 led, 2015 5:50 pm

Re: Loconet / DCC s použitím arduino

Příspěvekod Jirka_US » ned 12 čer, 2016 7:30 pm

Schází mi tu informace pro ty, kteří si to nedovedou najít, a to kolik detekčních úseků (nebo jiných detekovaných událostí pro zpětných hlášení) můžeš připojit k DCC++.

Tak zatim experimentalne vyzkouseno 45 vstupu u DCC++ (Arduino Mega2560) v konfiguraci "senzory", to jest zejmena vhodne pro detekci obsazeni. Pokud budeme uvazovat, ze cena za 1 vstup u KZH na ceskem trhu je neco okolo 100Kc, tak ta potencialni uspora v pripade pouziti DCC++ muze dosahnout nekolika tisic.
Jirka
Jirka_US
 
Příspěvky: 1155
Registrován: sob 08 kvě, 2010 5:56 am

Re: Loconet / DCC s použitím arduino

Příspěvekod BohousP » ned 12 čer, 2016 7:42 pm

Tak zatim experimentalne vyzkouseno 45 vstupu u DCC++ (Arduino Mega2560) v konfiguraci "senzory", to jest zejmena vhodne pro detekci obsazeni.

To číslo je celkem hezké, pro menší kolejiště určitě postačí. Problém je zakopaný jinde, to je délka přívodních vodičů. Do dlouhých přívodních vodičů se indukují rušivé signály. Už při běžných modulech po 16 vstupech je to problém, proto se přešlo na osmivstupové. Ty se lépe umístňují v "prostoru" a spojí se S88 (nebo R/S) sběrnicí.
Takže vždy je to něco za něco ...
TT, DCC, NanoX-2017, TC8, ... http://masinky.info
Uživatelský avatar
BohousP
 
Příspěvky: 3031
Registrován: stř 12 kvě, 2010 9:17 am
Bydliště: Praha - Malešice

Re: Loconet / DCC s použitím arduino

Příspěvekod Jirka_US » ned 12 čer, 2016 8:14 pm

To číslo je celkem hezké, pro menší kolejiště určitě postačí. Problém je zakopaný jinde, to je délka přívodních vodičů. Do dlouhých přívodních vodičů se indukují rušivé signály.

Tak tento problem snad zalezi na tom jak kvalitne je udelany KZH a rozhrani senzoru....pokud s tim ma nejaky KZH problem, tak by bylo snad vhodne na to potencialni zakazniky upozornit. Bohuzel zde na DF velmi typicky priklad, kdy se chyba nebo nedostatek u jednoho konkretniho zarizeni a konkretniho vyrobce vydava za "vseobecny" problem. Digitrax pouziva 16 vstupu a aplikace jsou na podstatne vetsich kolejistich nez je bezne prumerne ceske kolejiste a potize to nedela....
Nyni zpet k DCC++, pokud by preci jen clovek chtel pouzit topologii jen s max. 8 vstupy, tak samozrejme pouzije dalsi DCC++ s 8 vstupy, vzhledem k cene Arduina je to naprosto zanedbatelna polozka.
Jirka
Jirka_US
 
Příspěvky: 1155
Registrován: sob 08 kvě, 2010 5:56 am

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » pon 13 čer, 2016 7:05 am

TonikM píše:Přenositelnosti kódu. Tvé řešení úpravy kódu je sice zdánlivě hezké (určitě skoro správné) , ale pro šíření kódu nesprávné řešení. Arduino vždy bylo zaměřené na přenositelnost v komunitě. Je třeba si uvědomit, co Arduino je a tak se i chovat.
Můžeš vysvětlit to slovo "skoro"?? Trochu mi to zní, jako by jsi věděl o nějakém případu kdy není.

TonikM píše:Ta tvá CHYBA je známá nevýhoda Arduina, když budeš hledat, zjistíš , že nejsi zdaleka, ale opravdu zdaleka jediný, kdo se tím zabýval, ale "upravovat" to zřejmě nebudou, to už by to udělali dávno. Prostě z nějakého interního důvodu je to takto navrženo. Přiznám se nepátral jsem nikdy proč, ale hledal jsem spíše možná řešení.
Ano, ta chyba je reportovaná tuším od února 2009. Je to taková Arduinovská klasika, která přesně vystihuje celé Arduino. "Mně to takhle stačí, tak co". Takových chyb (a občas zásadnějších) je reportováno mraky, stačí si projet jen to co je na githubu. Ale přístup "vraťte nám tam tu chybu, my jsme zvyklí mačkat enter dvakrát" je vhodný tak akorát pro microsoft.

A nebo je tedy nutné konstatovat, že se Arduino nikdy nebude dát použít pro seriózní aplikace, které mají fungovat déle než 45 minut a necháme v něm všechny chyby které tam jsou? To zní trošku jako blbost ne??

Jinak hlavní přednost té chyby je v tom, že se Arduino IDE chová jinak, než všechny ostatní prostředí (Eclipse, avrstudio, ...)
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » pon 13 čer, 2016 7:31 am

Detekce obsazeni se da udelat ruzne a to, na jak velkou vzdalenost se to da pouzit, zavisi na pouzite "impendanci" vedeni. Pokud je to "mosfet" logika, tak je to pouzitelne do max 50cm. Pokud TTL, tak asi 1m a pokud se to prevede na 50 ohmu, tak to muzou byt stovky metru. Takze vubec nezalezi na tom, jaky vstup to zpracovava, ale na tom, jaky vystupni odpor ma vysilaci zarizeni a jak ucinne dokaze zatlumit prenosove vedeni.
---
Zakze pokud pouzijete detekci obsazeni s vystupem "mosfet" logiky, tak je to hodne mizerne.
Idealni je pouzit emitorovy sledovac s pracovnim odporem okolo 1000 ohmu. To zarucuje 100% prenos do 20m.
Taky je celkem vhodne pouzit negativni logiku, teda stav NEobsazeni je HIGH. Tim se daji pouzit pul-up odpory ve vstupech procesoru a celkem ucinne se potlaci ruseni. To ale vyzaduje pouzit tranzistory s vodivosti PNP.
Aby bylo jasne, pisem o spojeni mezi detekci a zarizenim, ktere to zpracuje. Teda obsazeno / neobsazeno.
---
Takze pouzit centralu DCC++ na detekci obsazeni, vyzaduje jine osetreni vystupu detekce, aby to fungovalo na vetsi vzdalenosti.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

PředchozíDalší

Zpět na DCC v praxi

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 13 návštevníků