Dwie „krańcówki” – a jednak dwa wejścia…

W poprzednim wpisie napisałem, że wykorzystanie jednego wejścia analogowego do obsługi dwóch wyłączników krańcowych to nie jest w 100% dobry pomysł. Owszem, jest to świetny pomysł, ale wyłącznie przy użyciu krótkich przewodów i bez dodatkowej interferencji wywołanej sterowaniem silnika. W przypadku krańcówek dla wyciągu okularowego nie udało mi się uniknąć „pływania” wartości odczytanych na wejściu, co owocowało spontaniczną „czkawką” silnika, kiedy focuser znajdował się w swych krańcowych położeniach.

Kiedy uruchomiłem wyłączniki krańcowe zabezpieczające ruch w osi poziomej i zabierałem się za ich oprogramowanie, mogłem doświadczyć trzech w miarę stabilnych stanów wejścia w zależności od stanu włączników. Dało się to dość łatwo ująć w programie, bo odczyt wskazywał wartość np. 270 ±10 oraz 710 ±10 z zakresu 0 – 1023. Stan 0 oznacza, że żaden wyłącznik nie jest uruchomiony. Co ciekawe, teoretycznie możliwe jest uruchomienie obu wyłączników, co oprogramowałem, ustawiając na tą okoliczność stosowną zmienną. Tymczasem niekorzystny zbieg czynników takich jak długie kable, wpływ sterowania silnikiem i sam nie wiem, co jeszcze, spowodował, że odczyt wskazywał średnio np. 270 ±100 oraz 710 ±100, a czasem błąd wykraczał poza 100. Nie dało się zdefiniować granicznych zakresów, kiedy włącznik jest uruchomiony, a kiedy nie. Owszem, program wyłączał silnik, ale robiłem testy polegające na przytrzymaniu obu przycisków ostrzenia przez 1 minutę, a silnik w tym czasie szarpnął wyciągiem 5-6 razy. Wobec powyższego nie mogłem zaufać takiemu rozwiązaniu. Nieco po fakcie zrozumiałem, że powinienem sprawdzić, jak zachowa się ten sam układ, jeśli zastosuję ekranowane przewody, jak np. skrętka STP lub SFTP.  Dość istotne jest też, że rezystory znajdują się bardzo blisko Arduino, więc długie przewody idące do wyłączników nie mogą już raczej zmieniać oporności zastosowanych rezystorów.

Trochę już podirytowany przeciągającą się robotą zdecydowałem się na dwa wejścia i nieco inny układ:

20171017_225700.jpg

Jak widać, zastosowałem rezystory podciągające do +5V, ale mogłem sobie to odpuścić, ponieważ wejścia Arduino można ustawić w tryb wewnętrznego podciągnięcia. Odczyt wskazywał tylko dwie wartości: 0 (wyłącznik zamknięty) i 1023 (wyłącznik otwarty). Od tej chwili mogłem się skoncentrować na oprogramowaniu. Niestety, z powodu dużej ilości użytych wejść szybko zbliżam się do zakupu Arduino w wersji „mega”.

Reklamy