• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Utrzymywanie zadanych obrotów silnika spalinowego w agregacie prądotwórczym DIY
#11
Widzę, że w programie masz trzy jakby skale dodawania i ujmowania gazu. Rozumiem, że miało to działać tak im większa odchyłka tym większe skoki serwa a Ty masz zawsze inkrementację czy dekrementację o jeden. Czy nie powinno tam być zwiększenia czy zmniejszenia o np 2 i 3 , aby przy większych zmianach obrotów reakcja przepustnicy była większa.
Przepustnicę masz na osi serwa czy w inny sposób nią kręcisz.
Tak z ciekawości, gaz do silnika podajesz "palnikiem" czy może masz blosa.
 
Odpowiedź
#12
Założyłem, że takie trzy progi się sprawdzą i tak było, niestety przy tej prądnicy muszę się bardziej postarać Smile
To tak właśnie działa, jeżeli różnica pomiędzy pomiarem rpm wcześniejszym, a obecnym jest między 3-11 to serwo o jeden skok, jeżeli 12-24 to dodatkowo kolejny, jeżeli pow 25 to jeszcze jeden.
Przepustnicę mam od seicento, bodajże 900, na nią mikser też od seicento możliwie najmniejszy. Na niej oryginalna linka kilkanaście centymetrów i dopiero do linki serwo z ramieniem alu.
 
Odpowiedź
#13
A teraz rozumiem, poszczególne ify miały się wykonywać albo nie co daje przyśpieszenie otwarcia przepustnicy lub zamknięcie. No ale czy zmieniłeś pojedyncze & na podwójne && i czy to coś dało?
Skok przepustnicy możesz zmienić odległością miejsca zaczepu linki od osi serwa.
Z Twojego opisu zachowania się całego "ustrojstwa" wynika, że jest spóźniona reakcja na zmianę obrotów.
Reakcja powinna być natychmiastowa, w Twoim przypadku obroty zmieniają się już znacznie nim je zmierzysz i dodajesz gazu z opóźnieniem. Uśredniając np 20 obrotów tak naprawdę reagujesz jakby na 10 pomiar przyjmując, że zmiana jest liniowa w tym czasie. Podobne to jest do reakcji na poślizg samochodu i kontry kierownicą, które muszą być wyprzedzające w stosunku do reakcji samochodu. Spóźnione reakcje powodują tylko pogorszenie sytuacji i zwiększanie amplitudy poślizgów.
Nie wiem jak, ale przydałby się pomiar szybkości zmiany obrotów co umożliwiłoby odpowiednią reakcję przepustnicy.
 
Odpowiedź
#14
Dopiero jutro usiądę do 'ustrojstwa' Smile
Pierwszą rzeczą jaką muszę poprawić to z pewnością skok serwa. Zaczepiłem linkę już możliwie najbliżej osi jak mogłem. Muszę sprawdzić jaka jest czułość serwa w mikrosekundach i przerobić mój prosty program.
Te 25 pomiarów zajmuje Mega ok 1 sekundy i co tyle reaguje program. Gdyby udało mi się sterować serwem w małych kroczkach np 1/4 czy 1/3 obecnego mógłbym w zależności od odchyłu od żądanej prędkości ustawić skok od małego do większego przy większym odchyle.
Mam dwa logi po kilkanaście minut działania agragatu, zawierające sekunda po sekundzie (ponumerowanej) długość impulsu(moje rpm), różnicę i pozycję serwa. Tak sprawdzałem co się dokładnie dzieje podczas działania agregatu i stąd wiem, że obroty zaczynają falować, coraz bardziej, bardziej, aż w końcu avrki osiągają swoje max napięcie i się restartują.
 
Odpowiedź
#15
Byłoby fajnie zmienić sposób odczytu na inny, szybszy i obarczony mniejszymi błędami, zeby nie było konieczne uśredniać z tak dużej ilości próbek jak teraz. Niestety nie wiem jak mógłbym to poprawnie zrobić. Taka zresztą była już sugestia Kolegów: Jarewa0606 i fast_rabbit. Link do mojego czujnika halla:
https://archiwum.allegro.pl/oferta/czujn...09996.html
 
Odpowiedź
#16
Przeszukaj moje posty gdzieś podawałem przykład Timer1 w ICP...

wystarczy go zrozumiec i troche poprawić..
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#17
Dzięki Jarewa0606, ile razy na sekundę mógłbym otrzymać dokładny wynik z takiego timera na Mega? Teraz to straszny muł, tyle że w miarę dokładny. Przy 25 próbkach wynik mam co ok sekundę.
 
Odpowiedź
#18
Myślę, że raz na obrót czyli około 40 razy na sekundę.
 
Odpowiedź
#19
Z tego co pisze około 3tys/obr na min wiec wychodzi 50 pomiarów na 1s pomiar co 20ms... Ale podejrzewam że mógłby doczepić sie do sygnału hall w silniku lub do sygnału cewki i szybkość by było 0,5 razy więcej bo silnik tiko to 3R chyba ze mowa o 4R?? wtedy pomiar co 10ms.....

ICP nie jest funkcja blokująca...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#20
Ok 2300obr/min. Prądnica ma 3000obr. Silnik 3R nie ma czujnika halla przy wieńcu koła zamachowego, nie ma wtrysku. Aparat zapłonowy bez przerywacza, chyba optyczny może hall, nie pamiętam. Sygnał z cewki albo z aparatu byłby super, ale po krótkich próbach porzuciłem ten pomysł, nie poradziłem sobie Sad
Przeglądam właśnie rpm countery na funkcji interrupt. Wydaje się niezbyt skomplikowana do zaaplikowania u mnie. Co o tym myślicie Panowie? Starczyłoby precyzji i szybkości w moim przypadku? Jak sądzicie ile razy na sekundę byłoby dobrze mieć odczyt rpm i wykonywać sterowanie serwem? Zamieniłem w skrypcie servo.write na servo.Writemicroseconds i zobaczę jutro jak zachowywać się będzie serwo. Jeżeli uda się wymusić na nim mniejsze skoki to będzie mały krok w dobrą stronę.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości