Pruzkum: "analogove" TCO, FBO

Schémata, zapojení, návody, dotazy a postupy k využití v železničním modelářství.

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

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod jurazbabic » pát 03 srp, 2018 12:50 pm

jurazbabic píše:Utece-li mi start (zmrsi-li se), casem najdu dalsi start podobne jako bych nasel stop

To jo, ale stop řekne přijemci kdy začít kontrolovat crc. A nemusí mu vypršet timeout že už nic dalšího nedojde. Velmi jednoduchá implementace.
jurazbabic píše:Bez "znacek" prijemce na stream nenaskoci ?

Naskočí velmi pomalu, typicky timeout, případně 2, když má něco přijato, uteče mu i novej start...
jurazbabic píše:escapovani je proste opruz

Implementace je taky velmi jednoduchá, na vrstvě 2. Opruz je ladění, když se díváš na hexa data na lince.
Prostě se nám to osvědčilo, nikomu to nevnucuji.

zdeno píše:Dalsi, co se snazi vymyslet a prodavat teply vzduch

No jo, máš sice pravdu, ale štve mě spousta krabiček, do kterých nevidím, je tam procesor a já bych potřeboval ..., ale ono to neumí protože ...
Jo, mám to na doma. Nad kompatibilitou jsem přemýšlel, ale prostě kompatibilní vláčkové sběrnice jsou na nic. Jó, kdyby někdo přišel s ModBUSem... či jiným průmyslovým standartem.
jurazbabic
 
Příspěvky: 38
Registrován: čtv 20 lis, 2014 8:57 am

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod jurazbabic » pát 03 srp, 2018 12:54 pm

zdeno píše:Je to na kolejiste kde neni centrala, neni ani Xnet, ani DCC, ani LocoNet a nic z toho tam nepatri.

Já to tedy zamýšlím i když tam centrála bude.
To vás jako baví stavět cesty na multimausu?
jurazbabic
 
Příspěvky: 38
Registrován: čtv 20 lis, 2014 8:57 am

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod jurazbabic » pát 03 srp, 2018 1:01 pm

Zde příklad detektorů s vypínáním:
tc.png
jurazbabic
 
Příspěvky: 38
Registrován: čtv 20 lis, 2014 8:57 am

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod zdeno » pát 03 srp, 2018 1:01 pm

jurazbabic píše:
zdeno píše:Je to na kolejiste kde neni centrala, neni ani Xnet, ani DCC, ani LocoNet a nic z toho tam nepatri.

Já to tedy zamýšlím i když tam centrála bude.
To vás jako baví stavět cesty na multimausu?


Kdyz uz citujes, tak se podivej, ci to je skutecne moje !!!
---
Jinak mne to je v zasade sumafuk, myslel jsem, ze moje zkusenosti pomuzou.
Delej si co chces, je to tvuj cas a penize.
Uživatelský avatar
zdeno
 
Příspěvky: 1336
Registrován: pon 11 črc, 2011 8:54 am

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » pát 03 srp, 2018 5:07 pm

Hele, chvili jsem o tom premyslel:
jurazbabic píše:To jo, ale stop řekne přijemci kdy začít kontrolovat crc. A nemusí mu vypršet timeout že už nic dalšího nedojde. Velmi jednoduchá implementace.

Ciste teoreticky - to je situace kdyz se zmrsi delka (aby prijemce zbytecne cekal). A mluvime-li nahodnych chybach tak pravdepodobnost zmrseni byte A (delka) a byte B (stop) je stejna. V pripade zmrseni (vynechani) stop by take cekal ... a cekal ?
Jestli je to tak, hodim si zrejme korunou a asi vyhraje delka (viz vsechny packetove hierarchicke protokoly).

jurazbabic píše:
belgarat píše:Bez "znacek" prijemce na stream nenaskoci ?

Naskočí velmi pomalu, typicky timeout, případně 2, když má něco přijato, uteče mu i novej start...

No, kolik mas prijemcu a jake mas pozadavky na cas doruceni ? Hraje napr. 200-300ms vyznamnou roli (v pripade, ze se neco zmrsi) ? Porad mne mate to, ze XNet je prakticky bez zabezpeceni (vyjma ^) a okometricky funguje.

Ad CRC16 ... ja nemuzu, bojuju na strane prijemce s mistem (viz https://github.com/svatoun/analog-servopoint); mam sotva 2 kila :) a jeste neco musim dopsat. Ale slibuju ze budu psat tuhle cast mene jako prase, takze by melo jit navazat.
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » sob 04 srp, 2018 12:50 pm

Prototypuju si prijem dat ... jaky doporucujete "debounce" u S88, zejmena s ohledem na detektory obsazeni, kde (ano, neuklizi se) obcas mzikove muze vypadnout napajeni ? Planuji to udelat tak, ze po zmene snimace musi "novy" stav trvat urcity pocet ctecich cyklu, nez bude uznan za stabilni (jeste nevim jak dlouho trva cyklus, to se uvidi az merenim hotoveho kodu). Dal by se udelat okamzity nabeh (jakmile neco detekuje) a vypnuti s urcitou setrvacnosti :) Debounce ma kazdy snimac individualni, pristup odjinud ze po zmene stavu se hned prohlasi za platny ale dalsich XX milisekund nesnima mi prijde vzhledem k moznym mzikovym vypadkum proudu blby.

Akorat jak je tech vstupu dost (pocitam max 16 x 8, prozatim), tak bude debounce zrejme fungovat na max 20 (konstanta) zmenach soucasne, zbytek se ihned propise do zobrazeneho stavu; uvidim kolik mi na tyhle hratky zbude nakonec SRAM.
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod jurazbabic » sob 04 srp, 2018 6:15 pm

belgarat píše:Ciste teoreticky - to je situace kdyz se zmrsi delka (aby prijemce zbytecne cekal). A mluvime-li nahodnych chybach tak pravdepodobnost zmrseni byte A (delka) a byte B (stop) je stejna. V pripade zmrseni (vynechani) stop by take cekal ... a cekal ?
Jestli je to tak, hodim si zrejme korunou a asi vyhraje delka (viz vsechny packetove hierarchicke protokoly).

Máš pravdu, je to jedno, měli jsme původně stop i délku, délka nám připadla jako zbytečná. Mě se asi víc líbí stop, je to takové symetrické.
belgarat píše: Hraje napr. 200-300ms vyznamnou roli

Hraje. Představ si situaci, že ti polovina nebude odpovídat (odpojení půlky, napájení, nepřítomnost...) a na každého by jsi čekal i třeba jen 100ms.
belgarat píše:mam sotva 2 kila

Při dnešních cenách např. mega88? V avrgcc je na ccit crc knihovna, netuším, kolik to zabere. Ale v té 88 mám spoustu místa. Používáš optimalizaci?
belgarat píše:Planuji to udelat tak, ze po zmene snimace musi "novy" stav trvat urcity pocet ctecich cyklu,

Jo tak nějak. Já používám něco jako filtr. Bit v 0 odečítá a v 1 přičíta do třeba bajtu, když je bajt > 2/3 maxima je výsledek 1, když < 1/3 je 0. Takže na každý bit potřebuješ jen 1B, to by se snad mohlo vejít. Můžeš třeba přičítat 10, odečítat jen 1, prostě to doladit dle potřeb.
Osobně jsem nikdy nenarazil na limity ani FLASH ani SRAM. Co tam máš za procesor?
jurazbabic
 
Příspěvky: 38
Registrován: čtv 20 lis, 2014 8:57 am

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » sob 04 srp, 2018 6:37 pm

jurazbabic píše:
belgarat píše:Ciste teoreticky - to je situace kdyz se zmrsi delka (aby prijemce zbytecne cekal). A mluvime-li nahodnych chybach tak pravdepodobnost zmrseni byte A (delka) a byte B (stop) je stejna. V pripade zmrseni (vynechani) stop by take cekal ... a cekal ?
Jestli je to tak, hodim si zrejme korunou a asi vyhraje delka (viz vsechny packetove hierarchicke protokoly).

Máš pravdu, je to jedno, měli jsme původně stop i délku, délka nám připadla jako zbytečná. Mě se asi víc líbí stop, je to takové symetrické.

OK - dekuji. Jestli je to zalezitost estetiky, kazdy jsme jiny a obe reseni jsou pouzitelna. Sorry ... chtel jsem se ujistit ze jsem neprehledl "detail".

belgarat píše: Hraje napr. 200-300ms vyznamnou roli

Hraje. Představ si situaci, že ti polovina nebude odpovídat (odpojení půlky, napájení, nepřítomnost...) a na každého by jsi čekal i třeba jen 100ms.

Aha, rozumim. A zmotal jsem jabka a hrusky: master prece nemusi cekat tak dlouho, vyprsi (kratky) timeout, rekneme 20ms (zalezi na delce zprav, pri jednotkach byte a 9600b jsou na zpravu nizke desitky ms), a jede se na dalsiho. Opetovne odeslani nejlepe round-robinem.
Timeout na strane masteru by se dalo resit timeoutem na odstup dat v "packetu". Prijde dlouha delka (nebo se zmrsi stop), master zbytecne ceka ... ale pouze treba 5ms (~2 byte pri 9600baud) a pak ma packet za nedoruceny (nepotvrzeny).

belgarat píše:mam sotva 2 kila

Při dnešních cenách např. mega88? V avrgcc je na ccit crc knihovna, netuším, kolik to zabere. Ale v té 88 mám spoustu místa. Používáš optimalizaci?
belgarat píše:Planuji to udelat tak, ze po zmene snimace musi "novy" stav trvat urcity pocet ctecich cyklu,

Sorry ;)) rad bych "to sve" nacpal do Nano. Pri slusnejsim stylu programovani jde v lepsich podminkach checksum jednoduse vymenit; budu na to pamatovat.

Jo tak nějak. Já používám něco jako filtr. Bit v 0 odečítá a v 1 přičíta do třeba bajtu, když je bajt > 2/3 maxima je výsledek 1, když < 1/3 je 0. Takže na každý bit potřebuješ jen 1B, to by se snad mohlo vejít. Můžeš třeba přičítat 10, odečítat jen 1, prostě to doladit dle potřeb.

Podobnou vec jsem pouzil v IR optosenzoru (tez Arduino Nano. Reklamni vsuvka: http://cs.ttodbocna.wikia.com/wiki/IRDetektor)

Osobně jsem nikdy nenarazil na limity ani FLASH ani SRAM. Co tam máš za procesor?

[/quote]
Nano = 32K flash, 2K SRAM, 1K EEPROM. U toho serva to trochu "drelo" :-D, kdyz bude nejhur muzu odstrelit nejake "fancy" funkce.
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod TomasM » ned 05 srp, 2018 9:49 am

belgarat píše:Prototypuju si prijem dat ... jaky doporucujete "debounce" u S88, zejmena s ohledem na detektory obsazeni, kde (ano, neuklizi se) obcas mzikove muze vypadnout napajeni ? Planuji to udelat tak, ze po zmene snimace musi "novy" stav trvat urcity pocet ctecich cyklu, nez bude uznan za stabilni (jeste nevim jak dlouho trva cyklus, to se uvidi az merenim hotoveho kodu). Dal by se udelat okamzity nabeh (jakmile neco detekuje) a vypnuti s urcitou setrvacnosti :) Debounce ma kazdy snimac individualni, pristup odjinud ze po zmene stavu se hned prohlasi za platny ale dalsich XX milisekund nesnima mi prijde vzhledem k moznym mzikovym vypadkum proudu blby.

Akorat jak je tech vstupu dost (pocitam max 16 x 8, prozatim), tak bude debounce zrejme fungovat na max 20 (konstanta) zmenach soucasne, zbytek se ihned propise do zobrazeneho stavu; uvidim kolik mi na tyhle hratky zbude nakonec SRAM.


Zdravím, když jsem si dělal detektory obsazení na arduinu, použil jsem režim, kdy se odpočítávalo od poslední detekce 200 ms do které musela přijít další. Používal jsem to na přejezd a bylo to funkční.

Kód: Vybrat vše
   for (ii = 0; ii < 2; ii++) {
    nap = analogRead(ii);
    if (nap > 300) {
      detekce[ii] = true;
      start_time[ii] = millis();
    }
    if (millis() - start_time[ii] > det_time) {
      detekce[ii] = false;
    }
  }


V případě falešných detekcí bylo potřeba přidat nějaký kontrolní mechanizmus, něco jako je potřeba detekce ve více cyklech, nebo podobě. Mě to takto fungovalo, ale je pravda, že délka vodičů od detektoru ke koleji byla velmi malá a detektor byl na plošňáku, ke kterému bylo arduino připojeno přes patici.
TomasM
 
Příspěvky: 64
Registrován: sob 17 led, 2015 2:34 pm

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » ned 05 srp, 2018 9:57 am

Ahoj,
TomasM píše:Zdravím, když jsem si dělal detektory obsazení na arduinu, použil jsem režim, kdy se odpočítávalo od poslední detekce 200 ms do které musela přijít další. Používal jsem to na přejezd a bylo to funkční.

uz to mam temer napsane, v podstate stejne :-D akorat namisto primo millis jsem pouzil pocet cyklu pres vsechny S88 moduly, mohlo by to stacit (4 byte vs. 1 byte na vstup detekce, pri n*8*16 moznych vstupech uz to je znat :) )

Ze zvedavosti (moc mi to ted nemysli, srovnavam podklad terenu pod bazen) -- meris primo napeti z koleji ... jak presne je zapojeni mezi vstupem Arduina a kolejemi; je to analog ?
TomasM píše:
Kód: Vybrat vše
   for (ii = 0; ii < 2; ii++) {
    nap = analogRead(ii);
    if (nap > 300) {



TomasM píše:ale je pravda, že délka vodičů od detektoru ke koleji byla velmi malá a detektor byl na plošňáku, ke kterému bylo arduino připojeno přes patici.

Jsou tady nazory (ne moje), ze na delce vodicu k detektoru nebo k arduinu nezalezi ;) a ze hypotezu ruseni je nutne nejprve dokazat :)
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod TomasM » ned 05 srp, 2018 10:47 am

belgarat píše:


Používám detektor s s diodovým můstkem a antiparalelními led-optočlenem. Výstup tohoto "tranzistoru" je další tranzistor v darlingtonově zapojení. Výstup tohoto detektoru čtu přes analogový vstup. Osvědčilo se mi to jako nejspolehlivější a v tomto zapojení stačí pro detekci velmi malý proud. Nepamatuji si přesně hodnoty, ale při 15V v kolejích to byly stovky kΩ. Prakticky jediná limitace je prahový proud diody. Tím lze snížit spotřebu proudu při velkém množství vagónů s detekcí...
Zkusím někde vyhrabat schéma zapojení.

Co se týká programu, neřešil jsem žádnou optimalizaci, na rozblikání přejezdu to stačilo a moje programovací schopnosti jsou mizerné.
TomasM
 
Příspěvky: 64
Registrován: sob 17 led, 2015 2:34 pm

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » ned 05 srp, 2018 10:58 am

TomasM píše:Co se týká programu, neřešil jsem žádnou optimalizaci, na rozblikání přejezdu to stačilo a moje programovací schopnosti jsou mizerné.


Promin, nemyslel jsem tim, ze Tve reseni neni "spravne" nebo by se melo menit. Mam jine zadani / podminky -> jiny postup. Jestli millis() nebo cykly nemeni nic na principu. Mmch ;)) ten prejezdovy modul by mne zajimal vubec cely. Je totiz na podejsich mistech ve fronte. Vyzvani :) ?
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod TomasM » ned 05 srp, 2018 11:06 am

belgarat píše:
TomasM píše:Co se týká programu, neřešil jsem žádnou optimalizaci, na rozblikání přejezdu to stačilo a moje programovací schopnosti jsou mizerné.


Promin, nemyslel jsem tim, ze Tve reseni neni "spravne" nebo by se melo menit. Mam jine zadani / podminky -> jiny postup. Jestli millis() nebo cykly nemeni nic na principu. Mmch ;)) ten prejezdovy modul by mne zajimal vubec cely. Je totiz na podejsich mistech ve fronte. Vyzvani :) ?


Tak to ani neberu, chtěl jsem jen vysvětlit, proč jsem použil tento postup, byl pro mě nejjednodušší a taky mě asi v tu chvíli nic jiného nenapadlo :D

Uvažoval jsem původně i s vyhodnocení pomocí počtu cyklů arduina, ale vyšlo mi, že se mi mění délka cyklů a proto jsem raději použil millis. Když tam budeš mít časování pro S88, asi není nic jednoduššího než využít tohoto.
TomasM
 
Příspěvky: 64
Registrován: sob 17 led, 2015 2:34 pm

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » pon 06 srp, 2018 8:01 am

TomasM píše:
Uvažoval jsem původně i s vyhodnocení pomocí počtu cyklů arduina, ale vyšlo mi, že se mi mění délka cyklů a proto jsem raději použil millis. Když tam budeš mít časování pro S88, asi není nic jednoduššího než využít tohoto.


Casovani pro S88 bude sranda; pokud merim spravne, tak prazdny loop() je cca 1/2 usec (~16 cyklu hodin ?). Takze hlidat casovani budu spis symbolicky, pri tom dalsim "balastu" co bude procesor provadet neni problem dodrzet minimalni casy ;)
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Pruzkum: "analogove" TCO, FBO

Příspěvekod belgarat » stř 08 srp, 2018 7:14 am

@jurazbabic:

snad se v zaveru tydne dostanu ke komunikacnim testum. Mam prozatim oddeleno (jako soubor, globalni promenne, funkce) vlastni rs485 odesilani (start byte; escaping; pocitani checksumu) a Busmaster (rozhoduje co se bude odesilat a prepina odesilani/prijem). rs485 cast se tak da primo pouzit i ve slave. Dekuji za napad s temi znackami ve streamu.

co se tyce potvrzovani/opakovani: po odeslani packetu se prepne na prijem. Pri prijeti zmrseniny se jednou opakuje ihned. Pri vice poruchach nebo pri timeoutu ACku se packet da do fronty; nasledne se rovnou "frontuji" vsechny packety pro stejneho prijemce (dojdou pak ve stejnem poradi). Broadcasty (0xff) nemaji ACK; potvrzeni vsemi aktivnimi zarizenimi je slozitejsi a ja ho nepotrebuju. Fronta k odvysilani se zpracovava vzdy kdyz dojdou "hlavni" data (jako prvni jdou opakovani). Po x-tem opakovani se packet zahazuje a nastavuje error flag. .

Psane je to jako continuation - z loop() se vyvolava "vstupni" funkce, ktera ma definovane trvani (vysilani max 10msec, pak prerusi - kratke zpravy projdou rovnou). Arduino pak muze delat i dalsi veci, s mirnym zpozdenim. Vetsina nastaveni jsou jako const k upravam.

Zatim neresim pozadavky na vysilani od 'slave': vyzaduje to znalost slave (nebo dynamickou registraci), nejake "opinkavani" a la XpressNet, ale nepridelovani slotu mrtvolam. Zatim nepotrebuju - neresim.

Dam na github... az mi bude fungovat aspon cast - ale je to "rychlopsani", prase aby se v kodu vyznalo :(
Belgarat (nemodelar, greenhorn, pseudoprogramator, pindac nesmyslu)
belgarat
 
Příspěvky: 763
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

PředchozíDalší

Zpět na Elektrika a elektronika

Kdo je online

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