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

Silnik krokowy - nie działa sterowanie półkrokowe

15 Lip 2011 19:55 2874 12
  • Poziom 10  
    Witam,
    Posiadam silnik krokowy jak na zdjęciu
    Silnik krokowy - nie działa sterowanie półkrokowe
    Silnik wymontowany z drukarki nieznanej marki.
    Znalazłem datasheet http://www.nipponpulse.com/catalog/document/4b9f7bf300216_pf42.pdf
    Podczas sterowania jednofazowego i dwufazowego wszystko jest okej. Kiedy napisałem sterowanie półkrokowe to półkroki nie są w zasadzie wykonywane. Jeśli zasilam z 12V to tak jakby silnik próbuje wykonać ten kroczek, wał drgnie i minimalnie się przemieści ale jest to może 1/5 kroku. Dzieje się tak tylko podczas kilku pierwszych kroków. Potem tego już nawet nie widać. Jeśli złapie palcami za wirnik i przyłożę moment zgodny z kierunkiem obrotu wału to z lekką pomocą wał wykonuje tzw. pół kroku. Tzw ponieważ jest to może 1/3 a pozostałe 2/3 wykonuje się gdy zostaną zasilone ponownie dwa uzwojenia.
    Czy może być taka opcja budowy silnika unipolarnego że nie można zastosować sterowania półkrokowego? Czy może należy jeszcze bardziej zwiększyć napięcie bo przy większym kroki są wykonywane bardziej zdecydowanie. Patrząc na datasheet maksymalne napięcie to 12V a tryb pobudzenia to sterowanie pełnokrokowe.
    Miał ktoś podobną sytuację i czy naprawde sterowanie półkrokowe nie zadziała?
  • IGE-XAO
  • Poziom 38  
    Pobudzanie to można zrobić jak się chce- mikrokroki też.
    Jest tak:
    A-B-C-D jednofazowe (pełnokrokowe)
    albo AB-BC-CD-AD dwufazowe
    albo A-AB-B-BC-C-CD-D-AD półkrokowe.
    Te uwagi z DS dotyczą tylko tego że pomiary były wykonywane przy takim sterowaniu.
    Może coś poplątałeś ze sterowaniem półkrokowym w programie.
  • IGE-XAO
  • Poziom 10  
    W programie nie jest nic poplątane.

    Code:

    ;  STEROWANIE PÓŁKROKOWE
    Main:
       ldi   R16, 0b1111_1010
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_0010
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_0110
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_0100
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_0101
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_0001
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_1001
       out   PORTB, R16
       rcall   Czekaj

       ldi   R16, 0b1111_1000
       out   PORTB, R16
       rcall   Czekaj

       rjmp Main

    Stan wysoki podawany na PB0...3.
    Skoro program jest okej to coś z silnikiem musi być nie tak. Po prostu jak przechodzi do zasilania tylko jednego uzwojenia to nie ma kroku (pół kroku). Jak przejdzie na zasialanie dwóch uzwojeń to wtedy wykonuje cały krok. Przy sterowaniu jednofazowym jest okej.
  • Poziom 38  
    Jakbyś podał kod sterowania jednofazowego to może bym zdekodował połączenia faz silnika.
    Pod warunkiem że połączenie jest takie samo.
  • Poziom 17  
    Steruj całym krokiem, bo może on nie ma sterowania półkrokowego, albo jest zwalony.
  • Poziom 38  
    adiabel- bzdury piszesz i wpuszczasz marek.mm w maliny.
    Skoro chodzi w trybie pełnokrokowym to nie jest zwalony.
    Każdy silnik krokowy da się sterować w trybie półkrokowym.
  • Poziom 21  
    A jaki masz schemat elektryczny sterownia silnikiem?
    Skoro na jednym uzwojeniu nie daje rady a na dwóch tak to może za mało prądu dostaje na jedno uzwojenie?
    Kolejna sprawa to jaka częstotliwość impulsów? Im wyższa tym wyższe napięcie potrzebne.
  • Poziom 17  
    Janbernat ma rację.Nie przemyślałem tej odpowiedzi. Przepraszam.
  • Poziom 10  
    Kod sterowania jednofazowego jest taki sam jak podany przezemnie tylko brakuje sekwencji z podaniem '1' na dwie linie. Podłaczenie do silnika na pewno jest prawidłowe.
    Schemat elektryczny według rysunku 10b http://www.edw.com.pl/pdf/k01/79_22.pdf
    Na jednym uzwojeniu daje rade ale tylko podczas pracy na tylko jednym uzwojeniu. Przy przełaczaniu między jednym uzwojeniem a dwoma nie daje rady.
    Maksymalne napięcie jakie moge dać to 12V. Tyle też pokazuje datasheet silnika.
    A częstotliwość to przy sterowaniu jednofazowym waity trwały minimalnie 25 us a przy dwufazowym 14 us przy zasilaniu 12 V więc wychodzi odpowiednio 40kHz i 72 kHz. Oczywiście moment był bardzo słaby.
  • Poziom 38  
    Koniecznie zmniejsz wait- ten silnik tak szybko nie da rady się kręcić.
    Nie us a raczej ms.
  • Poziom 10  
    Racja chodzi o ms w podprogramie Czekaj. Ale nawet z opoźnieniem 1s praca półkrokowa nie działa.
  • Poziom 38  
    Pomyśl logicznie.
    1.Silnik się kręcił przy sterowaniu jednofazowym- czyli pełnokrokowym- zasilanie było
    podawane kolejno na jedno z dwóch uzwojeń w cyklu 4 kroki.
    2. Silnik się kręcił przy sterowaniu dwufazowym- czyli zasilanie było podawane na dwa
    uzwojenia naraz.
    3. Silnik się nie kręci przy sterowaniu półkrokowym- czyli kombinacji sterowania jedno i
    dwufazowego.
    4. Coś jest skopane w programie.
    5. Co można znaleźć tylko wtedy gdy wie się jak silnik był podłączony w pkt. 1 i 2.
    6. Można to sprawdzić mając zwykłe cztery przełączniki i sprawdzająć palcami w którą stronę silnik się obrócił.
  • Poziom 30  
    Jeżeli sterujesz jako unipolarny to kolejność dla półkroku powinna być taka:
    abcd
    1 - 1000
    2 - 1100
    3 - 0100
    4 - 0110
    5 - 0010
    6 - 0011
    7 - 0001
    8 - 1001

    Ja bym najpierw podłączył + do silnika i podawał masę po kolei na fazy silnika aby upewnić się że mam właściwą kolejność faz (czy kręci się np. w prawo), dopiero potem podłączył do portów procka we właściwej kolejności i powinno działać. Przy takim sprawdzaniu dobrze by było czymś "zahamować" oś silnika aby nie było przeskoków z powodu bezwładności.