Archives

Interface Série pour Régulation de Moteur Brushless avec Contrôleur BLD-300B

.

📜 Description : Dans cette vidéo, nous allons explorer un programme Arduino conçu pour contrôler la vitesse d’un moteur brushless en utilisant un contrôleur BLD-300B. Le code utilise la communication série pour recevoir des valeurs de vitesse entre 0 et 255, qui sont ensuite appliquées au moteur via ce contrôleur spécifique.

🔍 À propos du Contrôleur BLD-300B : Le BLD-300B est un contrôleur de moteur brushless qui permet une régulation fine de la vitesse et du couple du moteur. Il est souvent utilisé dans des applications industrielles et de robotique pour un contrôle précis.

🔑 Points clés :

1️⃣ Utilisation du Contrôleur BLD-300B : Nous utilisons le contrôleur BLD-300B pour une meilleure régulation de la vitesse du moteur.

2️⃣ Configuration de la broche PWM : La broche 9 de la carte Arduino est configurée comme sortie pour le signal PWM.

3️⃣ Communication Série : Le programme utilise la communication série pour recevoir les valeurs de vitesse du moteur.

4️⃣ Validation des Entrées : Le code vérifie si les valeurs reçues sont dans la plage autorisée (0-255) avant de les appliquer.

5️⃣ Feedback Utilisateur : Des messages sont affichés sur le moniteur série pour informer l’utilisateur de l’état actuel du système.

N’oubliez pas de 👍 aimer la vidéo, de 🔔 vous abonner et de 💬 laisser un commentaire si vous avez des questions ou des suggestions !

📅 Date : 04/10/2023
🛠️ Version de l’IDE Arduino : 2.2.1
👨‍💻 Réalisé par : Hervé Mazelin pour RedOhm

 

Informations complémentaires :

Sur une carte Arduino, le signal PWM (Pulse Width Modulation, ou Modulation de Largeur d’Impulsion en français) est généralement utilisé pour simuler un signal analogique à l’aide d’une sortie numérique. Les cartes Arduino ont des broches spécifiques capables de générer des signaux PWM, souvent marquées avec un symbole « ~ » à côté du numéro de la broche.

La fonction analogWrite() est utilisée pour envoyer un signal PWM à une broche spécifique. Cette fonction prend deux arguments : le numéro de la broche et la valeur du rapport cyclique, qui est généralement un nombre entre 0 et 255. Par exemple, analogWrite(9, 127) enverra un signal PWM avec un rapport cyclique d’environ 50% à la broche 9.

Le microcontrôleur sur la carte Arduino génère le signal PWM en alternant rapidement la broche entre les états haut et bas, en modifiant la durée pendant laquelle la broche reste à chaque état selon la valeur du rapport cyclique spécifié. Par exemple, une valeur de 127 sur une échelle de 0 à 255 fera en sorte que la broche soit à l’état haut environ 50% du temps et à l’état bas les 50% restants.

Le signal PWM sur Arduino est souvent utilisé pour contrôler la vitesse des moteurs, régler la luminosité des LEDs, ou même générer des sons simples. Cependant, il est important de noter que même si cela peut simuler un comportement analogique, le signal généré est en réalité toujours numérique (état haut ou bas), et certains dispositifs peuvent nécessiter un filtrage supplémentaire pour fonctionner correctement avec un signal PWM.

 

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

Retour au sommaire

 

Tutoriel Arduino : Compteur de Vitesse Analogique avec Écran TFT !

.

Ce programme est conçu pour fonctionner avec une carte Arduino et un écran TFT. Son objectif principal est d’afficher un compteur de vitesse sur l’écran TFT, simulant ainsi un tableau de bord analogique, comme celui que l’on pourrait trouver dans une voiture ou une moto.

  1. Fonctionnement de base :
    • Le programme lit une valeur analogique (provenant d’un capteur ou d’un potentiomètre connecté à la broche A9 de l’Arduino) qui est censée représenter une vitesse.
    • Cette valeur analogique est ensuite mappée (ou convertie) en une valeur de vitesse allant de 0 à une vitesse maximale définie (dans ce cas, Vitesse_max est définie à 150).
    • Le programme utilise la vitesse déduite pour ajuster une aiguille sur l’écran TFT. Cette aiguille indique la vitesse actuelle, similaire à un compteur de vitesse analogique. Outre l’aiguille, le programme affiche la vitesse exacte numériquement sur l’écran.
  2. Caractéristiques visuelles :
    • L’écran TFT affiche un cercle représentant le compteur de vitesse, avec des marques (ou graduations) pour indiquer différentes vitesses. Ces marques sont espacées de 10 unités de vitesse et sont accompagnées de chiffres pour faciliter la lecture.
    • Une aiguille pivote autour du centre du cercle, indiquant la vitesse actuelle.
  3. Mise à jour dynamique :
    • Le programme vérifie en continu la valeur analogique lue. Il met à jour l’affichage de l’aiguille et de la valeur numérique en conséquence.
    • Le programme évite les mises à jour inutiles pour réduire les clignotements sur l’écran. »Il met à jour l’affichage seulement quand la vitesse change.

Pourquoi le système de coordonnées sur un écran TFT diffère-t-il de la convention mathématique? Comment cela impacte-t-il la programmation sur ces écrans?

Lorsque nous parlons du cercle trigonométrique standard en mathématiques, il commence avec 0° à droite (sur l’axe des abscisses positif) et augmente dans le sens antihoraire.

Cependant, dans de nombreux systèmes de graphiques informatiques, y compris la plupart des écrans TFT pilotés par Arduino, le système de coordonnées est différent :

  1. Origine (0,0) : L’origine du système de coordonnées se trouve généralement dans le coin supérieur gauche de l’écran, et non au centre.
  2. Direction positive de l’axe Y : Dans la plupart des systèmes trigonométriques, l’axe Y est positif vers le haut. Mais dans de nombreux systèmes graphiques, l’axe Y est positif vers le bas.
  3. Sens de rotation : En trigonométrie, l’angle augmente dans le sens antihoraire. Cependant, sur les écrans TFT, c’est différent. L’axe Y positif change la direction. Les objets tournent dans le sens horaire.

Ces différences peuvent rendre la translation des concepts mathématiques trigonométriques dans le monde du graphisme informatique un peu déroutante au début. C’est pourquoi, par exemple, le cercle trigonométrique commence souvent à un angle différent, comme 135° pour le compteur dans le code que nous avons examiné, afin d’avoir le point de départ à l’endroit souhaité.

Ainsi, lors de la programmation pour des écrans TFT ou d’autres systèmes de graphiques informatiques, nous devons prendre en compte ces différences et ajuster les calculs en conséquence.

Pourquoi est-il nécessaire de convertir les degrés en radians lors de l’utilisation de fonctions trigonométriques sur Arduino?

Sur Arduino, la nécessité de traduire les degrés en radians n’est pas due à une limitation spécifique de la plate-forme Arduino elle-même, mais plutôt à la manière dont les fonctions trigonométriques standard, telles que sin() et cos(), sont définies dans la plupart des langages de programmation, y compris le C++ utilisé par l’Arduino.

Voici quelques raisons pour lesquelles les radians sont utilisés pour les fonctions trigonométriques :

Définition mathématique : En mathématiques, le radian est la mesure standard pour les angles. C’est une unité sans dimension qui représente le rapport entre la longueur d’un arc et le rayon du cercle. Cette propriété rend les radians plus fondamentaux et naturels pour décrire les angles dans le contexte des mathématiques.

Simplicité des formules : De nombreuses formules en trigonométrie, en analyse et en physique sont plus simples lorsqu’elles sont exprimées en radians. Par exemple, la dérivée de sin(x) est cos(x) seulement si x est en radians.

Facebook Twitter Youtube

Grabcad Thingiverse Cults  

Page d'accueil du site

 

 

 

Le code pour le TB6600 2/8, Contrôle de la vitesse

TB6600 2/8,Contrôle de la vitesse et de la direction d’un moteur pas-à-pas avec Arduino

Le code commence par définir les broches utilisées pour le contrôle du moteur, à savoir ENA_PIN (broche pour activer/désactiver le moteur), PULS_PIN (broche pour générer les impulsions) et DIR_PIN (broche pour définir la direction). Ensuite, les variables TEMPO (qui stocke la tempo en microsecondes), nouvelle_tempo (initialisée à 0), valeur_alpha_nouvelle_tempo (une chaîne de caractères qui stocke la nouvelle tempo saisie par l’utilisateur), et chaine_caractere (une chaîne de caractères qui stocke les données entrées sur le port série) sont définies.

Dans la fonction setup(), la communication série est initialisée avec une vitesse de transmission de 9600 bauds. Les broches sont configurées en sortie.

const int ENA_PIN = 8; Broche pour activer/désactiver le moteur
const int PULS_PIN = 9; Broche pour générer les impulsions
const int DIR_PIN = 10; Broche pour définir la direction

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Si des données sont disponibles sur la communication série (Serial.available() supérieure à 0) ), la fonction Serial.readStringUntil lit une chaîne de caractères entrée sur le port série de l’Arduino et la stocke dans la variable chaine_caractere. Ensuite, la fonction indexOf() est utilisée pour rechercher les lettres ‘A’, ‘a’, ‘R’ et ‘r’ dans la chaîne de caractères.

Si la lettre ‘A’ ou ‘a’ est trouvée dans la chaîne de caractères (indexA != -1 || indexa != -1), cela signifie que l’utilisateur a saisi une commande de marche avant. La direction est alors définie en mode horaire (digitalWrite(DIR_PIN, HIGH)), et la valeur de la nouvelle tempo est extraite de la chaîne de caractères à partir de la position de la lettre ‘A’ ou ‘a’. Cette valeur est stockée dans la variable valeur_alpha_nouvelle_tempo et affichée sur le port série. Enfin, la valeur de la variable TEMPO est mise à jour avec la nouvelle tempo saisie.

Si la lettre ‘R’ ou ‘r’ est trouvée dans la chaîne de caractères (indexR != -1 || indexr != -1), cela signifie que l’utilisateur a saisi une commande de marche arrière. La direction est alors définie en mode antihoraire (digitalWrite(DIR_PIN, LOW)), et la valeur de la nouvelle tempo est extraite de la chaîne de caractères à partir de la position de la lettre ‘R’ ou ‘r’. Cette valeur est stockée dans la variable valeur_alpha_nouvelle_tempo et affichée sur le port série. Enfin, la valeur de la variable TEMPO est mise à jour avec la nouvelle tempo saisie.

Si aucune des lettres ‘A’, ‘a’, ‘R’ et ‘r’ n’est trouvée dans la chaîne de caractères, un message est affiché sur le port série indiquant que la confirmation de sens de direction est manquante.

Et enfin, pour réaliser la création du train d’impulsions, on commence par récupérer le temps actuel en microsecondes. Ensuite, on vérifie si le temps écoulé depuis la dernière impulsion est supérieur ou égal à la valeur de la tempo. Si c’est le cas, on met à jour le temps précédent avec le temps actuel et on inverse l’état de la broche PULS_PIN pour générer une impulsion. Ce code permet donc de générer des impulsions avec une fréquence régulière en fonction d’une valeur de tempo donnée.

Facebook Twitter  Youtube

Grabcad Thingiverse Cults