Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 lip 2026, o 03:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 31 gru 2013, o 14:51 
Offline
Nowy

Dołączył(a): 31 gru 2013
Posty: 6
Pomógł: 0

Najpierw się przyWITAM :) i odgrzeję temat

Jak pewnie większość jestem po lekturze znanej książki Mikrokontrolery AVR...

Mam problem z zaimplementowaniem regulatora PI w układzie.
Temat przedstawia się następująco:
Zestaw z uruchomieniowy ATmega32 - na nim zaimplementowany kod realizujący regulator PI.
Zestawik komunikuje z programem na PC (Matlab/Labview). W programie jest utworzony model matematyczny odwzorowujący obiekt rzeczywisty, który jest sterowany z ATmega. Oprócz modelu jest także możliwość ustawiania Kp,Ki ,oraz wartośc wejściowa zadana-napięcie. dane te sa wysyłane do ATmegi. ATmega przelicza te dane podstawiając je do algorytmu PI, po czym wysyła opdowiedź z powrotem do programu - tym razem bezpośrednio na obiekt sterowania. Obiekt daje odpowiedź na sygnał sterowania. Dane wracają do ATmegi obliczanie uchybu i tak w pętli. Obiekt to piec opisany równaniem inercyjnym I rzędu z opóźnieniem. Przeczytałe noty aplikacyjne ale nie za bardzo wiem jak zrealizować człon całkujący w C. Czy powieniem zrobić drugą pętlę while i dzięki temu uzyskać wartości poprzedniego stanu obiektu? według wzoru na regulator dyskretny PI.
Stan poprzedni n-1 to byłaby poprzednia petla while?
Patrzyłem na kod * \brief General PID implementation for AVR oraz przykłądowo:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Z góry przepraszam za formatowanie kodu.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kody umieszczamy przy pomocy syntax=c - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sty 2014, o 08:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 sty 2014
Posty: 116
Pomógł: 9

Witam

Całkowanie to inaczej obliczanie pola pod krzywą. Numerycznie najprościej wykonasz to metodą prostokątów jest to obarczone pewnym błędem ale na początek zadziała na pewno. Jak to ogarniesz to przejdziesz na trapezy i inne dokładniejsze metody. Ogólnie na początek musisz ustalić sobie czas całkowania im mniejszy tym dokładność większa ale i większe obciążenie procesora. Pamiętaj aby czas całkowania był stały lub przynajmniej znany. Czas całkowania to inaczej czas pomiędzy kolejnymi odczytami wartości twojej zmiennej i jednocześnie będzie to jeden z boków(długość) twojego prostokąta. Drugi bok (wysokość) to odległość od 0 do twojej aktualnie zmierzonej wartości zmiennej, czyli wartość zmiennej. Teraz wystarczy pomnożyć długość X wysokość i już kawałek całki masz. Dodajesz to do zmiennej przechowującej aktualną wartość twojej całki i w zasadzie tyle. Reasumując całka to suma wszystkich twoich obliczanych prostokącików. Poczytaj proszę o całkowaniu numerycznym.
Pozdrawiam

_________________
"Actum ne agas!"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2014, o 07:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lis 2013
Posty: 77
Pomógł: 6

Hej,

Dosyc łopatologicznie wyjasniony PID http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html. Mam pytanie jak realizujesz ta pętle matlab->ATmega->matlab, używasz w symilinku bloczków "Serial send" i "Serial receive". Jak rozwiązana jest synchronizacja danych miedzy matlabem->ATmega. Jak masz ustawiony solver w matlabie ? Na podstawie załączonego PDF napisałem taki kod ale jeszcze nie zdarzyłem go przetestować.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2014, o 16:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Ekstrapolator, ciekawe podejście do PID, w wyniku transformaty Z otrzymaliśmy filtr FIR co znacznie upraszcza implementację.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2014, o 02:42 
Offline
Nowy

Dołączył(a): 05 lut 2014
Posty: 9
Pomógł: 0

Witam. Ja również mam pytanie odnośnie połączenia atmegi z matlabem. Mógłbyś to wyjaśnić?

Wysłane z mojego HTC One przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO