Skocz do zawartości

Kurs STM32L4 – #8 – liczniki sprzętowe (PWM, enkoder)


Pomocna odpowiedź

@rafal132 wydaje mi się, że Twój moduł jest po prostu inny - podobieństwo z wyglądu to nie wszystko, może jeszcze działać w inny sposób. Ciężko teraz analizować tę sprawę w teorii. Wrócimy do tematu niedługo, gdy zweryfikujemy to w praktyce i będzie pewność co do sposobu działania różnych modułów tego typu.

Link to post
Share on other sites

To jest dość istotna informacja, generalnie mój działa zgodnie ze schematem w nocie aplikacyjnej, nie mogę sobie wyobrazić w jaki sposób miałby działać inaczej.  Spodziewałem się raczej, że to wina Cuba. Niemniej jednak bardzo interesująca zagadka, czekam na odpowiedź.

Link to post
Share on other sites
28 minut temu, rafal132 napisał:

To jest dość istotna informacja, generalnie mój działa zgodnie ze schematem w nocie aplikacyjnej, nie mogę sobie wyobrazić w jaki sposób miałby działać inaczej. 

@rafal132 udało nam się częściowo już rozwikłać tę zagadkę. Faktycznie występują 2 różne enkodery, które wyglądają praktycznie identycznie i mogą czasami pojawiać się u dostawców zamiennie, a działają jednak inaczej. Pisząc w największym skrócie: w przypadku pierwszego typu enkoderów każde przejście do stałej pozycji (jeden "klik") to pół okresu sygnału, a w przypadku drugiego typu enkoderów, każde przejście do stałej pozycji (jeden "klik") to cały okres sygnału. W efekcie (przy tym samym programie) po podłączeniu jednego enkodera uzyskamy zmianę wartości wskazań o 1, a po podłączeniu drugiego enkodera, każdy klik będzie zwiększał wskazania licznika o 2. Żaden z enkoderów nie jest gorszy - każdy ma swoje zalety, ale (jak widać) wprowadza to trochę zamieszania. Badamy właśnie temat bardziej szczegółowo - więcej informacji jeszcze dziś 🙂 

  • Lubię! 1
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niespodzianki się zdarzają i czasem nawet praktycznie identyczne elementy mogą działać inaczej (nawet do tego stopnia, że mylą się dostawcy). W każdym razie dzięki czujności kolegi @rafal132 wiemy już, że dwa prawie identyczne enkodery mogą się bardzo różnić. W ramach poznawania naszego enkodera podłączaliśmy do niego diody w akapicie "Obsługa enkodera obrotowego". To ćwiczenie okazało się o wiele ważniejsze niż myśleliśmy, więc spróbujmy omówić je dokładniej.

Zanim podłączymy nasz enkoder, warto wykonać jeszcze jedno, bardzo oczywiste ćwiczenie - policzyć ile "kliknięć" składa się na pełny obrót osi naszego enkodera. Jak można się domyślać, nie wszystkie enkodery na świecie mają tyle samo impulsów na obrót, w naszym przypadku już tutaj będzie widać różnicę: jeden enkoder ma 20 "kliknięć" na obrót, a drugi 30.

Teraz warto podłączyć diody i postępować tak jak opisaliśmy w ćwiczeniu, czyli obracać powoli osią i obserwować stany na wyjściu. Stan wysoki będzie sygnalizowany świeceniem diody, a ja wstawię wykresy zebrane analizatorem logicznym aby zilustrować działanie układu. W przypadku enkodera z 20 kliknięciami na obrót, jeden "klik" wygląda następująco:

enc01.thumb.png.cd2377da54d1dbb45c46211bdfd321be.png

Czyli nasze diody wyłączają się na moment, a w kolejnym stabilnym położeniu enkodera świecą ponownie. Jeśli będziemy obracać oś bardzo powoli zobaczymy, że momenty wyłączania i włączania są nieco przesunięte. Drugi enkoder zachowuje się natomiast nieco inaczej. Przy obrocie o jeden klik diody się wyłączają:

enc02a.thumb.png.49054f4376e5c77ef3594bfdf2f9e6e7.png

A obrót o kolejne "kliknięcie" ponownie je włącza:

enc02b.thumb.png.7d7f78914c1ecf196e90f706cd00a320.png

Więc wykonanie obrotu o dwa kliknięcia daje efekt taki sam jak o jeden w pierwszym modelu enkodera:

enc02c.thumb.png.c39f45c770a04aadff18d1a1f8f146ef.png

Różnica jest więc taka, że w przypadku jednego enkodera mamy stabilny stan z zapalonymi diodami i przełączanie do następnego daje tylko krótkie mrugnięcie, a w drugim oba stany są stabilne i łatwiej jest obserwować działanie enkodera przy użyciu diod. Warto jednak podkreślić, że oba enkodery działają tak samo - chociaż kliknięcia generują nieco inne przebiegi sygnału, a i liczba samych kliknięć na pełny obrót jest nieco inna.

W ostatnim ćwiczeniu ustawialiśmy parametr "Counter Period" na 39, co działało poprawnie z enkoderem o 20 "klikach" na obrót, natomiast osoby używające enkodera z 30 kliknięciami, powinny zmienić wartość na 29. Tutaj pojawia się kolejna ciekawostka. Tryb pracy enkodera używany w naszych ćwiczeniach zlicza oba zbocza, czyli zbocze opadające i narastające sygnału na wejściu pinie PA6. Pierwszy z naszych enkoderów generuje dwa zbocza na każde kliknięcie: najpierw mamy zbocze opadające (dioda gaśnie), a po chwili narastające (i dioda się zapala). Dlatego jeden klik zmienia wartość licznika o 2, a pełny obrót (20 kliknięć) o 40.

Drugi enkoder generuje tylko jedno zbocze na każdy "klik", raz będzie to zbocze opadające, a następnym razem narastające. To sprawia, że wartość licznika zmieniana jest o 1 po każdym kliku. A skoro na pełny obrót przypada 30 klików, więc i wartość licznika zmienia się o 30.

Chcieliśmy pokazać przykład podłączenia enkodera jako proste i miłe ćwiczenie na koniec dość trudnego odcinka, a wyszło jak zwykle, czyli rzeczy najprostsze okazały się podchwytliwe.

Link to post
Share on other sites

@Elvis dokładnie wyjaśnił temat wyżej, a ja zleciłem już sprawdzenie enkoderów, które są w zestawach (bo mogą być dosłownie wymieszane, bo nawet dostawcy ich nie rozróżniają). Warto jednak pamiętać, że oba enkodery działają poprawnie - w najgorszym przypadku trzeba rozpoznać (ćwiczeniem z diodami), którą wersję enkodera mamy przed sobą, aby dobrać odpowiednią liczbę impulsów na jeden obrót. Niedługo dodam odpowiednią adnotację do kursu, ale komentarze oczywiście zostawiam, bo jest tu szerszy opis tego tematu. Warto o tym pamiętać (nie tylko w kontekście kursu), bo jak widać, takie różnice mogą sporo namieszać w różnych projektach 😉

Czyli reasumując: problem opisany przez @rafal132 wynikał z tego, że korzystał on z innego typu enkodera niż my, a przy okazji naprowadziło nas to na trop, że te enkodery są jednak różne, a część dostawców traktuje je błędnie jako zamienniki 😉 Mam nadzieję, że nikt kto posiadał nasz zestaw nie miał żadnych problemów z ćwiczeniami, ale jeszcze dokładnie zweryfikujemy ten temat i naniesiemy odpowiednią adnotację na blogu.

Link to post
Share on other sites
4 godziny temu, Elvis napisał:

W ostatnim ćwiczeniu ustawialiśmy parametr "Counter Period" na 39, co działało poprawnie z enkoderem o 20 "klikach" na obrót, natomiast osoby używające enkodera z 30 kliknięciami, powinny zmienić wartość na 29. Tutaj pojawia się kolejna ciekawostka. Tryb pracy enkodera używany w naszych ćwiczeniach zlicza oba zbocza, czyli zbocze opadające i narastające sygnału na wejściu pinie PA6. Pierwszy z naszych enkoderów generuje dwa zbocza na każde kliknięcie: najpierw mamy zbocze opadające (dioda gaśnie), a po chwili narastające (i dioda się zapala). Dlatego jeden klik zmienia wartość licznika o 2, a pełny obrót (20 kliknięć) o 40.

Drugi enkoder generuje tylko jedno zbocze na każdy "klik", raz będzie to zbocze opadające, a następnym razem narastające. To sprawia, że wartość licznika zmieniana jest o 1 po każdym kliku. A skoro na pełny obrót przypada 30 klików, więc i wartość licznika zmienia się o 30.

Z tego wynika, że w kursie jest używany enkoder z 20 klikami typu "zmiana licznika o 2 na każdy klik", tak?

Link to post
Share on other sites

Tak jak już pisałem - weryfikujemy ten temat, aby mieć pewności, że nasz dostawca też nie pomylił się w kwestii tych enkoderów. Naniosę odpowiednią informację do kursu, gdy tylko będzie to pewne. Jeśli ktoś jednak otrzymał enkoder o innej rozdzielczości to może zmienić wartość w programie zgodnie z tym co napisał Elvis.

Link to post
Share on other sites

Aktualizacja względem poprzedniej wiadomości - z mojej strony była tutaj cisza, ale nie zapomniałem o temacie. Po prostu cały czas czekamy jeszcze na większą dostawę elementów. Jak potwierdzimy samemu "naocznie", która faktycznie wersja enkoderów będzie od teraz trafiała do zestawów to po prostu naniesiemy odpowiednią informację do tej części kursu. Jednak nic wielkiego się tutaj nie zmieni - temat wyczerpująco opisał tutaj już wyżej @Elvis to głównie zmiana jednej wartości 🙂

Link to post
Share on other sites

Właśnie skończyłem walkę ze sprzętowym uruchomieniem enkodera. Oczywiście mam wersję  enkodera, która na każde kliknięcie daje dwa impulsy. Siedziałem trochę nad tym ale udało mi się znaleźć rozwiązanie, które chciałem opisać. W momencie kiedy się zalogowałem na forum to zobaczyłem, że to nie tylko mój problem. Zrobiło mi się trochę lżej. Postaram się omówić jak ja to zrobiłem.

Po pierwsze chylę czoła przed autorami kursu bo opisują trudne sprawy w miarę łatwy sposób, wielkie dzięki.

Po drugie literówka w opisie pod fragmentem Tryb obsługi enkoderów w STM32L4:

....., a następnie opcję Combined Channels ustawiamy na Enoder Mode......    winno być Encoder Mode

Teraz enkoder:

1) Filtrowanie cyfrowe daje u mnie mizerne efekty, w przeciwieństwie do filtrowania analogowego. Nie upieram się, prawdopodobnie u mnie w laboratorium jest mnóstwo zakłóceń. Obejrzałem pierwszą lepszą notę katalogową i nawet producent zaleca filtr RC taki jak jest podany w kursie.

pdf_encoder.thumb.jpg.fd4d13327f0c9cf33fc4ed0f8003972d.jpg

Sprawdziłem. Bez filtru praktycznie enkoder głupiał. Przy kręceniu w jedną stronę miałem takie wartości:

1_bez_filtra.thumb.jpg.e50e27c109c02165f8eaa4b72368fff8.jpg

Załączony filtr cyfrowy

2_filtr_cyfrowy_15.thumb.jpg.4a23456658a3dde67885448a9149589a.jpg

A tutaj filtr analogowy i zakres 25 impulsów

4_filtr_anal.thumb.jpg.5a9377b7f1c0151c1e96e9c1769be7af.jpg

2) Teraz ustawienia, które u mnie działają jak trzeba, tzn. każdy klik to jeden impuls (zakres Counter Period ustawiony na 40 impulsów z przepełnieniem, wartości tylko dodatnie). Oczywiście oba sygnały filtrowane analogowo.

a_ust_40.thumb.jpg.1e299a297e8b9fd67d230711251bd05c.jpg

3) Ustawienia dla wartości dodatnich i ujemnych 

a_ust_plus_minus.thumb.jpg.5de1996e40d92b571d4d05723f235433.jpg5_65535-ustaw_wart_ujemne.thumb.jpg.d74ca67ba8b7a526b2a79c5454250d2e.jpg

4) Jeszcze chciałbym się zatrzymać przy ustawieniach zakresu (Counter Period). Z tego co zauważyłem to wartość jest 16-to bitowa. Obsługiwane są wartości ujemne czyli mamy 15 bitów na liczbę + znak. Jeżeli wpiszemy wartość poniżej 65536/2 to mamy zakres liczb dodatnich z przepełnieniem. Powyżej tej wartości program przelicza i można się trochę zdziwić jak to wygląda:

ustawienie 35000

6_ustaw_35000.jpg

ale już przy wartości 30000 jest ok

7_ustaw_30000_ok.thumb.jpg.fddb10c11a18c5b8638979557035609e.jpg

  • Lubię! 1
Link to post
Share on other sites
Dnia 5.07.2021 o 14:49, padus napisał:

Po pierwsze chylę czoła przed autorami kursu bo opisują trudne sprawy w miarę łatwy sposób, wielkie dzięki.

Po drugie literówka w opisie pod fragmentem Tryb obsługi enkoderów w STM32L4:

 @padus dzięki za zgłoszenie - poprawiłem literówkę. Miło słyszeć, że kurs Ci się podoba!

Link to post
Share on other sites

Bardzo ciekawa i jednocześnie przystępna część kursu o licznikach - super robota 👍 Podczas przeglądania dokumentacji zobaczyłem, ile różnych możliwości dają nam timery (np. praca z DAC), a świetnie opisane przykłady w kursie pokazały, że ich obsługa wcale nie jest trudna 🙂 

W trakcie przerabiania tej części zastanowiły mnie jedynie dwie, "czysto techniczne" sprawy:

1) Czy jest jakiś szczególny powód podłączenia rezystora 1k do wyprowadzenia B (niebieski) w diodzie RGB? Przy świeceniu niebieskiej diody LED odkłada się tam większe napięcie niż na diodach czerwonej / żółtej, więc nie do końca rozumiem skąd większa wartość opornika w tym przypadku 🤔

2) Dlaczego enkoder zasilamy z 3,3V? Enkoder z zestawu (link do Botlandu) pracuje z napięciem 5V zgodnie z tym, co jest na stronie.

Z góry dzięki za odpowiedź i miłego wieczoru.

Link to post
Share on other sites

@Leroy Nie ja dobierałem wartości rezystorów, ale domyślam się, że większa wartość w przypadku diody niebieskiej wynikała z jej jaśniejszego świecenia. Jasność świecenia diody zależy od płynącego przez nią prądu i masz oczywiście rację, że dioda niebieska będzie miała najwyższy spadek napięcia, a przez to popłynie przez nią najmniejszy prąd. Jednak diody o różnych kolorach mogą się bardzo różnić jasnością, nawet jeśli płynie przez nie prąd o takim samym natężeniu. Prawdopodobnie niebieska dioda świeciła jaśniej od pozostałych, pomimo że pobierała mniej prądu. Więc dostała rezystor w wyższej wartości, żeby płynący przez nią prąd jeszcze bardziej ograniczyć i dopasować poziom jasności do pozostałych.

Natomiast co do enkodera to napięcie zasilania jest mocno umowne. Enkoder przypomina przełącznik, więc będzie tak samo działał zasilany z 5V jak i 3,3V. Używanie 5V jest tolerowane przez większość wyprowadzeń STM32L476, ale nie przez wszystkie - dlatego bezpieczniej było podłączyć enkoder do 3,3V i nie ryzykować przypadkowego uszkodzenia cennego mikrokontrolera.

 

  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites

Dokładnie tak, potwierdzam, że inny rezystor przy diodzie niebieskiej to tylko "estetyka", aby nie raziło mocno po oczach podczas eksperymentów. Oczywiście można wykorzystać inną wartość rezystora.

  • Lubię! 1
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.