Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ARDUINO UNO/DUE] - Układ nadążny - silnik DC PWM + enkoder -> silnik krokowy

klami85 14 Lis 2013 11:51 4080 4
  • #1 14 Lis 2013 11:51
    klami85
    Poziom 8  

    Witam,

    Przepraszam za przydługi wstęp, ale jest konieczny.
    Jeżeli komuś nie chce się czytać całości to główne pytanie brzmi:
    W jaki sposób podłączyć do wejść w arduino sygnał cyfrowy PWM o napięciu 40v?

    Przerabiam ploter solwentowy na ploter typu flatbed.
    Założenie jest takie, żeby po modyfikacji zespół drukujący przesuwał się nad nieruchomym stołem, na którym leżą media do zadruku, a nie tak jak jest fabrycznie, czyli media przesuwające się pod głowicą drukującą. (jak w zwykłej drukarce).

    Proszę o pomoc w wyborze optymalnego rozwiązania sterowania napędem opartego o arduino uno lub due.

    Wstęp, czyli jak to jest rozwiązane fabrycznie.
    Fabrycznie za przesuw mediów pod głowicą drukującą odpowiada silnik DC 40V, sterowany przez PWM. Jako sprzężenie zwrotne jest zastosowany enkoder kwadraturowy. Silnik jest połączony przy pomocy przekładni pasowej do wałka. Do wałka dociskane są media (np. papier) Obrót wałka powoduje przesuw mediów.

    Po modyfikacjach:
    Po wykonaniu modyfikacji przesuw zespołu drukującego nad stołem jest realizowany przy pomocy śruby kulowej oraz wałków liniowych.
    Silnik jest podpięty do śruby kulowej. Obrót śruby powoduje przesuw zespołu drukującego.

    Niestety okazało się, że fabryczny silnik jest zbyt słaby, żeby temu podołać, więc muszę zastosować mocniejszy.

    Tutaj pojawiają się problemy:
    Nie mogę zwyczajnie podłączyć mocniejszego silnika pod istniejącą płytę główną plotera bo ta tego nie wytrzyma. Modyfikacja samej płyty nie wchodzi w grę. (Wyższa szkoła jazdy).

    Wymyśliłem, że zastosuje taki trik.
    Pozostawię istniejący silnik podpięty do plotera.
    Silnik ten będzie pracował bez obciążenia. Do silnika będzie podpięty tylko enkoder kwadraturowy.

    Sygnał z enkodera kwadraturowego wyślę najpierw do arduino, a później z powrotem do plotera. W ten sposób ploter będzie myślał, że pracuje w fabrycznej konfiguracji, a ja zyskam sygnał sterujący.

    Na podstawie odczytów z enkodera (po ich odpowiednim przeliczeniu na ilość kroków dla silnika krokowego) zrealizuję układ nadążny, który będzie sterował silnikiem krokowym podpiętym do śruby napędowej.

    Wykonałem prototyp takiego układu. Działa.
    Pytanie - jak rozwiązać to inaczej, lepiej?
    Najlepiej byłoby całkiem wywalić zbędny fabryczny silnik, a enkoder podpiąć pod nowy silnik krokowy.
    Tylko, że wtedy z napięcia DC 40v PWM trzeba jakoś wyodrębnić sam sygnał PWM, zaś napięcie dopasować tak, żeby można to podpiąć pod arduino.
    Czyli potrzebny by był konwerter poziomów logicznych 40v/5v. Dobrze kombinuje?
    Wszelkie sugestie mile widziane.

    0 4
  • #2 14 Lis 2013 16:18
    atom1477
    Poziom 43  

    Jeżeli silnik był sterowany przez PWM, i nie ma tam żadnych filtrów, to masz tam nie 40VDC z nałożonym PWMem ale sam PWM. Więc nie trzeba go jakoś specjalnie wyciągać bo on tam już jest bezpośrednio.
    Problemem będzie pewnie tylko to że są dwa kierunki obrotów.
    Ja bym się więc podpiął pod sygnały PWMów dostępne na płycie głównej (będą miały np. 12V i będą dwa osobne dla każdego kierunku obrotów).

    0
  • #3 14 Lis 2013 19:10
    klami85
    Poziom 8  

    Dziękuje za zainteresowanie tematem.
    Silnik ma tylko 2 wyprowadzenia. Dociera do niego 42V.
    Oczywiście lepiej byłoby się wpiąć gdzieś w płytę główną, tak jak proponujesz.
    Problem polega na tym, że ta płyta jest dość skomplikowana (jak na moje umiejętności). Schematy do niej są nieosiągalne, więc to podpada pod inżynierię wsteczną. Dlatego też wcześniej rozwiązałem ten problem podpinając się pod enkoder kwadraturowy co było banalne.

    0
  • Pomocny post
    #4 14 Lis 2013 21:26
    atom1477
    Poziom 43  

    Podpadanie pod inżynierię wsteczną to nic złego.
    Jeżeli jednak dalej nie chcesz to możesz dać prosty filtr (nawet RC) i mierzyć na nim napięcie (stałe).
    Chodzi mi o takie proste obciążenie tego sterownika PWM.
    Czyli np. rezystor 1k/2W i do niego z dwóch stron podłączone rezystory np. 10k idące na dwa kondensatory 1uF drugimi końcami podłączone do GND.
    Na rezystorze 1k powinieneś mieć ładny PWM.
    A pomiędzy kondensatorami wyfiltrowane napięcie stałe proporcjonalne do wypełnienia PWMa.
    Polaryzacja napięcia proporcjonalna do polaryzacji napięcia PWM.
    Dajesz to napięcie na wzmacniacz różnicowy (bo napięcie jest różnicowe) a wyjście (które już będzie typu single-ended) na wejście ADCka w Arduino. Oczywiście wraz z przesunięciem składowej stałej do np. 2,5V i z zabezpieczeniem przed przekroczeniem zakresu GND...VCC.

    0
  • #5 14 Lis 2013 23:00
    klami85
    Poziom 8  

    To rozwiązanie wydaje się mieć sens.
    Muszę to tylko przeliczyć i dobrać odpowiednie RC.
    Dzięki wielkie.

    0