Header Ads

MicroPython: Commander un moteur via transistor

La commande de puissance via transistor rester quand même un point clé des montages Maker. Voici un nouveau tuto issu de notre Kit Découverte MicroPython
Nous allons donc utiliser un transistor avec notre PyBoard pour contrôler l'activation d'un moteur jouet.

Pourquoi utiliser un transistor?
Les sorties de PyBoard sont géniales pour contrôler directement de petits éléments électriques tels que des LEDs.
Cependant, lorsque l'on s'attaque à de plus gros composants (tels qu'un moteur de jouet ou de machine à laver), un transistor complémentaire est alors nécessaire. Un transistor est incroyablement utile. Il commute une grande quantité de courant en utilisant une quantité de courant bien plus petite.
Un transistor à 3 broches. Pour un transistor de type négatif (NPN), vous connectez la charge au collecteur et l'émetteur à la masse. Alors, lorsqu'un petit courant circulera de la base à l'émetteur, un courant circulera à travers le transistor et votre moteur tournera (cela se produira lorsque nous mettrons la broche de notre PyBoard à HIGH).

Nous allons utiliser un transistor P2N2222AG, les facteurs importants dans notre cas sont la tension maximale (40 volts) et le courant maximum (600 milliampères) qui sont tous deux largement suffisant pour notre moteur de jouet

Montage
Source: wiki.mchobby.be
Présence de la diode
La diode 1N4001 est utilisé comme diode anti-retour (aussi dit "en roue libre"), cette diode sert a court-circuiter la point renvoyée par le moteur lorsque vous voulez déconnecter celui-ci. Lorsque l'on déconnecte une charge d'un circuit, celle-ci rend l'énergie qu'elle à accumulée au circuit (comme c'est un processus de réaction, la polarité est inversée).
La présence de la diode est indispensable. Sans elle, le transistor serait rapidement détruit. Faites également attention à l'anneau argenté qui sert de détrompeur (le "-" de la diode).

Présence du bloc pile
Le moteur à besoin d'une tension d'alimentation entre 5 et 9 volts. Il n'est donc pas question d'alimenter d'alimenter notre moteur depuis le PyBoard (3.3V), d'ailleurs le régulateur du PyBoard ne pourrait pas fournir le courant nécessaire.
Il serait possible de se brancher sur la broche vin du PyBoard et d'ainsi obtenir les 5 Volts provenant de la connexion USB (si votre PyBoard est branché sur un ordinateur). Cependant, un moteur est quand même source de parasites qui seront renvoyé sur la source d'alimentation vin et le port USB. Ce n'est bien entendu pas une situation idéale car le matériel informatique et les microcontrôleurs n'aiment pas les parasites.
Nous allons donc opter pour une source d'alimentation externe pour le moteur, une source de 9V produite par un bloc de 6 piles AA. L'avantage est de disposer d'une alimentation assez puissante (1500mAh) pour le moteur et séparée de l'alimentation de la PyBoard (généralement recommandé).

Le code

# Contrôle d'un moteur jouet à l'aide d'un transistor.
from pyb import Timer, delay

# Brancher le moteur sur X3
MOTOR_PIN = pyb.Pin.board.X3 

# fonction qui permet de passer d'un range de valeur (in_) à une autre
#    (out_) en appliquant une règle de trois. 
def arduino_map(x, in_min, in_max, out_min, out_max):
    return int( (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min ) 
    
# Eteint simplement le moteur 
def motorOff():
 onTime  = 2500 # temps allumé 
 offTime = 1000 # temps éteint
 
 p = pyb.Pin( MOTOR_PIN, pyb.Pin.OUT_PP )
 p.low()
  
# Allume puis éteind le moteur a interval régulier 
def motorOnThenOff():
 onTime  = 2500 # temps allumé 
 offTime = 1000 # temps éteint
 
 p = pyb.Pin( MOTOR_PIN, pyb.Pin.OUT_PP )
    # Répéter l'opération encore et encore
 while True:
  p.high()
  delay( onTime )
  p.low()
  delay( offTime )

# motorOff()
motorOnThenOff()

Le tutoriel
Notre tutoriel contient de nombreuses autres informations très utiles et pertinentes.
Vous y trouverez un code étendu avec contrôle de la vitesse, de l'accélération, comment choisir le timer et le canal pour commander une broche en PWM, l'utilisation d'une masse commune, etc.
Où acheter
MCHobby investi du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.