Tym razem brama garażowa.
Długo kombinowałem, jak uzyskać rzetelną informację o bieżącym położeniu bramy garażowej.
Podejście pierwsze - dwa kontaktrony w skrajnych pozycjach bramy. Dzięki temu wiemy, czy brama jest w pełni otwarta lub w całkowicie zamknięta. Położenia pośrednie można wyliczać wg czasu ruchu bramy. Temat ogólnie złożony i bardzo podatny na ewentualne nieścisłości w wynikach (brama ręcznie otwarta, zablokowana itd.).
Podejście drugie - odczyt impulsów z kręcących się elementów napędu bramy. Rozważałem 4 magnesy na kole nawojowym od linki i jeden kontaktron liczący impulsy z tych magnesów. Dodatkowo kontaktrony na skrajnych pozycjach, jak wyżej.
Podejście trzecie - odczyt impulsów z silnika napędu bramy (są tam enkodery optyczne) - porzuczone.
Rozwiązanie:Podejście czwarte, które ostatecznie wdrożyłem oparte jest o moduł 4-20mA (Wago 750-492) + wieloobrotowy potencjometr zadający pozycję wałka, na który nawija się linka unosząca bramę.
Po obserwacji wyszło mi, że wałek przy pełnym zakresie ruchu bramy obraca się niecałe 7 razy. Potencjometr z kolei pozwala na wykonanie 10 obrotów. Dalej były dwa problemy do rozwiązania, podłączenie elektryczne i mechaniczne połączenie potencjometru z bramą.
Elektronika:Przy sterowniku moduł 750-492, dalej dwa przewody do potencjometru przy bramie.
Skorzystałem z takiego schematu:
http://forums.mrplc.com/index.php?/topic/30861-4-20ma-from-potentiometer/Moje R1 to 220 Ohm, R2 chyba takie jak w schemacie, nie pamiętam. W internecie są dostępne kalkulatory, do wyliczenia poszczególnych rezystancji.
Mechanika:Tutaj proszę zerknąć na zdjęcia. Na wałek bramy (średnica coś ok. 25mm) na gorąco nałożyłem mufę PCV (musiałem ją podgrzać bo nie chciała wejść, brakowało ok. 1,5mm na średnicy). W dużą mufę wcisnąłem mniejszą (weszła na wcisk). Teraz średnica była już zbliżona do tej, której potrzebowałem. W małej mufie włożyłem kawałek gumy tak aby gałka potencjometru weszła na delikatny wcisk. Pełni to rolę sprzęgła, w razie blokady, a dodatkowo pozwala tłumić bicie przez niewspółosiowe ułożenie wałka i potencjometru.
Na potencjometrze jest gałka, mimo odpowiedniego dokręcenia to i tak przy nadmiarze siły się obraca, czyli w razie konieczności będzie to drugi stopień sprzęgła.
Potencjometr umocowałem trytytkami do blaszki od regipsów (służyła do krzyżowego łączenia profili). Blaszka pozwoliła na ręczne dopasowanie odległości od ściany aby uzyskać w miarę równe ułożenie potencjometru w jednej osi z wałkiem bramy. W trakcie pracy blaszka lekko pracuje, co jest całkiem dobre i nie polecam robienia całości na sztywno.
Na górze umocowałem puszkę, w której ukryłem elektronikę i kabelki.
Program:Po montażu trzeba było skalibrować pozycję bramy i odczyty z czujnika. Okazało się, że pozycja odczytana z czujnika zmieniała się wykładniczo (a miała być liniowa). Musiałem to uwzględnić w programie. Zanotowałem w excelu kilkanaście pozycji bramy w postaci par "uniesienie bramy w milimetrach" + "odczyt z czujnika". Pierwsze 60-70% uniesienia bramy daje odczyt z grubsza liniowy, później wzrost jest gwałtowny. Dlatego w pozostałych pozycjach zagęściłem odczyty. Mając zestaw takich par pozycje pośrednie interpoluję w programie.
W celu odfiltrowania wskazań czujnika użyłem funkcji FILTER_DW z bibliotek Oscat. Po filtrowaniu odczyty pozycji zmieniają się maksymalnie o kilka milimetrów.
Źródło w ST umieszczę w osobnym poście.
Podsumowanie:Rozwiązanie w 110% spełniło moje oczekiwania a precyzja odczytów niesamowicie mnie zaskoczyła (dokładność rzędu 1cm). Na wizualizacji mogę wyświetlić sobie na ile centymetrów mam podniesioną bramę lub wyrazić to w procentach - wedle uznania. Kontaktronów, na skrajnych pozycjach, mimo że je zamontowałem, nie używam bo nie ma takiej potrzeby. Odczyt pozycji bramy jest niezależny od tego, czy ktoś uniósł ją ręcznie (bez prądu) czy ze sterownika. Rozwiązanie idealne.
Koszt części, to około 30-40zł (mufy PCV z castoramy, elektronika z allegro) nie licząc oczywiście modułu wago, który miałem na stanie. Z wykonaniem całości zeszło mi ze dwa dni, trochę pracy jednak było.
A jakby ktoś pytał "ale po co?", odpowiem "bo można"