Aktualizacja (17 / 02 / 2025): Posiadamy duży zapas wszystkich naszych produktów, znajdziesz nas również w i    Kup teraz

Podłącz różne silniki do swojego SBC

W tym samouczku zobaczymy, jak podłączyć najpopularniejsze typy silników do SBC. Na kilku przykładach pokażemy Ci również, jak sobie z nimi radzić. Najczęstsze typy silników to:

  • Silniki prądu stałego są tanie i łatwe w sterowaniu, potrzebne jest tylko jedno wyjście zasilania, które można aktywować sygnałem PWM.

  • Serwosilniki są podobne do silników prądu stałego, ale zawierają małą elektronikę i wewnętrzny potencjometr tworzący zamkniętą pętlę sterowania, co pozwala kontrolować kąt obrotu. Sterowanie odbywa się również przez PWM, ale w tym przypadku sygnał sterujący ma małą moc, a stopień mocy jest zintegrowany w samym serwomotorze.

  • Silniki krokowe mają kilka uzwojeń i wymagają sterowania sekwencją, ale w zamian zapewniają dużą precyzję, ponieważ przesuwają się krok po kroku za każdym razem, gdy polaryzacja ich uzwojeń jest odwrócona.

1. Silniki prądu stałego

Aby sterować silnikiem prądu stałego, podłączymy go do SBC, jak pokazano na poniższym schemacie:

Będziemy musieli znać niektóre parametry naszego silnika, w szczególności związek między przyłożonymi woltami a prędkością silnika lub Kv.

Klasa Dc_Motor reprezentuje silnik prądu stałego, sterowany przez PWM przy 50 Hz. Jak widać, należy podać pewne parametry, takie jak napięcie zasilania i stała Kv, a także pin, który ma być użyty. W zamian otrzymujemy dwie funkcje: set_voltage i set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
klasa Silnik prądu stałego: FREQ_Hz = 50
    def __init__( samego siebie, szpilka, vm, kv ):
        samego siebie.vm = vm
        samego siebie.kv = kv
        samego siebie.sosna = sosna
        samego siebie.niepewność = Sbc.Dout()
        samego siebie.niepewność.set_pwm( samego siebie.Szpilka, samego siebie.FREQ_Hz, 0 )
        samego siebie.ustaw_napięcie( 0 )
    
    def ustawione_napięcie( samego siebie, v ): puls_procent_włączony = 100 *v/samego siebie.vm
        samego siebie.niepewność.set_pwm( samego siebie.Szpilka, samego siebie.FREQ_Hz, 100-puls_procent_włączony )
    
    def Ustaw prędkość( samego siebie, obr/min ):
        samego siebie.ustawione_napięcie (rpm/samego siebie.kv)

Przykładem użycia może być:

>>> czas importu
>>> importuj sbc_mtr
>>> silnik = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> print( "Kontrola napięcia" )
Kontrola napięcia
>>> nap.silnika( 6 )
>>> czas.sen( 1 )
>>> nap.silnika( 0 )
>>> print( "Kontrola prędkości" )
Kontrola prędkości
>>> motor.set_speed( 100 )
>>> czas.sen( 1 )
>>> motor.set_speed( 0 )

2. Serwosilniki

Serwomotor wykorzystuje pojedynczy pin sterujący do sterowania kątem obrotu silnika.

 Kod klasy Servo_Motor:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
klasa Siłownik: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( samego siebie, szpilka ):
        samego siebie.sosna = sosna
        samego siebie.niepewność = Sbc.Dout()
        samego siebie.niepewność.set_pwm( samego siebie.Szpilka, samego siebie.FREQ_Hz, 0 )
        
    def ustawiony_kąt( samego siebie, kąt_stopnia ): obowiązek_ms = samego siebie.DUTY_MIN_ms + (samego siebie.DUTY_MAX_ms-samego siebie.DUTY_MIN_ms)*kąt_stopnia/ 180
        puls_procent_włączony = samego siebie.CZĘSTOTLIWOŚĆ_Hz*obowiązek_ms/ 10
        samego siebie.niepewność.set_pwm( samego siebie.Szpilka, samego siebie.FREQ_Hz, 100-puls_procent_włączony )

I jeden przykład użycia:

>>> czas importu
>>> importuj sbc_mtr
>>> silnik = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print( "Ustaw kąt na 90 stopni" )
Ustaw kąt na 90 stopni
>>> motor.set_angle( 90 )
>>> czas.sen( 1 )
>>> print( "Ustaw kąt na 0 stopni" )
Ustaw kąt na 0 stopni
>>> motor.set_angle( 0 )

3. Silniki krokowe

Aby podłączyć silnik krokowy, zastosujemy schemat podobny do tego na rysunku:

Kod klasy Stepper_Motor jest w zasadzie maszyną stanów, która implementuje powyższą tabelę.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
klasa Silnik krokowy:
   
    def __init__( samego siebie, szpilki ):
        samego siebie.kołki = kołki
        samego siebie.niepewność = Sbc.Dout()
        samego siebie.były = 0
        samego siebie.kroki = 0
        samego siebie.reż = 1
        samego siebie.Timer = maszyna.Regulator czasowy( -1 )
    
    def krok( samego siebie, kierunek ):
        if( samego siebie.były == 0 ):
            samego siebie.niepewność.pisać( samego siebie.szpilki0], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki1], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki2], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki3], 0 )
        Elif( samego siebie.były == 1 ):
            samego siebie.niepewność.pisać( samego siebie.szpilki0], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki1], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki2], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki3], 0 )
        Elif( samego siebie.były == 2 ):
            samego siebie.niepewność.pisać( samego siebie.szpilki0], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki1], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki2], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki3], 1 )
        Elif( samego siebie.były == 3 ):
            samego siebie.niepewność.pisać( samego siebie.szpilki0], 1 )
            samego siebie.niepewność.pisać( samego siebie.szpilki1], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki2], 0 )
            samego siebie.niepewność.pisać( samego siebie.szpilki3], 1 )
        samego siebie.kroki += kierunek
        samego siebie.były = (samego siebie.były + kierunek) & 0x03
    
    def Ustaw prędkość( samego siebie, kroki_s, kierunek ):
        if( kroki_s i kierunek ):
            samego siebie.Timer.początek( okres=int(1000 /kroki_s), tryb=maszyna.Regulator czasowy.OKRESOWE, oddzwonienie=lambda TMR: samego siebie.krok (kierunek) )
        więcej:
            samego siebie.Timer.deinicja()

Na koniec przykład użycia:

>>> czas importu
>>> importuj sbc_mtr
>>> motor = sbc_mtr.Stepper_Motor( ["WYJ1", "WYJ2", "WYJ3", "WYJ4"] )
>>> print( "Krok po kroku" )
Krok po kroku
>>> dla i w zakresie( 100 ):
...silnik.krok( 1 )
... czas.sleep_ms( 10 )
>>> print( "Ciągły" )
Ciągły
>>> motor.set_speed( 100, -1 )
>>> czas.sen( 1 )
>>> motor.set_speed( 0, 0 )

Jeśli podobały Ci się te treści, możesz nas śledzić Twitter, YouTube, Facebook or LinkedIn aby być na bieżąco z takimi treściami.

Masz pytania lub prośby?
Skontaktuj się z nami! Odpowiemy <24 godziny!

Ikona
Kontakt ArduSimple
Zamknij

Chcesz dowiedzieć się więcej o GPS/RTK?

1. Nasz zespół inżynierów skontaktuje się z Tobą w celu rozwiązania wszelkich pytań
2. Będziemy na bieżąco informować Cię o promocjach i nowościach produktowych
3. Dowiesz się od nas tylko wtedy, gdy będziemy mieć ważne wiadomości, nie będziemy spamować Twojego e-maila