Chciałbym śledzić położenie kątowe dość wolno napędzanego ramienia obrotowego z napędem silnikowym (napęd bezpośredni; patrz rysunek poniżej) - ale wymagam dokładności kątowej poniżej 0,05 ° i podobnej rozdzielczości.
Jak zauważył @bulter w komentarzach, jest to równoważne śledzeniu wierzchołka ramienia w pozycji wzdłuż obwodu, z dokładnością (2 × π × 10 cm) / (360˚ / 0,05) = 0,08 mm.
Czy istnieje jakiś możliwy do zrealizowania czujnik lub metoda elektroniczna, które mogą osiągnąć ten poziom dokładności w wykrywaniu obrotowym bez wydawania fortuny?
Do tej pory próbowałem, od najprostszych do skomplikowanych:
Cyfrowy kompas / magnetometr: Zacząłem od tego; ale oczywiście nigdzie w pobliżu występu, którego szukam.
Kodowanie obrotowe: Kodowanie na podstawie potencjometru / czujnika Halla: Nie można uzyskać wystarczającej rozdzielczości i występuje znaczny błąd liniowości.
Wizja maszynowa: Próbowałem umieścić znacznik optyczny na końcu ramienia (ponieważ końcówka śledzi najdłuższy łuk) i użyć kamery (OpenCV) do śledzenia pozycji znacznika: nie mogłem tak dobrze rozwiązać bardzo małych obrotów, biorąc pod uwagę zakres obrotu ramienia obszar 10x10 cm.
Enkoder magnetyczny: Obecnie badam zastosowanie AS5048, magnetycznego enkodera obrotowego od AMS, umieszczonego ze środkiem czujnika w pozycji wału silnika. Coś takiego:
Odpowiedzi:
To, co robisz, jest możliwe, ale nie rozumiem, jak to zrobisz tanio.
0,05 stopnia (3 minuty łuku) oznacza rozdzielczość 7200 zliczeń / obr. Lub równoważną 13 bitów (8192). Co gorsza, ponieważ próbujesz utworzyć pętlę pozycji, potrzebujesz co najmniej jednej dodatkowej rozdzielczości lub 14-bitowego systemu. Problem polega na tym, że twoja pętla pozycji nie może wykryć błędu mniejszego niż jeden bit, więc jeśli ramię zacznie dryfować, czujnik kąta go nie wykryje, dopóki sygnał wyjściowy nie zostanie wyłączony. Pętla pozycji spowoduje cofnięcie ramienia w drugą stronę i zatrzyma je, gdy błąd spadnie do zera. Pozwoli to jednak na wychylenie ramienia w drugą stronę, dopóki nie zostanie zliczone w przeciwnym kierunku itp. Tak więc, na przykład, jeśli chcesz, aby ramię utrzymywało liczbę czujników równą 100, system może produkować 100, 101, 100 , 99, 100 itp.
Sugeruję, że koder optyczny jest najlepszym rozwiązaniem, ale koder 14-bitowy (16 384 ppr) nie będzie tani. Inną możliwością jest resolver lub synchro, z RDC lub SDC (przelicznik / konwerter cyfrowy lub synchro / cyfrowy konwerter) jako drugą możliwość, ale będzie to kosztować jeszcze więcej. Synchros / resolwery mają 2 wady. Po pierwsze, zostały one ogólnie zastąpione przez kodery optyczne, więc na rynku znajdziesz głównie nadwyżki. Po drugie, dokładność zwykle nie jest wystarczająca. Rozdzielacze rozmiaru 23 są zwykle oceniane na około 5-10 minut łuku, więc potrzebujesz jednostki o wysokiej precyzji i powodzenia w jej znalezieniu.
Inductosyns zapewnia wyjątkową rozdzielczość i dokładność, ale będzie kosztować nawet więcej niż koder optyczny. Zasadniczo potrzebujesz szybkiego RDC do odczytu danych wyjściowych.
Twoje obawy dotyczące dokładności enkodera optycznego opierają się na papierze konkretnego producenta, ale jest to zasadniczo element odstraszający. Możliwości błędu są takie same dla każdego producenta, a powiązany producent nie jest w żaden sposób lepszy niż inni producenci. Zasadniczo w przypadku enkoderów precyzyjnych dokładność jest taka sama jak rozdzielczość.
Chociaż możliwe jest uzyskanie enkoderów optycznych z równoległymi wyjściami, prawdopodobnie lepiej będzie z enkoderem inkrementalnym i przewijaniem własnego licznika góra / dół. Jeśli wybierzesz tę trasę, użyjesz sygnału „home”, aby zresetować licznik pozycji za każdym razem, gdy włączasz system.
źródło
Myślę, że to, co sugeruje OP, wcale nie jest złym pomysłem. To, czego chce użyć, to gotowy pierścień: http://ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128 , ma 128 biegunów = 64 pary biegunów. Rozdzielczość wynosi 16 bitów = 65536, maks. 305 obr./min.
Po rozłożeniu enkodera optycznego o wysokiej rozdzielczości okaże się, że ustawienie detektora bez specjalnych narzędzi jest prawie niemożliwe, w rzeczywistości zastosowanie tej nowej metody czyni to bardzo prostym.
Potrzebujesz tokarki, aby dobrze dopasować się do pierścienia, a następnie umieść czujnik w bliskiej odległości, nie jest wymagane specjalne wyrównanie. Sam czujnik występuje w wersjach zestawu już przylutowanych na płytce zabezpieczającej, potrzebny byłby dodatkowy czujnik referencyjny - przerwa z fotodetektorem, po czym można odwoływać się do enkodera w ramach jednej pary biegunów za pomocą kombinacji sygnału wyjściowego + czujnika zewnętrznego odniesienia.
źródło
Ponieważ jest to burza mózgów, a WhatRoughBeast wspomniało już o wszystkim, co bym rozważył, dlaczego nie dodać napędów harmonicznych do listy? Teoretycznie (nie sprawdziłem szacunków empirycznych ani pierwszych obliczeń) pozwala to łatwo uzyskać współczynnik przełożenia 20: 1 bez żadnego luzu (częstość 100: 1), zmniejszając liczbę wymaganych kroków do 720 / obr. . Może to być coś, na co warto spojrzeć. Napędy harmoniczne nie są tanie, ale ogólnie są znacznie tańsze niż czujniki o wysokiej rozdzielczości, szczególnie w przypadku tego przełożenia.
źródło
Jeśli potrzebujesz rozdzielczości na wale wyjściowym odpowiadającej 13-bitowi, potrzebujesz więcej dodatkowych bitów, co najmniej 1-bit dla sterowania w pętli zamkniętej jest koniecznością. Kolejnym problemem jest to, że producenci reklamują rozdzielczość, ale nie reklamują dokładności . Musisz nieustannie prosić o dokładność. Jeśli błąd jest powtarzalny, można poprawić za pomocą korekcji programowej.
Kolejny problem, jeśli potrzebujesz solidnego rozwiązania zewnętrznego. Jeśli tak, enkoder magnetyczny jest opcją. Jednak enkoder magnetyczny może mieć znaczny powtarzalny błąd okresowy, który należy wyeliminować w procesie kalibracji za pomocą innego optycznego enkodera. Potrzebujesz jednak przyrządu o jeszcze większej precyzji.
Interpolacja sin / cos (optyczna lub magnetyczna) zwiększa rozdzielczość, ale także dodaje losowy błąd.
Musisz być w stanie produkować z pożądaną dokładnością, szczególnie koncentrycznością. Należy również wziąć pod uwagę szerokość pasma, ponieważ przy zwiększaniu rozdzielczości szybszy ruch może przekroczyć dozwoloną szerokość pasma (np. Częstotliwość wyjściową kwadratury). Przeciwnie, kontrola ultra zwolnionego tempa jest dyscypliną, w której można znaleźć ciekawe niepublikowane problemy.
Jeśli potrzebujesz obrotu ramienia sterującego (nie tylko położenia gąsienicy), problem stanowi rozdzielczość napędu bezpośredniego i momentu obrotowego. Podwójna pętla pomaga kontrolować, ale wymaga silnika (enkoder w przypadku skrzyni biegów lub liczenia kroków w przypadku silnika krokowego) i wykrywania położenia wału.
Enkoder inkrementalny vs. absolutny jest również podstawową decyzją.
Ogólna rada jest taka: jeśli chcesz zakończyć projekt, użyj profesjonalnych komponentów, które są drogie (np. Enkodery optyczne ATOM firmy Renishaw). Jeśli grasz dla przyjemności, a czas nie jest ważny, możesz odkrywać nowe problemy (ślepa uliczka), odkrywać problemy, których nie można przeszukiwać itp. Sprawdź dwukrotnie, czy możesz produkować aparaty z wymaganą precyzją.
źródło
Wydaje się, że idealnie nadaje się do suwmiarki cyfrowej, zwykle używanej do pomiaru dokładnych odległości, patrz:
Jak działa suwmiarka elektroniczna?
Są one podobne do enkoderów pojemnościowych (które już widzieliście w http://www.digikey.com/en/articles/techzone/2012/apr/a-designers-guide-to-encoders ).
Elektroniczna część liniowego suwmiarki cyfrowej może być prawdopodobnie ponownie użyta, więc wystarczy wykonać tylko ćwierć tarczę z odpowiednim wzorem.
PS: Precyzja pozwala nawet na pracę z gotową liniową.
źródło
Oto mój nowy pomysł, jeszcze jedna historia silnika krokowego :-)
Kliknij animowany obraz, aby zobaczyć nieskróconą pełną rozdzielczość. Tutaj używasz silnika krokowego jako linijki podróżującej. Na czubku głównej ręki znajduje się magnes. Czerwone linie pokazują oczekiwany kierunek strumienia magnetycznego. Zakładając, że silnik krokowy jest podobny do tego na wikipedii. Ma 3,6 stopnia jednego pełnego kroku. Aby uzyskać możliwie liniową część pola, potrzebujesz 3,6 / 0,05 = 72 kombinacji 7 bitów. Oznacza to, że 10-bitowy ADC zwykłego MCU bardzo dobrze wykona zadanie dla większego zakresu nieliniowego. Po wykonaniu mechanizmu przeanalizuj wzór zbliżeniowy i wybierz najbardziej liniową część, przy pomocy oprogramowania mapującego linearyzuj go i wybierz granice linijki dla tego konkretnego ustawienia.
Silniki krokowe nie są idealne. Według wikipedii mogą wykazywać do 5% wariancji między zębami. Aby zmierzyć błąd, możesz rozszerzyć pierwotne granice linijki o granice drugorzędne, które muszą jedynie podążać za wzorem gradientu z poprzedniej analizy granicy sąsiedniej.
Ponadto powinieneś lepiej prowadzić silnik krokowy z mikrostopem, aby uniknąć przyspieszeń +/-, które mogą wpływać na skale konfiguracji, myślę, że przynajmniej musisz zrobić pół kroku.
źródło
Zajmując się mechaniką, najpierw zacznij od mechaniki.
Obracając duży bieg (R2) o kąt, mały bieg (R1) obraca się o kąt R2 / R1 razy większy.
Dlatego jeśli masz do czynienia z bardzo ekstremalną dokładnością kąta na danym promieniu (R), możesz poradzić sobie z n-krotnie większą dokładnością kąta na n-krotnie mniejszym promieniu (tj. R / n).
W twoim przypadku możesz zainstalować duży bieg na osi ramienia i dołączyć mniejszy bieg, a następnie podłączyć mniejszy czujnik do małego.
Wiele innych metod zmiany biegów jest znanych i przydatnych, zacznij od wiki .
źródło
Powinieneś zrobić drugi mechanizm na krawędzi dłoni, aby podzielić kroki środka za pomocą mechanizmu liniowego, takiego jak w układzie optycznym sterownika CD-ROM. W ten sposób może być łatwiejsze i bardziej wystarczające wdrożenie całego systemu jako otwartej pętli, również poprzez zastosowanie silnika krokowego na środku i napędzanie go przez mikrostop, aby uniknąć bardzo dużych wielkości przyspieszenia.
źródło
Fizyczne ograniczenia przestrzeni wokół ruchomego ramienia mogą wykluczyć to rozwiązanie, ale oto jesteś - kolejne tanie podejście do widzenia maszynowego. Dokładność można regulować, zmieniając powiększenie obiektywu.
źródło
Nie wiem, co uważasz za fortunę, ale możesz rozważyć http://www.inductosyn.com/
źródło
Inną bardzo interesującą opcją, jeśli twoje ramię regularnie przechodzi do początkowej (spoczynkowej) pozycji, jest użycie myszy optycznej (do grania), a ściślej systemu wykrywania.
Zamontuj czujnik na czubku ramienia i zapewnij dobre (drobnoziarniste, nie odbijające) tło do przesuwania się. Odczytaj dane za pomocą standardowego interfejsu myszy USB.
Będziesz potrzebował prostego czujnika do kalibracji pozycji początkowej. Trzeba będzie eksperymentować, aby sprawdzić, czy to działa wystarczająco dobrze. Powinien działać głównie niezależnie od pyłu i jest łatwy w utrzymaniu.
źródło
Być może możesz rozważyć użycie liniowego enkodera optycznego na końcu ramienia obrotowego i użyć elastycznego kodu paskowego, takiego jak ten , który ma do 2000 linii na cal. Jeśli chcesz przejść bardzo tanio, możesz użyć enkodera liniowego takiego jak ten , ale zwiększa on jedynie do 150 linii na cal, a więc rozdzielczość 40 mikronów (ponieważ jest to enkoder kwadraturowy). Jeśli nie jesteś wrażliwy na drgania w systemie napędowym, możesz użyć tego od razu. W przeciwnym razie możesz wyciągnąć ramię pod swoją aplikację i wysunąć kod dalej. Możesz nawet wydrukować własny kod, jeśli masz drukarkę o rozdzielczości DPI 1000 lub większej.
Powodzenia!
źródło