Transoptor szczelinowy…

Taka mała zabaweczka:

Transoptor szczelinowy
Transoptor szczelinowy

Transoptor szczelinowy (fototkomórka szczelinowa, ang. opto interrupter lub photo interrupter) – tutaj TCST1103 – składa się z dwóch elementów umieszczonych na przeciwnych stronach widełek: foto-diody a z drugiej strony foto-tranzystora. W momencie kiedy oba elementy przestają się widzieć – zmienia się prąd tranzystora. Element ten jest popularnie wykorzystywany np. w enkoderach. Zamontowana na wale silnika tarczka ma otwory. Tarczka wchodzi w szczelinę transoptora. Obracając się, części transoptora na przemian się widzą i nie – co pozwala na zliczanie impulsów.

A piszę o tym dlatego, że trochę się naszukałem, zanim znalazłem sposób podłączenia odpowiedni dla Raspberry. Dodatkowo same opisy na elemencie są odrobinę mylące. „E” oznacza katodę diody (a nie Emiter tranzystora) a „D” oznacza… emiter tranzystora.
Problem polega na tym, że element może wygenerować dość znaczny prąd, ok 40mA – co dla GPIO Raspberry jest niebezpieczne. Na forum Raspberry znalazłem takie podłączenie:

  • E do GND
  • +/E – przez rezystor 180ohm do +5v
  • D do GND
  • +/D do GPIO i przez rezystor 10k do 3,3V (pull-up)
Podłączenie transoptora; na podstawie: forum Raspberry
Podłączenie transoptora; na podstawie: forum Raspberry

W takim układzie przesłonięcie szczeliny da 3,3v na +/D (logiczna „1”) – odsłonięcie to 0,07v (logiczne „0”).

NodeMCU/Lua/ESP8266

W moim projekcie ten transoptor ma chodzić z ESP8266 z NodeMCU. Najpierw małe przypomnienie nt. mapowania pinów w NodeMCU

Numer GPIO Numer GPIO
0* GPIO16 7 GPIO13
1 GPIO5 8 GPIO15
2 GPIO4 9 GPIO3
3** GPIO0 10 GPIO1
4 GPIO2 11 GPIO9
5 GPIO14 12 GPIO10
6 GPIO12

* 0/GPIO16: na tym pinie nie można ustawić przerwań, pwm, i2c – tylko odczyt/zapis
** 3/GPIO0: tego też nie ruszam, bo w stanie niskim służy do wgrywania firmware

W moim przypadku chcę wstrzymać wykonanie programu aż do momentu, kiedy GPIO5 będzie miało wartość niską (na podstawie przykładu z wiki nodeMCU):

gpio.mode(1, gpio.INT);
gpio.trig(1, "down" )

Przykład?

Przykładowe wykorzystanie transoptora jako enkoder:
tsz_application_01
Na obracającym się wale znajduje się tarcza z otworami. Tarcza musi być czarna, inaczej czujnik nie zadziała. Detektor jest wzbudzany, gdy „widzi” emiter (szczelina w tarczy).

W następnym poście pokażę, jak podłączyć taki czujnik przez komparator.

Źródła

Forum Raspberry
Dokumentacja TCST1103
Wiki NodeMCU

2 komentarze do “Transoptor szczelinowy…”

Dodaj komentarz