Skocz do zawartości

Sterowanie czasowe przekaźnikiem


Recon

Pomocna odpowiedź

Hej, potrzebuję zbudować prosty mechanizm sterowania przekaźnikami (na atmega8), w którym algorytm będzie się opierał na załączaniu przekaźnika na pewien odcinek czasu T1, w odstępach T2. I o ile jakiś duży specjalnie problem to nie jest, to gdy pojawia się kwestia regulacji wielkości T1 i T2 sprawa się komplikuje. Chciałbym wprowadzić taką regulację na potencjometrach ale na za bardzo wiem jak się za to zabrać.

Póki co założyłem, że można by dwa potencjometry dodać bezpośrednio do gniazd ADC mikrokontrolera i tym samym regulować napięcie podane na nóżki. Tylko czy da się w takim przypadku w miarę precyzyjnie nanieść charakterystykę w czasie dla potencjometru? Tzn, zależność napięcia na nóżce od konkretnej liczby, która potem będzie utożsamiana z czasem T1,T2?

Czy taka koncepcja jest dobra? Nie chce komplikować układu potencjometrami cyfrowymi.

EDIT: Jak długie odcinki czasowe jest w stanie obsługiwać atmega?

Link do komentarza
Share on other sites

Z załączaniem przekaźnika na określony czas poradzi sobie chyba każdy, nawet najprostszy kontroler. Możesz rozpatrywać nawet ATtiny, a ATmega to już armata. Jedynym wymaganiem jest raczej sposób zadawania czasów, bo będzie po wymagało pewnej liczby linii portów.

Możesz to zrobić analogowo - tak jak zaproponowałeś. Dwa zwykłe potencjometry to dwa piny ADC. Potencjometr - wiadomo, ma wszystkiego ze 270 stopni obrotu i na tej drodze musisz zmieścić cały swój zakres czasów. Jeżeli planujesz np. 10 minut z rozdzielczością np. 1 sekundy, to potrzebujesz 600 działek i nie ma szans zrobienia tego w ten sposób. Ale jeśli wystarczy te przykładowe 10 minut nastawiać z rozdzielczością 30 sekund, to 20 czytelnie opisanych działek jesteś w stanie na takiej skali (przy dużej gałce) upchnąć. Pamiętaj, że potencjometry mają swoją liniowość (kiepską) oraz znaczne niedokładności na początku i końcu - te fragmenty ścieżki oporowej trzeba odrzucić, więc zostaje jeszcze mniej kąta obrotu.

W aparaturze laboratoryjnej stosuje się czasami (choć ich szczyt popularności minął) potencjometry wieloobrotowe:

http://www.tme.eu/pl/details/3856a-286-103al/potencjometry-wieloobrotowe-cermetowe/bourns/

http://www.tme.eu/pl/details/pot2218p-10k/potencjometry-wieloobrotowe-drutowe/sr-passives/

Nie są tanie, ale np. 10 obrotów znacznie poprawia dokładność ustawiania. Żeby jednak wiedzieć ile się ustawiło potrzebna jest specjalna gałka z przekładnią i skalą:

http://www.tme.eu/pl/details/gp1-6.35-22x24/galki-precyzyjne-do-potencjom-osiowych/sr-passives/

Taki interfejs jest bardzo prosty i intuicyjny, choć jednak bazujesz na technice analogowej i jakości przetwornika AC w procesorze.

Możesz też zrobić dwa przyciski i wyświetlacz, nawet 2, 3 lub 4-cyfrowy, 7-segmentowy LED. Taki maluch nie zajmuje dużo miejsca a dwa przyciski pod nim pozwolą na zwiększanie i zmniejszanie czasu. Wyświetlaczy jest mnóstwo rodzajów, możesz wziąć mały OLED, LCD a nawet TFT. Graficzny LCD 84x48 ze starej Nokii kosztuje chyba z 5 zł.

Jeszcze jednym rozwiązaniem są tzw. zadajniki kodów. Istnieją w wersjach do montażu na PCB:

http://www.tme.eu/pl/details/a6ks-102rs/zadajniki-kodu/omron/

http://www.tme.eu/pl/details/erd110rsz/zadajniki-kodu/ece/

lub do umieszczenia na panelu czołowym:

http://www.tme.eu/pl/details/z-49/zadajniki-kodu/

Jeżeli dasz takie trzy obok siebie, możesz już zadawać liczby z zakresu 000-999 a jeśli np. dwa z nich przeznaczysz na czas a jeden na mnożnik, masz już zakres od 00E0 do 99E9 a to chyba nawet za dużo. Każdy taki zadajnik ma 4 bity wyjściowe prezentujące liczbę binarną 0000-1001. W najprostszym przypadku dajesz 4 linie portu na każdy zadajnik, ale możesz zrobić odczyt multipleksowany i wtedy masz 4 wejścia + tyle wyjść ile zadajników użyjesz. Ponieważ nastawiane cyfry są widoczne z definicji, nie potrzebujesz wyświetlacza.

EDIT: Dopóki nie myślisz o czasach rzędu 27ns, to w górę nie istnieją żadne znane ograniczenia co do długości odmierzanego czasu. Jeżeli do generacji impulsu wyjściowego zatrudnisz sprzętowy timer, to masz wtedy 16 bitów ale sygnał jest produkowany z bezwzględną dokładnością generatora taktującego procesor. Gdy timer będzie taktowany np. z 1MHz to dysponujesz zakresem 1-65536us z rozdzielczością 1us. Do przekaźnika jednak potrzeba znacznie dłuższych czasów więc jeśli w przerwaniu np. co 10ms zrobisz 32-bitowy licznik, to masz timer odmierzający czasy do półtora roku z rozdzielczością 0.01s. Wystarczy?

Link do komentarza
Share on other sites

Dzięki, Twój post bardzo wiele wyjaśnił!

Myślę tu raczej o czasach w minutach i bardzo podoba mi się pomysł zadajników do 999s. Tylko jakiego dekodera użyć, żeby przesłać wygenerowany kod do atmegi w postaci gotowej liczby?

Link do komentarza
Share on other sites

W procesorze masz milion tranzystorów i kilka kb pamięci. Po co chcesz podłączać coś jeszcze? W zależności od tego ile chcesz użyć zadajników łączysz je odpowiednio, dociągasz kabelki do ATmegi i tyle. Przemyśl sprawę raczej od strony wygody użytkowania. Ile ma być czasów? Jak często mają być zmieniane? Czy powinny być oba na raz pokazywane/wyświetlane? Czy urządzenie będzie zabudowane gdzieś w trudno dostępnym miejscu? Kto będzie to obsługiwał? Jeśli np. tylko Ty a czasy będziesz zmieniał raz do roku ale w ogóle tylko raz na początku, interfejs może być dowolnie upierdliwy bo jest bez znaczenia ile zmarnujesz czasu na ustawianie. Wtedy wystarczy jedna, może dwie diodki LED i dwa przyciski. W drugiej skrajności może być użyty pilot od TV (ma gotowe przyciski numeryczne i wiele innych klawiszków), odbiornik podczerwieni i ładny wyświetlacz.

Acha - dlaczego procesor? Są przecież jeszcze rozwiązania czysto "sprzętowe": układy czasowe typu 555 czy 74HC123, liczniki np. 74HC90 itd.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Procesor dlatego, że w układzie będą dwa przekaźniki i czasy załączeń będą w cyklu definiowanym przez zaprogramowany algorytm loopa. Z tego też powodu sumarycznie będzie 6 takich zadajników a być może i 8 bo chciałbym zdefiniować też ilość cykli. Jeśli to ma oznaczać, że muszę zastosować większy mikrokontroler, to chyba jednak wrócę do potencjometrów.

Link do komentarza
Share on other sites

Tak jak napisałem: liczba potrzebnych linii I/O procesora to 4 + liczba zadajników. Dla 8 będziesz potrzebował 4+8=12 linii a jeśli po drodze umieścisz prosty dekoder 74HC138 (1.50zł) to liczba linii spada do w sumie 8. To jeden port procesora. Drugi przeznaczasz na wyjścia: 8 wyjść powinno wystarczyć. Wciąż zostaje jeszcze mnóstwo drutów na LEDy, bipczaki itp ekstrawagancje.

ATmega obsłuży zliczanie i 50 takich czasów na raz. Jeżeli algorytmy będą skomplikowane (jakieś łańcuchy wyzwalania poszczególnych opóźnień, dowolne łączenie bloków opóźniających między sobą itp) to poważnie pomyśl o wyświetlaczu graficznym prezentującym tę strukturę:

http://botland.com.pl/wyswietlacze-lcd-tft/4474-wyswietlacz-dotykowy-tft-lcd-22-320x240px-spi.html

lub:

http://botland.com.pl/wyswietlacze-oled/4434-wyswietlacz-oled-dwukolorowy-graficzny-096-128x64px-spii2c-katowe-zlacza.html

oraz o przejściu z drogich zadajników (powyżej 4-8 sztuk nie warto w nie inwestować) na kilka przycisków lub prostą klawiaturę:

http://botland.com.pl/klawiatury/1681-klawiatura-membranowa-numeryczna-12-klawiszy.html

Link do komentarza
Share on other sites

Algorytm raczej nie będzie wybitnie skomplikowany, ale może faktycznie warto by było pomyśleć o takiej prostej klawiaturze i wyświetlaczu najbanalniejszym, który poprosi o wszystkie dane po kolei i uruchomi proces.

Link do komentarza
Share on other sites

Hej, dzięki za rady, udało mi się zrobić ten układ, śmiga jak zły. Wykorzystałem wyświetlacz LCD 16x1 i klawiaturę matrycową 4x3 😉 Wszystko można precyzyjnie wpisać i nie trzeba było dodatkowych timerów, wszystko na Wait śmiga 🙂 Testowane ze stoperem kilka godzin już i przez kilka dni.

Jako, że sukces w 100%, to chciałbym to popchnąć dalej - mianowicie cały ten ogromny loop załączał by się pod wpływem bodźca - różnicy ciśnień między dwoma przetwornikami ciśnienia, które pracują w trybie 4...20mA.

Tutaj potrzebuję również porady, żeby wiedzieć jak się zabrać do roboty. Praca w takiej pętli wymaga rezystora pomiarowego precyzyjnego, który będzie zbierał różnicę napięć. I teraz, różnicę napięć podpinam sobie między jakiś pin A a masę GND mikrokontrolera? A potem odpowiednią komendą robię odczyt napięcia?

Druga sprawa - jak zasilić taki czujnik? 5V z mirokontrolera to za mało. Mam też stabilizowane 24V którym zasilam sterowane przez ULN2803 przekaźniki, może w ten sposób? Tylko wtedy pytanie czy czujnik może mieć osobną masę z zasilaczem mikrokontrolera?

74563:rys.jpg

[ Dodano: 31-12-2015, 12:51 ]

Pomocy 😋 podajcie człowiekowi wędkę 😃 żeby co złowił !

__________

Komentarz dodany przez: Treker

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.