Archives

Maîtrise de la Structure de Contrôle ‘Switch’ sur Arduino : Votre Guide Complet

.

🔄 Code 1 : Menu Série Arduino avec Boutons Poussoirs pour Gestion de Moteur

Le programme démarre en initialisant les broches des boutons et en établissant une communication série. Les boutons sont configurés avec des résistances de pull-up internes, une pratique courante pour assurer des lectures stables.

La boucle principale loop() se concentre sur la lecture de l’état des boutons : Marche, Arrêt et Frein. Selon le bouton pressé, une valeur différente est assignée à la variable choixUtilisateur. Cette approche est intuitive et permet une interaction directe avec le matériel.

La structure switch est ensuite utilisée pour interpréter la valeur de choixUtilisateur. Chaque case correspond à un état de bouton spécifique et déclenche une action correspondante : démarrer le moteur, l’arrêter ou débloquer le frein. Si aucun choix valide n’est détecté, un message d’erreur est affiché sur le moniteur série.

Ce qui est intéressant ici, c’est la façon dont la structure switch facilite la décision basée sur plusieurs conditions. Plutôt que d’utiliser plusieurs instructions if-else, qui peuvent devenir encombrantes et moins lisibles avec de nombreux cas, switch offre une solution plus propre et plus organisée.

Après chaque action, un message est envoyé au moniteur série pour informer l’utilisateur de l’action effectuée, et le menu est réaffiché. Cela permet de fournir un retour d’information utile sans surcharger l’interface série, gardant l’interaction principale centrée sur les boutons physiques.

🔄  Code 2 : Arduino : Gestion de Moteur avec la Fonction Switch et Menu Série

Au démarrage, le programme établit une communication série grâce à la fonction setup(). Cette étape assure une interaction fluide entre l’utilisateur et le système. Le programme présente un menu qui offre à l’utilisateur un choix de trois actions : démarrer le moteur, l’arrêter ou débloquer le frein.

La fonction loop() joue un rôle important dans ce processus, surveillant en continu les entrées de l’utilisateur et traitant les commandes dès leur réception. Lorsque le système détecte une entrée valide, il la transmet à la structure switch, où chaque cas correspond à une action spécifique. Cette approche offre une distinction claire et efficace entre les différentes commandes.

  • Dans le cas 1, la fonction demarrerMoteur() est appelée, activant le moteur.
  • Le cas 2 conduit à l’exécution de arreterMoteur(), arrêtant le moteur.
  • Enfin, le cas 3 déclenche debloquerFrein(), libérant le frein du moteur.

L’utilisation de la structure switch dans ce projet démontre une compréhension approfondie des pratiques de programmation efficaces, facilitant la lecture du code et rendant le processus de prise de décision logique et structuré.

Le programme, conçu pour résister aux erreurs, affiche un message d’erreur en cas de réception d’une entrée invalide, guidant ainsi l’utilisateur vers un choix valide, et réaffiche le menu pour permettre une nouvelle sélection.

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 : Nos tuto en vidéo

 

Arduino Uno R4 WiFi ABX00087

.

Carte Arduino UNO R4 WiFi basée sur un processeur 32 bits RA4M1 de Renesas combiné à un circuit WiFi, une matrice à LEDs, un circuit RTC et un connecteur Qwiic/Stemma QT.

Téléchargement et Informations : 

Sur cette page, vous avez la possibilité de télécharger ces fichiers. De plus, vous trouverez toutes les informations relatives à ce matériel sur cette même page.

Spécifications principales

Compatibilité matérielle avec le format de forme UNO. Cette carte maintient le même format et brochage que son prédécesseur, l’Arduino UNO R3, ce qui permet une transition en douceur pour les projets et les boucliers (shields) existants.

Mémoire étendue et horloge plus rapide. Elle dispose d’une mémoire plus grande et d’une vitesse d’horloge supérieure pour des calculs plus précis et la gestion de projets plus complexes.

Tolérance étendue de 24 V .Permet d’alimenter des moteurs, des bandes LED et d’autres actionneurs à partir d’une même source d’alimentation.

DAC 12 bits, CAN BUS, et OP AMP .Ces périphériques intégrés offrent des options supplémentaires pour la conversion analogique-numérique, la communication et l’amplification du signal.

Caractéristiques :

  • Alimentation :
    via le port USB Type-C
    6 à 24 V sur connecteur alim 5,5 x 2,1 mm
    6 à 24 V sur broche Vin
  • Microcontrôleur : Renesas RA4M1 32 bits
  • Microprocesseur : ARM Cortex-M4
  • Fréquence : 48 MHz
  • Mémoire Flash : 256 kB
  • Mémoire RAM : 32 kB
  • Circuit WiFi : ESP32-S3-Mini
  • Interfaces :
    – 14 x broches d’E/S dont 6 PWM
    – 6 x entrées analogiques 10 bits
    – 1 x sortie analogique 12 bits (via un DAC : Digital-to-Analog Converter)
    – 1 x CAN (nécessite un transceiver externe)
    – 1 x bus I2C
    – 1 x liaison série UART
    – 1 x interface SPI
  • Intensité par E/S : 8 mA

Video sur le sujet  :

Surveillance de Potentiomètre avec Résolution ADC de 14 bits sur Arduino UNO R4.

Ce code Arduino a été spécialement conçu pour surveiller les valeurs d’un potentiomètre connecté à la broche A0 d’une carte Arduino UNO R4. L’une des caractéristiques uniques de ce code est l’utilisation d’une résolution de 14 bits pour le convertisseur analogique-numérique (ADC). Cette résolution supérieure permet des lectures plus précises et détaillées, ce qui est particulièrement utile dans des applications comme le contrôle de moteurs de précision, l’instrumentation scientifique et la surveillance environnementale.

 

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  

Menu dessin
Découvrez comment transformer un écran TFT en pseudo-oscilloscope!

.

Dans cette vidéo, nous allons explorer comment utiliser un écran TFT pour visualiser en temps réel les signaux provenant de deux broches analogiques. C’est un outil idéal pour ceux qui souhaitent avoir un aperçu rapide et pratique des signaux électroniques sans investir dans un oscilloscope professionnel.

🔹 Points clés de la vidéo :

1️⃣ Explication de la vitesse de balayage et comment elle est contrôlée par la broche A10.
2️⃣ Visualisation des signaux de A8 et A9 en différentes couleurs.
3️⃣ Utilisation d’un interrupteur pour ajuster l’offset du tracé.

Exemple d’etude :

  • Comprendre le fonctionnement du balayage de notre pseudo-oscilloscope

Le balayage de notre pseudo-oscilloscope est un processus par lequel les signaux électriques sont « balayés » ou tracés horizontalement à travers l’écran, permettant à l’utilisateur de visualiser les variations du signal sur une période de temps. Voici une explication détaillée:

  1. Initialisation: Au début du balayage, une position de départ est définie sur le côté gauche de l’écran (par exemple, la variable x initialisée à 30 dans votre code).
  2. Conversion du Signal: Notre oscilloscope lit les valeurs de tension à partir des broches d’entrée (dans votre cas, A8 et A9). Ces valeurs analogiques sont converties en positions verticales sur l’écran à l’aide de la fonction map(). Ainsi, chaque valeur de tension est représentée par un point sur l’écran.
  3. Tracé du Signal: Chaque valeur lue est dessinée pixel par pixel à partir de la position horizontale initiale. À chaque nouvelle lecture, la position horizontale (x) est incrémentée, créant ainsi un tracé continu qui se déplace horizontalement à travers l’écran.
  4. Vitesse de Balayage: La vitesse à laquelle le tracé se déplace horizontalement est déterminée par la valeur du potentiomètre connecté à la broche A10. Cela permet à l’utilisateur d’ajuster la vitesse de balayage et donc la résolution temporelle de l’affichage.
  5. Réinitialisation: Une fois que le tracé atteint la fin de l’écran ou une position prédéfinie (comme tft.width() - 10), l’écran est effacé et le tracé recommence depuis la position initiale. Cette action simule le comportement d’un véritable oscilloscope, où une fois que le tracé atteint la fin de l’écran, il « revient » pour commencer un nouveau balayage.
  6. Affichage Continu: La boucle de balayage se répète indéfiniment, permettant ainsi une visualisation continue des signaux d’entrée en temps réel.

En résumé, le balayage de notre pseudo-oscilloscope est une représentation visuelle d’un signal électrique au fil du temps, tracé horizontalement sur un écran à une vitesse ajustable.

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

Intégration du capteur angulaire AS5600 pour vos projets de moteur pas à pas.

Le capteur AS5600 est un capteur de position angulaire magnétique. Il est conçu pour mesurer avec précision l’angle de rotation d’un objet, tel qu’un moteur, un arbre ou une pièce mobile. Voici quelques utilisations courantes du capteur AS5600 :

  1. Contrôle de moteurs : Le capteur AS5600 est largement utilisé dans le contrôle des moteurs, notamment les moteurs pas à pas, pour mesurer précisément l’angle de rotation et contrôler le positionnement et la vitesse de manière précise.
  2. Robotique : Dans les applications robotiques, il permet de détecter l’orientation et la position des bras, articulations et pièces mobiles, assurant un contrôle efficace des mouvements pour des tâches précises.
  3. Électronique grand public : Utilisé dans les manettes de jeu, drones, caméras motorisées, robots jouets, il fournit des informations précises sur l’orientation et la position, améliorant le fonctionnement et l’ergonomie des appareils.
  4. Contrôle d’axe : Dans les machines CNC, imprimantes 3D, équipements de gravure, il mesure l’angle des axes pour un positionnement précis et une stabilité de position.
  5. Automatisation industrielle : Intégré aux machines, robots et équipements, il assure le contrôle précis de position et d’orientation, répondant aux exigences des applications industrielles.

En résumé, le capteur AS5600 joue un rôle essentiel dans différentes applications, allant de la robotique à l’électronique grand public en passant par l’automatisation industrielle. Les concepteurs et les ingénieurs apprécient sa précision, sa facilité d’utilisation et sa fiabilité, ce qui en fait un choix populaire. Il mesure avec précision l’angle de rotation et facilite le contrôle dans divers domaines d’application.

Dans cette vidéo, nous vous présentons l’utilisation du capteur AS5600 pour mesurer précisément l’angle de rotation d’un moteur pas à pas. Découvrez comment câbler le capteur et l’intégrer à votre projet Arduino. Nous vous montrons également comment réaliser des essais en manipulant l’aiguille d’un système d’indexage et obtenir le retour de la valeur d’angle sur le moniteur IDE. Un tutoriel détaillé du code est également inclus pour faciliter votre compréhension. Exploitez tout le potentiel du capteur AS5600 et améliorez vos projets de contrôle de positionnement avec précision.

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

    •  
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
KY-022 module récepteur infra rouge

.

Mise à jour le 14/10/2022 : Le module de réception infrarouge adopte la tête de réception infrarouge 1838.Il possède une bonne résistance à la lumière et une forte interférence électromagnétique.Vous trouverez en telechargement sur cette page les fichiers step et Dwg .

.

Sommaire. 

.

Information technique

  • Dimension: 6.4×7.4×5.1mm
  • Angle de réception: 90 °
  • Tension de fonctionnement: 2.7 ~ 5.5V
  • Fréquence: 37.9KHz
  • Portée de réception: 18m

Librairie pour Arduino :
https://github.com/Arduino-IRremote/Arduino-IRremote

Protocoles IR pris en charge :
NEC / Onkyo / Apple/ Denon / Sharp / Panasonic / Kaseikyo
JVC /LG / RC5 / RC6 / Samsung /Sony
Universal Distance /Hash / Pronto
BoseWave /Bang & Olufsen /Lego / Whynter/ MagiQuest

.

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  

Menu dessin