Aktualizace (12 / 12 / 2024): Všech našich produktů máme dostatek skladem, najdete nás také v a    Zobrazit kolekci

Připojte různé motory k vašemu SBC

V tomto tutoriálu uvidíme, jak připojit nejběžnější typy motorů k SBC. Na několika příkladech vám také ukážeme, jak s nimi zacházet. Nejběžnější typy motorů jsou:

  • Stejnosměrné motory jsou levné a snadno ovladatelné, je potřeba pouze jeden výkonový výstup a ten lze aktivovat signálem PWM.

  • Servomotory jsou podobné stejnosměrným motorům, ale obsahují malou elektroniku a vnitřní potenciometr pro vytvoření uzavřené regulační smyčky, což umožňuje řídit úhel otáčení. Řízení je také PWM, ale v tomto případě má řídicí signál malý výkon a výkonový stupeň je integrován v samotném servomotoru.

  • Krokové motory mají několik vinutí a vyžadují ovládání sekvence, ale na oplátku poskytují velkou přesnost, protože postupují krok za krokem pokaždé, když je polarita jejich vinutí obrácena.

1. Stejnosměrné motory

Pro ovládání stejnosměrného motoru jej připojíme k SBC, jak je znázorněno na následujícím schématu:

Budeme potřebovat znát některé parametry našeho motoru, konkrétně vztah mezi použitými volty a otáčkami motoru neboli Kv.

Třída Dc_Motor představuje stejnosměrný motor řízený PWM při 50 Hz. Jak je vidět, musí být poskytnuty některé parametry, jako je napájecí napětí a Kv konstanta, stejně jako pin, který se má použít. Na oplátku dostaneme dvě funkce: set_voltage a set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
třída DC_Motor: FREQ_Hz = 50
    def __init__( vlastní, pin, vm, kv ):
        vlastní.vm = vm
        vlastní.kv = kv
        vlastní.pin = pin
        vlastní.dout = Sbc.Dout()
        vlastní.dout.set_pwm( vlastní.kolík, vlastní.FREQ_Hz, 0 )
        vlastní.set_voltage( 0 )
    
    def set_voltage( vlastní, v ): pulse_procent_on = 100 *v/vlastní.vm
        vlastní.dout.set_pwm( vlastní.kolík, vlastní.FREQ_Hz, 100-pulse_percent_on )
    
    def set_speed( vlastní, otáčky za minutu):
        vlastní.set_voltage( ot./min/vlastní.kv)

Příklad použití by byl následující:

>>> čas importu
>>> import sbc_mtr
>>> motor = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> tisk ( "Napěťová regulace" )
Řízení napětí
>>> motor.set_voltage( 6 )
>>> time.sleep( 1 )
>>> motor.set_voltage( 0 )
>>> tisk ( "Ovládání rychlosti" )
Kontrola rychlosti
>>> motor.set_speed( 100)
>>> time.sleep( 1 )
>>> motor.set_speed( 0)

2. Servomotory

Servomotor používá jeden ovládací kolík k ovládání úhlu natočení motoru.

 Kód třídy Servo_Motor:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
třída Servomotor: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( vlastní, špendlík):
        vlastní.pin = pin
        vlastní.dout = Sbc.Dout()
        vlastní.dout.set_pwm( vlastní.kolík, vlastní.FREQ_Hz, 0 )
        
    def nastavit_úhel( vlastní, úhel_deg ): duty_ms = vlastní.DUTY_MIN_ms + (vlastní.DUTY_MAX_ms-vlastní.DUTY_MIN_ms)*úhel_deg/ 180
        pulse_procent_on = vlastní.FREQ_Hz*clo_ms/ 10
        vlastní.dout.set_pwm( vlastní.kolík, vlastní.FREQ_Hz, 100-pulse_percent_on )

A jeden příklad použití:

>>> čas importu
>>> import sbc_mtr
>>> motor = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print( "Nastavit úhel na 90 stupňů" )
Nastavte úhel na 90 stupňů
>>> motor.set_angle( 90 )
>>> time.sleep( 1 )
>>> print( "Nastavit úhel na 0 stupňů" )
Nastavte úhel na 0 stupňů
>>> motor.set_angle( 0 )

3. Krokové motory

Pro připojení krokového motoru budeme postupovat podle schématu podobného schématu na obrázku:

Kód třídy Stepper_Motor je v podstatě stavový stroj, který implementuje výše uvedenou tabulku.

 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
třída Krokový_motor:
   
    def __init__( vlastní, špendlíky):
        vlastní.kolíky = kolíky
        vlastní.dout = Sbc.Dout()
        vlastní.stát = 0
        vlastní.kroky = 0
        vlastní.dir = 1
        vlastní.Časovač = stroj.časovač ( -1 )
    
    def krok( vlastní, směr):
        if( vlastní.stát == 0 ):
            vlastní.dout.napsat( vlastní.špendlíky[0], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[1], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[2], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[3], 0 )
        Elif( vlastní.stát == 1 ):
            vlastní.dout.napsat( vlastní.špendlíky[0], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[1], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[2], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[3], 0 )
        Elif( vlastní.stát == 2 ):
            vlastní.dout.napsat( vlastní.špendlíky[0], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[1], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[2], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[3], 1 )
        Elif( vlastní.stát == 3 ):
            vlastní.dout.napsat( vlastní.špendlíky[0], 1 )
            vlastní.dout.napsat( vlastní.špendlíky[1], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[2], 0 )
            vlastní.dout.napsat( vlastní.špendlíky[3], 1 )
        vlastní.kroky += směr
        vlastní.stát = (vlastní.stát + směr) & 0x03
    
    def set_speed( vlastní, kroky_s, směr ):
        if( kroky_s a směr):
            vlastní.Časovač.init( období=int(1000 /kroky_s), režim=stroj.Časovač.PERIODIC (periodický), zpětné volání=lambda tmr: vlastní.krok (směr))
        jiný:
            vlastní.Časovač.deinit()

Na závěr příklad použití:

>>> čas importu
>>> import sbc_mtr
>>> motor = sbc_mtr.Stepper_Motor( ["DOUT1", "DOUT2", "DOUT3", "DOUT4"] )
>>> tisk ( "Krok za krokem")
Krok za krokem
>>> pro i v rozsahu (100):
... motor.step( 1 )
... time.sleep_ms( 10 )
>>> tisk ( "Nepřetržitě" )
Nepřetržitý
>>> motor.set_speed( 100, -1 )
>>> time.sleep( 1 )
>>> motor.set_speed( 0, 0 )

Pokud se vám tento obsah líbil, můžete nás sledovat X, Youtube, facebook or LinkedIn abyste byli informováni o obsahu, jako je tento.

Máte nějaké dotazy nebo požadavky?
Kontaktujte nás! Odpovíme <24 hodin!

Ikona
Kontakt ArduSimple
zavřít

Chcete se dozvědět více o GPS/RTK?

1. Náš technický tým vás bude kontaktovat, aby vyřešil jakékoli dotazy
2. Budeme vás informovat o akcích a nových produktech
3. Uslyšíte od nás pouze, když budeme mít důležité zprávy, nebudeme váš e-mail spamovat