Pytanie:
Jakie korzyści odnoszą enkodery absolutne, wykorzystując transmisję kodu Graya zamiast kodu binarnego?
user1245
2019-10-25 16:40:53 UTC
view on stackexchange narkive permalink

Czytałem o kodzie Graya, ale w praktyce nie rozumiem, jaka jest jego przewaga nad kodem binarnym.

Niektórzy producenci enkoderów absolutnych oferują oba typy, więc przed zakupem jednego należy zdecydować.Na przykład muszę zmierzyć kąt obrotu dla bardzo wolno obracającego się pręta i wielu naprawionych tomów.W jakich okolicznościach lub aplikacjach wyjście szarego kodu ma przewagę?

Spróbuj wyprodukować czujnik i wróć do nas.
Cztery odpowiedzi:
Spehro Pefhany
2019-10-25 17:20:14 UTC
view on stackexchange narkive permalink

Wyobraź sobie, że koder jest 12-bitowym koderem znajdującym się dokładnie w połowie skali między 0x7FF a 0x800. Gdyby działanie inner enkodera składało się z czegoś w rodzaju koła kodowego z 12 niezależnymi fotodiodami, wszystkie 12 bitów musiałoby się zmienić naraz, dla nieznacznego ruchu. Ponieważ istnieją mechanical tolerances, niektóre bity zmieniłyby się wcześniej niż inne i pod tym konkretnym kątem byłoby dużo zamieszania. Ten sam problem występuje w każdej innej pozycji, w której jednocześnie zmienia się więcej niż jeden bit.

Używanie kodu Graya dla koła kodowego całkowicie eliminuje ten problem, pod warunkiem, że tolerancje nie przekraczają ułamka LSB, ponieważ zmienia się tylko jeden bit na raz, a w najgorszym przypadku pomijalny ruch powoduje zmianę równą rozdzielczość enkodera.

Nowoczesne enkodery o wysokiej rozdzielczości mogą korzystać z innych metod (takich jak bardzo szybki aparat odczytujący zakodowany pasek) i dbać o prawidłowe próbkowanie, aby zawsze uzyskać sensowny wynik.

Mam tani koder binarny i kiedy stoi super nieruchomo, zawsze jest jeden lub dwa bity fluktuacji.Czy to może być przykład wad binarnych?
Brzmi bardziej jak wada taniego kodera.
Dla pewności przepraszam, jeśli się powtarzam, czy możemy powiedzieć, że szary kod ma przewagę nad kodem binarnym tylko wtedy, gdy wałek enkodera się porusza?
nie, jeśli stoi nieruchomo w pozycji pośredniej, będziesz miał ten sam problem.
Tak, teraz to rozumiem
Binarny przy 0x7FF-0x800 = fluktuacja do 12 bitów;Szary w średniej skali = fluktuacja do 1 bitu.
Dave Tweed
2019-10-25 16:51:23 UTC
view on stackexchange narkive permalink

W kodzie Graya przejście między dwiema sąsiednimi wartościami zmienia się tylko o jeden bit.Jest to ogromna zaleta w każdym mechanicznym lub optycznym enkoderze, ponieważ jest praktycznie niemożliwe, aby w każdych okolicznościach można było zmienić stan dwóch lub więcej bitów w tym samym czasie.

Staje się to jeszcze ważniejsze, jeśli zamierzasz próbkować dane, powiedzmy, przechwytując je w rejestrze.Istnieje pewna szansa, że dane będą się zmieniać w tym samym czasie, w którym taktujesz rejestr, co prowadzi do metastabilności w bitach, które się zmieniają.W kodzie Graya, ponieważ w danej chwili zmienia się tylko jeden bit, niejednoznaczność zawiera się między dwiema sąsiednimi wartościami, a błąd bezwzględny jest ograniczony do ± 1 liczby.

Łatwo jest przetłumaczyć z Graya na binarny, a jeśli koder oferuje wyjście binarne, najprawdopodobniej po prostu wykonuje tłumaczenie za Ciebie.

Nie rozumiem, dlaczego błąd jest mniejszy w kodzie szarym.Załóżmy, że koder się nie porusza, tylko pozostaje nieruchomy i przesyła informacje o kącie bit po bicie, czy możesz mi powiedzieć, jak w takim przypadku kod szary przesyła bardziej stabilny sygnał?
Różnica między kodami nie ma znaczenia w transmisji szeregowej.Kwestie, o których mówię w mojej odpowiedzi, zostały już załatwione.W tym momencie jest to po prostu kwestia preferencji.Jeśli reszta systemu jest już skonfigurowana do obsługi kodu Graya, warto wybrać ten typ czujnika.W przeciwnym razie plik binarny może być bardziej bezpośrednio przydatny.
@Dave Tweed „Istnieje pewna szansa, że dane będą się zmieniać w tym samym czasie, w którym taktujesz rejestr, co prowadzi do metastabilności bitów, które się zmieniają”.Co przez to rozumiesz?Dlaczego wyjście binarne stojącego enkodera miałoby się zmieniać?Mam koder binarny, a ostatnie bity zawsze się wahają, może o tym wspominasz.Czy mógłbyś wyjaśnić trochę więcej, dlaczego dane miałyby się zmieniać, mimo że koder jest super nieruchomy (nie porusza się)?
Oczywiście dane się nie zmieniają, jeśli nie ma żadnego ruchu.Ale nawet gdyby się zatrzymał, wał mógł się zatrzymać bezpośrednio przy przejściu między dwiema wartościami, a wibracje mechaniczne i / lub szum elektryczny mogą powodować zmiany danych.Ale problemy są ważne, gdy wał się porusza.W końcu, jeśli NIGDY się nie porusza, to w ogóle nie potrzebujesz kodera!
Potrzebuję, ponieważ podczas pomiaru pręt pozostaje nieruchomy, a następnie trochę się obraca, a kąt ponownie mierzony i tak dalej.
@atmnt Zwykły obwód logiczny ma margines logiczny, obszar napięć, które NIE są zdefiniowane jako „1” lub „0”;każde przejście kodera przechodzi przez taki niezdefiniowany region, w którym niektóre wartości są nieokreślone.W tym miejscu kod Graya daje dokładne wyniki, a kod binarny nie.Szum, który nie zakłóca sygnału pełnego kołysania logicznego, NIE zakłóca nieokreślonego sygnału.
@atmnt załóżmy, że twój czujnik odczytuje trochę źle z powodu jakiegoś problemu z ruchem, hałasem lub czymś innym.W kodzie szarym oznacza to, że odczyt będzie +/- 1 od zamierzonej wartości.W tradycyjnym kodowaniu może to być bardzo duża różnica, jeśli najbardziej znaczący bit zostanie odczytany nieprawidłowo.
@atmnt powiedzmy sobie naprawdę jasno.W przypadku binarnym dwie sąsiednie wartości mogą mieć dowolną liczbę różnych bitów iw rzeczywistości istnieje zestaw dwóch sąsiednich wartości, które mają * każdy bit inny * (dwa zestawy, jeśli koder się zawija).Jeśli złapiesz koder podczas przejścia między tymi wartościami, odczytana wartość może być * cokolwiek *, błąd jest nieograniczony.W przypadku Graya, każde dwie sąsiednie wartości mają * jeden * bit inny, więc pomieszany odczyt tego rodzaju nigdy nie spowoduje błędu większego niż 1 jednostka.
@Peteris: Wygląda na to, że mówisz o odporności na błędne odczytanie bitów, a to nie jest adresacja kodu Graya.Jeśli trochę źle odczytasz, może to szalenie odrzucić pomiar, nawet jeśli używasz kodu Graya.Zaletą kodu Graya jest to, że zmiana bitu związana z jednym tikiem zmienia się tylko o 1 bit, więc gdy bity zmieniają się w ticku, nie można „przeskakiwać” podczas odczytu z dala od wartości, między którymi się poruszasz,zgodnie z opisem na https://electronics.stackexchange.com/a/464422/234960.
Justin
2019-10-25 17:42:04 UTC
view on stackexchange narkive permalink

Wspomniałeś, że widzisz, że wartość zmienia się o 1. Załóżmy na razie, że wynika to z fizycznych ograniczeń pomiaru.

W przypadku kodu binarnego w niektórych sytuacjach możesz mieć pecha. Powiedzmy, że jesteś zatrzymany prawie dokładnie na przejściu między wartościami 15 i 16 (binarnie, 01111 i 10000). Więc to jest przełączanie między dwiema wartościami. Jednak wszystkie bity nie mogą przełączać się dokładnie w tym samym czasie z wielu powodów (mechanicznych / optycznych / elektrycznych). Czas, w którym przełączają się, może być bardzo bliski, ale czasami następny obwód otrzyma wartość z tylko niektórymi bitami z każdej wartości. To tak, jakby losowo wybierać wartość bitową dla każdego bitu . Na przykład może odczytać 01001 lub wartość 9. To nawet nie jest bliskie pożądanym wartościom 15 lub 16.

Z drugiej strony, używając kodu Graya, tylko jeden bit zmieni się między 15 a 16. Nie wiem od razu, jakie by one były, ale dla przykładu weźmy dwie wartości zakodowane Grayem na 01011 (15) i 11011 (16). Teraz dla każdego bitu wybierz losowo jedną z dwóch opcji, a zobaczysz, że jedyne możliwości to dwie pożądane wartości.

Ta odpowiedź ładnie opisuje specyficzną przewagę Graya nad binarnym (nie „przeskakuje” przez 9, kiedy przechodzisz z 15 do 16).Dodałbym, że nie chodzi tylko o „zatrzymanie” w punkcie pośrednim, ale o to, że elektronika odczytująca koder może go zmierzyć i nagrać w dowolnym momencie, dzięki czemu strumień danych kończy się skokami, jeśli używasz wzorca kodowania binarnego.
Noel
2019-10-26 04:39:24 UTC
view on stackexchange narkive permalink

Jak wspomniano powyżej, szare kody pozwalają na zmianę tylko jednego bitu (który może być lub nie LSb) na raz. Zapobiega to błędom wartości przy jednoczesnej zmianie wielu bitów; zwłaszcza z logiką kombinatoryczną. To było naprawdę ważne wiele lat temu, kiedy zacząłem projektować systemy kontroli ruchu i czujników, które były szybsze niż dostępne nam procesory. Wiele algorytmów zostało zaimplementowanych sprzętowo z logiką dyskretną i, jeśli mieliśmy szczęście, PLA (PAL, GAL, prymitywne FPGA lub FPLA). Kolejną zaletą jest to, że przesłuchy i szum na linii są znacznie zredukowane.

Zawsze będzie istnieć możliwość wystąpienia jittera. Jeśli enkoder zostanie zatrzymany na krawędzi przejścia między dwoma stabilnymi punktami, pojedynczy bit może odbijać się od 0 do 1. Przyczyną może być coś tak prostego, jak wibracja pracującego silnika wykonującego funkcję, która nie ma nic zrobić z koderem. Im wyższa rozdzielczość kodera, tym większe prawdopodobieństwo, że tak się stanie. Taka jest po prostu natura bestii. Dobrym przykładem może być silnik krokowy z 200 krokami na obrót przy użyciu 10-bitowego enkodera. Kroki silnika i kroki kodera nigdy, przenigdy nie będą się dokładnie pokrywać.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...