Table des matières:

Contrôleur de train miniature Arduino 2-en-1 : 4 étapes
Contrôleur de train miniature Arduino 2-en-1 : 4 étapes

Vidéo: Contrôleur de train miniature Arduino 2-en-1 : 4 étapes

Vidéo: Contrôleur de train miniature Arduino 2-en-1 : 4 étapes
Vidéo: Arduino project 😎^ Arduino #arduino #2022 #2021 #2023 #dc #arduinoproject #diy #foryou 2024, Novembre
Anonim
Contrôleur de train miniature Arduino 2-en-1
Contrôleur de train miniature Arduino 2-en-1

Il y a quarante ans, j'ai conçu un accélérateur de train miniature basé sur un ampli-op pour un couple d'amis, puis il y a environ quatre ans, je l'ai recréé à l'aide d'un microcontrôleur PIC. Ce projet Arduino recrée la version PIC mais ajoute également la possibilité d'utiliser une connexion Bluetooth au lieu des commutateurs manuels pour l'accélérateur, le frein et le contrôle de direction. Bien que la conception que je présente ici soit destinée à un moteur de modélisme ferroviaire de 12 volts, elle peut facilement être modifiée pour une variété d'autres applications de commande de moteur à courant continu.

Étape 1: Modulation de largeur d'impulsion (PWM)

Modulation de largeur d'impulsion (PWM)
Modulation de largeur d'impulsion (PWM)

Pour ceux d'entre vous qui ne connaissent pas PWM, ce n'est pas aussi effrayant qu'il y paraît. Tout ce que cela signifie vraiment pour notre application de commande de moteur simple, c'est que nous générons une onde carrée d'une certaine fréquence, puis nous modifions le rapport cyclique. Le cycle de service est défini comme le rapport entre le temps pendant lequel la sortie est un haut logique par rapport à la période de forme d'onde. Vous pouvez le voir assez clairement dans le diagramme ci-dessus avec la forme d'onde supérieure à un cycle d'utilisation de 10 %, la forme d'onde du milieu à un cycle d'utilisation de 50 % et la forme d'onde inférieure à un cycle d'utilisation de 90 %. La ligne pointillée superposée sur chaque forme d'onde représente la tension continue équivalente vue par le moteur. Étant donné que l'Arduino a une capacité PWM intégrée, il est vraiment assez simple de générer ce type de contrôle de moteur à courant continu. Un autre avantage de l'utilisation du PWM est qu'il aide à empêcher le moteur de démarrer brusquement qui peut se produire lors de l'utilisation de courant continu direct. Un inconvénient du PWM est qu'il y a parfois un bruit audible du moteur à la fréquence du PWM.

Étape 2: Matériel

Matériel
Matériel
Matériel
Matériel
Matériel
Matériel

La première image montre les connexions Arduino pour les commutateurs et le module de commande de moteur LM298. Il y a de faibles résistances de rappel internes à l'Arduino, donc aucune résistance de rappel n'est nécessaire pour les commutateurs. L'interrupteur de direction est un simple interrupteur SPST (unipolaire unidirectionnel). Les interrupteurs d'accélérateur et de frein sont représentés comme des boutons-poussoirs à contact momentané normalement ouverts.

La deuxième image montre les connexions Arduino pour le module Bluetooth et le module de pilote de moteur LM298. La sortie Bluetooth TXD se connecte directement à l'entrée série Arduino RX.

La troisième image est un module à double pont en H L298N. Le module LM298 dispose d'un régulateur 5 volts embarqué qui peut être activé par un cavalier. Nous avons besoin de +5 volts pour l'Arduino et Bluetooth mais nous voulons +12 volts pour entraîner le moteur. Dans ce cas nous appliquons le +12 volts à l'entrée « +12V power » du L298N et nous laisserons le cavalier « 5V enable » en place. Cela permet au régulateur 5 volts de sortir vers la connexion "+5 power" sur le module. Connectez-le à l'Arduino et au Bluetooth. N'oubliez pas de connecter les fils de masse de l'entrée +12 et de la sortie +5 au module « power GND ».

Nous voulons que la tension de sortie du moteur varie en fonction du PWM généré par l'Arduino au lieu d'être simplement allumé ou éteint. Pour ce faire, nous retirons les cavaliers de "ENA" et "ENB" et connectons notre sortie Arduino PWM à "ENA" sur le module. Gardez à l'esprit que la broche d'activation réelle est la plus proche du bord de la carte (à côté des broches "d'entrée"). La broche arrière pour chaque activation est de +5 volts, nous voulons donc nous assurer que nous ne nous connectons pas à cela.

Les broches "IN1" et "IN2" du module sont connectées aux broches Arduino respectives. Ces broches contrôlent la direction du moteur et, oui, il y a une bonne raison de laisser l'Arduino les contrôler au lieu de simplement connecter un commutateur au module. Nous verrons pourquoi dans la discussion sur le logiciel.

Étape 3: Module Bluetooth

Module Bluetooth
Module Bluetooth

L'image présentée ici est typique des modules Bluetooth disponibles. Lorsque vous cherchez un produit à acheter, vous pouvez rechercher les termes « HC-05 » et HC-06 ». Les différences entre les deux résident dans le firmware et généralement dans le nombre de broches sur la carte. L'image ci-dessus représente un module HC-06 et est livré avec un firmware simplifié qui ne permet qu'une configuration très basique. Il est également défini comme un appareil Bluetooth « esclave » uniquement. En termes simples, cela signifie qu'il ne peut répondre qu'aux commandes d'un appareil « Maître » et ne peut pas émettre de commandes par lui-même. Le module HC-05 a plus de possibilités de configuration et peut être défini en tant qu'appareil « Maître » ou « Esclave ». Le HC-05 a généralement six broches au lieu des quatre indiquées ci-dessus pour le HC-06. La broche State n'est pas vraiment importante, mais la broche Key (parfois appelée par d'autres noms comme "EN") est requise si vous souhaitez effectuer une configuration. Généralement, les modules n'ont besoin d'aucune configuration si vous êtes d'accord avec le débit en bauds par défaut de 9600 et ne vous souciez pas de donner un nom spécifique au module. J'ai plusieurs projets où je les utilise, donc j'aime les nommer en conséquence.

La configuration des modules Bluetooth nécessite que vous achetiez ou construisiez une interface vers un port série RS-232 ou vers un port USB. Je ne vais pas expliquer comment en créer un dans cet article, mais vous devriez pouvoir trouver des informations sur le Web. Ou achetez simplement une interface. Les commandes de configuration utilisent des commandes AT un peu comme ce qui était utilisé autrefois avec les modems téléphoniques. J'ai joint un manuel d'utilisation ici qui inclut les commandes AT pour chaque type de module. Une chose à noter est que le HC-06 nécessite des commandes MAJUSCULES et la chaîne de commande doit se terminer en 1 seconde. Cela signifie que certaines des chaînes les plus longues pour des choses comme la modification des débits en bauds devront être coupées et collées dans votre programme de terminal ou vous devrez configurer des fichiers texte à envoyer. L'exigence MAJUSCULES est uniquement si vous essayez d'envoyer des commandes de configuration. Le mode de communication normal peut accepter n'importe quel 8 bits de données.

Étape 4: Logiciel

Le logiciel est assez simple à la fois pour la version manuelle et la version Bluetooth. Pour sélectionner la version Bluetooth, décommentez simplement l'instruction "#define BT_Ctrl".

Lorsque j'ai écrit le code PIC, j'ai expérimenté la fréquence PWM et j'ai finalement opté pour 500 Hz. J'ai découvert que si la fréquence était trop élevée, le module LM298N n'était pas capable de réagir assez rapidement aux impulsions. Cela signifiait que la sortie de tension n'était pas linéaire et pouvait faire de gros sauts. L'Arduino a des commandes PWM intégrées, mais elles ne vous permettent que de faire varier le cycle de service et non la fréquence. Heureusement, la fréquence est d'environ 490 Hz, ce qui est assez proche des 500 Hz que j'ai utilisés sur le PIC.

L'une des « caractéristiques » des manettes des gaz est une sensation d'élan pour l'accélération et le freinage afin de simuler le fonctionnement d'un vrai train. Pour ce faire, une simple temporisation est insérée dans la boucle pour la version manuelle du logiciel. Avec la valeur affichée, il faut environ 13 secondes pour passer de 0 à 12 volts ou de 12 volts à zéro. Le délai peut être facilement modifié pour des durées plus ou moins longues. Le seul cas où l'élan n'est pas en vigueur est lorsque le commutateur de direction est modifié. À des fins de protection, le cycle de service PWM est immédiatement réglé sur 0 % chaque fois que ce commutateur est modifié. Cela, en effet, fait que le commutateur de direction sert également de frein d'urgence.

Pour assurer une gestion immédiate du commutateur de direction, j'ai mis son code dans un gestionnaire d'interruption. Cela nous permet également d'utiliser la fonction « interruption en cas de changement » afin que peu importe que le changement soit de bas en haut ou de haut en bas.

La version Bluetooth du logiciel utilise des commandes à une seule lettre pour lancer les fonctions avant, arrière, frein et accélérateur. En effet, les commandes reçues remplacent les interrupteurs manuels mais provoquent les mêmes réponses. L'application que j'utilise pour le contrôle Bluetooth s'appelle "Bluetooth Serial Controller" par Next Prototypes. Il vous permet de configurer un clavier virtuel et de définir vos propres chaînes de commande et noms pour chaque touche. Il vous permet également de définir un taux de répétition, j'ai donc réglé les boutons de frein et d'accélérateur sur 50 ms pour donner environ 14 secondes d'élan. J'ai désactivé la fonction de répétition pour les boutons Avant et Arrière.

C'est tout pour ce post. Découvrez mes autres Instructables. Si vous êtes intéressé par les projets de microcontrôleurs PIC, consultez mon site Web à l'adresse www.boomerrules.wordpress.com

Conseillé: