Wpis z mikrobloga

Elo Mirki, potrzebuje rady i poprowadzenia za rękę.
Mam silnik spalinowy benzynowy, chcę żeby utrzymywał stałe obroty przy zmiennym obciążeniu.
Chciałem wykonać to w wersji "analogowej" ale po kilku tygodniach ciągłych porażek mam dość i liczę na pomoc kogoś kto ogarnia #esp #esp8266 lub #arduino #arduinonano.
Mam sygnał z cewki zapłonowej, 4 impulsy na każdy obrót wałka rozrządu czyli 2 impulsy na każdy obrót wału korbowego. Przepustnica jest elektroniczna, czyli silnik elektryczny na 12V zintegrowany z przepustnicą poprzez przekładnię. Działa w dosyć prosty sposób, po podaniu zasilania po prostu się otwiera, po zaniku zamyka się. Przy sterowaniu PWM można powoli uchylać i zamykać. Aktualnie jest zdemontowana sprężyna zamykająca dzięki czemu sama się nie zamyka. Trzeba podać sygnał o odwrotnej polaryzacji (poprzez mostek H), w każdej chwili mogę ją założyć.

Co ja bym chciał uzyskać? Silnik ma pracować w zakresie obrotów ok 750-3000obr/min, niestety jest zmienne obciążenie przez co raz ustawione obroty za chwilę się zwiększają lub zmniejszają. Mój zamysł jest taki że potencjometrem (np 0-5V) zadaję co chcę uzyskać, czyli zakres 0-5V ma odpowiadać obrotom 750-3000 (czyli 25-100Hz).
Gdzieś mi się przewinęła informacja że trzeba by to zrobić jako licznik liczący w górę i w dół, że jak zadane mam np 1V (1200obr/min [40Hz]) to układ porównuje to z sygnałem z cewki zapłonowej i jak częstotliwość jest za niska to podnosi wypełnienie sygnału o np 0,5%, po krótkim czasie (ciężko mi określić jaki to czas) znów sprawdza czy się zgadza, jak znów jest za mało to znów podnosi o 0,5% i tak aż do momentu jak uzyska w miarę równowagę (kilka procent dokładności), myślę że jak by były duże rozbieżności np zadane 3000obr, a faktyczne 1000 to mogło by zwiększać o 1 albo 2% co by szybciej osiągnąć zadane wartości. Identyczna sytuacja w przypadku za dużych obrotów, czyli zadane 1000 a faktyczne 3000 to powinno powoli zmniejszać wypełnienie żeby osiągnąć zadane wartości.
Sygnałem wyjściowym może być PWM lub sygnał 50Hz 1,5ms do sterowania serwomechanizmem.
Jedyne co wiem to że wartości sygnałów wejściowych trzeba przypisać do "tabel?", 0-5V=0,255 i 25-100Hz=0,255.

Jak pisałem mam aktualnie na stanie ESP8266 i ArduinoNano, prosiłbym o jakieś wskazówki lub informacje czy ktoś takie coś już budował i udostępniał wsady.
  • 19
  • Odpowiedz
@bambus94: czy uda się uzyskać stałe obroty zależy od odbiornika energii. Co ma napędzać silnik? Musisz mieć jakiś czujnik, który będzie zaczytywał prędkość obrotowa np. z koła zamachowego.
  • Odpowiedz
@bambus94: zamiast liczyć częstotliwość poprzez zliczanie ilości obrotów na w jednostce czasu, możesz zliczać czas między impulsami (czyli okres) Częstotliwość obliczysz sobie ze wzoru: f= 1/T i dzięki temu układ może działać dokładniej w stanie gdy będzie pracował na niskich obrotach (750 obr/min to ledwo 10 impulsów na sekundę, co powodować może duże wahania jak obliczysz częstotliwość).
Na Arduino masz gotowe biblioteki PID, proponowałbym spróbować zrobić coś według przykładu i
  • Odpowiedz
@r4do5: Silnik napędza 3 pompy hydrauliczne i każda ma zmienne obciążenie. A sygnał obrotów mam, sygnał sterowania cewką zapłonową, jest zależny od obrotów silnika.
@KokiX: Ok, będę coś szukał i kombinował.
  • Odpowiedz
@r4do5: Bo do tej pory chciałem zrobić to z wykorzystaniem układów takich jak AA51880, TL494, NE555, LM2907, IR2110 i LM324. Wszystko poskładane do kupy działało, ale tylko w połowie mnie to zadowalało. Obroty falowały, nawet na biegu jałowym.
  • Odpowiedz
@bambus94: możesz zamontować na wale silnika prądnicę tachometryczną, która daje napięcie do proporcjonalne do obrotów. Później droga otwarta do wielu możliwości. Można użyć standardowych rozwiązan automatyki przemysłowej.
A jak chcesz programować to długa droga przed tobą, zresztą kiedyś ci to tłumaczyłem.
  • Odpowiedz
@Analityk: Mam układ f->U (LM2907) ale mi to nie pomogło. Ten układ akurat działa prawidłowo, problem jest z oscylacjami i utrzymywaniem obrotów przy zwiększeniu obciążenia.
  • Odpowiedz
@Analityk: No i dlatego mam tego dość i chciałbym zrobić to na arduino, ciągłe zmiany elementów na płytce są wkurzające, zwłaszcza że trzeba tą płytkę odpiąć od układu. Teraz pokładam nadzieje w arduino.
  • Odpowiedz
@Analityk: Po co mu kolejny element, skoro wszystko ma i to precyzyjne - prędkość obrotową walka z cewki zapłonowej.

@bambus94: Timer1 może posłużyć Ci do przechwytywania impulsów, czasy wrzucasz do bufora kołowego i w głównym programie wyliczasz średnią.
Z średniej ustawiasz kąt otwarcia przepustnicy.
Szybkość reakcji na zmianę obrotów ustalasz ilością zebranych próbek.
Tu też możesz wprowadzić korektę ilości zbieranych danych względem prędkości, większa - szybsza odpowiedź.
Następny
  • Odpowiedz
@Bios:

Timer1 może posłużyć Ci do przechwytywania impulsów, czasy wrzucasz do bufora kołowego i w głównym programie wyliczasz średnią.

Do tego zastosowania potrzebuje regulatora PI inaczej nic nie osiągnie. Jeśli nie wie jak wystroić regulator to nawet najlepszy program mu nie pomoże. Po trzecie urządzenia które ma może i są precyzyjne ale mają okres regulacji tak długi, że pewnie nie możliwe jest uzyskanie w miarę stałych obrotów silnika pod zmiennym obciążeniem. Przecież nawet bez obciążenia obroty falują.
Fajnie, że piszesz mu, że timer1 może się nadać. Tak samo jak timer 0 i timer2. Poza tym za przechwytywanie impulsów odpowiada przerwanie na pinie a nie timer. Timer tylko liczy czas.
Musi obliczyć czas między impulsami, ustalić wartość sygnału (czas między impulsami), obliczyć odpowiedź PID przy jakiś tam początkowych wartościach, odpowiedź w dziedzinie czasu zmapować na odpowiedź w dziedzinie jakiejś tam (pewnie wypełnienie PWM) i stroić układ. Pierwsza i najtrudniejsza rzecz to okres regulacji. Później całe
  • Odpowiedz
@Analityk: Siedzę, czytam, oglądam filmy na YT. Jutro może coś poskładam z tego do kupy.
Obroty nie muszą być idealne co do 1obr. +-100 to już będzie spoko. Obciążenie silnika niestety jest zmienne, i to znacznie, w jednej chwili może pracować na biegu jałowym, żeby za chwilę potrzebować 20kW, a za kolejną chwilę tylko 5kW.
  • Odpowiedz
Ile czasu trwa wejście na maksymalną moc i spowrotem do minimalnej?


@Analityk: Maksymalna moc jest potrzebna przy załączonej pompie wody, teoria mówi że potrzebuje ona ok 30kW, chociaż dalsza teoria mówi że przy zdławionym przepływie może to być 10-15kW (Wszystko przy ok 3000obr/min). Oczywiście chciałbym żeby uzyskiwać jak najszybciej, czyli zamykam hydrauliczny zawór kulowy i pompa rusza przy jak najmniejszym spadku obrotów (jak z 3000 spadnie do 2000 ale wróci
  • Odpowiedz
@Analityk: Tak, jest to pompa wirnikowa odśrodkowa. Po odcięciu zasilania wirnik się zatrzyma i trzeba go od nowa rozpędzać.
@bialy100k: AVR odpowiada za regulację napięcia, a za obroty silnika najczęściej jest układ mechaniczny z regulatorem odśrodkowym, który też już brałem pod uwagę.
  • Odpowiedz