IR Detektor S88: Porovnání verzí
(→Optická čidla) |
|||
(Není zobrazeno 54 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
[[Kategorie:Elektronika DCC]] | [[Kategorie:Elektronika DCC]] | ||
− | Při pokusech o automatizaci posunu jsem vyvinul detektor polohy pracující na principu odrazu (infračerveného) světla od podvozku. Konstrukce je popsaná ve [https://ttodbocna.fandom.com/cs/wiki/IRDetektor starším materiálu na Wikia.com]. HW konstrukci jsem později změnil z důvodu úspory odebíraného proudu - jako kompromis mezi spotřebou (původně 8 IR LED po 30mA = 0,25A / deska) a počtem zabraných "nožiček" Arduina jsem použil spínání LED ve dvojicích, pomocí tranzistorového pole. "Volné" 3 vývody Arduina jsou vyvedené na konektor a integrovaná LED (D13) zůstává pro indikaci provozního stavu. Špičkově tak modul odebírá cca 2x40mA (2x LED) + samotné Arduino. | + | Při pokusech o automatizaci posunu jsem vyvinul detektor polohy pracující na principu odrazu (infračerveného) světla od podvozku. Konstrukce je popsaná ve [https://ttodbocna.fandom.com/cs/wiki/IRDetektor starším materiálu na Wikia.com]<ref name="belgarat">[https://ttodbocna.fandom.com/cs/wiki/IRDetektor IR Detektor], Belgarat 2017</ref>. HW konstrukci jsem později změnil z důvodu úspory odebíraného proudu - jako kompromis mezi spotřebou (původně 8 IR LED po 30mA = 0,25A / deska) a počtem zabraných "nožiček" Arduina jsem použil spínání LED ve dvojicích, pomocí tranzistorového pole. "Volné" 3 vývody Arduina jsou vyvedené na konektor a integrovaná LED (D13) zůstává pro indikaci provozního stavu. Špičkově tak modul odebírá cca 2x40mA (2x LED) + samotné Arduino. |
− | Podobný IR detektor v podstatě zároveň [https://sites.google.com/site/sidloweb1/home/13-s88-ir-detektor vyvinul Petr Šídlo]<ref name="sidlo">[https://sites.google.com/site/sidloweb1/home/13-s88-ir-detektor S88 IR Detektor], Petr Šídlo</ref>, ten však vyžaduje použití různého firmware pro '''různé druhy osvětlení a neumožňuje kalibraci'''. | + | Podobný IR detektor v podstatě zároveň [https://sites.google.com/site/sidloweb1/home/13-s88-ir-detektor vyvinul Petr Šídlo]<ref name="sidlo">[https://sites.google.com/site/sidloweb1/home/13-s88-ir-detektor S88 IR Detektor], Petr Šídlo, 2017</ref>, ten však vyžaduje použití různého firmware pro '''různé druhy osvětlení a neumožňuje kalibraci'''. |
=== Provedení === | === Provedení === | ||
− | Podobně jako starší verze, detekor je postavený na platformě Arduino Nano. Deska obsahuje 8 třípinových konektorů (LED, +5V, IN) pro páry IR LED (vysílač) + fototranzistor (přijímač). Arduino LEDkami bliká (zapíná vždy 2 LEDky, postupně vystřídá všechny páry) s frekvencí cca 1kHz - pomocí fototranzistorů pak zjišťuje zda přijímač přijímá "správné světlo". | + | [[Soubor:Deska.png|right|600px|Vyrobený detektor]] |
+ | Podobně jako [https://ttodbocna.fandom.com/cs/wiki/IRDetektor starší verze]<ref name="belgarat"/>, detekor je postavený na platformě https://www.arduino.cc/en/Main/ArduinoBoardNano Arduino Nano]<ref name="nano">[https://www.arduino.cc/en/Main/ArduinoBoardNano Arduino Nano], popis desky</ref>. Deska obsahuje 8 třípinových konektorů (LED, +5V, IN) pro páry IR LED (vysílač) + fototranzistor (přijímač). Arduino LEDkami bliká (zapíná vždy 2 LEDky, postupně vystřídá všechny páry) s frekvencí cca 1kHz - pomocí fototranzistorů pak zjišťuje zda přijímač přijímá "správné světlo". | ||
Díky blikání lze odfiltrovat rozptýlené světlo (sluníčko, žárovky, zářivky) - posuzuje se ne přímo úroveň, ale '''změna''' osvětlení přijímače při zhasnutí a rozsvícení LEDky - vysílače. Frekvence měření fototranzistoru je dost "nesoudělná" s frekvencí v napájecí síti (blikání zářivek, žárovek), není třeba měnit firmware v Arduinu při změně typu osvětlení. Detektor '''nefunguje při zahlcení fototranzistoru''': osvětlení přímo namířenou klasickou žárovkou 40W z 50cm nerozchodí. | Díky blikání lze odfiltrovat rozptýlené světlo (sluníčko, žárovky, zářivky) - posuzuje se ne přímo úroveň, ale '''změna''' osvětlení přijímače při zhasnutí a rozsvícení LEDky - vysílače. Frekvence měření fototranzistoru je dost "nesoudělná" s frekvencí v napájecí síti (blikání zářivek, žárovek), není třeba měnit firmware v Arduinu při změně typu osvětlení. Detektor '''nefunguje při zahlcení fototranzistoru''': osvětlení přímo namířenou klasickou žárovkou 40W z 50cm nerozchodí. | ||
− | Detektor se nastavuje pomocí | + | Detektor se nastavuje pomocí PC, programem Hyperterminál či PuTTy (MS Windows), nebo minicom (Linux) - připojuje se pomocí MicroUSB kabelu ke konektoru Arduino Nano<ref name="nano"/>. Podrobnosti v [[Terminál pro Arduino]]. |
+ | <br clear=all> | ||
== Hlavní funkce == | == Hlavní funkce == | ||
Řádek 26: | Řádek 28: | ||
=== Konfigurace === | === Konfigurace === | ||
Nastavení se provádí připojením PC. Detektor obsahuje jednoduchý "příkazový řádek", který umožňuje: | Nastavení se provádí připojením PC. Detektor obsahuje jednoduchý "příkazový řádek", který umožňuje: | ||
− | * nastavovat citlivost senzorů a prodlevy | + | * [[IR Detektor S88/Základní senzory | nastavovat citlivost]] senzorů a prodlevy |
− | * kalibrovat senzory | + | * [[IR Detektor S88/Kalibrace senzorů|kalibrovat senzory]] |
− | * změnit režim senzoru (závora / odrazka) | + | * [[IR Detektor S88/Základní senzory#Nastavení režimu senzoru| změnit režim senzoru (závora / odrazka)]] |
− | * vytvořit virtuální senzor (viz níže) | + | * [[IR Detektor S88/Virtuální senzory|vytvořit virtuální senzor]] (viz [[IR Detektor S88#Virtuální senzory|níže]]) |
− | * monitorovat stav senzorů | + | * [[IR Detektor S88/Monitorování a měření#Monitorování stav všech senzorů|monitorovat stav senzorů]] |
+ | * [[IR Detektor S88/Monitorování a měření#Měření konkrétního senzoru|měřit úroveň osvětlení]] (vhodné při seřizování) | ||
* vypsat všechna nastavení | * vypsat všechna nastavení | ||
* uložit nastavení do paměti EEPROM, obnovit nastavení z EEPROM | * uložit nastavení do paměti EEPROM, obnovit nastavení z EEPROM | ||
Řádek 40: | Řádek 43: | ||
=== Virtuální senzory === | === Virtuální senzory === | ||
− | + | Tím, že modulem '''prochází''' sběrnice S88 je možné přepracovávat (nebo dokonce upravovat) data, která přes modul prochází k centrále. Ke skutečným senzorům je možné přidávat senzory '''virtuální''', které nějak doplňují chování skutečného snímače tak, aby byl lépe použitelný pro další "úrovně" řízení kolejiště. | |
− | + | Prozatím je naprogramován režim [[IR Detektor S88/Virtuální senzory|opuštění snímače]], který snižuje počet senzorů pro bezpečné zastavení (zejména ve skrytém nádraží). | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Virtuální senzory pro jiné moduly === | === Virtuální senzory pro jiné moduly === | ||
Řádek 56: | Řádek 51: | ||
Díky tomu je ale možné vytvořit Virtuální senzor pro '''jakýkoliv senzor''' jehož stav se přečte ze sběrnice S88, která modulem prochází, je tedy možné IR detektor zapojit blíže centrále, a vytvořit virtuální senzory hned pro několik různých detektorů. | Díky tomu je ale možné vytvořit Virtuální senzor pro '''jakýkoliv senzor''' jehož stav se přečte ze sběrnice S88, která modulem prochází, je tedy možné IR detektor zapojit blíže centrále, a vytvořit virtuální senzory hned pro několik různých detektorů. | ||
+ | |||
+ | === Spínání relé === | ||
+ | Na základě aktivace senzoru (až 3, fungují pak jako alternativní "spouštěče") jako je možné '''sepnout relé'''. Relé zůstane sepnuto tak dlouho, dokud je senzor aktivní a ještě nastavenou dobu poté. Na jednu desku IR detektoru je možné připojit ovládání až 3 relé - musí být však řízené TTL logikou, nebo se musí použít spínací tranzistory. Možné využití je při řízení smyčky. | ||
+ | |||
+ | == Detailní popis == | ||
+ | {{Special:PrefixIndex/{{FULLPAGENAME}}/ |hideredirects=1 |stripprefix=1}} | ||
+ | |||
+ | == Ovládání a nastavení == | ||
+ | Modul IR Detektoru používá MicroUSB port na Arduinu pro komunikaci s PC. Není to '''dekodér příslušenství''', nedá se nastavovat pomocí CV, nemá ani vstup z DCC. Pro komunikaci s Arduinem můžeme použít | ||
+ | * Arduino IDE a v něm Sériový monitor - ale ten je velmi základní, a neumí pořádně zpracovat řídící kódy, takže některé výpisy nebudou fungovat | ||
+ | * [[Terminál_pro_Arduino|Terminálový emulátor]] | ||
+ | |||
+ | V obou případech bude IR detektor zpracovávat jednoduché příkazy, které napíšeme a odešleme ENTER, IR detektor bude odpovídat potvrzovacími nebo chybovými hlášeními. Až bude nastavení hotové, dá se příkazem zapsat do paměti EEPROM, která se neztratí při vypnutí napájení. Po zapnutí pak IR detektor začne ihned pracovat podle nastavených pravidel a hodnot. Konfigurace se dá také smazat - IR detektor přejde do továrního nastavení. | ||
+ | |||
+ | Výzva k zadání příkazu je | ||
+ | <nowiki> | ||
+ | @ ></nowiki> | ||
+ | příkazy tvoří tři písmena, případné parametry a nastavení se oddělují dvojtečkami. Následující příklad obsahuje: | ||
+ | * pokyn k vypsání konfigurace | ||
+ | * výpis stavu senzorů | ||
+ | * měření senzoru č.2, údaje se průběžně aktualizují v reálném čase | ||
+ | |||
+ | <nowiki> | ||
+ | ReflexShield (c) Belgarat@klfree.net, v. 3.0, 9/2021 | ||
+ | Starting up... | ||
+ | Loading from EEPROM | ||
+ | Reading EEPROM 0:72, dest: 5D0 | ||
+ | Reading EEPROM 60:64, dest: 698 | ||
+ | Reading EEPROM B0:18, dest: 5BE | ||
+ | Loading done. | ||
+ | Output extension board attched. | ||
+ | @ > dmp | ||
+ | SEN:1:250:50 | ||
+ | INV:1 | ||
+ | SEN:2:250:50 | ||
+ | INV:2 | ||
+ | @ > inf | ||
+ | Sensor status: | ||
+ | 0-0-0-0-0-0-1-1 | ||
+ | @ > msr:2 | ||
+ | 2: high=283, low=000, min=090, max=288, avg=112 Sensor 2 changed 0 | ||
+ | 2: high=287, low=000, min=090, max=288, avg=124 Deactivate relay 3 to 0 | ||
+ | </nowiki> | ||
+ | |||
+ | Pro lepší diagnostiku IR detektor umí měřit a monitorovat jeden nebo více vstupů - funkce se dá použít pro přesnější nasměrování zářiče nebo senzoru. | ||
+ | |||
+ | == Přehled příkazů == | ||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! Skupina !! Příkaz !! Funkce | ||
+ | |- | ||
+ | | rowspan=5 | [[IR_Detektor_S88/Základní_senzory | Senzory a citlivost]] || SEN:senzor:citlivost:prodleva || Nastavení citlivosti senzoru a prodlevu při přerušení paprsku | ||
+ | |- | ||
+ | | SFT:senzor:prodleva-sepnutí:prodleva-vypnutí || Nastavení prodlevy při sepnutí a vypnutí | ||
+ | |- | ||
+ | | INV:senzor || Změna funkce závora / odraz | ||
+ | |- | ||
+ | | VSN:id:senzor || Vytvoření virtuálního senzoru k zadanému skutečnému | ||
+ | |- | ||
+ | | OTR:senzor || Nastavení "hystereze" - při zachycení paprsku stačí slabší intenzita k udržení | ||
+ | |- | ||
+ | | rowspan=4 | [[IR Detektor S88/Kalibrace senzorů|Kalibrace a měření]] || CAL:senzor || Automatická kalibrace senzoru | ||
+ | |- | ||
+ | | CAD:senzor || Kalibrace opožděného vypnutí | ||
+ | |- | ||
+ | | MSR:senzor || Měření intenzity osvětlení senzoru | ||
+ | |- | ||
+ | | MON || Monitoruje stav všech připojených senzorů | ||
+ | |- | ||
+ | | [[IR Detektor S88/Ovládání relé|Relé]] || REL || Nastaví spínání relé | ||
+ | |- | ||
+ | | rowspan=4 | [[IR Detektor S88/Údržba|Údržba]] || SAV || Zapíše konfiguraci do EEPROM | ||
+ | |- | ||
+ | | DMP || Vypíše konfiguraci - zálohování | ||
+ | |- | ||
+ | | RST || Resetuje detektor | ||
+ | |- | ||
+ | | CLR || Vymaže EEPROM, tovární nastavení | ||
+ | |} | ||
== Příklady použití IR detektoru == | == Příklady použití IR detektoru == | ||
Řádek 69: | Řádek 143: | ||
* Automatické rozpojování soupravy - odpočítání vozidel před použitím rozpojovače | * Automatické rozpojování soupravy - odpočítání vozidel před použitím rozpojovače | ||
− | < | + | === Řízení polarity ve smyčce === |
+ | * Autonomní přepínání polarity ve smyčce ve chvíli přejezdu nad rozhraním smyčky | ||
+ | |||
+ | == Výroba detektoru == | ||
+ | Celý IR detektor je vhodný pro výrobu v domácích podmínkách - většinou THT součástky, nízka "hustota" drah a DPS. U prvních 2 kusů - prototoypů jsem tiskl motiv na laserové tiskárně na vodolepicí papír a zažehloval žehličkou ... ovšem Číňan (JLCPCB) vyvrtá díry úplně přesně a tak do dodaného (dvouvrstvého) spoje sednou i RJ konektory jak příslovečná prdel na hrnec. | ||
+ | |||
+ | === Schéma zapojení === | ||
+ | [[Soubor:Optoshield - schema.png|náhled|center|1600px|Schéma zapojení]] | ||
+ | * DPS je navržená pro '''Arduino Nano''', které má vyvedený microUSB konektor. Po úpravě DPS (nedělal jsem) by mělo jít použít i Arduino Pro Mini - stejný SW. | ||
+ | * Regulátor napětí je určený pouze pro napájení LED a případně relé, můžete volit variantu podle očekávaného proudu. LEDky jsou spínané vždy po dvojicích, IR LED co kupuji mají IFmax = 50mA. | ||
+ | * Najednou svítí vždy jen dvě IR LED (typicky: 2x 50mA). J1+J2, J3+J4 atd. | ||
+ | * Konektory '''J1..J8''' připojují optická čidla | ||
+ | * Na konektor '''JP1''' jsou vyvedené vývody procesoru, dají se použít například k [[IR Detektor S88/Ovládání relé|Ovládání relé]]. Pozor - není tam žádné galvanické oddělení. Chybným zapojením usmažíte Arduino. | ||
+ | * '''Neobsahuje ochranu proti přepólování ani vyššímu napájecímu napětí'''. | ||
+ | |||
+ | === Návrh DPS === | ||
+ | DPS je navržená jako '''dvojvrstvá''', avšak druhá vrstva obsahuje pouze propojky. DPS jde tedy v domácích podmínkách vyrobit jako jednovrstvou, s drátovými propojkami (není jich moc). | ||
+ | [[Soubor:IR Detektor v3.0.jpg|náhled|center|300px|Motiv DPS IR detektoru v3.0]] | ||
+ | [[Soubor:DPS IR detektoru.png|náhled|center|300px|Návrh DPS IR detektoru v3.0]] | ||
+ | <br clear=all/> | ||
+ | |||
+ | === Optická čidla === | ||
+ | Optická čidla mají malou destičku kvůli spolehlivějšímu propojení vodičů a nožiček LED/fototranzistor. Na destičce je místo pro SMD odpor regulující proud do LED. Schéma říká 130R, nakonec jsem použil 91R. Pro případ, že je nutné LEDku zdvojit (např. šikmá optická závora přes koleje) jsem zdvojil na 2x 91R paralelně (protože jsem neměl něco kolem 40R). Motiv jsem vyrobil jako 8 detektorů, vyleptat a SMD osadit se to dá najednou, pak rozstříhat nůžkami na plech. Alternativní motiv (viz ke stažení) je s pájecími ploškami pro vodiče namísto děr pro hřebínkový konektor. | ||
+ | |||
+ | [[Soubor:Optický detektor - schéma.png|center|400px|náhled|Schéma optického detektoru]] | ||
+ | [[Soubor:Optický detektor - motiv.jpg|center|200px|náhled]] | ||
+ | |||
+ | S deskou IR detektoru propojuje destičku čidla 3-žílový vodič, stříhám je z plochého kabelu. Význam vodičů je. | ||
+ | * Spínané 0 pro rozsvěcení LED | ||
+ | * +5V napájení LED a kolektoru fototranzistoru (při otevření vytáhne napětí na emitoru k VCC | ||
+ | * výstup fototranzistoru (emitor): v klidu plovoucí (nepřipojený), na desce IR detetoru stažený ke GND odporem 4k7, při plném otevření VCC - cca 0,3V | ||
+ | |||
+ | <br clear=all/> | ||
+ | |||
+ | === Doplňková deska k ovládání relé === | ||
+ | K IR detektoru jde doplnit deska, kterou může IR detektor ovládat relé. To se dá použít například pro přepínání polarity smyčky, ale také k Bůh ví čemu dalšímu. Deska se s IR detektorem propojí plochým kabelem s 6 vodiči: | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | ! Číslo pinu !! Význam !! Poznámka | ||
+ | |- | ||
+ | | 1 || Napájení +6-12V || Až od verze desky 8/2021, propojená s + přívodního konektoru | ||
+ | |- | ||
+ | | 2 || GND || Společná zem pro +5V a napájení, propojená s - přívodního konektoru | ||
+ | |- | ||
+ | | 3, 4, 5 || Výstup 1, 2, 3 || Přímo vyvedené piny mikroprocesoru, TTL logika. Maximální zátěž 20mA | ||
+ | |- | ||
+ | | 1 || +5V || Výstup regulátoru napětí pro LED, max. odběr 1A. | ||
+ | |} | ||
+ | |||
+ | * Z IR detektoru je možné rovnou přivést i napájení relé (+5, +12), nebo je napájet samostatně (na DPS je svorkovnice pro napájení). | ||
+ | * Ochranný odpor před LED je třeba zvolit podle potřebného proudu pro sepnutí relé, max proud do báze je 20mA (proboha, co bych tím chtěl spínat ?) | ||
+ | * Podrobnosti viz [[IR_Detektor_S88/Ovládání_relé]] | ||
+ | |||
+ | [[Soubor:Deska relé k detektoru - schéma.png|800px|náhled|střed|Deska relé k detektoru - schéma]] | ||
+ | [[Soubor:Deska relé k detektoru - motiv.jpg|300px|náhled|střed|Motiv ovládací desky relé]] | ||
+ | |||
+ | |||
+ | <br clear="all"/> | ||
+ | |||
+ | === Soubory ke stažení === | ||
+ | * IR Detektor | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/optoshield-low1-schema.pdf Schéma] | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/optoshield-low1.pdf Motiv DPS k leptání] | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/optoshield-low1-osaz2.pdf Osazovací plán] | ||
+ | * Optočidla | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/opto5-narrow.pdf Schéma (8 čidel)] | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/opto4.pdf Motiv DPS k leptání - pájecí očka (vodiče / konektor)] | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/opto5-narrow-full2.pdf Motiv DPS k leptání - pájecí plošky pro vodiče] | ||
+ | * Deska relé | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/Relayboard-schema.png Schéma] | ||
+ | ** [https://github.com/svatoun/Reflexshield/blob/master/board/Relayboard.pdf Motiv DPS] | ||
+ | * Software pro Arduino | ||
+ | ** [https://github.com/svatoun/Reflexshield/archive/refs/heads/master.zip Všechno v ZIPu] - arduino sketch je v adresáři '''arduino/ReflexShield''' | ||
+ | ** [https://github.com/svatoun/Reflexshield GitHub projekt] | ||
+ | |||
+ | == Licence == | ||
+ | IR detektor vč. všech elektro schémat a motivů je možné využívat a šířit - všechny materiály jsou licencované podle [https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU GPL v2]. | ||
+ | |||
+ | == Odkazy == |
Aktuální verze z 29. 9. 2021, 21:58
Při pokusech o automatizaci posunu jsem vyvinul detektor polohy pracující na principu odrazu (infračerveného) světla od podvozku. Konstrukce je popsaná ve starším materiálu na Wikia.com[1]. HW konstrukci jsem později změnil z důvodu úspory odebíraného proudu - jako kompromis mezi spotřebou (původně 8 IR LED po 30mA = 0,25A / deska) a počtem zabraných "nožiček" Arduina jsem použil spínání LED ve dvojicích, pomocí tranzistorového pole. "Volné" 3 vývody Arduina jsou vyvedené na konektor a integrovaná LED (D13) zůstává pro indikaci provozního stavu. Špičkově tak modul odebírá cca 2x40mA (2x LED) + samotné Arduino.
Podobný IR detektor v podstatě zároveň vyvinul Petr Šídlo[2], ten však vyžaduje použití různého firmware pro různé druhy osvětlení a neumožňuje kalibraci.
Obsah
Provedení
Podobně jako starší verze[1], detekor je postavený na platformě https://www.arduino.cc/en/Main/ArduinoBoardNano Arduino Nano][3]. Deska obsahuje 8 třípinových konektorů (LED, +5V, IN) pro páry IR LED (vysílač) + fototranzistor (přijímač). Arduino LEDkami bliká (zapíná vždy 2 LEDky, postupně vystřídá všechny páry) s frekvencí cca 1kHz - pomocí fototranzistorů pak zjišťuje zda přijímač přijímá "správné světlo".
Díky blikání lze odfiltrovat rozptýlené světlo (sluníčko, žárovky, zářivky) - posuzuje se ne přímo úroveň, ale změna osvětlení přijímače při zhasnutí a rozsvícení LEDky - vysílače. Frekvence měření fototranzistoru je dost "nesoudělná" s frekvencí v napájecí síti (blikání zářivek, žárovek), není třeba měnit firmware v Arduinu při změně typu osvětlení. Detektor nefunguje při zahlcení fototranzistoru: osvětlení přímo namířenou klasickou žárovkou 40W z 50cm nerozchodí.
Detektor se nastavuje pomocí PC, programem Hyperterminál či PuTTy (MS Windows), nebo minicom (Linux) - připojuje se pomocí MicroUSB kabelu ke konektoru Arduino Nano[3]. Podrobnosti v Terminál pro Arduino.
Hlavní funkce
Deska IR detekrou obsluhuje až 8 senzorů, párů IR dioda - fototranzistor. Každý senzor může být použitý v režimu
- odrazu: senzor hlásí "obsazeno", pokud zachytí odraz od nápravy, či spodku vozidla
- závory: senzor hlásí "obsazeno", pokud se paprsek přeruší - mezi IR diodou a fototranzistorem je vozidlo či jiná překážka.
Režim se po každý senzor nastavuje zvlášť, jeden modul může obsluhovat jak závory, tak odrazky. Detektor je zapojený do sběrnice S88, a stav jednotlivých senzorů hlásí centrále.
Každého senzoru zvlášť modul umožňuje:
- nastavit funkce závora nebo odraz
- nastavit citlivost snímání - může záviset na montáži, poloze, vzdálenosti vysílače a přijímače
- určit dobu "hystereze", než po úspěšné detekci opět přejde do stavu "volno". Potlačí krátké zákmity a může potlačit mezery mezi vagony
- provést "automatickou kalibraci" - změří odrazy od překážky, určí citlivost
Konfigurace
Nastavení se provádí připojením PC. Detektor obsahuje jednoduchý "příkazový řádek", který umožňuje:
- nastavovat citlivost senzorů a prodlevy
- kalibrovat senzory
- změnit režim senzoru (závora / odrazka)
- vytvořit virtuální senzor (viz níže)
- monitorovat stav senzorů
- měřit úroveň osvětlení (vhodné při seřizování)
- vypsat všechna nastavení
- uložit nastavení do paměti EEPROM, obnovit nastavení z EEPROM
Příkaz pro výpis nastaveni (DMP) vypíše sadu příkazů, která, po zadání do "prázdného" dekodéru (vymazaný příkazem CLR) obnoví původní nastavení - výpis je textový, je možné jej uchovat a archivovat v PC.
Protože je detektor elektricky spojený (S88 sběrnice) s centrálou kolejiště, doporučuji používat notebook bežící z baterie (vyloučení vyrovnání potenciálů mezi centrálou a zdrojem PC přes USB port).
Virtuální senzory
Tím, že modulem prochází sběrnice S88 je možné přepracovávat (nebo dokonce upravovat) data, která přes modul prochází k centrále. Ke skutečným senzorům je možné přidávat senzory virtuální, které nějak doplňují chování skutečného snímače tak, aby byl lépe použitelný pro další "úrovně" řízení kolejiště.
Prozatím je naprogramován režim opuštění snímače, který snižuje počet senzorů pro bezpečné zastavení (zejména ve skrytém nádraží).
Virtuální senzory pro jiné moduly
Tato funkce vznikla hlavně proto, aby se kvůli 1 virtuálnímu párovému senzoru nezapláclo hned 8 pozic na sběrnici S88: Některé centrály umějí jen 128 vstupů (NanoX), a pozicemi je třeba šetřit.
Díky tomu je ale možné vytvořit Virtuální senzor pro jakýkoliv senzor jehož stav se přečte ze sběrnice S88, která modulem prochází, je tedy možné IR detektor zapojit blíže centrále, a vytvořit virtuální senzory hned pro několik různých detektorů.
Spínání relé
Na základě aktivace senzoru (až 3, fungují pak jako alternativní "spouštěče") jako je možné sepnout relé. Relé zůstane sepnuto tak dlouho, dokud je senzor aktivní a ještě nastavenou dobu poté. Na jednu desku IR detektoru je možné připojit ovládání až 3 relé - musí být však řízené TTL logikou, nebo se musí použít spínací tranzistory. Možné využití je při řízení smyčky.
Detailní popis
Ovládání a nastavení
Modul IR Detektoru používá MicroUSB port na Arduinu pro komunikaci s PC. Není to dekodér příslušenství, nedá se nastavovat pomocí CV, nemá ani vstup z DCC. Pro komunikaci s Arduinem můžeme použít
- Arduino IDE a v něm Sériový monitor - ale ten je velmi základní, a neumí pořádně zpracovat řídící kódy, takže některé výpisy nebudou fungovat
- Terminálový emulátor
V obou případech bude IR detektor zpracovávat jednoduché příkazy, které napíšeme a odešleme ENTER, IR detektor bude odpovídat potvrzovacími nebo chybovými hlášeními. Až bude nastavení hotové, dá se příkazem zapsat do paměti EEPROM, která se neztratí při vypnutí napájení. Po zapnutí pak IR detektor začne ihned pracovat podle nastavených pravidel a hodnot. Konfigurace se dá také smazat - IR detektor přejde do továrního nastavení.
Výzva k zadání příkazu je
@ >
příkazy tvoří tři písmena, případné parametry a nastavení se oddělují dvojtečkami. Následující příklad obsahuje:
- pokyn k vypsání konfigurace
- výpis stavu senzorů
- měření senzoru č.2, údaje se průběžně aktualizují v reálném čase
ReflexShield (c) Belgarat@klfree.net, v. 3.0, 9/2021 Starting up... Loading from EEPROM Reading EEPROM 0:72, dest: 5D0 Reading EEPROM 60:64, dest: 698 Reading EEPROM B0:18, dest: 5BE Loading done. Output extension board attched. @ > dmp SEN:1:250:50 INV:1 SEN:2:250:50 INV:2 @ > inf Sensor status: 0-0-0-0-0-0-1-1 @ > msr:2 2: high=283, low=000, min=090, max=288, avg=112 Sensor 2 changed 0 2: high=287, low=000, min=090, max=288, avg=124 Deactivate relay 3 to 0
Pro lepší diagnostiku IR detektor umí měřit a monitorovat jeden nebo více vstupů - funkce se dá použít pro přesnější nasměrování zářiče nebo senzoru.
Přehled příkazů
Skupina | Příkaz | Funkce |
---|---|---|
Senzory a citlivost | SEN:senzor:citlivost:prodleva | Nastavení citlivosti senzoru a prodlevu při přerušení paprsku |
SFT:senzor:prodleva-sepnutí:prodleva-vypnutí | Nastavení prodlevy při sepnutí a vypnutí | |
INV:senzor | Změna funkce závora / odraz | |
VSN:id:senzor | Vytvoření virtuálního senzoru k zadanému skutečnému | |
OTR:senzor | Nastavení "hystereze" - při zachycení paprsku stačí slabší intenzita k udržení | |
Kalibrace a měření | CAL:senzor | Automatická kalibrace senzoru |
CAD:senzor | Kalibrace opožděného vypnutí | |
MSR:senzor | Měření intenzity osvětlení senzoru | |
MON | Monitoruje stav všech připojených senzorů | |
Relé | REL | Nastaví spínání relé |
Údržba | SAV | Zapíše konfiguraci do EEPROM |
DMP | Vypíše konfiguraci - zálohování | |
RST | Resetuje detektor | |
CLR | Vymaže EEPROM, tovární nastavení |
Příklady použití IR detektoru
Indikátor pro zastavení
- Na konci staniční koleje. Může sloužit jako "In" senzor pro RocRail, způsobí zastavení na daném místě
- Před návěstidlo. Může sloužit k zastavení soupravy při signálu "stůj"
Detekce polohy
- Před železniční přejezd. Může zapnout, případně uvolnit přejezd.
Detekce jednotlivých vozidel
- Počitadlo vozidel
- Automatické rozpojování soupravy - odpočítání vozidel před použitím rozpojovače
Řízení polarity ve smyčce
- Autonomní přepínání polarity ve smyčce ve chvíli přejezdu nad rozhraním smyčky
Výroba detektoru
Celý IR detektor je vhodný pro výrobu v domácích podmínkách - většinou THT součástky, nízka "hustota" drah a DPS. U prvních 2 kusů - prototoypů jsem tiskl motiv na laserové tiskárně na vodolepicí papír a zažehloval žehličkou ... ovšem Číňan (JLCPCB) vyvrtá díry úplně přesně a tak do dodaného (dvouvrstvého) spoje sednou i RJ konektory jak příslovečná prdel na hrnec.
Schéma zapojení
- DPS je navržená pro Arduino Nano, které má vyvedený microUSB konektor. Po úpravě DPS (nedělal jsem) by mělo jít použít i Arduino Pro Mini - stejný SW.
- Regulátor napětí je určený pouze pro napájení LED a případně relé, můžete volit variantu podle očekávaného proudu. LEDky jsou spínané vždy po dvojicích, IR LED co kupuji mají IFmax = 50mA.
- Najednou svítí vždy jen dvě IR LED (typicky: 2x 50mA). J1+J2, J3+J4 atd.
- Konektory J1..J8 připojují optická čidla
- Na konektor JP1 jsou vyvedené vývody procesoru, dají se použít například k Ovládání relé. Pozor - není tam žádné galvanické oddělení. Chybným zapojením usmažíte Arduino.
- Neobsahuje ochranu proti přepólování ani vyššímu napájecímu napětí.
Návrh DPS
DPS je navržená jako dvojvrstvá, avšak druhá vrstva obsahuje pouze propojky. DPS jde tedy v domácích podmínkách vyrobit jako jednovrstvou, s drátovými propojkami (není jich moc).
Optická čidla
Optická čidla mají malou destičku kvůli spolehlivějšímu propojení vodičů a nožiček LED/fototranzistor. Na destičce je místo pro SMD odpor regulující proud do LED. Schéma říká 130R, nakonec jsem použil 91R. Pro případ, že je nutné LEDku zdvojit (např. šikmá optická závora přes koleje) jsem zdvojil na 2x 91R paralelně (protože jsem neměl něco kolem 40R). Motiv jsem vyrobil jako 8 detektorů, vyleptat a SMD osadit se to dá najednou, pak rozstříhat nůžkami na plech. Alternativní motiv (viz ke stažení) je s pájecími ploškami pro vodiče namísto děr pro hřebínkový konektor.
S deskou IR detektoru propojuje destičku čidla 3-žílový vodič, stříhám je z plochého kabelu. Význam vodičů je.
- Spínané 0 pro rozsvěcení LED
- +5V napájení LED a kolektoru fototranzistoru (při otevření vytáhne napětí na emitoru k VCC
- výstup fototranzistoru (emitor): v klidu plovoucí (nepřipojený), na desce IR detetoru stažený ke GND odporem 4k7, při plném otevření VCC - cca 0,3V
Doplňková deska k ovládání relé
K IR detektoru jde doplnit deska, kterou může IR detektor ovládat relé. To se dá použít například pro přepínání polarity smyčky, ale také k Bůh ví čemu dalšímu. Deska se s IR detektorem propojí plochým kabelem s 6 vodiči:
Číslo pinu | Význam | Poznámka |
---|---|---|
1 | Napájení +6-12V | Až od verze desky 8/2021, propojená s + přívodního konektoru |
2 | GND | Společná zem pro +5V a napájení, propojená s - přívodního konektoru |
3, 4, 5 | Výstup 1, 2, 3 | Přímo vyvedené piny mikroprocesoru, TTL logika. Maximální zátěž 20mA |
1 | +5V | Výstup regulátoru napětí pro LED, max. odběr 1A. |
- Z IR detektoru je možné rovnou přivést i napájení relé (+5, +12), nebo je napájet samostatně (na DPS je svorkovnice pro napájení).
- Ochranný odpor před LED je třeba zvolit podle potřebného proudu pro sepnutí relé, max proud do báze je 20mA (proboha, co bych tím chtěl spínat ?)
- Podrobnosti viz IR_Detektor_S88/Ovládání_relé
Soubory ke stažení
- IR Detektor
- Optočidla
- Deska relé
- Software pro Arduino
- Všechno v ZIPu - arduino sketch je v adresáři arduino/ReflexShield
- GitHub projekt
Licence
IR detektor vč. všech elektro schémat a motivů je možné využívat a šířit - všechny materiály jsou licencované podle GNU GPL v2.
Odkazy
- ↑ 1,0 1,1 IR Detektor, Belgarat 2017
- ↑ S88 IR Detektor, Petr Šídlo, 2017
- ↑ 3,0 3,1 Arduino Nano, popis desky