J'ai trouvé une carte moins chère d'une puissance nominale de 350 W 6-60 V. Cela signifie qu'il peut piloter le moteur de l'hoverboard entraîné par une batterie de 36 V. Cet article explique comment utiliser cette carte pour piloter deux moteurs d'hoverboard à l'aide d'Arduino Nano. Cependant, une fois que vous connaissez la configuration de base, vous pouvez utiliser n'importe quel microcontrôleur comme Raspberry Pi Pico, ESP32, Teensy ou RPi4 pour contrôler la vitesse et la direction.
Composants nécessaires au projet
- Hoverboard et construisez potentiellement le cadre du robot au-dessus de l'hoverboard.
- Arduino-Nano
- carte contrôleur de moteur pilote
- Embases à broches, fils, cavalier et embases JST supplémentaires mentionnées dans la section suivante
Préparation de la carte pilote pour utilisation
Même si la carte pilote est de très bonne qualité, le fabricant ne l'a pas rendue facile à utiliser. Afin d'utiliser correctement le tableau, j'ai fini par apporter deux modifications au tableau avant de pouvoir l'utiliser.
- Souder un connecteur à 2 broches pour installer un cavalier afin d'activer le contrôle PWM non rempli par le fabricant
- Installez un en-tête mâle JST pour l'en-tête de contrôle PWM qui n'est pas renseigné par le fabricant.
Vous devez installer un connecteur mâle à 2 broches à l'emplacement indiqué ci-dessous. Vous pouvez généralement simplement obtenir un ensemble d'en-têtes sur Amazon ou ailleurs et y couper deux broches avec un couteau utilitaire. Il s'agit d'un embase standard à espacement de 2,54 mm et ils sont disponibles partout.
J'ai essayé de remplir directement les deux trous avec de la soudure mais je ne suis pas très doué en soudure donc j'ai fini par endommager la carte. La solution finale consistait donc à souder un connecteur mâle à 2 broches à l'arrière de la carte, puis à installer le cavalier standard pour court-circuiter les broches. C'est une solution beaucoup plus élégante puisque vous pouvez toujours retirer le cavalier en plastique pour tester la carte à l'aide du potentiomètre qui se trouve sur la carte.
La partie délicate ici était que j'ai dû dévisser le gros dissipateur thermique en aluminium qui se trouve à l'arrière de la carte et ce n'est qu'alors que j'ai pu accéder à l'emplacement pour souder le connecteur à 2 broches.
La deuxième étape consiste à installer l'en-tête de contrôle PWM à côté de l'en-tête de l'encodeur [marqué dans le rectangle noir ci-dessus]. Le fabricant fournit l'en-tête d'encodeur préinstallé en tant qu'en-tête mâle de style JST sur la carte. Cependant, ils n'ont pas pré-installé l'en-tête de contrôle PWM et vous pouvez voir que ces 5 broches à côté de l'en-tête de l'encodeur ne sont que des trous vides non peuplés par les broches d'en-tête. Je crois que le pas de ces trous particuliers est de 1 mm ou 1,5 mm [pas standard de 2,54 mm]. Il s'agit d'un kit livré avec des fils pré-sertis afin que vous puissiez construire vos propres connecteurs. J'ai essayé d'installer un connecteur à broches mâle standard, mais ceux-ci n'étaient pas assez hauts pour avoir une bonne prise avec les fils Dupont et ceux-ci continuaient à se détacher pendant les tests, donc une meilleure solution serait d'installer un connecteur de style JST approprié qui verrouille les fils.
Nous n'utiliserons que les broches P et S de l'en-tête de contrôle PWM, donc si vous pensez que l'installation de l'en-tête JST est exagérée et que vous pouvez simplement souder le fil directement aux broches P et S, vous pouvez le faire. Cependant, sachez simplement que ce n’est pas une solution très robuste et que vous pourriez finir par endommager la carte.
Câblage et programmation
J'ai suivi les instructions détaillées de l'article du blog de MAD-EE pour d'abord contrôler un seul moteur à partir d'un Arduino Nano, puis j'ai modifié le code pour contrôler deux moteurs. Tous ses exemples de code ont fonctionné sans accroc du premier coup. Vous pouvez simplement copier-coller le code de sa section de code finale et vous assurer que vos numéros de broches sont les mêmes que dans le code avant de télécharger le code sur Arduino Nano.
Voici le schéma de câblage que j'ai obtenu pour Arduino Nano afin de contrôler les deux contrôleurs de moteur.
Il était difficile de montrer les fils triphasés [Ma, Mb, Mc] du moteur allant du moteur à la borne à vis en haut à gauche marquée par une ligne rouge épaisse, alors assurez-vous de connecter les fils de phase appropriés du moteur du moyeu aux broches appropriées sur le ZS-X11H.
Il en va de même pour les fils de l'encodeur allant du moteur au connecteur JST de l'encodeur préinstallé sur le conseil marqué par une ligne violette épaisse dans le schéma de câblage. Il y a 5 fils pour l'encodeur Hall pour le moteur du moyeu — Gnd, Hc, Hb, Ha, 5 V.
De plus, les connexions de l'Arduino Nano aux deux cartes sont marquées avec différentes couleurs et étiquettes de texte dans le diagramme et j'ai également fourni deux tableaux de mappage des broches pour les contrôleurs de moteur gauche et droit vers les broches Arduino.
Au cours de ce test, l'Arduino Nano est alimenté par le câble USB de l'ordinateur portable et nous utilisons le même câble pour alimenter et télécharger le code Arduino.
Essai
Test de base pour faire fonctionner des moteurs sans contrôle PWM
Une fois que vous avez terminé la préparation de la carte et terminé le câblage, nous pouvons tester le fonctionnement des moteurs sans réellement programmer via Arduino. Pour ce faire, assurez-vous d’abord que toutes les cartes sont hors tension.
- Retirez le cavalier qui court-circuite les broches d'activation PWM [en-tête à 2 broches que vous avez soudé pendant la préparation]
- Assurez-vous que le potentiomètre bleu sur la carte est tourné complètement dans le sens inverse des aiguilles d'une montre aussi loin que possible. [dans le sens des aiguilles d'une montre augmente la vitesse et dans le sens inverse des aiguilles d'une montre la diminue, nous voulons donc repartir de zéro].
- Assurez-vous d'avoir calé l'hoverboard sur un support ou un coffre-fort afin que si les roues tournent, il ne coulera pas de la table et n'endommagera rien.
À ce stade, vous pouvez allumer la batterie et tourner lentement le potentiomètre bleu sur la gauche. carte contrôleur de moteur dans le sens des aiguilles d'une montre. Le moteur gauche doit commencer à tourner lentement et vous pouvez lentement augmenter et diminuer la vitesse. Ce test peut être effectué un moteur à la fois. Ainsi, après avoir terminé le test du moteur gauche, réduisez la vitesse à zéro et effectuez le même test sur le contrôleur du moteur droit en tournant son potentiomètre.
Une fois le test terminé, tournez le potentiomètre bleu des deux cartes en position zéro. À ce stade, nous savons que toutes les connexions d’alimentation et d’encodeur sont correctes et que les moteurs peuvent être contrôlés correctement.
Gardez à l'esprit que cette carte nécessite que les fils de l'encodeur soient également branchés, sinon les moteurs ne tourneront pas.
Vous pouvez également réinstaller le cavalier de contrôle PWM avant de pouvoir exécuter des tests de contrôle PWM.
Test de contrôle PWM
Avant d'exécuter ce test, assurez-vous de ces éléments :
- Le potentiomètre bleu sur les deux cartes est tourné complètement dans le sens inverse des aiguilles d'une montre, ce qui correspond à la position zéro.
- Le cavalier d'activation du contrôle PWM est installé sur l'en-tête à 2 broches
- Les câbles de l'encodeur sont connectés au moteur correct pour chaque carte
À ce stade, vous pouvez connecter le câble USB de l'ordinateur portable à Arduino et télécharger le code depuis Section Code final de l'article du blog MAD-EE.
Dans le code, faites attention à ces lignes en haut. Ces numéros de broches correspondent à notre moteur du moyeu droit. Ainsi, lorsque vous exécuterez le test, il déplacera uniquement le moteur du côté droit. Vous pouvez changer les numéros de broches ici en numéros de broches du moteur gauche à partir des tableaux et vous pourrez tester le moteur gauche de la même manière. Cependant, cet exemple de code ne fait fonctionner qu’un seul moteur à la fois.
// MOTEUR DROIT
const int PIN_DIR = 2 ; // Signal de direction du moteur
const int PIN_BRAKE = 3; // Signal de frein moteur (actif bas)
const int PIN_PWM = 9 ; // Contrôle de vitesse du moteur PWM
const int PIN_SPEED = 12 ; // Sortie d'impulsion de vitesse SC de la carte RioRand
// MOTEUR GAUCHE
const int PIN_DIR = 4 ; // Signal de direction du moteur
const int PIN_BRAKE = 5 ; // Signal de frein moteur (actif bas)
const int PIN_PWM = 10 ; // Contrôle de vitesse du moteur PWM
const int PIN_SPEED = 11 ; // Sortie d'impulsion de vitesse SC de la carte RioRand
Après avoir téléchargé le code sur Arduino, lancez la fenêtre du moniteur série et assurez-vous de définir le débit en bauds sur 115 200 comme prévu dans le code, sinon vous verrez des caractères indésirables.
À ce stade, vous pouvez exécuter les commandes suivantes dans le moniteur série [assurez-vous que le caractère de nouvelle ligne est défini sur retour chariot avant de saisir les commandes dans le moniteur série].
Pour démarrer le moteur à basse vitesse, entrez :
MLI, 10
Cela fera fonctionner le moteur que vous testez avec les numéros de broches dans le code pour un cycle de service de 10. Vous pouvez augmenter ou diminuer la vitesse en entrant un cycle de service différent ou arrêter le moteur en entrant un cycle de service de 0.
Vous pouvez également arrêter le moteur en entrant la commande break :
FREIN, 1
La commande Break avec 1 activera la pause, ce qui signifie que le moteur s'arrêtera et la commande Break avec 0 désactivera la pause, ce qui signifie que la pause est désactivée et que le moteur peut bouger. Cependant, si vous avez précédemment envoyé une commande break avec 1, puis envoyez une commande PWM avec un rapport cyclique non nul, le moteur ne bougera pas jusqu'à ce que vous exécutiez une autre commande Break avec 0.
La dernière commande est DIR ou commande de direction. Vous pouvez changer le sens de rotation du moteur en exécutant :
DIR, 1
Cela fera avancer le moteur et si vous changez la direction en envoyant 0, il se déplacera vers l'arrière.
Soyez prudent en changeant la direction du moteur lorsqu'il tourne à grande vitesse dans une direction. Arrêtez ou cassez toujours le moteur avant de changer de direction pour éviter d'endommager votre configuration.
Si vous souhaitez contrôler les deux moteurs en même temps, vous pouvez vous référer au code dans ce référentiel cela vous permet d'envoyer des commandes PWM aux deux moteurs en même temps. Cependant, cela nécessite quelques modifications de code supplémentaires et c'est actuellement un travail en cours. Je partagerai les détails lorsque j'aurai testé avec succès le code.
Cela a été un voyage douloureux avec beaucoup d'arrêts et de départs pour trouver un contrôleur de moteur qui peut être utilisé pour contrôler les moteurs d'hoverboard qui ne va pas faire sauter la banque et il peut être utilisé pour convertir un hoverboard en un robot contrôlé par ROS2 et ceci en est un autre petit pas dans ce voyage.
Merci beaucoup à MAD-EE pour le partage de vidéos YouTube et de code dans le domaine public, cela a été d'une grande aide. De plus, merci aux membres de la communauté robotique/ROS pour avoir partagé des idées afin de poursuivre ce projet.
J'espère que cela a été utile. Amusez-vous à construire !!