Skocz do zawartości

Jak poprawnie sterować silnikiem dc na podstawie temperatury


Pomocna odpowiedź

A co w temacie układania algorytmu? Krystian, zastanowiłeś się? Przeczytałeś mój plan? Prześledziłeś go i zrozumiałeś co jest nie tak? Napisałeś jakiś swój w punktach? Możesz go pokazać?

Siedzę nad arduino tylko w wolnych chwilach , na krańcówkach zrobić jest łatwo i napisałem taki program, a to że jest nie rozbudowany to nie ma w tej chwili znaczenia bo to początek

algorytm działania faktycznie błędne koło, myślę że powinien być taki jeśli nie stosuję żadnych metod zapamiętania stanu klapki :

pomijając temperaturę 51-56

jeśli temperatura jest mniejsza od 50

to włącz przekażnik x na 3 sekundy

wyłącz // klapa się otwiera temp. rosnie

czekaj aż temperatura będzie większa od 50

jeśli jest większa

włącz przekaźnik y na 3 sekundy //klapa się zamyka temp. spada

Dopóki nie masz jakiegoś mechanizmu ograniczania ruchu klapy to nie bardzo wyobrażam sobie poprawne działanie. Przecież procesor właczając napęd na 3 sekundy nie wie czy to jest dobry czas czy nie i czy klapa jest już otwarta/zamknięta do końca czy też stoi dopiero w połowie, bo coś tam ciężej chodziło i silnik kręcił wolniej. Jakieś krańcówki powiny być, wszystko jedno czy wstawione "elektrycznie" w obwód silnika czy podłączone tylko "logicznie" do wejść procesora.

Systemy takiej regulacji dwustanowej jaką chcesz zrobić nie mogą opierać się na jednym progu, bo w jego okolicach wariują. Jeżeli Twój czujnik/termometr będzie pokazywał - wszystko jedno z jakich powodów: wahań zasilania, błędów/rozrzutu pomiaru czy rzeczywistych zmian temparatury - np. takie wyniki: 50, 49, 51, 48, 50, 51, 49 to biedny silnik będzie musiał co chwila machać tą klapą. Dlatego powinieneś popatrzeć na kolejne, rzeczywiste wyniki i oszacować jaki "szum" nałożony jest na te liczby. Można to liczyć - są na to metody statystyczne, ale czasem wystarczy zdrowy rozum, w końcu to nie apteka. Jeśłi widzisz, że od pomaru do pomiaru wyniki ochylają się od jakiejś średniej o np. 2 stopnie w górę/w dół w ciągu powiedzmy minuty, to przyjmujesz wielkość maks. zakłóceń na 4-5 stopni. To potrzebne jest do wprowadzenia tzw. histerezy, czyli rozsunięcia progów. Gdy temperatura rośnie zamykanie klapy powinieneś robić w takich warunkach przy 55 stopniach a z kolei gdy opada, otwieranie powinieneś wystartować dopiero przy 50. Oczywiście to są wartości przykładowe, możesz umieścić je symetrycznie wokół np. 50 stopni lub dowolnie innej wybranej temperatury, ale ważne jest by na podstawie obserwacji wyników ustaliś szerokość rozsunięcia. Przemyśl to, tak działają wszelkie termostaty dwustanowe w lodówkach, piecykach, frytkownicach itp rzeczach. Algorytm tego wygląda wtedy tak:

1. Czekaj aż temperatura > 55

2. Otwórz klapę

3. Czekaj aż temperatura < 50

4. Zamknij klapę

Taki regulator ma dwa stany i nie wykonuje wszystkich sprawdzeń zawsze. Albo "stoi" w stanie 1 i czeka na warunek ">55", albo "utyka" w stanie 3 i czeka na "<50". Dzięki temu masz wbudowaną odporność układu na wahania i zakłócenia pomiarów - to są naturalne rzeczy w przyrodzie, bo żaden czujnik nigdy nie będzie pozbawiony szumów. Taki algorytm nie macha szaleńczo klapą w okolicach progu, bo zmiany stanów nie jest już takie łatwe: przejście do przeciwnego wymaga sporej zmiany temperatury, większej niż przypadkowe śmiecie nałożone na wyniki pomiarów.

Jeśli masz czujnik mający rozdzielczość pomiaru 0.1 stopnia i widzisz, że wahania są powiedzmy ±0.3 to oczywiście histereza (szerokość rozsunięcia progów) może być sporo mniejsza. Wszystko zależy od tego co zbudowałeś i jak to mierzy.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...