S88 IR detektor

Enkodér IR snímače pro S88-N s řadičem Arduino Pro Mini

Optický snímač pro detekci bodového obsazení. Snímač funguje na principu odrazu infračerveného paprsku od vozidla. Infračervené světlo není pro člověka viditelné. Vysílač IR LED dioda i přijímač IR fototranzistor se montují mezi pražce pod koleje a neruší modelový provoz.

Popis zapojení

Základem řešení je vývojová deska Arduino Pro Mini s řadičem ATmega328. Vývojových desek Arduino Pro Mini je více a liší se počtem vyvedených pinů a jejich rozmístěním. Já jsem použil New Pro Mini atmega328 Board 5V 16M Replace ATmega128 Arduino Compatible Nano z ebay.com. Tuto desku jsem zvolil proto, že má všechny piny dobře přístupné na obvodu desky včetně pinů A6 a A7.

Deska Arduino Pro Mini má 14 digitálních pinů a 8 analogových pinů. Jsou požity následovně:

    • 0 a 1 – pro komunikaci s PC – nahrávání programu a ladění

    • 2 – LOAD/PS na sběrnici S88-N

    • 3 – CLOCK na sběrnici S88-N

    • 4 – DATA IN na sběrnici S88-N

    • 5 – DATA OUT na sběrnici S88-N

    • 6 –13 – napájení IR LED diod 1 – 8

    • A0 – A7 – napětí na fototranzistorech 1 – 8

Pro IR LED diody jsou použity součástky L-934F3BT LED prům. 3mm, 2,6 – 3,6mW/sr@20mA (Uf=1,20V), transparentní modrá, 30deg, 940nm z ges.cz.

Pro IR fototranzistory jsou použity součástky L-932P3BT fototranzistor prům. 3mm, 30V, 940nm, 30deg z ges.cz.

Pro JR 45 konektory jsou požity součástky MEBP 8-8S z ges.cz. Pozor, konektor má jinak vyvedené piny než konektor 8-8LP.

Přídavné napájení je přivedeno přes ochranou Schottky diodu 1N5817 z ges.cz. Z tohoto důvodu je přídavné napájecí napětí 5,4 V, protože úbytek napětí na diodě je přibližně 0,4 V.

Popis funkce

Na rozdíl od jiných publikovaných zapojeních není pro čtení stavu fototranzistoru použit digitální vstup, ale je použit analogový vstup. Analogový vstup používá 10 bitový AD převodník. Vyhodnocuje napětí na fototranzistoru, které je v rozmezí 0 – 5 V a převádí jej na číselné hodnoty 0 – 1023. Měření (detekce) je prováděna ve dvou krocích. V prvním kroku je vysílací IR LED dioda zhasnutá a měří se napětí na tranzistoru. Tím se zjistí množství rušivého světla z okolí. Potom se rozsvítí IR LED dioda a opakuje se měření fototranzistoru. Pokud se výrazně zvýší množství světla dopadající na fototranzistor, tak to znamená, že v blízkosti snímače je předmět od kterého se odráží infračervený paprsek. Je tedy jedno, zdali je okolního rušivého světla hodně (blízkost lampy nebo okna) nebo málo (tunel).

Nastavení snímače

Pro IR LED diodu u úbytkem napětí 1,2 V by měl být použit omezovací odpor 180 Ω. S tímto odporem byly výsledky velmi nespolehlivé. Proto jsem snížil odpor tak, aby diodou protékal proud 30 mA. Tento proud nepoškodí diodu ani Arduino. Navíc se výrazně zvýší světelný tok z diody. I tak bylo množství světla nedostatečné. Pro detekci vozidel měřítka H0 docházelo k problémům u vozidel s vysoko posazenou podlahou. Proto jsem nakonec použil dvě diody v sérii. Výsledný odpor pro dvě diody a 30 mA je 51 Ω. Pro menší měřítka bude stačit dioda jedna s odporem 100 Ω. Při použití dvou diod je světelný tok už opravdu velký. Při použití snímače v tunelu je třeba pro strop použít černou barvu, jinak bude detekován. Nebo použít snímač pouze s jednou diodou.

Na fototranzistor je natažena bužírka tak, aby tranzistor snímal pouze odražené světlo a byl ze stran odstíněn od diod.

Program

Program je napsán ve třech verzích pro různé světelné podmínky.

Jednoduché měření

Program S88_IR_110 je určen pro žárovkové osvětlení. Program čeká na impuls LOAD a potom spustí měření. Postupně provede měření na snímačích 1 – 8. Pokud je napětí na fototranzistoru při rozsvícené IR LED diodě 3× menší než při zhasnuté diodě, tak je vyhodnoceno jako obsazeno. Pokud je napětí větší, tak je vyhodnoceno volno.

Mezi rozsvícením/zhasnutím IR LED diody a začátkem měření na fototranzistoru je nastaveno zpoždění 2 – 3 ms pro stabilizaci poměrů v řadiči ATmega328.

Po postupném vyčtení hodnot všech 8 snímačů je výsledek měření uložen do proměnné state.

Při dalším impulsu LOAD je obsah proměnné state zkopírován do proměnné data.

Při každém impulsu CLOCK jsou datové bity z proměnné data odesílány postupně na sběrnici S88-N a současně jsou do této proměnné ukládány datové bity z předcházejícího modulu S88.

Měření 3 z 5

Program S88_IR_120 je určen pro žárovkové osvětlení. Měření probíhá nepřerušovaně, nečeká se na impuls LOAD. Výsledky měření se ukládají do pole proměnné partialState[5], které uchovává 5 po sobe jsoucích měření.

Při vyhodnocení se počítá počet výsledků obsazeno a volno. Pokud je počet výsledků obsazeno 3 a více, tak je konečný výsledek obsazeno, jinak je volno. Výsledný výsledek se uloží do proměnné state. Další běh programu je stejný jako u programu S88_IR_110.

Zářivkové osvětlení

Program S88_IR_130 je určen pro zářivkové osvětlení. Problém zářivkového světla je že bliká s frekvencí 100 Hz. Proto je důležité, aby měření se zhasnutou a rozsvícenou IR LED diodou probíhalo se stejným fázovým posunem svitu zářivky.

V programu je to řešeno tak, že se přečte systémový čas řadiče a ten se uloží. Potom se provede série osmi měření se zhasnutou diodou. Následuje čekání na další periodu, která je 10 ms. Čekání je nastaveno na 20 ms, protože série osmi měření trvá asi 17 ms a začátek nejbližší další periody je v čase 20 ms. Potom se ve stejném rytmu provede osm měření s rozsvícenou diodou.

Vyhodnocení výsledků je stejné jako v programu S88_IR_120, tedy 3 z 5.

Ladění

Při ladění se v programu zapne komunikace po sériové lince a je možné si nechat vypisovat do monitoru libovolné informace z Arduina. Při ladění je třeba být velmi opatrný. Na desce se jsou v tu chvíli propojena tři napájení. Jedno napájení z S88-N sběrnice, druhé pomocné napájení 5,4 V a třetí napájení z USB programátoru připojeného do počítače. Při chybném zapojení může dojít (a pravděpodobně dojde) ke zničení Arduina, USB portu počítače nebo centrály.

Přílohy

    • programy S88_IR_110, S88_IR_120 a S88_IR_130

    • schema zapojení modulu a snímače v programu KiCad a plošný spoj

aktualizace 24. 8. 2017

vytvořeno 6. 2. 2016