Aggiornamento (14 / 08 / 2026): Abbiamo un ampio stock di tutti i nostri prodotti, trovaci anche in and    Come ottenere un preventivo

Collega diversi motori al tuo SBC

In questo tutorial vedremo come collegare le più comuni tipologie di motori al SBC. Ti mostreremo anche come gestirli con alcuni esempi. I tipi più comuni di motori sono:

  • I motori DC sono economici e facili da controllare, è necessaria una sola uscita di potenza e questa può essere attivata con un segnale PWM.

  • I servomotori sono simili ai motori CC, ma includono una piccola elettronica e un potenziometro interno per formare un circuito di controllo chiuso, che consente di controllare l'angolo di rotazione. Anche il controllo è PWM, ma in questo caso il segnale di controllo è di bassa potenza e lo stadio di potenza è integrato nel servomotore stesso.

  • I motori passo-passo hanno diversi avvolgimenti e richiedono una sequenza da controllare, ma in cambio forniscono una grande precisione poiché avanzano passo dopo passo ogni volta che la polarità dei loro avvolgimenti viene invertita.

1. Motori a corrente continua

Per controllare un motore a corrente continua, lo collegheremo all'SBC come indicato nello schema seguente:

Avremo bisogno di conoscere alcuni parametri del nostro motore, in particolare il rapporto tra i volt applicati e la velocità del motore o Kv.

La classe Dc_Motor rappresenta il motore DC, controllato da un PWM a 50Hz. Come si vede occorre fornire alcuni parametri, come la tensione di alimentazione e la costante Kv, oltre al pin da utilizzare. In cambio otteniamo due funzioni: set_voltage e set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
classe Motore a corrente continua: FREQ_Hz = 50
    def __init__( auto, perno, vm, kv ):
        auto.vm = vm
        auto.kv = kv
        auto.perno = perno
        auto.fuori = sbc.Dout()
        auto.fuori.set_pwm( auto.perno, auto.FREQ_Hz, 0 )
        auto.set_voltaggio( 0 )
    
    def set_voltaggio( auto, v ): impulso_percentuale_on = 100v/auto.vm
        auto.fuori.set_pwm( auto.perno, auto.FREQ_Hz, 100-impulso_percent_on )
    
    def imposta_velocità( auto, giri/min):
        auto.set_voltaggio( rpm/auto.kv)

Un esempio di utilizzo potrebbe essere il seguente:

>>> ora di importazione
>>> importa sbc_mtr
>>> motore = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> print( "Controllo di tensione" )
Controllo della tensione
>>> motor.set_voltage( 6 )
>>> tempo.sonno( 1 )
>>> motor.set_voltage( 0 )
>>> print( "Controllo velocità")
Controllo della velocità
>>> motore.set_speed( 100 )
>>> tempo.sonno( 1 )
>>> motore.set_speed( 0 )

2. Servomotori

Il servomotore utilizza un unico perno di controllo per controllare l'angolo di rotazione di un motore.

 Il codice della classe Servo_Motor:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
classe Servomotore: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( auto, spillo ):
        auto.perno = perno
        auto.fuori = sbc.Dout()
        auto.fuori.set_pwm( auto.perno, auto.FREQ_Hz, 0 )
        
    def set_angolo( auto, angle_deg ): duty_ms = auto.DUTY_MIN_ms + (auto.DUTY_MAX_ms-auto.DUTY_MIN_ms)*angolo_gradi/ 180
        pulsazioni_percentuali = auto.FREQ_Hz*dovere_ms/ 10
        auto.fuori.set_pwm( auto.perno, auto.FREQ_Hz, 100-impulso_percent_on )

E un esempio di utilizzo:

>>> ora di importazione
>>> importa sbc_mtr
>>> motore = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print("Imposta l'angolo a 90 gradi" )
Impostare l'angolo a 90 gradi
>>> angolo_set_motore( 90 )
>>> tempo.sonno( 1 )
>>> print("Imposta l'angolo a 0 gradi" )
Impostare l'angolo a 0 gradi
>>> angolo_set_motore( 0 )

3. Motori passo-passo

Per collegare un motore passo-passo seguiremo uno schema simile a quello in figura:

Il codice della classe Stepper_Motor è fondamentalmente una macchina a stati che implementa la tabella mostrata sopra.

 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
classe Stepper_Motore:
   
    def __init__( auto, spille ):
        auto.pino = pino
        auto.fuori = sbc.Dout()
        auto.stato = 0
        auto.passi = 0
        auto.dir = 1
        auto.timer = macchina.Timer( -1 )
    
    def passo( auto, direzione ):
        if( auto.stato == 0 ):
            auto.fuori.scrivere( auto.spille[0], 1 )
            auto.fuori.scrivere( auto.spille[1], 1 )
            auto.fuori.scrivere( auto.spille[2], 0 )
            auto.fuori.scrivere( auto.spille[3], 0 )
        Elif( auto.stato == 1 ):
            auto.fuori.scrivere( auto.spille[0], 0 )
            auto.fuori.scrivere( auto.spille[1], 1 )
            auto.fuori.scrivere( auto.spille[2], 1 )
            auto.fuori.scrivere( auto.spille[3], 0 )
        Elif( auto.stato == 2 ):
            auto.fuori.scrivere( auto.spille[0], 0 )
            auto.fuori.scrivere( auto.spille[1], 0 )
            auto.fuori.scrivere( auto.spille[2], 1 )
            auto.fuori.scrivere( auto.spille[3], 1 )
        Elif( auto.stato == 3 ):
            auto.fuori.scrivere( auto.spille[0], 1 )
            auto.fuori.scrivere( auto.spille[1], 0 )
            auto.fuori.scrivere( auto.spille[2], 0 )
            auto.fuori.scrivere( auto.spille[3], 1 )
        auto.passi += direzione
        auto.stato = (auto.stato + direzione) & 0x03
    
    def imposta_velocità( auto, passi_s, direzione ):
        if( passi_s and direzione):
            auto.timer.init( punto=int(1000 /passi_s), modalità=macchina.Timer.PERIODICO, richiamata=lambda signor: auto.passo(direzione))
        altro:
            auto.timer.deinit()

Infine un esempio di utilizzo:

>>> ora di importazione
>>> importa sbc_mtr
>>> motore = sbc_mtr.Stepper_Motor( ["DOUT1", "DOUT2", "DOUT3", "DOUT4"] )
>>> print( "Passo dopo passo" )
Passo dopo passo
>>> per i nell'intervallo( 100 ):
... passo.motore( 1 )
... tempo.sleep_ms( 10 )
>>> print( "Continuo")
Educazione
>>> motore.set_speed( 100, -1 )
>>> tempo.sonno( 1 )
>>> motore.set_speed( 0, 0 )

Assistente RTK

Trova i prodotti più adatti alle tue esigenze in poche semplici domande.

Se ti è piaciuto questo contenuto, puoi seguirci su Twitter, YouTube, Facebook or LinkedIn per rimanere aggiornato su contenuti come questo.

Hai domande o richieste?
Contattaci! Risponderemo <24 ore!

Contatti ArduSimple
Chiudi

Accedi al tuo account e ai tuoi ordini.

Or

Nuovo cliente? Crea il tuo account
ArduSimple – Apparecchiature e soluzioni di rilevamento RTK ad alta precisione, semplificate

Vuoi saperne di più su GPS e RTK?

Se in questo momento sei impegnato, i nostri ingegneri possono inviarti 3 brevi e-mail, spiegandoti tutto ciò che devi sapere per iniziare il tuo progetto.