logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Makieta prezentująca działanie regulatora PID - lewitująca piłeczka

r03c10 25 Maj 2019 19:05 6525 10
  • 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:

    Makieta prezentująca działanie regulatora PID - lewitująca piłeczka Makieta prezentująca działanie regulatora PID - lewitująca piłeczka Makieta prezentująca działanie regulatora PID - lewitująca piłeczka Makieta prezentująca działanie regulatora PID - lewitująca piłeczka

    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
    O autorze
    r03c10
    Poziom 11  
    Offline 
    Specjalizuje się w: automatyka i robotyka, systemy wbudowane
    r03c10 napisał 446 postów o ocenie 66, pomógł 10 razy. Mieszka w mieście Mosina. Jest z nami od 2010 roku.
  • #2 17980521
    Janusz_kk
    Poziom 39  
    Posty: 5842
    Pomógł: 226
    Ocena: 1469
    Ale w końcu nie pokazałeś jak ten pid działa, skacząca piłka to mało, brakło pokazania jak nastawy parametrów wpływają na
    wynik, już nie mówiąc o wykresach, mając procka można by po rs-ie wysyłać pozycję i nastawę a potem z tego porobić ładne wykresy.
    Bo teraz tak po prawdzie to nic nie widać :) Ale masz plusa za chęci chociaż jak widzę to aktywność tutaj kierowana jest chęcią autopromocji.
  • #3 17980622
    zielony_gajowy
    Poziom 15  
    Posty: 110
    Pomógł: 4
    Ocena: 9
    Niestety, z filmu wynika, iż ruch kulki jest przypadkowy i nie ma nic wspólnego z regulacją.
    Tzn. proszę zamieścić algorytm, oraz zobrazować jak przy zadanych nastawach zachowuje się kulka.

    Od pewnego czasu, wszystkie moje projekty są podpięte pod PC i mając na ekranie (w tym przypadku) ruch kulki, odczyty czujników oraz zadziałanie układów wykonawczych. W związku z tym, szybciej wiem, co zrobiłem źle.
  • #4 17980796
    r03c10
    Poziom 11  
    Posty: 446
    Pomógł: 10
    Ocena: 66
    Te duże oscylacje to pokazanie granicy stabilności. Wtedy starałem się doprowadzić układ do takiego stanu aby móc obliczyć parametry PID z wykorzystaniem jednej z metod Zieglera-Nicholsa. Metodę opartą o skok jednostkowy wykorzystam gdy podepnę się uartem do PC (wyprowadzenie przygotowałem na PCB).

    Właśnie dlatego napisałem, że ta pierwsza wersja nie jest w pełni dopracowana i będę starał się rozwijać projekt. Myślę nad tym żeby za jakiś czas napisać dłuższy i bardziej merytoryczny artykuł o strojeniu PID, implementacji algorytmu właśnie w oparciu o tą makietę. Chcę także napisać swój własny program na PC, który będzie obsługiwał makietę, wyznaczał odpowiedź skokową itd. Tylko nie jestem w stanie niestety zrobić wszystkiego naraz. Ja traktuję wrzucenie takiej pierwszej próbnej wersji jako motywację do dalszej pracy szczerze mówiąc :)

    Dziękuję za wszelkie uwagi bo właśnie po to ośmielam się zamieszczać moje "dzieła".
  • #5 17981435
    Wojciech.
    Poziom 37  
    Posty: 3593
    Pomógł: 319
    Ocena: 467
    r03c10 napisał:
    aby móc obliczyć parametry PID z wykorzystaniem jednej z metod Zieglera-Nicholsa.


    Metoda Z-N nie jest zbytnio metodą dobrą pod względem optymalizacji. Ona zapewnia tylko stabilność układu a nie jakość regulacji.
  • #6 17981773
    r03c10
    Poziom 11  
    Posty: 446
    Pomógł: 10
    Ocena: 66
    Wiem, że metody Zieglera-Nicholsa nie są optymalne, ale w takim razie z jakiej innej mógłbym tutaj skorzystać? Nie znam modelu układu, a na przykład metoda Åströma-Hägglunda się tutaj nie sprawdzi bo z tego co się orientuję to musiałbym w pewnym momencie przeprowadzić badania wykorzystując regulator dwustawny i stałe oscylacje, a ten regulator absolutnie tutaj nie działa (inercja wentylatora). Pytam z ciekawości jakie inne podejście wybrać w przyszłości?
  • #8 17983908
    Flaman11
    Poziom 18  
    Posty: 312
    Pomógł: 1
    Ocena: 281
    "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" Gdy budowałem urządzenie do pomiaru paliwa w zbiorniku, to natrafiłem na podobny problem przy stabilności pomiarów, bo jak wiadomo pojazd jest w ruchu na nierównościach. Rozwiązaniem przeze mnie zaimplementowanym było obliczanie mediany ze 100 pomiarów i wyliczenie minimalnych odchyłów. Wszystko co było powyżej tych wartości było odrzucane. Algorytm był pisany tylko w trybie symulacji co było dodatkowym utrudnieniem. W praktyce okazało się że działa świetnie.
  • #9 17984511
    r03c10
    Poziom 11  
    Posty: 446
    Pomógł: 10
    Ocena: 66
    Również myślałem o uśrednieniu pomiarów lub właśnie o medianie, ale obawiałem się, że negatywnie wpłynie to na działanie algorytmu (dłuższy czas pomiaru). Jednak na pewno w przyszłości jeszcze skorzystam z czujnika SHARP bo tak łatwo się nie poddam.
  • #10 17996432
    gajowy01
    Poziom 14  
    Posty: 89
    Ocena: 14
    Cytat:
    Koniecznie muszę w następnej wersji dodać chociażby mały LCD aby podglądać na żywo parametry regulatora. Ułatwi to regulację.


    Wystarczy serial port i terminal.
  • #11 17997001
    r03c10
    Poziom 11  
    Posty: 446
    Pomógł: 10
    Ocena: 66
    Tak, wiem. Tylko chciałbym żeby urządzenie było w pełni autonomiczne.

Podsumowanie tematu

✨ W dyskusji autor prezentuje projekt dotyczący regulatora PID, który unosi piłeczkę pingpongową za pomocą wiatraczka. Uczestnicy zwracają uwagę na brak szczegółowego przedstawienia działania algorytmu PID oraz wpływu parametrów na stabilność układu. Autor planuje rozwijać projekt, w tym stworzyć program do analizy danych oraz poprawić jakość regulacji. Wskazano na problemy z pomiarami przy użyciu czujnika odległości SHARP, co prowadzi do niestabilności algorytmu. Uczestnicy sugerują różne metody strojenia PID oraz techniki uśredniania pomiarów dla poprawy stabilności.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA