rafal132 Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 Otóż nie 🙂 ale mam (wydaje mi się) taki sam, przynajmniej z wyglądu. Czy to nie oznacza, że również użytkownicy zestawów mogą natrafić na różne enkodery? Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 @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 do komentarza Share on other sites More sharing options...
rafal132 Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 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 do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 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ś 🙂 1 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Elvis Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 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: 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ą: A obrót o kolejne "kliknięcie" ponownie je włącza: Więc wykonanie obrotu o dwa kliknięcia daje efekt taki sam jak o jeden w pierwszym modelu enkodera: 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 do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 @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 do komentarza Share on other sites More sharing options...
rafal132 Czerwiec 2, 2021 Udostępnij Czerwiec 2, 2021 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 do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 3, 2021 Udostępnij Czerwiec 3, 2021 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 do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 2, 2021 Udostępnij Lipiec 2, 2021 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 do komentarza Share on other sites More sharing options...
padus Lipiec 5, 2021 Udostępnij Lipiec 5, 2021 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. Sprawdziłem. Bez filtru praktycznie enkoder głupiał. Przy kręceniu w jedną stronę miałem takie wartości: Załączony filtr cyfrowy A tutaj filtr analogowy i zakres 25 impulsów 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. 3) Ustawienia dla wartości dodatnich i ujemnych 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 ale już przy wartości 30000 jest ok 1 Link do komentarza Share on other sites More sharing options...
Popularny post Elvis Lipiec 6, 2021 Popularny post Udostępnij Lipiec 6, 2021 Dwa małe sprostowania. Po pierwsze, tak jak pisaliśmy w kursie, dla enkodera generującego 40 impulsów na obrót wartość Period Counter należy ustawić na 39, aby po wykonaniu pełnego obrotu uzyskać identyczną wartość jak poprzednio. Ustawienie okresu na 40 oczywiście zadziała, ale po pełnym obrocie zwracana wartość będzie się różnić od początkowej. Druga sprawa to liczby ze znakiem i bez znaku. Rejestry sprzętowe są 16-bitowe i są to wartości bez znaku. Czyli mamy w nich zakres od 0 do 65535, nie ma żadnego bitu znaku. Natomiast w naszym programie możemy sobie interpretować te wartości jak tylko chcemy - i możemy je traktować jako liczby ze znakiem. Ale musimy rozumieć co robimy, żeby nie być zaskoczonym. A skoro jesteśmy przy rozumieniu, to może warto przeanalizować co tutaj się stało. Zacznijmy od wartości 35000. Jeśli traktujemy ją jako 16-bitową liczbę bez znaku, czyli uint16_t to mamy dokładnie to co oczekujemy, czyli 35000. Przeliczając na zapis szesnastkowy to 0x88B8, czyli gdybyśmy w programie utworzyli taką zmienną i za pomocą debuggera podejrzeli jak wygląda jej reprezentacja w pamięci, to niższy bajt miałby wartość 0xB8, a wyższy 0x88. Teraz wyobraźmy sobie, że tworzymy drugą zmienną, typu int16_t i kopiujemy do zajmowanej przez nią pamięci te same dane, czyli wartości 0xB8 i 0x88. Mamy więc to samo co poprzednio, czyli 0x88B8, ale traktujemy liczbę jako ujemną. Liczby ujemne zapisujemy w kodzie U2, czyli wartość najwyższego bitu (0x8000) traktujemy jako ujemną (-0x8000). Możemy więc wartość naszej zmiennej obliczyć: -0x8000 + 0x8B8 = -32768 + 2232 = -30536. To właśnie dlatego taka wartość pojawiła się wynikach i spowodowała pewne zaskoczenie. Chciałbym tylko wyjaśnić że jest to wyłączenie właściwość reprezentacji liczb ze znakiem i bez znaku, z działaniem modułu enkodera nie ma to nic wspólnego. 3 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 11, 2021 Udostępnij Lipiec 11, 2021 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 do komentarza Share on other sites More sharing options...
Leroy Sierpień 3, 2021 Udostępnij Sierpień 3, 2021 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 do komentarza Share on other sites More sharing options...
Elvis Sierpień 4, 2021 Udostępnij Sierpień 4, 2021 @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. 1 1 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Sierpień 4, 2021 Udostępnij Sierpień 4, 2021 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. 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »