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

Uno - sterowanie temperaturą regularor PID moduły peltiera

jedik8 15 Gru 2014 14:05 2325 6
REKLAMA
  • #1 14224877
    jedik8
    Poziom 2  
    Posty: 3
    Ocena: 1
    Chciałbym zbudować projekt, który ma korzystać z Arduino Uno.
    Mianowicie używam sukcesywnie czujnika Dallas DS18B20, korzystając z bibliotek "dallas-temperature-control" oraz "OneWire" (najnowszych dostępnych wersji).

    Chciałbym wysterować, korzystając ze sprzężenia zwrotnego, moduły Peltiera, by utrzymywały zadaną im temperaturę. W załączniku jest schemat blokowy (niezbyt dokładny, ale właśnie takie moduły mam oraz taki zasilacz)

    Rozumiem, że mogę to osiągnąć za pomocą idei PID, a dokładnie członu całkującego. Zatem moim obecnym problemem jest "znalezienie" i wyciągnięcie funkcji, która odpowida za przechowywanie zmiennej o temperaturze, oraz zainplementowania jej w funkcję całkującą, tak by "porównywał" zmienną i adekwatnie załaczał te moje grzałki (peltiera).

    Czy ktoś programował już w tym temacie ?

    Sam kod w IDE wygląda tak (i jest daleki od skończenia ponieważ, narazie sczytuje tylko temperaturę):

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • Uno - sterowanie temperaturą regularor PID moduły peltiera Schemat.jpg (101.85 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 14225417
    sopeleek
    Poziom 12  
    Posty: 66
    Pomógł: 6
    Ocena: 3
    Ze schematu nie wiele wiadomo.
    Rozumiem, że moduł jest sterowany przez PWM?
    Wiadomo jak działa dyskretny regulator PID? można go łatwo zaimplementować numerycznie.
    Uchyb to wartość zadana minus wartość zmierzona, a nie tylko wartość zmierzona.
    Jak u kolegi z programowaniem? z tego co widzę do wartości temperatury w stopniach Celsjusza można dostać się przez
    sensors.getTempCByIndex(0)

    uchyb zatem będzie prosty do policzenia, gorzej ze wzmocnieniami.
    Samo całkowanie z resztą może nie być optymalne, lepiej byłoby z PI.
  • REKLAMA
  • #3 14225456
    jedik8
    Poziom 2  
    Posty: 3
    Ocena: 1
    programowanie jak programowanie, nie implementowałem nigdy PIDa, żadnego. Ok to jest ta funkcja, ale narazie nie wiem jak ma wygląć wogóle sam PI. Rozumiem idee, ale nic pozatym. Schemat jest taki, jak ja to rozumiem narazie, ale obecnie to arduino tylko sczytuje z czujnika temp. i nic więcej.
  • #4 14225712
    sopeleek
    Poziom 12  
    Posty: 66
    Pomógł: 6
    Ocena: 3
    Ta funkcja z regulatorem nie ma nic wspólnego.
    Funkcje regulatora PI można napisać na podstawie jego równania różnicowego ale tego raczej nikt za Ciebie nie zrobi. Jest ona podobna to tego co w pierwszym poście jednak np.:
    -y musi być zainicjowane
    -całkujemy uchyb a nie tylko wartość pobraną
    -wynik regulatora to sygnał sterujący ( wypełnienie PWM)
    -aby osiągnąć odpowiednie odwzorowanie tych dwóch wartości należy dobrać wzmocnienie,
    Spróbuj może najpierw coś prostszego np. Regulator dwustawny czyli taki który włącza moduł gdy temp jest za wysoka czyli uchyb < 0.
  • REKLAMA
  • #5 14225887
    Loker
    Poziom 39  
    Posty: 3368
    Pomógł: 575
    Ocena: 720
    Google -> "dyskretny algorytm PID". Jak już kolega powyżej wspomniał - to nie takie proste. Zwłaszcza, że należałoby jakoś dobrać parametry PID - albo posługując się modelem obiektu albo doświadczalnie - oczywiście zgodnie z założonym kryterium regulacji.
  • #6 14225935
    jedik8
    Poziom 2  
    Posty: 3
    Ocena: 1
    Tak staram się czytać cały internet o PIDzie. Jest tego dużo. Tylko z biegiem czytania rozumiem, że temat jest coraz trudniejszy i nic wiecej :D. Generalnie jakie podzespoły mam do dyspozycji są wszczególnione w moim schamcie, ponieważ nie mam już czasu na dokonywanie diametralnych zmian w projekcie, arduino musi jakoś zarządać tym zasilaczem impuloswym a tym samym modułami peltiera. Przez sam regulamin jestem zobligowany do stworzenia rozwiązania, to narazie nie wiem w którym kierunku iść. Myślałem, żeby w kodzie móc zrobić "cokolwiek" ze zmienną trzymającą temp. (chodź sam nie wiem co wykombinuje)
  • REKLAMA

Podsumowanie tematu

✨ Użytkownik planuje zbudować projekt z wykorzystaniem Arduino Uno, który ma na celu kontrolowanie temperatury za pomocą modułów Peltiera i czujnika Dallas DS18B20. Wykorzystuje biblioteki "dallas-temperature-control" oraz "OneWire". Kluczowym zagadnieniem jest implementacja regulatora PID, w szczególności członu całkującego, aby utrzymać zadaną temperaturę. Uczestnicy dyskusji podkreślają, że uchyb powinien być obliczany jako różnica między wartością zadaną a zmierzoną, a także sugerują, aby na początku spróbować prostszego rozwiązania, jak regulator dwustawny. Wskazówki dotyczące implementacji PID oraz dobierania parametrów regulatora są również poruszane.
Wygenerowane przez model językowy.
REKLAMA