Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sterowanie silnikiem krokowym

karolczyzycki 10 Nov 2009 13:21 4374 9
  • #1
    karolczyzycki
    Level 20  
    Witam.
    Chciałem sterować silnikiem krokowym za pomocą AVRa, 5V (4PIN) i 12V (6PIN).
    Chyba najprościej zrobić to za pomocą układu ULN.
    Ale w nocie katalogowej widzę że ULN to chyba tylko bufor.
    Skoro tak, to na wyjściu AVR pojawi się tylko 5V więc mogę do tego podłączyć tylko silnik na 5V.
    A co w przypadku silnika 12V? można użyć też ULNa czy lepiej BUZ11 czy BUZ10?
  • #2
    Czybyszew
    Level 20  
    To niech kolega przeczyta datasheet'a jeszcze raz.
    Nie bufor tylko driver do silników krokowych, który składa się z siedmiu darlingtonów.
    Pojedyncze wejście wygląda tak:
    Sterowanie silnikiem krokowym

    Wiec jeśli na wejściu ( z AVR'a ) pojawi się stan wysoki to na wyjściu stan niski.
    Sterowanie zaś silnika krokowego wyglądać może tak:

    Sterowanie silnikiem krokowym
  • #4
    karolczyzycki
    Level 20  
    W silniku 12V mam osobne złącze na zasilanie... Więc mogę zastosować schemat wyżej.
    Ale co w przypadku silnika na 5V (4PIN) tam nie mam wejścia na zasilanie, wystarczy tylko podłączenie tego 5V do COMMON?
    Silnik 5V(4PIN) nie potrzebuje zasilania między uzwojeniami?
  • #5
    Czybyszew
    Level 20  
    PiotrPitucha
    Dioda Zenera nie jest konieczna, jest po to by (cytat z artykułu z którego zaczerpnąłem schemat):
    "The clamp circuit shown does not connect the clamp directly to the supply voltage. Instead, it uses a zener diode. This ensures that the decaying current in the coils are not abruptly cut off, which produces a lot of heat."

    karolczyzycki
    Widzę, że kolega ma blade pojęcie o silnikach krokowych więc radzę zacząć od poczytania na ten temat tutaj
  • #6
    karolczyzycki
    Level 20  
    Sprawdziłem że mój silnik to silnik unipolarny. Ma 2 przewody zasilania i 4 sterowania.
    Podłączyłem go, ale nie potrafię nim sterować.
    W programie używałem juz różnych kombinacji "0" i "1".
    Można wyczuć pojedyńcze skoki, ale w różnych kierunkach i to dopiero jak się troszkę ruszy oś silnika, dalekie jest to od kręcenia...
    Czy do sterowania takim silnikiem mogę korzystać z tej tabeli?
    Sterowanie silnikiem krokowym
    Chyba ze z kodem coś nie tak, ale chyba prościej już nie można.
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    Config Portb = Output
    Dim T As Integer
    T = 20
    
    Do
       Portb = &B00000001
       Waitms T
       Portb = &B00000010
       Waitms T
       Portb = &B00000100
       Waitms T
       Portb = &B00001000
       Waitms T
    Loop

    End
  • #7
    landy13
    Level 31  
    Zamień przewody na jednym z uzwojeń.
  • #8
    karolczyzycki
    Level 20  
    A dokładniej?
    Zamienić kolejność? to chyba ma znaczenie które...
  • #9
    landy13
    Level 31  
    Skrajne. Odczep środkowy zostawiasz tak jak jest - do zasilania. Zamieniasz przewody skrajne. Tylko przy jednym uzwojeniu!
  • #10
    janbernat
    Level 38  
    I od razu sterowanie półkrokowe:
    0001
    0011
    0010
    0110
    0100
    1100
    1000
    1001
    Silnik chodzi płynniej i dwa razy wolniej.
    Ale przy takim sterowaniu wystarczy waitms zmniejszyć i będzie chodził tak samo szybko.
    Ale to tylko dla silnika z 6 wyprowadzeniami na 12V.
    Czyli dla unipolarnego.
    P.S.
    Czy sprawdziłeś że do waitms można wstawić zmienną T?
    Wydaje mi się że tylko wartość liczbową.
    Ale nie dam za to sobie uciąć.
    P.S.2
    Chyba można.