Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Drukarka 3D Prusa I3 Rework - "Skaczący" serwomechanizm

karol1996 22 Apr 2016 22:39 2874 16
  • #1
    karol1996
    Level 19  
    Witam
    Od jakiegoś czasu mam drukarkę 3d. Ostatnio jej funkcjonalność rozszerzyłem o tzw. Auto Bed Leveling. Ramię, na którym zamontowany jest próbnik (micro switch) zamontowane jest do modelarskiego serwomechanizmu Tower Pro SG92R. Problemem jest cały czas skaczące serwo. (Widać, jak ramię cały czas przesuwa się w prawo i w lewo o ok. 5°. Wraz z tymi ruchami przygasa wyświetlacz.
    Przewody od serwa biegną tuż przy przewodach zasilających wentylator (sygnał PWM). Nie wiem, czy to może mieć znaczenie. Serwo skacze także, gdy wentylator jest wyłączony.
    Dołączam filmik prezentujący to zjawisko.


    Pozdrawiam,
    Karol
  • #2
    TvWidget
    Level 36  
    W pewnym urządzeniu zastosowałem płytkę MKS GEN V1.1 przewidzianą do drukarki 3D z oprogramowaniem "Marlin". Dwa podłączone serwomechanizmy TG9 drożą głównie gdy kręcą się silniki krokowe. Wcześniej uznałem, że przyczyną są zakłócenia. Po tym co napisałeś nie jestem już tego pewien. Przy okazji podłączę oscyloskop i zbadam to zjawisko dokładniej.

    Serwo gdy się obraca pobiera dość duży prąd. Przygasanie wyświetlacza może wskazywać na zbyt małą wydajność stabilizatora 5V. Czy jeśli odłączysz serwo to wyświetlacz też przygasa ?
  • #3
    karol1996
    Level 19  
    Witam
    Oczywiście gdy silnik się kręcą, to serwo skacze mocniej. Ale także gdy wszystko jest wyłączone (zasilacz przestaje dawać 12V) to serwo też głupieje. 5V na logikę nie idzie przez stabilizator, lecz jest bezpośredno podane z ATX'a (poprzez gniazdo USB w Arduino.)
    Gdy serwo jest niepodłączone, to wszystko jest ok. (Tylko podczas nagrzewania stołu wyświetlacz MINIMALNIE przygasa.)
    Skoki są najbardziej nasilone, gdy oś Z się opuszcza (podczas pomiarów).

    Pozdrawiam,
    Karol
  • #4
    kotbury
    Gantry automation specialist
    Zasil próbnie serwo z zewnętrznego zasilacza 5V i co najmniej 1A (minusy na czarnym kablu serwa podłącz razem, czerwony kabel z serwa do plusa zasilacza, żółty do sterownika drukarki). Serwo jest micro ale swoje 0,5A bierze.
    Stabilność napięcia +5V (a raczej obecność nieodfiltrowanych szpil itp) z ATXa też może pozostawiać sporo do życzenia - a na to akurat serwa - pracujące przeważnie za superstabilnym zasilaniu akumulatorowym - są wrażliwe.
    Jeśli to nie to to może coś z oprogramowaniem - sygnał sterujący PWM do serwa jest o niskiej częstotliwości (50 Hz- góra 400) i nie jakiś specjalnie superniskoprądowy - czyli zakłócenia od wentylatorów itp raczej nie zakłócałby sterowania serwa.
  • #5
    karol1996
    Level 19  
    Witam
    Oczywiście spróbuję podłączyć zewnętrzny zasilacz.
    Ale co do nieodfiltrowanego napięcia, to przecież z tych 5V normalnie zasilana jest cała logika w komputerze, a ta jest bardzo czuła na zakłucenia i "szpile" (5V idzie po fioletowym przewodzie). Po weekendzie spróbuję wymienić w zasilaczu kondensatory po stronie wtórnej na takie przeznaczone do wysokich częstotliwości.
    A może Kolega rozwinąć myśl z tym "coś z oprogramowaniem", bo nie do końca rozumiem co mogłoby być nie tak... W Marlinie, zgodnie z instrukcjami, aktywowałem tyko te linie kodu, które odpowiadają za auto bed leveling, oraz zmieniałem wartości kątów pracy serwa oraz offset pomiędzy switchem a dyszą.
    Wzmożone drganie ramienia podczas opuszczania się osi Z czasem skutecznie uniemożliwia wykonanie poprawnych pomiarów wysokości stołu.
    Mogę jeszcze podłączyć oscyloskop na linię 5V zasilającą serwo i zobaczyć jak to napięcie wygląda.
    Podłączę jeszcze serwo do tzw. testera serw i zobaczę jak się zachowuje całkowicie poza drukarką.

    Pozdrawiam,
    Karol
  • #6
    kotbury
    Gantry automation specialist
    Nie mam pojęcia o Marline ( na programowaniu zatrzymałem się na Borland Pascalu) ale o serwach nieco wiem. Serwo reaguje na powtarzające się co ok 20 ms impulsy + 5 V o długości od 1 do 2 ms ( odpowiednio maks wychylenie w jedną lub drugą stronę). Serwo nie ma żadnego mechanizmu korekcji błędów ani aproksymacji. Impulsy muszą dokładnie mieć długość przewidzianą standardem i być powtarzalne. Wystarczą 1 albo 2 długie ( np przez niedokończoną iterację w pętli programu) i serwo szarpie na maksa w którąś stronę ( a mikroserwa są szybkie i w ciągu kilkudziesięciu milisekund mogą sporo podjechać).
    Może serwo niekoniecznie sprawne - Tower Pro to raczej niska półka cenowa - sam mam 3 tej firmy (tylko mocne MG 995 - kierują modelami terenowymi) i każde działa inaczej.... Podobne do twojego mikroserwa np Hitec HS55 kosztują 3x więcej.
  • #7
    TvWidget
    Level 36  
    kotbury wrote:
    ale o serwach nieco wiem.

    W tej maszynie o jakiej wspomniałem na próbę zastosowałem najtańsze serwa TG9. Wszytko działa chciałem je więc teraz zamienić na inne lepsze.
    Nie jest mi potrzebny duży moment obrotowy ani duża prędkość. Precyzja i cena też nie są ważne. Istotna jest tylko cicha praca i trwałość. Czy może znasz jakiś inny typ serwa o tej samej wielkości co TG9 spełniający te wymagania ?
  • #8
    karol1996
    Level 19  
    Witam
    Dzisiaj otworzyłem serwo, i stwierdziłem wytarte zęby na przedostatnim kole zębatym. Nie wiem, czy to może mieć wpływ na takie jego zachowanie.
    Zaznaczę, że serwo kupiłem nowe. Koła zębate są plastikowe.
    Nie wydaje mi się, aby w programie były jakieś błędy, ponieważ u autora filmów, na których się wzorowałem podczas robienia bed levelingu, wszystko było ok (serwo nie skakało).
    To co należy zrobić, aby serwo się uspokoiło?

    Pozdrawiam,
    Karol
  • #9
    kotbury
    Gantry automation specialist
    Miałoby wpływ jakby przy próbie pokręcenia za orczyk przeskakiwało - ale jak wytarte zęby to już do wymiany - może wytarte właśnie przez tą ciągłą pracę - dygot na dużej dźwigni.
    Jak nasz możliwość - sprawdź na oscyloskopie sygnał dochodzący do serwa - a na testerze (albo na zdalnym sterowaniu u znajomego modelarza bądź znajomego bogatego dziecka z samochodzikiem RC) samo serwo - wtedy będzie jasnośc gdzie jest usterka.

    Do TvWidget
    No właśnie cicha praca i trwałość to troszkę w serwach sprzeczne (poza tym dla b. małych sił serwa z przekładniami nylonowymi także będą trwałe) - serwa b. trwałe mają metalowe przekładnie (i główne łożysko kulkoe) ale są głośniejsze od serw z nylonowymi kółkami.
    Oferta serw jest w każdym większym sklepie modelarskim
    Zobacz np. tutaj: http://www.emodel.pl/serwa-hitec-c-4_27?page=2
    W dziale Hitec są serwa mikro z metalowymi zębatkami (z dopiskiem MG) - np. HS-65 MG albo HS-81MG, są tez - wytrzymalsze od nylonowych ale powiedzmy plastikowe - serwa z zębatkami węglowymi - np HS 65HB.
    Sam używam w depronowcach stareńkich (ale jeszcze są w ofercie - kiedyś właściwie innych oprócz tych w rozsądnej cenie nie dao się kupić) Hitec HS-55 - i kilka ładnych lat już działają.
    Może koledzy siedzący głęboko w lekkich modelach jeszcze coś podpowiedzą...
  • #10
    TvWidget
    Level 36  
    Zastosowałem prymitywny filtr LC (BLM 220Ω/22uF) na zasilaniu 5V i filtr RC (200Ω/10n) na wejściu impulsów. Drgania się wyraźnie zmniejszyły ale są nadal.
  • #11
    kotbury
    Gantry automation specialist
    Dołóż jeszcze po filtrze na zasilaniu konkretny kondensator wygładzający - jakieś 1000 mF, a filtr RC na sygnale może i zadziała w razie szpilek ale fałszuje ci też nieco ustawienie w czasie impulsów sterujących - opóźnia je o "zbocze" narzucone przez zestaw RC ale ogólny czas impulsu pozostaje mniej więcej taki jak przed filtrem (chyba że wyliczanie odległości od stolika działa względnie i istotne jest stabilne utrzymanie serwa a nie dokładny dystans - to już zależy od algorytmu).
    No i może jednak sprawdzić czy serwo dobre oraz co faktycznie dostaje ze sterowania...
  • #12
    karol1996
    Level 19  
    Witam
    Dzisiaj wykonałem szereg testów i pomiarów.
    Po pierwsze podłączyłem serwo do testera serw (zasilone ze stabilizowanego zasilacza laboratoryjnego). Jednocześnie podłączyłem oscyloskop do przewodu sygnałowego. Serwo pracowało dobrze, na trybie ręcznym jak i automatycznym ("wycieraczka"). Sygnały sterujące były ok.
    Następnie podłączyłem serwo spowrotem do drukarki, 5V na logikę drukarki podałem z tego samego zasilacza laboratoryjnego. Niestety serwo nadal drżało. Ponownie podłączyłem oscyloskop do przewodu sygnałowego, i okazało się, że impulsy sterujące są zniekształcone. Następnie podłączyłem oscyloskop do linii zasilającej logikę (+5V) Mimo, iż zasilacz jest liniowy (nie impulsowy) to napięcie zasilające było "pocięte"
    Załączam filmik prezentujący przebieg sygnału sterującego serwem oraz zmiany prądu na zasilaczu.

    W momencie gdy przytrzymałem ramię, to sygnał się uspokoił (widoczne na fimie).
  • #13
    kotbury
    Gantry automation specialist
    Wychodzi że pobory prądu serwa i sterowania drukarki zakłócają się wzajemnie - jednak cały czas wszystko łącznie zasilasz z jednego zasilacza - może on nie wyrabia ze stabilizacją zasilania dwóch obiorników a każdy o impulsowym poborze prądu....
    Jeśli nie chcesz włazic w skomplikowane analizy co zakłóca co to omiń problem i zrób to co proponowałem na początku - tzn zasil serwo z całkiem osobnego zasilacza o sporej mocy - 2-3 A / 5V a nawet 6V (serwo może chodzic do 6.3V a im wyższe napięcie zasilania tym większa prędkość działania i siła).
    Jeśli na filmiku ten pierwszy skokowo zmieniający poziom oscylogram to sterowanie ( w zasadzie te skoki nie powinny przeszkadzać serwu bo dla serwa teoretycznie ważna jest długość impulsu a poziom aby się mieścił w zakresie napięć podanych w opisie serwa - ale widać może jest inaczej) to drugie obejście problemu to użycie klucza tranzystorowego do pracującego kolektorem na pełnym napięciu zasilania - powinien zregenerować sygnał. Z drugiej strony jeśli to właśnie napięcie zasilania tak skacze to i tak klucz nic nie da i wracamy do pierwszej propozycji czyli załatwienie osobnego zasilania serwa.
  • #14
    karol1996
    Level 19  
    Witam
    Wykonałem jeszcze jeden test. Sterowanie serwa dałem z drukarki, a zasilanie z zewnątrz. W takim układzie było ok.
    Sprawdziłem, że zasilanie serwa nie idzie bezpośrednio (pomiędzy "+" zasilania Arduino a pinem zasilającym serwo jest 20MΩ).
    Sprawdzę jeszcze jak się serwo będzie zachowywać na zewnętrznym zasilaczu w momencie gdy będą włączone obwody wysokoprądowe (drganie serwa wzmaga się, gdy pracują silniki)
    Myślę, aby podłączyć zasilanie serwa bezpośrednio do ATX'a (z pominięciem Arduino).

    Pozdrawiam,
    Karol
  • #15
    kotbury
    Gantry automation specialist
    Bym Ci jeszcze doradził cobyś nie podpinał serwa do zasilacza ATX tylko zostawił osobny zasilacz na serwie - ATX to jest prymitywna impulsówka właściwie bez wygładzania i filtracji napięć - o ile 12 V idzie jako tako to już 5 V a zwłaszcza 3,3 V to koszmar (pooglądaj schematy zasilaczy ATX - po trafie na odczepach są tylko dwudiodowe powiedzmy mostki prostownicze, potem mikry kondziołek 100 mF i poszło). Jak masz nieco czasu i odrobinkę szmalu (tzn 70 zł) to wyszukaj serwo reklamowane jako "cyfrowe" - takowe mają procesor w obwodzie dekodera i nie powinny być aż tak czułe na piki na zasilaniu.

    Quote:
    Sprawdziłem, że zasilanie serwa nie idzie bezpośrednio (pomiędzy "+" zasilania Arduino a pinem zasilającym serwo jest 20MΩ)

    Chyba omów? - jakby było w megaomach to prąd byłby w mikroamperach.... :)

    PS. i jeszcze raz - jeśli to ma działać i zarabiać to nie eksperymentuj tylko wsadź na serwo osobny zasilacz i nie trać czasu.
  • #16
    paula9jeden
    Level 12  
    Ewidentnie zasilacz jest za słaby. Zmień zasilacz na jakiś serwerowy albo jeśli elektronika drukarki jest kompatybilna to przejdź na 24V. Miałam ten sam problem, bo miałam stół z bardzo mocną grzałką (brał 17A przy 12V), upaliłam 2 zasilacze atx, a od kiedy kupiłam serwerowy 12V 50A nie mam problemów i zapas mocy spory.
  • #17
    karol1996
    Level 19  
    Witam
    Zgodnie z tym, co pisałem wcześniej, wynika że nie jest to kwestia zasilacza. Gdy zasilanie całego Arduino było z OSOBNEGO zasilacza, to serwo też drżało.
    Problem z bed leveling'iem zamierzam rozwiązać inaczej - założyć czujnik pojemnościowy.

    Pozdrawiam,
    Karol