Mise à jour (22 / 03 / 2025): Nous avons beaucoup de stock sur tous nos produits, retrouvez-nous aussi dans et    Achetez maintenant

Connectez différents moteurs à votre SBC

Dans ce tutoriel, nous verrons comment connecter les types de moteurs les plus courants au SBC. Nous vous montrerons également comment les manipuler avec quelques exemples. Les types de moteurs les plus courants sont :

  • Les moteurs à courant continu sont bon marché et faciles à contrôler, une seule sortie de puissance est nécessaire et celle-ci peut être activée avec un signal PWM.

  • Les servomoteurs sont similaires aux moteurs à courant continu, mais ils comprennent une petite électronique et un potentiomètre interne pour former une boucle de contrôle fermée, ceux-ci permettent de contrôler l'angle de rotation. La commande se fait également par PWM, mais dans ce cas le signal de commande est de faible puissance et l'étage de puissance est intégré au servomoteur lui-même.

  • Les moteurs pas à pas ont plusieurs bobinages et nécessitent une séquence à contrôler, mais en contrepartie ils apportent une grande précision puisqu'ils avancent pas à pas à chaque inversion de polarité de leurs bobinages.

1. Moteurs à courant continu

Pour piloter un moteur à courant continu, on le raccordera au SBC comme indiqué dans le schéma suivant :

Nous aurons besoin de connaître certains paramètres de notre moteur, en particulier la relation entre les volts appliqués et la vitesse du moteur ou Kv.

La classe Dc_Motor représente le moteur DC, contrôlé par un PWM à 50 Hz. Comme on peut le constater, certains paramètres doivent être fournis, comme la tension d'alimentation et la constante Kv, ainsi que la broche à utiliser. En retour nous obtenons deux fonctions : set_voltage et set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
classe Docteur moteur: FREQ_Hz = 50
    def __init__( soi, broche, vm, kv ):
        soi.vm = vm
        soi.kv = kv
        soi.épingle = épingle
        soi.doute = SBC.Doute()
        soi.doute.set_pwm( soi.épingle, soi.FREQ_Hz, 0 )
        soi.set_voltage( 0 )
    
    def set_voltage( soi, v ): pulse_percent_on = 100 *v/soi.vm
        soi.doute.set_pwm( soi.épingle, soi.FREQ_Hz, 100-pulse_percent_on )
    
    def set_speed( soi, tr/min ):
        soi.set_voltage (rpm/soi.kv)

Un exemple d'utilisation serait le suivant :

>>> temps d'importation
>>> importer sbc_mtr
>>> moteur = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> print( "Contrôle de tension" )
Contrôle de tension
>>> moteur.set_voltage( 6 )
>>> time.sleep( 1 )
>>> moteur.set_voltage( 0 )
>>> print( "Contrôle de vitesse" )
Contrôle de la vitesse
>>> moteur.set_speed( 100 )
>>> time.sleep( 1 )
>>> moteur.set_speed( 0 )

2. Servomoteurs

Le servomoteur utilise une seule broche de commande pour contrôler l'angle de rotation d'un moteur.

 Le code de la classe Servo_Motor :

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
classe Servomoteur: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( soi, broche ):
        soi.épingle = épingle
        soi.doute = SBC.Doute()
        soi.doute.set_pwm( soi.épingle, soi.FREQ_Hz, 0 )
        
    def définir_angle( soi, angle_deg ): duty_ms = soi.DUTY_MIN_ms + (soi.DUTY_MAX_ms-soi.DUTY_MIN_ms)*angle_deg/ 180
        pulse_percent_on = soi.FREQ_Hz*devoir_ms/ 10
        soi.doute.set_pwm( soi.épingle, soi.FREQ_Hz, 100-pulse_percent_on )

Et un exemple d'utilisation :

>>> temps d'importation
>>> importer sbc_mtr
>>> moteur = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print( "Définir l'angle à 90 degrés" )
Réglez l'angle à 90 degrés
>>> moteur.set_angle( 90 )
>>> time.sleep( 1 )
>>> print( "Définir l'angle à 0 degrés" )
Réglez l'angle à 0 degrés
>>> moteur.set_angle( 0 )

3. Moteurs pas à pas

Pour connecter un moteur pas à pas, nous suivrons un schéma similaire à celui de la figure :

Le code de la classe Stepper_Motor est essentiellement une machine à états qui implémente le tableau ci-dessus.

 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 Moteur_pas-à-pas:
   
    def __init__( soi, épingles ):
        soi.broches = broches
        soi.doute = SBC.Doute()
        soi.Etat = 0
        soi.mesures = 0
        soi.dir = 1
        soi.minuteur = click.Minuteur( -1 )
    
    def étape( soi, direction ):
        if( soi.Etat == 0 ):
            soi.doute.écrivez( soi.épingles[0], 1 )
            soi.doute.écrivez( soi.épingles[1], 1 )
            soi.doute.écrivez( soi.épingles[2], 0 )
            soi.doute.écrivez( soi.épingles[3], 0 )
        Elif( soi.Etat == 1 ):
            soi.doute.écrivez( soi.épingles[0], 0 )
            soi.doute.écrivez( soi.épingles[1], 1 )
            soi.doute.écrivez( soi.épingles[2], 1 )
            soi.doute.écrivez( soi.épingles[3], 0 )
        Elif( soi.Etat == 2 ):
            soi.doute.écrivez( soi.épingles[0], 0 )
            soi.doute.écrivez( soi.épingles[1], 0 )
            soi.doute.écrivez( soi.épingles[2], 1 )
            soi.doute.écrivez( soi.épingles[3], 1 )
        Elif( soi.Etat == 3 ):
            soi.doute.écrivez( soi.épingles[0], 1 )
            soi.doute.écrivez( soi.épingles[1], 0 )
            soi.doute.écrivez( soi.épingles[2], 0 )
            soi.doute.écrivez( soi.épingles[3], 1 )
        soi.mesures += direction
        soi.Etat = (soi.Etat + direction) & MONITORING
    
    def set_speed( soi, étapes_s, direction ):
        if( étapes_s et  direction ):
            soi.minuteur.init( période=int(1000 /étapes_s), mode=click.Minuteur.PÉRIODIQUE, rappel=lambda cmr : soi.pas (direction) )
        d'autre:
            soi.minuteur.init()

Enfin, un exemple d'utilisation :

>>> temps d'importation
>>> importer sbc_mtr
>>> moteur = sbc_mtr.Stepper_Motor( ["DOUT1", "DOUT2", "DOUT3", "DOUT4"] )
>>> print( "Pas à pas" )
Pas à pas
>>> pour je dans la plage (100) :
... pas.moteur( 1 )
... time.sleep_ms( 10 )
>>> print( "Continu" )
Continu
>>> moteur.set_speed( 100, -1 )
>>> time.sleep( 1 )
>>> moteur.set_speed( 0, 0 )

Si vous avez aimé ce contenu, vous pouvez nous suivre sur Twitter, YouTube, Facebook or LinkedIn pour rester à jour de contenu comme celui-ci.

Vous avez des questions ou des demandes?
Contactez-nous! Nous vous répondrons en moins de 24 heures !

Icône
Contact ArduSimple
Fermer

Vous souhaitez en savoir plus sur le GPS/RTK ?

1. Notre équipe d'ingénieurs vous contactera pour résoudre toutes les questions
2. Nous vous tiendrons au courant des promotions et des nouvelles versions de produits
3. Vous n'aurez de nos nouvelles que lorsque nous aurons des nouvelles importantes, nous ne spammerons pas votre e-mail