Étiquettes : , , ,
0
(0)

L’un des objectifs principaux de la robotique est d’articuler des objets. Pour se faire, il est très courant d’utiliser des moteurs électriques comme des moteurs à courant continu notamment pour les plateformes mobiles. Dans cet article, nous verrons comment piloter un moteur cc avec une carte Raspberry Pi et un pont en H.

Prérequis: Programmez avec Raspberry Pi

Matériel

  • Écran
  • HDMI câble
  • Clavier
  • Raspberry PI 3 (avec OS sur micro SD)
  • Souris
  • Chargeur micro USB B
  • Pont en H SN7544410NE
  • Moteur CC

Moteur CC

Les moteurs à courant continu possèdent souvent une boite de réduction afin d’augmenter leur couple pour un encombrement réduit. Le moteur CC est très simple d’utilisation. Pour le faire fonctionner, il suffit d’appliquer une tension électrique à ses bornes. Le signe et le niveau de cette tension vont imposer le sens et la vitesse de rotation.

Pour piloter la tension aux bornes d’un moteur à courant continu, il est possible d’utiliser un relais ou un pont en H.

Pont H

Le pont en H transmet la puissance électrique au moteur et module la tension en fonction des commandes de la carte Arduino. Il peut être représenté par quatre interrupteurs qui vont diriger le courant en fonction des commandes de la carte et moduler la direction et la vitesse de rotation du moteur.

La solution que nous utilisons ici est le composant SN754410NE. Il peut piloter deux moteurs à courant continu et possèdent plusieurs pattes ayant une fonction propre.

Nous rappelons leurs fonctions:

  • Les pattes GND, sont connectées entre elles et doivent être reliées à la masse du projet.
  • La patte +5V sert à alimenter la partie logique de la puce et peut être reliée à la borne +5V de la carte Raspberry Pi.
  • M1 Enable et M2 Enable permettent d’activer les deux ponts correspondants. Elles reçoivent un signal digital HAUT ou BAS du Raspberry.
  • M1/M2 Forward, M1/M2 Reverse permettent d’envoyer une tension au borne du moteur afin de le piloter dans les deux directions. Elles reçoivent un signal PWM afin de moduler la vitesse de rotation.
  • La borne +Motor Power IN reçoit la tension d’alimentation des moteurs (5,6, 7V parfois jusqu’à 24V)
  • Les pattes restantes, Motor 1 et Motor 2, sont reliées aux bornes des moteurs.

Schéma de connexion

Selon la puissance du moteur utilisé, il peut être alimenté par la borne 5V de la carte Raspberry Pi mais il est fortement conseillé d’utiliser une source de puissance extérieur afin de protéger le microcontrôleur.

Pour rappel, voici la description des broches du Raspberry Pi 3.

Code de base pour le contrôle d’un moteur CC

Pour piloter le moteur, il faut activer le pont en H correspondant et appliquer une commande PWM à la borne Forward ou Reverse qui correspondent au deux sens de rotation du moteur.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO 
from time import sleep

GPIO.setmode(GPIO.BCM)
#Pins 18 22 24 GPIO 24 25 8
Motor1E = 24 #  Enable pin 1 of the controller IC
Motor1A = 25 #  Input 1 of the controller IC
Motor1B = 8 #  Input 2 of the controller IC


GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)

forward=GPIO.PWM(Motor1A,100) # configuring Enable pin for PWM
reverse=GPIO.PWM(Motor1B,100) # configuring Enable pin for PWM


if __name__ == '__main__' :
	forward.start(0) 
	reverse.start(0)

	# this will run your motor in reverse direction for 2 seconds with 80% speed by supplying 80% of the battery voltage
	print "GO backward"
	GPIO.output(Motor1E,GPIO.HIGH)
	forward.ChangeDutyCycle(0)
	reverse.ChangeDutyCycle(80)
	sleep(2)


	# this will run your motor in forward direction for 5 seconds with 50% speed.
	print "GO forward"
	GPIO.output(Motor1E,GPIO.HIGH)
	forward.ChangeDutyCycle(50)
	reverse.ChangeDutyCycle(0)
	sleep(5)

	#stop motor
	print "Now stop"
	GPIO.output(Motor1E,GPIO.LOW)
	forward.stop() # stop PWM from GPIO output it is necessary
	reverse.stop() 

	GPIO.cleanup()

N.B.: Faites attention aux indentations lorsque vous écrivez ou recopiez un code. Vous risqueriez d’avoir des erreurs de compilation.

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?