Défi : Contrôler la vitesse d’un moteur avec une photorésistance.

Programmation : Condition, calcul sur une valeur.

Liens PFEQ : Transformation électricité en mouvement. Détecteur d’intensité lumineuse. Transistor.

Le présent défi est un peu plus compliqué que les précédents, mais c’est dans ce défi que vous pourrez davantage constater la puissance d’Arduino.

Nous voulons ajuster la vitesse de rotation d’un moteur selon l’intensité lumineuse mesurée par une photorésistance.

Un peu de théorie

Contrôler un moteur avec Arduino est un peu plus complexe que de simplement allumer une DEL. Le courant nécessaire est supérieur à celui fourni par la carte Arduino (c’est pourquoi nous devrons ajouter une pile 9V à notre circuit) et le moteur peut générer lui-même du courant qui peut endommager vos pièces électroniques.

Nous utiliserons donc un transistor apte à contrôler des courants plus élevés que ce que la carte Arduino peut générer (5V). Celui utilisé ici est le IRF520NPbF (voir image ci-dessous). En électronique, les composants ont ce type de feuille de données (datasheet) pour indiquer leurs capacités et autres renseignements.


Pour contrôler la vitesse du moteur, nous allons utiliser une fonction présente dans la carte Arduino qui est nommée PWM (Pulse Width Modulation). Les broches numériques, contrairement aux broches analogiques, peuvent envoyer seulement 2 signaux, 0V ou 5V. Pour simuler une DDP de 2V, par exemple, le PWM envoie des pulsations d’une certaine durée. L’image ci-dessous tente d’expliquer le tout.


À noter que ce ne sont pas toutes les broches numériques qui peuvent utiliser le PWM, mais seulement celles qui ont le symbole ~ devant leur numéro.

L’ajout d’une diode (qui ne laisse passer du courant que dans un sens) en parallèle avec le moteur évitera que celui-ci envoie du courant inverse dans le circuit. À noter que la cathode de la diode a une bande argentée, donc elle doit être connectée sur la borne positive du circuit.


Montage


Schéma électrique

moteur_photoresistor_schema

Le programme doit lire la valeur du capteur (ici la photorésistance) lorsque l’interrupteur est à ON, puis calculer la valeur à envoyer au moteur.

Nous devons en effet exécuter un calcul avant d’envoyer un signal au moteur, car la valeur lue par la photorésistance se situe entre 0 et 1023 alors que les valeurs possibles de sortie des broches PWM sont entre 0 et 255. Nous allons donc diviser la valeur d’entrée par 4 (1023/4 = 255.75).

Voici à quoi pourrait ressembler (cliquer sur l’image) le programme sous forme de blocs (version xml) :


 Note : La saisie d'écran ci-dessus est celle de Blockly@rduino. À vous de traduire si vous utilisez Ardublockly!


La vidéo suivante explique brièvement ce programme.

Voir le circuit et le programme : https://www.tinkercad.com/things/kDUffdMTyC8


Modifié le: lundi 12 avril 2021, 12:15