Archives

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  

 

Les codes pour le TB6600 1/8 , La création du train d’impulsion pour un moteur pas à pas avec Arduino

TB6600, La création du train d’impulsion pour un moteur pas à pas avec Arduino.

 

Code n-1 : TB6600, La création du train d’impulsion pour un moteur pas à pas avec Arduino

Ce code est destiné à contrôler un moteur pas-à-pas à l’aide d’une carte Arduino. Il utilise les pins ENA, PULS et DIR pour contrôler la rotation du moteur.

La fonction setup() est exécutée une seule fois au démarrage de l’Arduino. Elle configure les pattes ENA, PULS et DIR en sortie.

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Elle commence par récupérer le temps actuel en microsecondes. Cette fonction est basée sur le principe de génération d’impulsions  qui permet de faire avancer le moteur d’un pas à chaque impulsion.

Si le temps écoulé depuis la dernière impulsion est supérieur ou égal à la valeur de la tempo stockée dans la variable TEMPO, la fonction inverse l’état de la broche PULS_PIN pour générer une impulsion et faire tourner le moteur pas-à-pas. La valeur de TEMPO contrôle la vitesse de rotation du moteur.

Ce code est un exemple de base pour contrôler un moteur pas-à-pas avec une carte Arduino. Il est possible de modifier le code pour ajouter des fonctionnalités supplémentaires, telles que le contrôle de la direction de rotation du moteur ou la gestion de la vitesse de rotation en fonction de l’entrée utilisateur.

Code n-2 : TB6600, personnaliser la fréquence de votre moteur pas-à-pas en temps réel

Le code présenté ici est un exemple de contrôle de la fréquence d’un moteur pas à pas à l’aide d’un driver TB6600 et d’une carte Arduino. Le principe est de générer des impulsions à une fréquence donnée pour faire tourner le moteur pas à pas.

Le code est organisé en trois parties principales : la déclaration des variables, le setup et son contenu, et enfin la fonction loop et son contenu. Nous allons les examiner chacune en détail.

Déclaration des variables

Le code commence par la déclaration des variables utilisées dans le programme. Les variables sont les suivantes :

  • ENA_PIN, PULS_PIN et DIR_PIN : ces variables contiennent les numéros des broches utilisées pour le contrôle du moteur.
  • TEMPO : cette variable contient la valeur de la tempo en microsecondes. Elle est initialisée à 250 µs.
  • tempsPrecedent : cette variable stocke le temps précédent en microsecondes, utilisé pour calculer le temps écoulé depuis la dernière impulsion.

Setup et son contenu

La fonction setup() est exécutée une seule fois au démarrage de l’Arduino. Elle initialise la communication série, configure les pattes en sortie pour le contrôle du Driver, valide le driver et définit la direction du moteur. Enfin, elle affiche un message pour demander à l’utilisateur de saisir une nouvelle valeur de tempo (train d’impulsions).

Fonction loop et son contenu

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Elle récupère le temps actuel en microsecondes, lit les données disponibles sur la communication série et vérifie si une nouvelle valeur de tempo a été saisie. Si c’est le cas, elle met à jour la variable TEMPO avec cette nouvelle valeur.

Ensuite, la fonction loop() vérifie si la valeur du temps écoulé depuis la dernière impulsion est supérieure ou égale à la valeur de la tempo. Si tel est le cas, elle met à jour la variable tempsPrecedent avec le temps actuel et génère une impulsion en inversant l’état de la broche de pulsation.

 

 

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

Retour au sommaire
Augmenter le nombres de vos sorties PWM sur Arduino

.

Mise à jour le 19/11/2023 : Cet article traite d’une carte de commande qui vous permet d’augmenter le nombre de sorties pwm quand votre carte Arduino devient trop juste pour répondre à vos besoins.

Sommaire :

  • Information technique
  • Tutoriel sur la carte de chez Seeed
  • Exemple de schema 
    • Pilotage d’un servomoteur avec retour d’informations
    • Pilotage de 2 servomoteurs avec des tensions d’alimentations différentes
    • Pilotage de 2 servos avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs
  • Exemple de programme. 
  • Pour tout probléme
  • Retour au menu systeme Grove

.

Information technique  

Carte de commande  de chez Seeedstudio reference 108020102  possedant 16 canaux  basée sur un PCA9685 permettant de contrôler jusqu’à 16 servomoteurs ou 16 leds via une liaison PWM. Ce module communique avec une carte Arduino ou compatible via le bus I2C.

Cette carte comporte jusqu’à 6 pontets à souder permettant de raccorder jusqu’à 64 PCA9685 sur un seul bus I2C. Une source d’alimentation externe est nécessaire pour les servomoteurs.

Caractéristiques:

  • Alimentation partie logique: 3,3 et 5 Vcc
  • Alimentation partie servomoteur: 2,3 à 5,5 Vcc
  • Commande: via le bus I2C
    • Adresse I2C par défaut: 0x7f (configurable par pontet à souder)
    • Compatible niveaux logiques 5 V
  • Sorties servos/leds: connecteur mâle au pas de 2,54 mm
  • Intensité maxi:
    – 25 mA par led
    – 400 mA au total pour tous les servos
  • Dimensions : 65x45x13mm

Retour au sommaire

.

Tuto

.

Retour au sommaire

Exemple de schema 

.

 

Pilotage d’un servomoteur avec retour d’informations à l’aide de la carte SEEED référence 108020102

Augmentation des sorties pwm via la carte 108020102

Augmentation des sorties pwm via la carte 108020102

Pilotage de 2 servomoteurs avec des tensions d’alimentations différentes à l’aide de la carte SEEED référence 108020102 .

Augmentation des sorties pwm via la carte 108020102 . Schema avec des tensions d’alimentations différentes

Augmentation des sorties pwm via la carte 108020102 . Schema avec des tensions d’alimentations différentes

Schema de 2 servos avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs à l’aide de la carte SEEED référence 108020102.

Augmentation des sorties pwm via la carte 108020102 . Pilotage de 2 servomoteurs avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs

Augmentation des sorties pwm via la carte 108020102 . Pilotage de 2 servomoteurs avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs

.

Retour au sommaire

.

Exemple de programme 

.

.

Retour au sommaire

.

Pour tout problème

Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes  sur lesquelles nous éditons.
Cliquez sur celles qui vous intéressent .

Facebook  Twitter  Youtube 

Grabcad Thingiverse Cults  

Retour à la page principal

Arduino & Sen0305 , le changement d’algorithmes

.

Dans ce code Arduino  vous trouverez toutes les explications relatives à l’utilisation du changement de mode de fonctionnement de la caméra SEN0305 pour la reconnaissance faciale et la reconnaissnce d’objet .

.

.

separateur-redohm-001

Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes  sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .

Facebook  Twitter  Youtube 

Grabcad  Thingiverse  Cults  

Retour au changement d’algorithmes
Ecran Nextion : Fonctionnement d’un bouton poussoir fichier HMI

Description du tutoriel pour la tablette Nextion

L’objectif de ce programme  très simple, est d’allumer ou éteindre une LED chaque fois qu’un bouton est pressé sur la tablette Nextion. Ici, nous utilisons la bibliothèque officielle, créée par ITEAD, qui permet de déclarer précisément le composant « bouton ». Comme il s’agit d’un composant de type « Button », il est possible de déclarer une fonction de type callback* sur l’événement « pression sur le bouton ». * Cette fonction est ainsi appelée automatiquement par la librairie officielle, lors de l’exécution de sa propre fonction nexLoop (qui doit donc impérativement être appelée dans la fonction loop de Arduino).

Continuer la lecture