Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Alimentation variable utilisant Arduino UNO - Circuit et code

Comment créer une alimentation variable à l'aide d'Arduino UNO ?

Une alimentation électrique est une exigence de base et essentielle pour les équipements et circuits électroniques et électriques. Il existe différents types de circuits et d'équipements, par conséquent, leur demande d'alimentation est différente pour différents circuits électroniques. Par exemple, les modules Wi-Fi, les relais, les moteurs, etc. nécessitent des tensions différentes. Sur le marché, nous n'obtenons pas d'alimentations électriques différentes pour chaque appareil électronique, nous générons donc notre propre alimentation électrique spécifique à partir de diverses méthodes. La solution simple consiste à utiliser des piles.

Les piles sont généralement utilisées pour alimenter le circuit électronique et les projets, car elles sont facilement disponibles et peuvent être connectées facilement. Mais ils se sont épuisés rapidement et nous avons alors besoin de nouvelles batteries. De plus, ces batteries ne peuvent pas fournir de courant élevé pour entraîner un moteur puissant. Ainsi les batteries se déchargent et aussi elles rendent le circuit encombrant. De plus, les batteries deviennent chaudes lorsque l'électronique est utilisée plus longtemps ou de manière excessive et avec le temps, la durée de vie des batteries diminue. Pour surmonter ce problème, nous introduisons une solution meilleure et efficace qui peut être utilisée dans n'importe quel circuit. Dans ce projet, nous allons vous montrer comment générer une alimentation variable à partir d'Arduino UNO .

En utilisant ce projet, vous pourrez obtenir une alimentation électrique variable en fonction de votre équipement électronique sans vous soucier des problèmes de charge, de décharge, de chauffage, etc. Il existe de nombreuses méthodes disponibles pour générer la variable alimentation, mais c'est le moyen le plus simple car il nécessite des composants bon marché et facilement disponibles. Examinons donc les composants requis pour ce projet.

Composants requis

Logiciel : AURDINO Nightly ou Atmel Studio 6.2

Schéma du circuit d'alimentation variable

Avant de vous lancer dans ce projet, faites-nous savoir quelques petites choses sur le projet.

Arduino UNO

Arduino UNO est une plate-forme open source utilisée pour développer des projets électroniques. Il peut être facilement programmé, effacé et reprogrammé à tout instant. Il existe de nombreuses cartes Arduino disponibles sur le marché comme Arduino UNO, Arduino Nano, Arduino Mega, Arduino Lily Pad, etc. avec des spécifications différentes en fonction de leur utilisation. Dans ce projet, nous allons utiliser Arduino UNO pour contrôler automatiquement les appareils ménagers. Il est doté d'un microcontrôleur ATmega328 qui fonctionne à une vitesse d'horloge de 16 MHz. C'est un puissant qui peut fonctionner sur les protocoles de communication USART, I2C et SPI.

Cette carte est généralement programmée à l'aide du logiciel Arduino IDE à l'aide d'un câble micro USB. ATmega328 est livré avec un chargeur de démarrage intégré préprogrammé qui facilite le téléchargement du code sans l'aide du matériel externe. Il a une vaste application dans la fabrication de projets ou de produits électroniques. Le langage C et C++ est utilisé pour programmer la carte qui est très facile à apprendre et à utiliser. Arduino IDE facilite grandement la programmation. Il sépare le code en deux parties, à savoir void setup () et void loop (). La fonction void setup () ne s'exécute qu'une seule fois et est principalement utilisée pour lancer un processus, tandis que void loop () consiste en la partie du code qui doit être exécutée en continu.

Ce modèle se compose de 6 broches d'entrée analogiques et de 14 broches GPIO numériques qui peuvent être utilisées comme sortie d'entrée ; 6 d'entre elles fournissent une sortie PWM et analogique à l'aide de pinMode(), digitalWrite(), Fonctions digitalRead() et analogRead(). 6 canaux d'entrée analogiques vont des broches A0 à A5 et offrent une résolution de 10 bits. La carte peut être alimentée soit par un câble USB qui fonctionne à 5 volts, soit par une prise CC qui fonctionne entre 7 et 20 volts.

Il y a un régulateur de tension intégré pour générer 3,3 volts pour faire fonctionner des appareils à faible puissance. Étant donné que l'ATmega328 fonctionne sur les protocoles de communication USART, SPI et I2C, dispose de broches 0 (Rx) et 1 (Tx) pour la communication USART, broches SDA (A4) et SCL (A5) pour I2C et SS (10), MOSI (11) , MISO (12) et SCK (13) pour le protocole de communication SPI.

ADC sur Arduino UNO

Arduino UNO intègre 6 canaux ADC qui peuvent être utilisés pour détecter ou lire des signaux analogiques allant de 0 volt à 5 volts. Lorsque nous interfaçons des capteurs avec un microcontrôleur comme Arduino UNO, le capteur génère des valeurs de sortie analogiques, l'Arduino UNO détecte les valeurs numériques. Par conséquent, l'ADC aide à convertir les valeurs des capteurs en valeurs analogiques et les alimente dans le microcontrôleur. Il existe de nombreuses applications de l'ADC comme la détection de température, la mesure de distance, la mesure de vitesse et de nombreux capteurs qui génèrent des valeurs analogiques.

Arduino UNO a un ADC 10 bits, ce qui signifie que sa valeur passe de 0 à 1023 à chaque étape. C'est ce qu'on appelle la résolution qui indique le nombre de valeurs discrètes qu'il peut produire sur la plage de valeurs analogiques.

Étant donné que la tension maximale du CAN est de 5 volts, chaque pas du CAN allant de 0 à 1023 a une valeur équivalente à 5 mV environ. Il y a 6 canaux ADC qui de A0 à A5 sur la carte Arduino UNO signifient à la fois qu'il peut contrôler ou s'interfacer avec 6 appareils qui génèrent des valeurs analogiques.

L'IDE Arduino fournit une fonction intégrée pour lire les valeurs analogiques :analogRead(pin).

En donnant simplement le numéro de broche de A0 à A5 auquel les appareils sont connectés, cette fonction nous aide à lire les valeurs analogiques.

PWM sur Arduino UNO

La modulation de largeur d'impulsion (PWM) est une technique utilisée pour générer des signaux analogiques à l'aide d'une source numérique en faisant varier la largeur de l'impulsion tout en maintenant la fréquence constante. Les deux principales choses importantes qui définissent le PWM sont :le rapport cyclique et la fréquence.

Cycle de service d'un signal :

La fraction pendant laquelle un signal est activé dans une période complète est appelée Duty Cycle.

Cycle de service =100*Ton / (Ton + Toff)

Ceci est généralement utilisé pour contrôler la puissance délivrée à la charge en activant et désactivant le signal. Par exemple, il peut être utilisé pour contrôler l'intensité de la lumière ou la vitesse de certains moteurs. Après un appel de la fonction analogWrite(), la broche générera une onde carrée stable du rapport cyclique spécifié jusqu'au prochain appel à analogWrite() ou un appel à digitalRead() ou digitalWrite() sur la même broche.

Fréquence d'un signal :

La fréquence d'un signal signifie à quelle vitesse un signal termine son cycle, c'est-à-dire en combien de temps il passe de son état ON à son état OFF ou vice versa. En procédant ainsi à un cycle de service particulier, la sortie se comporte comme une tension analogique constante. La fréquence du signal PWM sur la plupart des broches est d'environ 490 Hz. Sur les cartes Uno et similaires, les broches 5 et 6 ont une fréquence d'environ 980 Hz. Les broches 3 et 11 du Leonardo fonctionnent également à 980 Hz

Arduino UNO dispose de 6 canaux PWM 8 bits avec le symbole ~ dessus. Nous pouvons obtenir une tension analogique en utilisant la fonction analogWrite dans l'IDE Arduino :

analogWrite (broche, cycle de service)

Pin :il prend la broche sur Arduino UNO utilisée pour générer une sortie analogique.

Cycle de service :il faut des plages de valeurs comprises entre 0 (min) et 255 (max) comme entrée pour modifier le cycle de service.

Écran LCD 16×2

Générer des caractères personnalisés sur l'écran LCD n'est pas très difficile. Il nécessite la connaissance de la mémoire vive générée sur mesure (CG-RAM) de l'écran LCD et du contrôleur de puce LCD. Il s'agit d'interfacer un module LCD Arduino UNO à 16×2 JHD162A. JHD162A est un module LCD 16×2 basé sur le pilote HD44780 d'Hitachi. Le JHD162A possède 16 broches et peut fonctionner en mode 4 bits (en utilisant seulement 4 lignes de données) ou en mode 8 bits (en utilisant les 8 lignes de données). Dans ce projet, nous allons utiliser en mode 4 bits car il faut laisser les fils de connexion.

Broche Description du module LCD 16×2 :

Épingler sur l'écran LCD Description
VSS Broche de mise à la terre
VCC Alimentation +5 V
VEE Pin pour modifier le contraste de l'écran LCD
RS Sélectionner le registre :mode de données ou mode de commande
RW Mode lecture ou écriture
E Activer l'écran LCD
DB0-DB7 Les données et la commande sont alimentées à l'aide de ces broches
LED+ Anode de la LED de rétroéclairage
LED- Cathode de la LED de rétroéclairage

Cet écran LCD n'a pas sa propre lumière, il y a donc une LED derrière l'écran qui agit comme rétro-éclairage pour l'affichage. L'interfaçage de cet écran LCD avec Arduino UNO est assez simple car Arduino IDE fournit une bibliothèque LiquidCrystal qui possède de nombreuses fonctions intégrées pour faciliter l'initialisation et l'impression de tout ce qui apparaît sur l'écran. Les fonctions LCD que nous allons principalement utiliser dans ce projet sont :

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()

Fonctionnement d'une alimentation variable à l'aide d'Arduino

Connectez correctement les fils comme indiqué dans le schéma de circuit. Dans ce projet, nous allons prendre la tension obtenue à la borne de sortie et la donner en entrée à celle du canal ADC. De plus, le canal ADC donne la valeur numérique qui est ensuite affichée sur l'écran LCD 16 × 2. Les boutons utilisés dans le projet servent à incrémenter et décrémenter la tension et sont connectés aux broches 4 et 5 de l'Arduino UNO. Étant donné que l'Arduino UNO a une résolution de 10 bits, ce qui signifie qu'il varie de 0 à 1023 et que la tension ADC maximale est de 5 volts, un bit est donc égal à 5/1024 =4,9 mili volts (environ). Ainsi, quelle incrémentation et décrémentation nous déplaçons la valeur numérique varie de 0 à 1023.

Nous lisons maintenant la valeur ADC sur le canal A0. Arduino IDE fournit une fonction intégrée analogRead (broche) pour lire les valeurs ADC, ici la broche est A0 car le canal est A0 sur Arduino UNO. De plus, nous utilisons la broche 3 pour Pwm d'Arduino UNO. Arduino IDE fournit la fonction analogWrite(pin,Duty Cycle) pour générer la tension de sortie souhaitée avec un rapport cyclique donné à la broche 3.

Maintenant, en appuyant sur les deux boutons, nous modifions le rapport cyclique du signal pwm qui, en conséquence, modifie la tension de sortie. Un bouton sert à incrémenter le rapport cyclique et l'autre à diminuer le rapport cyclique. La valeur PWM de l'Arduino Uno passe de 0 à 255 dont 0 au minimum pour atteindre 0 volts et 255 au maximum pour atteindre 5 volts. La broche 3 est en outre alimentée par un transistor NPN qui fournit une tension variable à son émetteur et agit comme un dispositif de commutation.

La base du transistor aura un rapport cyclique variable pwm et nous pouvons donc obtenir une tension de sortie variable à la borne. Comme la tension n'est pas linéaire, nous connectons des condensateurs pour filtrer le bruit dans la tension de sortie variable.

Explication du code

Bibliothèques incluses :

#include <LiquidCrystal.h>

Il s'agit de la bibliothèque intégrée pour l'utilisation d'un écran LCD. Il fournit des fonctions qui peuvent être utilisées facilement pour afficher des caractères sur l'écran LCD.

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt =125;
float flag =0;

l'écran LCD à cristaux liquides prend le numéro de broche auquel les broches de données et les broches RS, RW et E de l'écran LCD sont connectées. Puisque nous fixons notre tension de référence à 2,5 volts, nous fixons donc le rapport cyclique à 50 % en mettant ref_volt à 125.

pinMode (3, OUTPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);

La broche 3 de l'Arduino UNO est définie comme sortie PWM, les broches 4 et 5 sont définies pour prendre l'entrée pour l'incrémentation et la décrémentation de la tension.

lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);

la fonction lcd.begin définit le nombre de caractères de l'écran LCD. Au démarrage, nous affichons "Tension variable" sur l'écran.

float value = (analogRead(A0));
value = (value*5)/1024;
analogWrite(3,ref_volt);

La variable de valeur lit la valeur numérique obtenue à partir du canal A0 ADC et convertit cette valeur numérique en valeur de tension. AnalogWrite fournit PWM à la broche 3 de l'Arduino UNO.

if (digitalRead(4)==LOW)
  {
    if (ref_volt<250)
    {
      ref_volt=ref_volt+1;
      delay(100);
    }
  }

Cela vérifie si le bouton d'incrémentation est enfoncé ou non. Si quelqu'un appuie sur le bouton d'incrémentation, cela augmente le ref_volt.

  if (digitalRead(5)==LOW)
   {
     if (ref_volt>0)
      {
        ref_volt=ref_volt-1;
        delay(100);
      }
    }

Cela vérifie si le bouton de décrémentation est enfoncé ou non. Si quelqu'un appuie sur le bouton de décrémentation, cela diminue le ref_volt.

De cette façon, vous pouvez générer l'alimentation variable 5 volts à l'aide d'Arduino UNO sans trop se soucier des piles et rendre le circuit encombrant.


Technologie industrielle

  1. Utiliser l'IA pour découvrir la traite des êtres humains et de la faune dans la chaîne d'approvisionnement
  2. Décodeur DTMF utilisant uniquement Arduino
  3. Voltmètre DIY utilisant Arduino et Smartphone
  4. WebServerBlink avec Arduino Uno WiFi
  5. Communication Python3 et Arduino
  6. Radio FM utilisant Arduino et RDA8057M
  7. Courant, puissance et couple dans les variateurs de vitesse
  8. Schéma du circuit d'alimentation double - 230VAC à ±12VDC
  9. Alimentation sans transformateur :méthode approuvée pour réduire les coûts et l'espace