Skocz do zawartości

Jazda po prostej z enkoderami


Pomocna odpowiedź

Tak więc ustawienie okresu próbkowania tego układu na czas krótszy niż okres PWMa nie ma sensu bo zmiany i tak nie mogą zachodzić częściej.

O jakiej częstotliwości PWM mówisz. Bo jeżeli o 40KHz i więcej, to takiego efektu jaki opisujesz nie ma. Gdyby PWM działał na 1kHz, to można by się nad tym pochylić.

Ale mogę się mylić 🙂

PWM ma zazwyczaj przynajmniej kilka KHz.

Przy silnikach o prędkości obrotowej 180RPM - czyli 3 obroty na sekundę - i enkoderach 100pozycji/obrót w sekundę maksymalnie zmienisz stan 300 razy.

Czyli częstotliwość impulsów z enkodera jest przynajmniej 10x mniejsza niż częstotliwość sygnału PWM. Krótko mówiąc nie ma to dużego związku - szczególnie jak weźmiemy dodatkowo pod uwagę bezwładność układu.

Dobrze sobie zdaję sprawę, że przy wyższej częstotliwości PWM problem nie występuje. Jednak właśnie dlatego opisuję ten efekt bo zwykle częstotliwość PWMa ustawiałem na kilkadziesiąt czy kilkaset Hz. Wtedy silnik startował przy najmniejszym wypełnieniu i prawdopodobnie miał również największą moc. A chyba przyznacie, że przy takim ustawieniu problem był by już realny.

A propos samego doboru częstotliwości PWMa jakiś czas temu toczyła się z resztą tutaj zażarta dyskusja.

A ja bym proponował trochę odciążyć kontroler i zrzucić przynajmniej część pracy na inny układ, który sprzętowo rozwiąże zadanie. Proponuje zastosować przetwornik częstotliwości na napięcie, w formie układu LM2907. Jeszcze do końca nie wczytałem się w jego działanie, ale na pierwszy rzut oka wydaje się dobry do tego zadania. Napięcie zadawane z niego podajemy na przetwornika ADC w kontrolerze, który przetwarza, też praktycznie bez naszej pracy, więc działa wszystko szybko. A wyniki z przetworzenie podawał bym na regulator PID.

Na razie to sama teoria, ale może się to sprawdzi.

Jednak właśnie dlatego opisuję ten efekt bo zwykle częstotliwość PWMa ustawiałem na kilkadziesiąt czy kilkaset Hz.

No właśnie, dlaczego zwykle tylko tyle?

A propos samego doboru częstotliwości PWMa jakiś czas temu toczyła się z resztą tutaj zażarta dyskusja.

Czy pamiętasz w którym temacie, chciałbym się z nim zapoznać?

https://www.forbot.pl/forum/topics43/dobor-czestotliwosci-pwm-atmega-vt5882.htm

to jest link do tematu o częstotliwości PWM. Po zapoznaniu się z tym tematem zrobiłem prosty test ze zmienianiem częstotliwości PWM, sprawdzaniem wypełnienia od którego startuje i czy jestem w stanie palcami zatrzymać wał. Po takim prostym doświadczeniu ustawiłem sobie częstotliwość która dawała mi satysfakcjonujące wyniki. Oczywiście nie przeczę, że dla innego silnika i innego zastosowania lepsza może się okazać inna częstotliwość jednak ja ze swojej empirycznie dobranej wartości jestem zadowolony.

W każdym razie dyskusja na temat samej częstotliwości PWM bez powiązania z enkoderami powinna się jednak toczyć w tamtym wątku.

Dziękuję za link. Zapoznam się z nim, ponieważ zaskoczyło mnie, że tak niskie częstotliwości są jak to ująłeś "zwykle" stosowane. Ja w swoich projektach zawsze miałem powyżej 30kHz.

Napisałem, że ja zwykle stosuje częstotliwości tego rzędu i opieram się na takich prostych testach. W moich zastosowaniach do jakiś niewielkich silników i amatorskich konstrukcji doskonale się sprawdzają. Natomiast jak jest w profesjonalnych zastosowaniach - nie mam pojęcia.

hehehe, tamten temat jest bez sensu. Co ma wypełnienie przy którym startuje silnik do ewentualnego działania PWM i jak to się ma do generowanej mocy? 🙂

Faktem natomiast jest, że wiele mostków nie pozwala na wysokie częstotliwości i bez znajomości danych mostka bezpieczną wartością jest 1KHz. Częstotliwości >20KHz stosuje się ze względu na płynniejszą pracę i mniejszy hałas (poza pasmem słyszalnym). Dobrym przykładem jest TB6612, który przy 20KHz nawet się nie zająknie.

Za eksperta w tej dziedzinie się nie uważam, dlatego nie będę się kłócił bo zwyczajnie nie jestem w stanie przedstawić żadnych sensownych argumentów. Po prostu przeczytałem to co tam napisali, sprawdziłem w praktyce, jestem zadowolony z wyników i teraz używam. Dla moich potrzeb całkowicie się sprawdza i nie wiem po co miał bym drążyć temat jeżeli nie jest mi to do niczego potrzebne.

Wprowadziłem wczoraj do programu sprawdzanie stanu enkoderów co określony czas (timer). Efekty były bardzo ciekawe, później wstawię jakiś filmik. Bardzo ładnie było widać jak częstotliwość sprawdzania wpływa na szybkość korekcji.

Ostatecznie udało mi się osiągnąć w miarę prostą jazdę, jednak później wieczorem coś namieszałem w kodzie i miałem problemy więc dałem sobie już spokój. Dziś będę próbował dalej zrobić z tego coś przyzwoitego, przydałoby się chyba zrobić z tego PD.

Mieliśmy do czynienia z silnikami tego typu z tym, że przekładnią 19:1 i nie zauważyliśmy żadnych luzów, silniki wraz z przekładniami są wykonane solidnie.

Z mojego punktu widzenia jeżeli chcesz zastosować jakąkolwiek regulację cyfrową informację o aktualnej prędkości powinieneś dostarczyć regulatorowi w każdym kroku obliczeń ( oczywiście częstotliwość pracy regulatora powinna być możliwie jak największa). Czyli konieczna jest stała częstotliwość próbkowania prędkości obrotowej co jest niemożliwe przy pomiarze szerokości impulsu z enkodera, można się uprzeć i aktualizować wartość prędkości asynchronicznie do pracy regulatora, a obliczenia regulatora bazowałyby na poprzedniej obliczonej wartości jednak wydaje mi się, że to nie jest najlepsze rozwiązanie szczególnie problematyczne dla małych prędkości obrotowych. Aktualnie też walczę z podobnym tematem i enkoderami ale magnetycznymi z austriamicrosystems. Jako metodę pomiaru wybrałem zliczanie impulsów w określonym okresie czasu z ww względu oraz dlatego, że enkoder przysparza problemów przy małych prędkościach.

Aktualnie enkoder zaprogramowany na rozdzielczość 1024 imp/obr, ale chciałbym więcej 🙂

Poniżej wykres liczby impulsów z enkodera w okresie 10ms (niebieski) oraz przefiltrowane impulsy (czerwony) cyfrowym filtrem dolnoprzepustowym Butterworth'a II rz z częstotliwością odcięcia 40Hz, próbkowaniem 1kHz.

Jak widać filtrowanie istotnie poprawiło "wygląd" prędkości obrotowej szczególnie dla małych prędkości obrotowych, ale niestety z małym przesunięciem fazowym.

Istnieją jeszcze kombinowane metody pomiaru prędkości z enkodera ze stałym okresem próbkowania, ale z jej pomocą nie uzyskałem zadowalających efektów chyba ze względu na problem z działaniem enkodera.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...