Skocz do zawartości
REDMen

Pomiar położenia i ustawianie wskaźnika - pomysły na realizację?

Pomocna odpowiedź

Witam  Wszystkich. 

Mój problem częściowo wpisuje się w temat , więc tu napiszę ... 

Pozwoliłem sobie narysować bardzo poglądowy szkic problemu... Potrzebuję znać pozycję wskaźnika (czerwonej strzałki) i ustawiać ją na dowolna wartość w przedziale 0-1100 mm z dokładnością 1 mm. Obecnie odbywa się to bardzo "topornie" , a mianowicie jest przyklejona miarka i przyciskami załączam przekaźniki trafiając w pozycję. Jest to wykonalne , aczkolwiek czasochłonne. Chciałem zastosować gotowy licznik programowalny i enkoder, aczkolwiek po rozmowie z producentem uznał że to nie zadziała , głownie dlatego że ma raz być do góry raz na dół. Następna opcja to przekaźnik programowalny + panel. Tu strasznie koszty idą w górę , bo sam nie potrafię tego zaprogramować. Może ktoś z Was coś podpowie jak to zrealizować, może są jakieś gotowe już rozwiązania ? Z góry dziękuję za podpowiedzi wszelkie.
Chcę widzieć na wyświetlaczu aktualną pozycję (wskaźnika) i mieć możliwość wpisania na jakiej ma się ustawić wskaźnik, czyli aktualna jest 500 i wpisuje 540 bądź 460 lub o ile ma podnieć lub opuścić od aktualnej czyli pozycja aktualna : 500 wybieram -40 lub +40

szkic bardzo poglądowy.png

Udostępnij ten post


Link to post
Share on other sites

 @REDMen jak rozumiem napęd mechaniczny jest już gotowy? Możesz pokazać jak to wygląda? Jakiej precyzji oczekujesz przy ustawianiu tej strzałki?

Udostępnij ten post


Link to post
Share on other sites

Tak napęd gotowy postaram się załączyć foto. Jest to silnik z przekładnią ślimakową 1:100, silnik ma 700 obr/min  i przekładni wychodzi zębatka która napędza łańcuch. Prędkość liniowa wskaźnika jest dość niska , a wręcz bardzo czyli ok 40 s/m. Dlatego odpada potrzeba precyzyjnego serwo. Dokładność jaką potrzebuję uzyskać to 1 mm. 

Ideałem byłoby napisać program odczytujący jedną oś myszki , ustawić reakcje na dane z odczytu i na ich podstawie "zasterować" portem czyli czyli dwa wyjścia. Tylko ja nie potrafię pisać programów np w C , dlatego szukam czegoś gotowego/alternatywnego. Każda sugestia się liczy. 

Udostępnij ten post


Link to post
Share on other sites

Ja bym zamontował na wale silnika jakiś enkoder i sterował silnikiem na podstawie odczytów z niego.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Taki jest plan , chodzi mi o urządzenie , które odczyta impulsy i będzie sterowało dwoma stycznikami.Na czym to zrealizować

Edytowano przez REDMen

Udostępnij ten post


Link to post
Share on other sites

Moim zdaniem, niezależnie od tego jak zostanie zrobione samo sterowanie silnikiem/stycznikami, kluczowy jest tutaj odczyt położenia. Musimy mieć informację o bezwzględnym położeniu strzałki, bo jej pozycja będzie "celem" kontrolera. Rzeczywiście, wydaje się, że najmniej zmian (w mechanice) pociągnie za sobą enkoder, ale te typowe obrotowo-impulsowe mają okropną wadę: oddają impulsy gdy oś się obraca i co prawda możemy je sobie zliczać, ale to daje wiedzę jedynie o tym o ile (stopni, obrotów a tak naprawdę kroków enkodera) obrócił się wał. Po włączeniu urządzenia nie wiadomo gdzie jest strzałka i kontroler musiałby podjechać do jakiejś znanej pozycji "na ślepo", np. zawsze na sam dół gdzie na strzałkę czekałby jakiś wyłącznik krańcowy. Dopiero po uzyskaniu tego sygnału sterownik zerowałby pozycję i zaczynał normalną pracę, np. począwszy od dojechania do ostatnio ustawionej przyciskami i zapamiętanej pozycji. Jeżeli takie zachowanie jest akceptowalne, OK, można kupić nawet jakiś enkoder o wystarczającej rozdzielczości kątowej, wmontoeać i zacząć myśleć o sterowaniu. Wadą tego rozwiązania jest także to, że w warunkach przemysłowych czasem procesory głupieją (problemy z zasilaniem, z zakłóceniami itp) i gdyby nagle coś mu odbiło i popsuł sobie licznik aktualnego położenia, to potem całe działanie byłoby błędne. Dopiero ingerencja operatora na ewidentną awarię (inne położenie wstrzałki względem tego co ustawiliśmy na wyświetlaczu) spowodowałoby restart, przejazd "zerujący" i powrót do normalnej pracy. Dużo lepszym rozwiązaniem jest enkder bezwzględny,m oddający na kilku bitach kątowe położenie wału. Tutaj jednak całkowita droga wynosząca ponad 1m wymuszałaby duże, dodatkowe koło enkdera sprzęgnięte z pasem napędowym, bo przecież urządzenia tego typu poddają położenie w ramach jednego obrotu. A 1.1m drogi linoiowej to koło pasowe o średnicy min. 35cm - trochę sporo. Jeżeli jednak to nie stanowi problemu mechanicznego, to kupujesz enkoder tzw. absolutny przynajmniej 10-bitowy i montujesz. Z jego1024 kroków dla bezpieczeństwa można wykorzystac może z 900 a wtedy rozdzielczość wyniesie 1100mm/900=1.22mm. Jeżeli to słabo, to są enkodery 11- i więcej bitowe, ale ich cena rośnie szybko.. Tu masz dwa enkodery absolutne, jeden "cyfrowy" i jeden "analogowy":

https://www.eldar.biz/sklep/enkodery/enkodery-obrotowe?rodzaj_enkodera=124

a tu dla porównania cen masz przemysłowe enkodery inkrementalne o rozdzielczości 256 imp.obrót. Ta może być mniejsza niż absolutnego, bo enkoder tego typu mógłby obracać się wiele razy na pełnej drodze strzałki:

https://www.eldar.biz/sklep/enkodery/enkodery-obrotowe?rozdzielczosc=7

Innym rozwiązaniem, być może mechanicznie lepszym niż 35cm kółko pasowe jest enkoder liniowy. Te cacka jeżdżą poa specjalnych, sztywnych taśmach magnetycznych i znów: są tanie inkrementalne pokazujące tylko o ile przesunęła się głowica i te droższe, absolutne, gdzie po prostu dostajesz informację "gdzie jestem":

https://www.eldar.biz/sklep/enkodery/enkodery-liniowe?rodzaj_enkodera=124

W zależności od rozdzielczości, typu wyjścia itp cena się zmienia, ale i tak ekonomicznie chyba wychodzi lepiej niż te obrotowe. No i trzeba pamiętać, że musisz do niego dokupić specjalnie kodowaną taśmę o odpowiedniej długości. Np. w tym sklepie z linku mają tylko do 600mm 😞 

Mozna próbować jakichś metod chałupniczych typu pomiar odległości strzałkii od jakiejś bazy,, ale te tanie czujniki nie zapewnią odpowiedniej rozdzielczości i dokładności a te droższe, np. laserowe przekraczają cenowo enkodery. Także podsumowując: musisz rozejrzeć się co by Ci pasowało jako czujnik. Reszta będzie konskwencją tego wyboru i tym się na razie nie przejmuj. Prędzej czy póxniej skończysz na jakimś Arduino, chyba że znajdziesz gotowca specjalnie do tego. Teoretycznie można by wykorzystać nawet jakieś.. termostaty , gdzie zamaiast czujnika temperatiry podłaczysz napięcie z enkodera absolutengo (z wyjściem napięciowym), ale to chyba nie zapewni ani pozycjownowania do 1/1000 zakresu ani też liczby na wyświetlaczu nie będą odpowiadały milimetrom.

Tu masz przykładowy czujnik laserowy z wyjściem liniowym (prądowym). Mają one zwykle jakąś odległość minimalną więc nie można wziąć takiego co mierzy tylko do 1m, bo do zabawy zostanie Ci z 80cm. Ten ma wystarczający zakres, ale za to powtarzalność rzędu 6-8mm a liniowość 30mm. Musiałbyś go zamontować w pobliżu któregoś koła napędowego i musiałby patrzeć na małe lusterko (kawałek blaszki) gdzieś na strzałce. Gdyby się okazało, że jego błedy są w miarę stałe i powtarzalne, to elektoronika mogłaby je korygować tak, że może dostałbyś ten 1mm dokładności pozycjonowania, ale tego z góry nie można zapewnić. W sumie 0.1% to dość wygórowane wymaganie.

https://www.conrad.pl/p/optyczny-czujnik-odlegosci-ifm-electronic-o1d102-zakres-02-35-m-18-30-vdc-507204

Każdy czujnik tego typu w zasadzie da się jakoś podłączyć do Arduino,, ale jeśłi nie jesteś elektronikiem, nie masz warsztatu ani smykałki do tego (na razie?) to musiałbyś szukać gotowych modułów interfejsu. Na pewno też są do znalezienia, ale - jak już napisałem - podstawa to wybór czujnika. 

 

Udostępnij ten post


Link to post
Share on other sites

Czytam sobie, czytam i się zastanawiam.

Bez programowania się tu nie obejdzie. Mogę sobie co prawda wyobrazić jakiś paranoidalny układ z enkoderem absolutnym i licnikami/komparatorami, ale to rozwiązanie raczej z gatunku "sztuka dla sztuki".

Co do czujników laserowych - czujniki TOF nie są dzisiaj strasznie drogie (w Botlandzie poniżej 50 PLN za 4-metrowy całkiem niegłupi czujnik), a dokładność mają wystarczającą (no, prawie... 1mm to teoria, ale 2mm to realna wartość). Pewnie byłoby to tańsze niż 11-bitowy enkoder... szczególnie że strzałka lezie powoli i można sobie pozwolić na dłuższy czas pomiaru.

A bez cyfrówki... kiedyś stosowało się selsyny, może coś w tym kierunku?

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

licznik programowalny tego nie ogarnie ?  Bo zacząłem analizować temat , pierwszy licznik nie sprostał , ale jest jeszcze taki TC Pro 482 CRD. Funkcja reset byłaby realizowana automatycznie po ustawieniu się strzałki w punkcie 0 , a odczyt z enkodera lub 2 czujników indukcyjnych z wału silnika ( odczyt z przesunięciem 90 stopni)

Edytowano przez REDMen

Udostępnij ten post


Link to post
Share on other sites

A nie możesz po prostu skontaktować się z kimś, kto zrobi program na Arduino czy inną atmegę? Jakbyś miał nawet jakieś większe piwo postawić, i tak wyjdzie taniej (i pewnie lepiej) niż bawienie się w gotowce...

Jest tu na Forum taki dział praca i coś tam...

Udostępnij ten post


Link to post
Share on other sites

ależ z przyjemnością bym to zrobił , tylko zapewne ciężko znaleźć taką osobę, nawet jak jest degustatorem piwa ...  , oczywiście stosując Twój przelicznik 🙂 za moment zamieszczę takie ogłoszenie 

Udostępnij ten post


Link to post
Share on other sites

Wiesz - na tym forum znam przynajmniej kilka osób, które taki program napiszą przed śniadaniem przy pierwszej kawie. Z tych przynajmniej kilku nie będzie chciało nawet piwa.

Btw. przelicznik jest całkiem fajny, ja go osobiście lubię i popieram, jeśli jesteś przeciwnikiem piwa to spróbuj z sokiem pomidorowym.... ale z piwem chyba wyjdzie lepiej 😉

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

jedyne czego nie lubię w piwie ...to mieszać 🙂 

Edytowano przez REDMen

Udostępnij ten post


Link to post
Share on other sites
3 godziny temu, marek1707 napisał:

Moim zdaniem, niezależnie od tego jak zostanie zrobione samo sterowanie silnikiem/stycznikami, kluczowy jest tutaj odczyt położenia. Musimy mieć informację o bezwzględnym położeniu strzałki, bo jej pozycja będzie "celem" kontrolera. Rzeczywiście, wydaje się, że najmniej zmian (w mechanice) pociągnie za sobą enkoder, ale te typowe obrotowo-impulsowe mają okropną wadę: oddają impulsy gdy oś się obraca i co prawda możemy je sobie zliczać, ale to daje wiedzę jedynie o tym o ile (stopni, obrotów a tak naprawdę kroków enkodera) obrócił się wał. Po włączeniu urządzenia nie wiadomo gdzie jest strzałka i kontroler musiałby podjechać do jakiejś znanej pozycji "na ślepo", np. zawsze na sam dół gdzie na strzałkę czekałby jakiś wyłącznik krańcowy. Dopiero po uzyskaniu tego sygnału sterownik zerowałby pozycję i zaczynał normalną pracę, np. począwszy od dojechania do ostatnio ustawionej przyciskami i zapamiętanej pozycji. Jeżeli takie zachowanie jest akceptowalne, OK, można kupić nawet jakiś enkoder o wystarczającej rozdzielczości kątowej, wmontoeać i zacząć myśleć o sterowaniu. Wadą tego rozwiązania jest także to, że w warunkach przemysłowych czasem procesory głupieją (problemy z zasilaniem, z zakłóceniami itp) i gdyby nagle coś mu odbiło i popsuł sobie licznik aktualnego położenia, to potem całe działanie byłoby błędne. Dopiero ingerencja operatora na ewidentną awarię (inne położenie wstrzałki względem tego co ustawiliśmy na wyświetlaczu) spowodowałoby restart, przejazd "zerujący" i powrót do normalnej pracy. Dużo lepszym rozwiązaniem jest enkder bezwzględny,m oddający na kilku bitach kątowe położenie wału. Tutaj jednak całkowita droga wynosząca ponad 1m wymuszałaby duże, dodatkowe koło enkdera sprzęgnięte z pasem napędowym, bo przecież urządzenia tego typu poddają położenie w ramach jednego obrotu. A 1.1m drogi linoiowej to koło pasowe o średnicy min. 35cm - trochę sporo. Jeżeli jednak to nie stanowi problemu mechanicznego, to kupujesz enkoder tzw. absolutny przynajmniej 10-bitowy i montujesz. Z jego1024 kroków dla bezpieczeństwa można wykorzystac może z 900 a wtedy rozdzielczość wyniesie 1100mm/900=1.22mm. Jeżeli to słabo, to są enkodery 11- i więcej bitowe, ale ich cena rośnie szybko.. Tu masz dwa enkodery absolutne, jeden "cyfrowy" i jeden "analogowy":

https://www.eldar.biz/sklep/enkodery/enkodery-obrotowe?rodzaj_enkodera=124

a tu dla porównania cen masz przemysłowe enkodery inkrementalne o rozdzielczości 256 imp.obrót. Ta może być mniejsza niż absolutnego, bo enkoder tego typu mógłby obracać się wiele razy na pełnej drodze strzałki:

https://www.eldar.biz/sklep/enkodery/enkodery-obrotowe?rozdzielczosc=7

Innym rozwiązaniem, być może mechanicznie lepszym niż 35cm kółko pasowe jest enkoder liniowy. Te cacka jeżdżą poa specjalnych, sztywnych taśmach magnetycznych i znów: są tanie inkrementalne pokazujące tylko o ile przesunęła się głowica i te droższe, absolutne, gdzie po prostu dostajesz informację "gdzie jestem":

https://www.eldar.biz/sklep/enkodery/enkodery-liniowe?rodzaj_enkodera=124

W zależności od rozdzielczości, typu wyjścia itp cena się zmienia, ale i tak ekonomicznie chyba wychodzi lepiej niż te obrotowe. No i trzeba pamiętać, że musisz do niego dokupić specjalnie kodowaną taśmę o odpowiedniej długości. Np. w tym sklepie z linku mają tylko do 600mm 😞 

Mozna próbować jakichś metod chałupniczych typu pomiar odległości strzałkii od jakiejś bazy,, ale te tanie czujniki nie zapewnią odpowiedniej rozdzielczości i dokładności a te droższe, np. laserowe przekraczają cenowo enkodery. Także podsumowując: musisz rozejrzeć się co by Ci pasowało jako czujnik. Reszta będzie konskwencją tego wyboru i tym się na razie nie przejmuj. Prędzej czy póxniej skończysz na jakimś Arduino, chyba że znajdziesz gotowca specjalnie do tego. Teoretycznie można by wykorzystać nawet jakieś.. termostaty , gdzie zamaiast czujnika temperatiry podłaczysz napięcie z enkodera absolutengo (z wyjściem napięciowym), ale to chyba nie zapewni ani pozycjownowania do 1/1000 zakresu ani też liczby na wyświetlaczu nie będą odpowiadały milimetrom.

Tu masz przykładowy czujnik laserowy z wyjściem liniowym (prądowym). Mają one zwykle jakąś odległość minimalną więc nie można wziąć takiego co mierzy tylko do 1m, bo do zabawy zostanie Ci z 80cm. Ten ma wystarczający zakres, ale za to powtarzalność rzędu 6-8mm a liniowość 30mm. Musiałbyś go zamontować w pobliżu któregoś koła napędowego i musiałby patrzeć na małe lusterko (kawałek blaszki) gdzieś na strzałce. Gdyby się okazało, że jego błedy są w miarę stałe i powtarzalne, to elektoronika mogłaby je korygować tak, że może dostałbyś ten 1mm dokładności pozycjonowania, ale tego z góry nie można zapewnić. W sumie 0.1% to dość wygórowane wymaganie.

https://www.conrad.pl/p/optyczny-czujnik-odlegosci-ifm-electronic-o1d102-zakres-02-35-m-18-30-vdc-507204

Każdy czujnik tego typu w zasadzie da się jakoś podłączyć do Arduino,, ale jeśłi nie jesteś elektronikiem, nie masz warsztatu ani smykałki do tego (na razie?) to musiałbyś szukać gotowych modułów interfejsu. Na pewno też są do znalezienia, ale - jak już napisałem - podstawa to wybór czujnika. 

 

Dziękuję za odpowiedź , zgadzam się z Panem w 100% W moim przypadku osiąganie pozycji "0" będzie dość cyklicznie , więc połączenie jej z resetem wydaje się dobrą opcją i takie mam założenie. Sam pomiar przynajmniej w teorii doskonale sprawdziłby się przez zrealizowanie go na duch  "czujniki" zbliżeniowe przesunięte w facie , które dokonują odczytu z wału silnika. Sama prędkość liniowa strzałki chciałem doprecyzować jest wolniejsza niż podałem  i wynosi dokładnie 1m/min. 

Udostępnij ten post


Link to post
Share on other sites

Jeśli to 1mm/minutę to czujnik TOF sprawdzi się świetnie - dla osiągnięcia maksymalnej dokładności potrzebuje 500 msec.

Udostępnij ten post


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!

Gość
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...