Autor Wątek: Enkoder magnetyczny firmy AMS zamiast potencjometru  (Przeczytany 10864 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Enkoder magnetyczny firmy AMS zamiast potencjometru
« dnia: Lutego 06, 2014, 11:52:33 »
Witam,

Jakiś czas temu pisałem w wątku "Następca MJoy" (http://il2forum.pl/index.php/topic,13149.msg302145.html#msg302145) o tym, że chciałbym zbudować metalową kołyskę do joysticka i wykorzystać w niej zamiast potencjometrów enkodery magnetyczne firmy AMS (AS5045 - http://www.ams.com/eng/Products/Position-Sensors/Rotary-Magnetic-Position-Sensors/AS5045). Założyłem ten wątek, ponieważ postanowiłem opisywać postępy prac. Chciałbym tutaj nadmienić, że sam pomysł wykorzystania tych enkoderów pochodzi od Sundownera http://il2forum.pl/index.php/topic,12152.msg262951.html#msg262951 - niestety poza tym wpisem nie było kontynuacji tematu.

Od momentu zainteresowania się tym tematem trochę czasu mineło, ponieważ musiałem zapoznać się z budową i tworzeniem układów z mikrokontrolerami oraz ich programowaniem (a niestety elektroniką do tej pory się nie zajmowałem). Tak się jednak szczęśliwie złożyło, że ostatnio wpadła mi w ręce płytka IntelGalileo ;D - http://arduino.cc/en/ArduinoCertified/IntelGalileo (platforma Arduino). Więc postanowiłem na początek obsłużyć enkoder przy wykorzytaniu tej platformy.

Do testów kupiłem enkoder AS5040, ponieważ w tym samym sklepie była również płytka do niego oraz koszty przesyłki były mniejsze (właściwie układy AS5040 i AS5045 są bliźniacze i jeżeli poprawnie obsługiwany jest jeden to również i drugi będzie działał):



Układ po zlutowaniu na płytce (tutaj należą się podziękowania dla mojego kolegi):



cdn.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #1 dnia: Lutego 06, 2014, 15:09:09 »
Bardzo ciekawy temat. Napisałeś kiedyś, że jesteś programistą czyli od tej strony nie powinno być problemów. Trochę poczytam na temat tych enkoderów aby mieć jakiś pogląd. Zastanawiam się jaka jest główna zaleta zastosowania tego enkodera.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #2 dnia: Lutego 06, 2014, 23:14:52 »
Wydaje mi się, że główną zaletą AS5045 (ten 12 bitowy) może być dokładność pomiaru. Jednym z czynników (oczywiście poza wewnętrzną budową układu) jest fakt, że dane pomiarowe mogą być (w moim przypadku są - korzystam z Synchronous Serial Interface enkodera - SSI) wysyłane do uP w postaci cyfrowej. W związku z tym elminuje się wpływ czynników zewnętrznych (zakłóceń) oraz błędów związanych z przetwornikami AC w uP. Przynajmniej tak to wygląda z punktu widzenia laika w kwestii elektroniki, jakim niewątpliwie jestem. Czemu wybrałem ten układ - bo wydawał mi się najdokładniejszy, a chciałem zaprojektować jak najprostszą mechanicznie kołyskę joysticka do obróbki na frezarce numerycznej i chciałem (być może błędnie) zrezygnować ze stosowania przekładni zębatych.

Jeśli chodzi o postępy prac, to znalazłem w sieci program dla galileo obsługujący te enkodery (http://www.madscientisthut.com/forum_php/viewtopic.php?f=11&t=7 - jest tam nawet kod na uP atmega32)  :D. Podłączyłem enkoder i działa  ;D. Daje nawet jakieś w miarę poprawne dane biorąc pod uwagę fakt, że magnes nie był odpowienio spozycjonowany względem enkodera. Po prostu zbliżałem magnes i nim obracałem. Niestety zawiodłem się kompletnie na informacjach o błędach - bitach statusu. Program w przypadku braku magnesu w pobliżu enkodera nie zgłasza błędu, a tylko wartości kąta są jakby losowe (a może w powyższym programie są błędy - muszę na spokojnie do tego zajrzeć). Poniżej zdjęcie z testów:



Teraz zabieram się za budowę mocowania do magnesu (wraz z korbką  :)). Tolerancja położenia magnesu względem układu jest bardzo mała, więc musi to być w miarę precyzyjnie wykonane.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #3 dnia: Lutego 07, 2014, 07:07:21 »
Faktycznie pisano na temat tych enkoderów na forum, ale temat nie był rozwijany a szkoda. Ponieważ ja także chcę zamienić pots na sensory ale typu tensometry (nacisk mechaniczny-zmiana rezystancji), dlatego ten temat mnie zainteresował. Piszę o tym w wątku http://il2forum.pl/index.php/topic,15831.0.html W wspomnianym wątku jest także mowa o rozwiązaniu zastosowanym w Hotas Warthog (# 6), gdzie jest magnes oraz sensor magnetyczny.
Wracając do Twojego projektu to faktycznie ma kilka zalet, ale jest dosyć drogi i wymaga pewnej wiedzy informatycznej. Z tego co zrozumiałem po pobieżnym przejrzeniu informacji na temat tego układu (AS5045) wynika, że ma on czujnik pola magnetycznego, przetwornik 12 bitowy oraz dwa wyjścia w tym jedno SSI.
Dokumentacja tego układu jest dosyć obszerna i wymaga czasu aby to opanować nie wspominając o programowaniu AS5045. Następny problem to programowanie sterownika do którego jest podłączony układ poprzez SSI. Tutaj mógłby być DMJoy Damosa, gdyby obsługiwał ten interfejs. To tyle moich takich ogólnych spostrzeżeń. Mnie interesuje problem mechaniki powiązanej z magnesem oraz sensorem magnetycznym. Jak to będzie działać. W przypadku Cougara są 2 kołyski, które wykonując ruch powodują obrót osi potencjometru. Jeden pots realizuje ruch osi X drugi osi Y. Zakres ruchu kołyski odpowiada zakresowi obrotu osi pots. W moim modzie jeśli zamienię pots na tensometry zastawiając mechanikę (kołyski) to wychylenie drążka oraz kołysek będzie bardzo małe co wynika z działania sensorów nacisku.
Jak to będzie w Twoim przypadku. Potencjometry mają określony zakres ruchu przekładający się na zakres napięciowy. Jak to będzie w przypadku AS5045. Mam na myśli punkty odniesienia. W ogólnym opisie jest uwaga :
This device fits perfectly for on-axis applications where a simple 2-pole magnet rotates above or below the sensor IC and the zero position can be programmed into the device
Czy możesz to rozwinąć. Układ ma dwa wejścia MagINCn oraz MagDECn coś podobnego do klasycznego enkodera.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #4 dnia: Lutego 07, 2014, 20:40:36 »
Ponieważ ja także chcę zamienić pots na sensory ale typu tensometry (nacisk mechaniczny-zmiana rezystancji), dlatego ten temat mnie zainteresował. Piszę o tym w wątku http://il2forum.pl/index.php/topic,15831.0.html W wspomnianym wątku jest także mowa o rozwiązaniu zastosowanym w Hotas Warthog (# 6), gdzie jest magnes oraz sensor magnetyczny.
Bardzo ciekawy wątek i jestem pod wrażeniem masy pracy włożonej w realizację prototypu. Czytałem go już wcześniej (chociaż dopiero niedawno zainteresowałem się symulatorami lotniczymi i trochę wątków związanych z budową joysticków na tym i innych forach od tego czasu przeglądałem). Jeśli chodzi o tensometry w joyu (o ile dobrze rozumiem wychył joysticka jest niewielki), to mi chyba bardziej odpowiada standardowa konstrukcja z ,,dużymi'' wychyłami. Rozwiązanie zastosowane w Hotas Warthog jest ciekawe (o ile dobrze go rozumiem) z jednym sensorem magnetycznym (może można taki sensor kupić :P).

Dokumentacja tego układu jest dosyć obszerna i wymaga czasu aby to opanować nie wspominając o programowaniu AS5045. Następny problem to programowanie sterownika do którego jest podłączony układ poprzez SSI. Tutaj mógłby być DMJoy Damosa, gdyby obsługiwał ten interfejs.
Wydaje mi się, że programowanie samego układu AS5045 nie będzie konieczne (przynajmniej wszystko na to wskazuje). Jeśli chodzi o rozwiązanie docelowe to nie chciałbym dodatkowo obciążać Damosa, skoro część pracy mogę sam wykonać. Generalnie mój pomysł polega na tym, że każdy z enkoderów posiadałby na płytce uP, który komunikuje się z DMJoyem za pomocą protokołu I2C wysyłając mu informacje dotyczącą wychylenia joysticka. Ja opracowałbym płytkę dla zestawu enkoder i mikroprocesor oraz zaprogramowałbym odpowiednio uP. W wątku http://il2forum.pl/index.php/topic,13149.msg302145.html#msg302145 Damos odpowiedział, że taka modyfikacja jest możliwa (i wydaje mi się, że nie będzie wymagać dużej ingerencji w oprogramowanie DMJoya).

Mnie interesuje problem mechaniki powiązanej z magnesem oraz sensorem magnetycznym. Jak to będzie działać. W przypadku Cougara są 2 kołyski, które wykonując ruch powodują obrót osi potencjometru. Jeden pots realizuje ruch osi X drugi osi Y. Zakres ruchu kołyski odpowiada zakresowi obrotu osi pots. W moim modzie jeśli zamienię pots na tensometry zastawiając mechanikę (kołyski) to wychylenie drążka oraz kołysek będzie bardzo małe co wynika z działania sensorów nacisku.
Jak to będzie w Twoim przypadku. Potencjometry mają określony zakres ruchu przekładający się na zakres napięciowy. Jak to będzie w przypadku AS5045.
Ja myślałem o wykorzystaniu dwóch enkoderów AS5045 - jeden dla osi X i jeden dla osi Y (dokładnie zamiast potencjometrów w standardowej kołysce np. Cougara).

This device fits perfectly for on-axis applications where a simple 2-pole magnet rotates above or below the sensor IC and the zero position can be programmed into the device
Czy możesz to rozwinąć. Układ ma dwa wejścia MagINCn oraz MagDECn coś podobnego do klasycznego enkodera.
Generalnie odczyt danych z czujnika możliwy jest poprzez interface SSI. Dodatkowo enkoder został wyposażony w wyjście PWM o stałej częstotliwości i wypełnieniu zależnym od pozycji magnesu. Można układ programować w celu np. współpracy z silnikami bezszczotkowymi oraz w celu ustawienia pozycji 0 (centrowanie). Wyjścia MagINCn oraz MagDECn pozwalają określić, czy magnes się oddalił, czy też zbliżył.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #5 dnia: Lutego 07, 2014, 22:35:43 »
Cytuj
Generalnie mój pomysł polega na tym, że każdy z enkoderów posiadałby na płytce uP, który komunikuje się z DMJoyem za pomocą protokołu I2C wysyłając mu informacje dotyczącą wychylenia joysticka. Ja opracowałbym płytkę dla zestawu enkoder i mikroprocesor oraz zaprogramowałbym odpowiednio uP. W wątku http://il2forum.pl/index.php/topic,13149.msg302145.html#msg302145 Damos odpowiedział, że taka modyfikacja jest możliwa (i wydaje mi się, że nie będzie wymagać dużej ingerencji w oprogramowanie DMJoya).
Jest to bardzo ciekawa propozycja. Myślę, że Damos zrobi interfejs I2C oraz modyfikację softu do DMJoy. Temat jest bardzo ciekawy ale czeka Ciebie dużo pracy.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #6 dnia: Lutego 10, 2014, 17:45:58 »
Przez weekend wykonałem wszystkie części do zestawu testowego dla enkodera:


Dzisiaj po wyschnięciu kleju poskładałem całość:


No i spotkała mnie niemiła niespodzianka :-( - cały czas magnes był poza zakresem (jak przejrzałem program to zrozumiałem dlaczego wcześniej nie zgłaszał błędów - wystarczyło włączyć debug :-)). Rozmontowałem ustrojstwo i przesuwając magnes nad układem starałem się określić dla jakich położeń magnesu program nie zgłasza błędów. O dziwo różniły się one znacząco od centrum układu, który został podany jako centralne położenie magnesu w dokumentacji technicznej. Już zrozumiałem jaki zrobiłem błąd. Wykonałem telefon do sprzedawcy, u którego kupiłem magnes i moje przypuszczenia się sprawdziły. Kupiłem magnes namagnesowany w niewłaściwą stronę. Długo szukałem magnesu zrobionego z materiału N35 (bałem się, że N38 będzie zbyt silny) i jak już go namierzyłem to zapomniałem o kierunku namagnesowania  ;D. Zamówiłem już właściwe magnesy (różnica w cenie okazała się masakryczna, ale nie chciało mi się już szukać).

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #7 dnia: Lutego 10, 2014, 21:31:40 »
Tak z ciekawości ile kosztują magnesy. Czy w układzie testowym będzie jeden magnes przyklejony do jakiegoś  elementu, który zmienia położenie przy ruchu korbką. Jak określić położenie centralne (zerowe ??) względem, którego wartość będzie rosła lub malała przez analogię do położenia środkowego dla pots gdy kołyska jest w położeniu neutralnym.

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #8 dnia: Lutego 11, 2014, 11:03:02 »
Tak z ciekawości ile kosztują magnesy.
Pierwsze magnesy kupiłem na Allegro po 25 gr za sztukę + 8 zł koszt przesyłki. Te magnesy, które teraz kupiłem kosztowały 10x więcej + 20 zł koszt przesyłki. No i jak można sobie policzyć przy 8 magnesach zrobiła się duża różnica  :-[.

Czy w układzie testowym będzie jeden magnes przyklejony do jakiegoś  elementu, który zmienia położenie przy ruchu korbką.
Manes jest już przyklejony (będę to musiał rozkeić lub zrobić nowy element). Widać ten element na pierwszym zdjęciu w poście z 10 lutego (poniżej i na prawo od płytki z układem). Na wałek 6mm z aluminium została nałożona rurka z aluminium 8mm (szerokość ścianki 1mm). Długość odciętego kawałka rurki została tak dobrana, aby zapewnić odpowiednią odległość magnesu od układu (czyli od 0.5 do 1.8mm). Na końcu został przyklejony magnes (widać go bo ma bardziej błyszczącą i niklową powierzchnię).

Jak określić położenie centralne (zerowe ??) względem, którego wartość będzie rosła lub malała przez analogię do położenia środkowego dla pots gdy kołyska jest w położeniu neutralnym.
Ja widzę trzy sposoby:
- Przy montażu (podczas jego wklejania) poprzez jego obracanie możemy go ,,mechanicznie'' centrować.
- Programowanie enkodera - można określić, że aktualna pozycja magnesu jest 0.
- Realizacja ,,centrowania'' w uP do niego podłączonym (proste przeliczenie wartości) przy jego programowaniu (lub programowanie będzie odbywać się dwuetapowo). Już na zmontowanym joyu, gdy możemy określić jaka wartość odpowiada neutralnej pozycji drążka (raz spozycjonowany joy nie wymagałby już pozycjonowania).

Ja pewnie będę korzystał pewnie z drugiego lub pierwszego sposobu (albo obu :-)).

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #9 dnia: Lutego 16, 2014, 20:53:32 »
Przedstawiam krótki raport z testów.

Po zmianie magnesu enkoder działa poprawnie, nawet pomimo tego, że oś obrotu jest trochę krzywo umiejscowiona. Niestety przy tej bazie narzędziowej, którą posiadam trudno jest to zrobić dokładnie. Przy stałej pozycji korbki pozycja enkodera utrzymuje się na stałym poziomie (czasem można zauważyć przeskoki o 1 pozycję). Przy bardzo wolnym obrocie wartości rosną lub maleją o 1 wartość. Jakby to kogoś interesowało, to wkejam przykładowy wynik działania programu dla odczytu jednej wartości (w trybie debug):

packed:21281
pack bin: 101001100100001
mask: 1111111111000000
bin angle:101001100000000
angle: 21248
angleshft:101001100
angledec: 332
angle: 116


Wygenerowałem wykres położenia zwracanego przez enkoder, poprzez bardzo powolny obrót korbką (dzięki czemu uzyskałem aż 212 wartości pomiarowych dla kąta od 0 do 360 stopni). Przypominam, że testowym układem był AS5040 który jest 10 bitowy, w związku z tym uzyskane wartości położenia mieściły się w zakresie od 0 do 1024. Niestety obrotu dokonywałem ręcznie, w związku z tym miejscami jest szybciej, innym razem wolniej:


Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #10 dnia: Lutego 17, 2014, 14:08:58 »
szink naszkicuj co ci potrzeba z wymiarami, to mogę Ci wydrukować na drukarce 3D :)

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #11 dnia: Lutego 17, 2014, 14:35:28 »
Dzięki  ;D  Odezwę się na PW   ;D

W międzyczasie zamocowałem mechanizm obrotu w innym położeniu względem układu (teraz wydaje mi się, że magnes obraca się bardziej stabilnie nad układem) oraz wykonałem kilka szybszych obrotów zamiast jednego wolnego. Oto wyniki:


Myślę, że jest dobrze. Co Wy na to? Może ktoś ma jakieś sugestie co do dalszych testów?

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #12 dnia: Lutego 17, 2014, 18:42:57 »
Zadam trywialne pytanie związane z testami. Ponieważ enkoder magnetyczny ma zastąpić potencjometr to powinien podobnie się zachowywać. W moim Cougarze są pots w których oś obraca się o 180 stopni zmieniając rezystancję od 0 do np. 10kom (nie pamiętam wartości) co powoduje zmianę napięcia podawanego na uP od 0 do 5V. Załóżmy, że mamy podobny przetwornik 10 bit co daje 1024 stopnie kwantyzacji, czyli podobnie jak u Ciebie.
Wracając do Twojego wykresu. Rozumiem, że masz możliwość odczytu "napięcia" zamienionego na wartość kodowaną w 10 bitowym koderze oraz wartość kąta obrotu korbki, która może wykonać pełny obrót o 360 stopni. Na wykresie są podane wartości w stopniach kwantyzacji 0-1024 oraz "step" czyli obrót w stopniach. Jeśli mam rację to w moim przypadku chciałbym uzyskać pełny zakres czyli od 0 do 1024 dla kąta obrotu 180 stopni. Jak to zrobić w praktyce to już inna sprawa. Czy dobrze zrozumiałem ? 

Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #13 dnia: Lutego 18, 2014, 01:20:18 »
Na wykresie są podane wartości w stopniach kwantyzacji 0-1024 oraz "step" czyli obrót w stopniach.
Step jest raczej związany z czasem - numer kroku czasowego (chyba powinienem oznaczyć jako time step - byłoby czytelniej). Inaczej jest to numer pomiaru (kolejne pomiary są wykonywane w stałych odstępach czasowych). Jeśli chodzi o obrót (pewnie chodzi Ci o angle, które podałem jako wynik trybu debug), to był on wyliczany na postawie położenia z enkodera (0 - 1024) pomnożony przez 0.3515625 (360 stopni / 1024).

Jeśli mam rację to w moim przypadku chciałbym uzyskać pełny zakres czyli od 0 do 1024 dla kąta obrotu 180 stopni. Jak to zrobić w praktyce to już inna sprawa. Czy dobrze zrozumiałem ? 
No niestety nie da się tego tak zrobić. Zakres 0 do 1024 jest dla pełnego kąta - czyli 360 stopni. Dla kąta 180 stopni będziemy mogli uzyskać tylko 512 wartości. Podobnie jak w przypadku potencjometru jeżeli wykorzystujemy tylko część zakresu potencjometru, to również tracimy część danych. Rozwiązaniem może być zastosowanie przekładni zębatych lub bardziej dokładnego enkodera. W przypadku AS5045 będziemy mieć dla 180 stopni już 2048 wartości.

A teraz najlepsze. Znalazłem informacje na temat najnowszego enkodera tej serii od AMS - AS5048 (http://www.digikey.com/product-highlights/us/en/austriamicrosystems-as5048-magnetic-encoder/1804?WT.z_sm_link=Twitter_ams_0627). Jest 14 bitowy  :D W dokumentacj piszą, że dokładność jest 0.05 stopnia ;D :o. Co Wy na to?


Odp: Enkoder magnetyczny firmy AMS zamiast potencjometru
« Odpowiedź #14 dnia: Lutego 18, 2014, 06:29:12 »
Dzięki za wyjaśnienia. Jeśli os X reprezentuje kolejne pomiary to pośrednio jest związana z ruchem korbką czyli kątem obrotu a raczej z położeniem magnesu względem sensora magnetycznego.
Cytuj
A teraz najlepsze. Znalazłem informacje na temat najnowszego enkodera tej serii od AMS - AS5048
Wynika z tego, że tego typu przetworniki mają zastosowanie w precyzyjnych urządzeniach. Dla mnie jako laika w dziedzinie mechaniki pozostaje pytanie jak go zastosować w joystick W Cougarze tym bez modów występują po pewnym czasie luzy związane z mechaniką, także pots są niedoskonałe. W modach eliminuje się te słabe punkty likwidując kołyski i zastępując pots sensorami. W Twoim przypadku jeden problem masz już rozwiązany ale pozostaje problem mechaniki. Jak rozwiązać mechanikę do tak dokładnych przetworników (14 bit).