Witam serdecznie,
tym razem chcę podzielić się ze wszystkimi moim projektem dotyczącym praktycznej aplikacji regulatora PID. Szukałem najbardziej widowiskowego sposobu prezentacji i postanowiłem zbudować układ, który za pomocą wiatraczka będzie w stanie unosić piłeczkę pingpongową na zadanej wysokości. Oczywiście nie odkrywam tutaj ameryki bo tego typu urządzenia były już wielokrotnie budowane, ale niemniej chciałem wykonać taką makietę sam i pobawić się PID w praktycznej, widowiskowej aplikacji.
Nie będę tutaj opisywał samego algorytmu PID bo w literaturze można znaleźć dużo lepsze i rzeczowe wyjaśnienia niż ja bym to zrobił. Natomiast chcę powiedzieć, że poszukiwałem takiego układu regulacji który byłby maksymalnie widowiskowy, gdyż wielokrotnie implementowałem regulator PID na przykład do regulacji temperatury i muszę powiedzieć, że efekt działania jest mało spektakularny, gdyż proces nagrzewania jest stricte wolnozmienny. Tutaj udało mi się wybrać taki układ, z którym nie poradzi sobie przykładowo regulator dwustawny (zbyt duża inercja działania wentylatora) czego nie omieszkałem również przetestować
Przejdźmy zatem do rzeczy. Do budowy makiety wykorzystałem 90 cm rurkę z pleksi, a reszta elementów została wydrukowana na drukarce 3D. Sterownik tym razem oparty jest na mikrokontrolerze ATmega328p dobrze znanym z Arduino. Wentylator 12 V sterowany jest za pomocą sygnału PWM z wykorzystaniem tranzystora MOSFET. Do regulacji nastaw służą trzy potencjometry (P, I oraz D), a także jeden potencjometr odpowiedzialny za ustalenie wysokości piłeczki w rurce. Poniżej kilka zdjęć urządzenia:
Po drodze miałem sporo przygód z czujnikiem mierzącym wysokość piłeczki. Początkowo chciałem użyć znanego sensora odległości firmy SHARP, ale okazało się, że gdy piłeczka zaczyna drgać lub podskakiwać w rurce (co zdarza się ciągle) to pomiary z czujnika są śmieciowe, a co za tym idzie algorytm regulacji wariuje. Próbowałem go kalibrować na różne sposoby i wykorzystując różne wielomiany do obliczania odległości, ale po paru dniach straciłem cierpliwość. Postanowiłem zatem wykorzystać czujnik ultradźwiękowy. Początkowo obawiałem się czy negatywnie na wyniki pomiaru nie wpłyną odbicia wewnątrz rurki, ale na szczęście okazało się, że grają one minimalną rolę i finalnie wszystko sprawuje się po prostu świetnie. Muszę przyznać, że jestem zadowolony z całego urządzenia. Oczywiście nie ustrzegłem się kilku niedoróbek, ale o tym na końcu. Póki co zamieszczam filmik z działania regulatora:
Jakie to mankamenty zauważyłem już po ukończeniu urządzenia? Ano takie, że mimo zastosowania dość precyzyjnych potencjometrów liniowych, nie jestem w stanie ustawić dokładnie parametrów PID, a w przypadku tego algorytmu ma to ogromne znaczenie. Lepiej sprawdziły by się przyciski +/-. Po drugie muszę działać niejako na "ślepo" bo w urządzeniu nie zamontowałem żadnego wyświetlacza. Koniecznie muszę w następnej wersji dodać chociażby mały LCD aby podglądać na żywo parametry regulatora. Ułatwi to regulację.
Myślę, że jak na pierwszą wersję cała makieta działa przyzwoicie. Chciałem tutaj pokazać działanie PID w praktyce bo w mojej edukacji tego właśnie brakowało. Poznałem zasadę działania regulatora, wzory, schematy blokowe, ale dopiero gdy po raz pierwszy implementowałem PID na żywym urządzeniu i procesie, zrozumiałem wreszcie jak to naprawdę działa, a wszystkie elementy teorii wskoczyły na swoje miejsce. Dlatego dzielę się tym ze wszystkimi. Zapraszam do komentowania.
tym razem chcę podzielić się ze wszystkimi moim projektem dotyczącym praktycznej aplikacji regulatora PID. Szukałem najbardziej widowiskowego sposobu prezentacji i postanowiłem zbudować układ, który za pomocą wiatraczka będzie w stanie unosić piłeczkę pingpongową na zadanej wysokości. Oczywiście nie odkrywam tutaj ameryki bo tego typu urządzenia były już wielokrotnie budowane, ale niemniej chciałem wykonać taką makietę sam i pobawić się PID w praktycznej, widowiskowej aplikacji.
Nie będę tutaj opisywał samego algorytmu PID bo w literaturze można znaleźć dużo lepsze i rzeczowe wyjaśnienia niż ja bym to zrobił. Natomiast chcę powiedzieć, że poszukiwałem takiego układu regulacji który byłby maksymalnie widowiskowy, gdyż wielokrotnie implementowałem regulator PID na przykład do regulacji temperatury i muszę powiedzieć, że efekt działania jest mało spektakularny, gdyż proces nagrzewania jest stricte wolnozmienny. Tutaj udało mi się wybrać taki układ, z którym nie poradzi sobie przykładowo regulator dwustawny (zbyt duża inercja działania wentylatora) czego nie omieszkałem również przetestować
Przejdźmy zatem do rzeczy. Do budowy makiety wykorzystałem 90 cm rurkę z pleksi, a reszta elementów została wydrukowana na drukarce 3D. Sterownik tym razem oparty jest na mikrokontrolerze ATmega328p dobrze znanym z Arduino. Wentylator 12 V sterowany jest za pomocą sygnału PWM z wykorzystaniem tranzystora MOSFET. Do regulacji nastaw służą trzy potencjometry (P, I oraz D), a także jeden potencjometr odpowiedzialny za ustalenie wysokości piłeczki w rurce. Poniżej kilka zdjęć urządzenia:
Po drodze miałem sporo przygód z czujnikiem mierzącym wysokość piłeczki. Początkowo chciałem użyć znanego sensora odległości firmy SHARP, ale okazało się, że gdy piłeczka zaczyna drgać lub podskakiwać w rurce (co zdarza się ciągle) to pomiary z czujnika są śmieciowe, a co za tym idzie algorytm regulacji wariuje. Próbowałem go kalibrować na różne sposoby i wykorzystując różne wielomiany do obliczania odległości, ale po paru dniach straciłem cierpliwość. Postanowiłem zatem wykorzystać czujnik ultradźwiękowy. Początkowo obawiałem się czy negatywnie na wyniki pomiaru nie wpłyną odbicia wewnątrz rurki, ale na szczęście okazało się, że grają one minimalną rolę i finalnie wszystko sprawuje się po prostu świetnie. Muszę przyznać, że jestem zadowolony z całego urządzenia. Oczywiście nie ustrzegłem się kilku niedoróbek, ale o tym na końcu. Póki co zamieszczam filmik z działania regulatora:
Jakie to mankamenty zauważyłem już po ukończeniu urządzenia? Ano takie, że mimo zastosowania dość precyzyjnych potencjometrów liniowych, nie jestem w stanie ustawić dokładnie parametrów PID, a w przypadku tego algorytmu ma to ogromne znaczenie. Lepiej sprawdziły by się przyciski +/-. Po drugie muszę działać niejako na "ślepo" bo w urządzeniu nie zamontowałem żadnego wyświetlacza. Koniecznie muszę w następnej wersji dodać chociażby mały LCD aby podglądać na żywo parametry regulatora. Ułatwi to regulację.
Myślę, że jak na pierwszą wersję cała makieta działa przyzwoicie. Chciałem tutaj pokazać działanie PID w praktyce bo w mojej edukacji tego właśnie brakowało. Poznałem zasadę działania regulatora, wzory, schematy blokowe, ale dopiero gdy po raz pierwszy implementowałem PID na żywym urządzeniu i procesie, zrozumiałem wreszcie jak to naprawdę działa, a wszystkie elementy teorii wskoczyły na swoje miejsce. Dlatego dzielę się tym ze wszystkimi. Zapraszam do komentowania.
Fajne? Ranking DIY