Contacts

Régulateur de température automatique avec arduino uno. Un autre thermostat sur Arduino, mais avec OpenTherm. Comment tout a commencé

Ventilateur automatique Arduino, qui se met en marche lorsque la température dans la pièce atteint une certaine valeur.

Dans ce didacticiel, vous découvrirez les ventilateurs à température contrôlée sur l'Arduino à l'aide d'un capteur et d'un relais DHT22. Nous utiliserons un capteur DHT22 pour obtenir une valeur de température et afficher cette valeur de température sur l'écran LCD. Ensuite, nous vérifierons si la valeur de la température est supérieure à 35 ou non, si la température est supérieure à 35, alors le relais sera activé et le ventilateur commencera à tourner.

Composants

Nous aurons besoin des détails suivants pour notre projet :

Schéma de principe du ventilateur Arduino

Le schéma de principe de notre ventilateur ressemble à ceci :

Déterminons la connexion de toutes les pièces. Tout d'abord, connectez l'écran LCD à l'Arduino comme suit :

  • Connectez la broche VSS de l'écran LCD à la masse Arduino.
  • Connectez la broche VDD à l'Arduino 5V.
  • Connectez la broche V0 à la broche centrale du potentiomètre 10K. Connectez les deux autres broches du potentiomètre au 5V et à la masse.
  • Connectez la broche RS à la broche 2 de l'Arduino.
  • Connectez la broche R / W à la terre Arduino. Cela mettra l'écran LCD en mode lecture.
  • Connectez la broche E (Activer) à la broche 3 d'Arduino.
  • Connectez les broches D4-D7 aux broches 4, 5, 6, 7 d'Arduino.
  • Connectez la broche 15, qui est le fil positif du rétroéclairage LED, à la broche à 5 broches via une résistance de 220 ohms.
  • Connectez la broche 16, qui est le fil négatif du rétroéclairage LED, à la masse Arduino.

Connectez ensuite le module relais à l'Arduino. Du côté entrée du module relais, effectuez les connexions comme suit :

  • Connectez la broche VCC du module relais à la broche 5V de l'Arduino.
  • Connectez la broche IN du module relais à la broche 9 de l'Arduino.
  • Connectez la broche GND du module relais à la GND de l'Arduino.

Du côté sortie du module relais, connectez les piles moins 9V au module relais commun (C) et connectez le NC du module relais au moins du ventilateur. Connectez ensuite le plus de la batterie au plus du ventilateur.

Enfin, effectuez les connexions pour le capteur de température et d'humidité DHT22.

  • Connectez la broche 1 de DHT22, qui est la broche VCC, à 5V de l'Arduino.
  • Connectez la broche 2 de DHT22 qui est la broche de données à la broche 8 d'Arduino.
  • Connectez la broche 4 du DHT22, qui est la broche de terre, à la terre Arduino.

Esquisse pour Arduino

Ci-dessous, vous pouvez copier et télécharger le code sur votre Arduino Uno.

#include "DHT.h" #include "LiquidCrystal.h" LiquidCrystal lcd (7, 8, 9, 10, 11, 12); #define DHTPIN 6 #define DHTTYPE DHT22 Capteur DHT (DHTPIN, DHTTYPE); int relay_pin = 9; void setup () (lcd.begin (16,2); sensor.begin (); pinMode (relay_pin, OUTPUT); digitalWrite (relay_pin, HIGH);) void loop () (lcd.clear (); float t = capteur .readTemperature (); // lit la température du capteur // Vérifie si le capteur envoie des valeurs ou non if (isnan (t)) (lcd.print ("Failed"); delay (1000); return; ) lcd.setCursor ( 0,0); lcd.print ("Temp:"); lcd.print (t); lcd.print ("C"); if (t> 35) (digitalWrite (relay_pin, LOW); lcd.setCursor (0 , 1); lcd.print ("Fan is ON"); delay (10);) else (digitalWrite (relay_pin, HIGH); lcd.setCursor (0,1); lcd.print ("Fan est OFF"); ) retard (2000);)

Explication du code

Tout d'abord, nous avons inclus des bibliothèques pour le capteur DHT22 et pour l'écran LCD. Les bibliothèques peuvent vous aider à simplifier votre code.

Vous pouvez télécharger toutes les bibliothèques nécessaires à vos projets sur notre site internet dans la rubrique -.

#include "DHT.h" #include "LiquidCrystal.h"

Ensuite, nous avons initialisé les broches auxquelles nous avons connecté le capteur LCD et DHT22. Après cela, nous avons déterminé le type de capteur DHT utilisé. Il existe de nombreux autres types de capteurs DHT tels que le DHT11, il est donc important de déterminer le type ici.

LiquidCrystal LCD (2, 3, 4, 5, 6, 7); #define DHTPIN 8 #define DHTTYPE DHT22 Capteur DHT (DHTPIN, DHTTYPE);

Dans la fonction de configuration, nous avons donné la commande DHT22 et LCD pour commencer à communiquer avec l'Arduino. Ensuite, nous avons déclaré le contact du relais comme une broche de sortie, car nous donnerons la tension de l'Arduino au relais pour activer le relais. Le relais fonctionne à l'envers (High signifie Low pour un relais).

Lcd.begin (16.2) ; sensor.begin (); pinMode (relay_pin, OUTPUT); digitalWrite (relay_pin, HAUT);

Dans la fonction cycle, nous effaçons l'écran LCD puis lisons la valeur de température du capteur.

Lcd.clair (); float t = sensor.readTemperature (); if (isnan (t)) (lcd.print ("Échec"); retard (1000); retour;)

Ensuite, nous imprimons la valeur de la température sur l'écran LCD, et si la valeur de la température est supérieure à 35, le relais sera activé et le ventilateur commencera à tourner.

Lcd.setCursor (0,0); lcd.print ("Temp:"); lcd.print (t); lcd.print ("C"); if (t> 35) (digitalWrite (relay_pin, LOW); lcd.setCursor (0,1); lcd.print ("Fan is ON"); delay (10);)

C'est tout. Bons projets à vous !

La tâche principale du contrôleur de réfrigérateur est de maintenir la température réglée dans la chambre. Cela sera fait par un contrôleur de température en changeant l'alimentation électrique sur le module Peltier.

Dans le tutoriel précédent, nous avons développé un régulateur de puissance. La connexion entre les régulateurs de puissance et de température ressemble à ceci.

  • Le régulateur de température reçoit la température mesurée, la compare à la température réglée et calcule la valeur de puissance réglée pour le régulateur de puissance.
  • Le régulateur de puissance génère un PWM correspondant à la puissance donnée.

Nous avons construit le régulateur de puissance selon la loi de régulation intégrale. Pour stabiliser la température, nous utiliserons un algorithme de contrôle plus complexe - un contrôleur proportionnel-intégral-différenciant (PID).

Contrôleur PID.

Dans le tutoriel précédent, j'en ai parlé. A souligné ses avantages et ses inconvénients.

Un régulateur fonctionnant sur ce principe est très précis. Le reste des critères de qualité du contrôle - performance et stabilité - ne sont pas à la hauteur.

Afin d'atteindre des performances élevées pour tous les critères, il est nécessaire d'utiliser un régulateur qui combine différentes lois réglementaires.

Un tel dispositif est un contrôleur proportionnel-intégral-dérivé (PID). Il génère un signal de sortie qui est la somme de trois composants avec des caractéristiques de transfert différentes. Grâce à cela, le contrôleur PID fournit un contrôle de haute qualité et vous permet d'optimiser le contrôle selon des critères individuels.

Les éléments suivants sont impliqués dans la formation du signal de sortie du régulateur PID :

  • Composante proportionnelle- la valeur est proportionnelle à l'erreur de non-concordance (la différence entre les valeurs définies et réelles du paramètre contrôlé).
  • Composant d'intégration Est l'intégrale de l'erreur de non-concordance.
  • Composant différenciant Est la dérivée de l'erreur de non-concordance.

La forme mathématique de l'écriture de la loi du régulateur PID est la suivante :

o (t) = P + I + D = K p e (t) + K i e (t) dt + K d de (t) / dt

  • o (t) - signal de sortie;
  • P - composante proportionnelle;
  • I - composant intégrateur ;
  • D - composant différenciant;
  • Kp, Ki, Kd - coefficients de liens proportionnels, intégrateurs, différenciants;
  • e (t) - erreur de non-concordance.

Sous une forme schématique, le contrôleur PID peut être représenté comme suit.

Le schéma fonctionnel du régulateur de tension PID U ressemble à ceci.

  • La tension mesurée Ureal (t) est soustraite de l'Uset spécifié.
  • L'erreur de désadaptation résultante e (t) est transmise aux liaisons proportionnelles, intégratrices et différenciatrices.
  • En raison de la somme des composants, une action de commande o (t) est obtenue, qui est transmise à l'élément de régulation.

Lorsque le régulateur PID est implémenté dans un logiciel, le signal de sortie est calculé à intervalles réguliers. Ceux. le régulateur est discret dans le temps. Par conséquent, j'utiliserai plus loin des expressions : état de signal précédent, valeur précédente, etc. Nous parlons de l'état du système au point précédent de l'échantillonnage temporel.

Composants du contrôleur PID.

Encore. Le signal de sortie du régulateur PID est la somme de trois composants :

  • proportionnel;
  • en intégrant;
  • différenciant.

Composante proportionnelle.

P (t) = K p * e (t)

N'a pas de mémoire, c'est-à-dire la valeur du signal de sortie ne dépend pas de l'état précédent du système. L'erreur de non-concordance multipliée par un facteur est simplement envoyée à la sortie. Le signal de sortie compense la déviation du paramètre contrôlé. Plus l'erreur de non-concordance est grande, plus le signal est grand. Si l'erreur est 0, le signal de sortie est également 0.

La composante proportionnelle n'est pas en mesure de compenser complètement l'erreur. Cela peut être vu à partir de la formule. Le signal de sortie est Kp fois l'erreur. Si l'erreur de suivi est égale à 0, alors le signal de sortie du contrôleur est égal à 0. Et puis il n'y a rien à compenser.

Par conséquent, dans les contrôleurs proportionnels, il y a toujours une erreur dite statique. Elle peut être réduite en augmentant le coefficient Kp, mais cela peut conduire à une diminution de la stabilité du système et même à des auto-oscillations.

Les inconvénients des contrôleurs proportionnels incluent :

  • la présence d'une erreur de régulation statique ;
  • faible stabilité avec une augmentation du coefficient.

Il y a un avantage non négligeable :

  • Régulation à grande vitesse. La réponse du contrôleur proportionnel à l'erreur de poursuite n'est limitée que par le temps d'échantillonnage du système.

Les régulateurs qui fonctionnent uniquement en vertu de la loi proportionnelle sont rarement utilisés.

La tâche principale du composant proportionnel dans un régulateur PID est d'améliorer les performances.

Composant intégrateur.

I (t) = K i e (t) dt

Proportionnel à l'intégrale de l'erreur de non-concordance. Compte tenu de la discrétion temporelle du régulateur, on peut écrire comme suit :

I (t) = I (t -1) + K i * e (t)

  • I (t-1) est la valeur I au point d'échantillonnage précédent.

L'erreur suivante est multipliée par un facteur et ajoutée à la valeur précédente de l'intégrateur. Ceux. le signal de sortie s'accumule tout le temps et au fil du temps augmente son effet sur l'objet. Ainsi, l'erreur de non-concordance est entièrement compensée même à de petites valeurs de l'erreur et du coefficient Ki. En régime permanent, le signal de sortie du contrôleur est entièrement fourni par le composant intégrateur.

Les inconvénients d'un régulateur intégré incluent :

  • faible niveau de rendement;
  • stabilité médiocre.

Dignité:

  • La capacité de compenser entièrement l'erreur de non-concordance à n'importe quel gain.

En pratique, les contrôleurs intégrateurs (seulement le terme intégrateur) et intégrateurs proportionnels (composants intégrateurs et proportionnels) sont souvent utilisés.

La tâche principale de l'intégrateur dans le contrôleur PID est de compenser l'erreur statique, afin d'assurer une précision de contrôle élevée.

Composant différenciant.

D (t) = K d de (t) / dt

Proportionnel au taux de variation de l'erreur suivante. Une sorte d'indicateur de l'accélération de l'erreur de mésappariement. La composante dérivée prédit les écarts du paramètre contrôlé dans le futur et contrecarre cet écart. En règle générale, il compense le retard de l'effet du régulateur sur l'objet et augmente la stabilité du système.

Compte tenu de la discrétion temporelle du contrôleur, la composante différenciante peut être calculée comme suit :

D (t) = K d * (e (t) - e (t -1))

Il montre à quel point la valeur de l'erreur de non-concordance a changé dans une unité de temps de la discrétion du contrôleur.

Il n'existe pas de régulateurs constitués d'un seul maillon différenciant.

La tâche principale du différenciateur dans le contrôleur PID est d'augmenter la stabilité.

Réglage du contrôleur PID.

La qualité de la régulation des régulateurs PID dépend en grande partie de l'optimalité des coefficients. Les coefficients du régulateur PID sont déterminés en pratique dans un système à objet réel par sélection. Il existe différentes techniques de réglage. Je ne parlerai que de principes généraux.

La qualité de la régulation est jugée par la réponse transitoire du régulateur. Ceux. selon le calendrier d'évolution du paramètre contrôlé dans le temps.

Aux points traditionnels de la séquence de réglage du régulateur PID, j'ajouterais qu'il faut tout d'abord décider quels critères de qualité de régulation sont préférables.

Dans la leçon précédente, lors de la conception d'un régulateur de puissance, nous nous sommes principalement intéressés à la précision et à la stabilité. Et nous avons même artificiellement réduit les performances. Certains régulateurs fonctionnent dans des conditions d'interférences importantes et la stabilité est plus importante pour eux, tandis que d'autres nécessitent des performances élevées, même au détriment de la précision. Les critères d'optimisation peuvent varier. En général, les contrôleurs PID sont réglés pour garantir que tous les critères de performance de contrôle sont élevés.

Les composants du régulateur PID sont réglés séparément.

  • L'intégrateur et le différentiateur sont désactivés et le gain proportionnel est sélectionné. Si le régulateur est proportionnel-intégrateur (il n'y a pas de lien différenciateur), alors une absence totale d'oscillations sur la caractéristique transitoire est obtenue. Lorsque le régulateur est réglé sur une vitesse élevée, des oscillations peuvent subsister. Le lien différenciant tentera de les compenser.
  • Le lien différenciant est connecté. Son coefficient tend à supprimer les fluctuations du paramètre de régulation. S'il échoue, le facteur proportionnel est réduit.
  • En raison du lien d'intégration, l'erreur de non-concordance résiduelle est supprimée.

Le réglage du régulateur PID est itératif. Ceux. les points de sélection des coefficients peuvent être répétés plusieurs fois jusqu'à ce qu'un résultat acceptable soit obtenu.

En raison de leurs hautes performances et de leur polyvalence, les contrôleurs PID sont largement utilisés dans les systèmes d'automatisation industrielle.

Dans la prochaine leçon, nous développerons un contrôleur de température PID.

Schéma de principe d'un thermostat maison à quatre canaux avec affichage de la température, construit sur la base d'un Arduino UNO, LM325 et avec un affichage 1602A, vous permet de contrôler quatre charges distinctes.

Cet article décrit une version modernisée de l'appareil, qui, en plus de la mesure et de l'indication passives de la température, peut également contrôler quatre radiateurs afin de maintenir la température réglée à quatre endroits différents, là où dans la première version, seule la mesure de la température était possible.

Le fonctionnement d'un thermomètre à quatre canaux et son programme sont décrits en détail dans l'article précédent (L.1), nous ne parlerons donc ici que des modifications pour mettre en œuvre le fonctionnement d'un thermostat à quatre canaux.

Diagramme schématique

Le schéma de principe est illustré à la Fig. 1.

Riz. 1. Un schéma de principe d'un thermostat sur un Arduino UNO, LM325 avec un écran 1602A.

Contrairement au premier circuit (L.1), il y a quatre commutateurs à transistors chargés sur les enroulements de relais K1-K4, qui contrôlent quatre dispositifs de chauffage différents (H1-H4). Les commandes de contrôle de ces touches proviennent de quatre ports numériques D9-D12 de la carte ARDUINO UNO.

Programme

Le programme est présenté dans le tableau 1.

Tableau 1.

La première différence est que les ports sont configurés pour contrôler les éléments chauffants. Ce sont les ports D9-D12, ils sont définis ici :

pinMode (12, SORTIE);

pinMode (11, SORTIE);

pinMode (10, SORTIE);

pinMode (9, SORTIE);

Vous pouvez sélectionner d'autres ports numériques libres, après avoir connecté l'indicateur, il y a toujours D8 et D13. Mais l'auteur a choisi celles-ci : D9, D10, D11, D12. La deuxième différence est que la fonction si comparateur est utilisée pour contrôler les appareils de chauffage. En lignes:

si (temp< -15)digitalWrite(12, HIGH);

if (temp> -15) digitalWrite (12, LOW);

si (tempo< 1)digitalWrite(11, HIGH);

if (tempi> 1) digitalWrite (11, LOW);

si (temp2< 20)digitalWrite(10, HIGH);

if (temp2> 20) digitalWrite (10, LOW);

si (temp3< 10)digitalWrite(9, HIGH);

if (temp3> 10) digitalWrite (9, LOW);

Ces lignes indiquent à quelle température, quel niveau logique doit se trouver sur le port correspondant. Par exemple, si la température du premier capteur (T1) est inférieure à -15°C, le port D12 sera une unité logique. Lorsque la température du deuxième capteur (T2) est inférieure à 1°C, le port D11 sera une unité logique.

Lorsque la température du troisième capteur (ТЗ) est inférieure à 20°С, il y aura une unité logique sur le port D10. Lorsque la température du quatrième capteur (T4) est inférieure à 10°C, le port D9 sera une unité logique. Bien sûr, les températures peuvent être réglées et complètement différentes - toutes celles qui sont nécessaires pour l'application spécifique de cet appareil.

De plus, déjà dans l'appareil fini, si nécessaire, ils sont faciles à changer. Pour ce faire, vous devez connecter un ordinateur personnel au port USB de la carte ARDUINO UNO et charger le programme avec d'autres données sur les seuils de température. En principe, pour cela, un connecteur USB peut être prévu sur le boîtier de l'appareil fini.

Habituellement, dans un thermostat "typique", il y a une boucle d'hystérésis, c'est-à-dire un circuit qui crée la différence entre la température de marche et la température d'arrêt du réchauffeur. Cela est nécessaire pour que le chauffage ne s'allume/s'éteigne pas très souvent. Ceci est particulièrement important si le chauffage est contrôlé par un relais électromagnétique.

Parce que les contacts de relais ne sont pas conçus pour un tel mode de fonctionnement et peuvent rapidement tomber en panne à cause d'un arc électrique. Mais l'hystérésis introduit une erreur dans le fonctionnement du thermostat. Ici, il a été décidé de ne pas créer d'hystérésis, mais pour que les contacts du relais ne commutent pas trop souvent, ralentissez simplement le fonctionnement de l'appareil. Pour ce faire, dans la ligne :

temps d'affichage augmenté à trois secondes. En conséquence, les mesures sont répétées avec une période de trois secondes, et dans tous les cas, le relais ne peut pas commuter plus d'une fois toutes les trois secondes.

Détails

Les relais électromagnétiques K1-K4 peuvent être utilisés avec n'importe quel enroulement 12V et contacts suffisamment puissants pour contrôler des éléments chauffants spécifiques.

Les étages de sortie peuvent être réalisés selon d'autres schémas, par exemple sur des opto-mystors. Dans ce cas, les ports correspondants de la carte ARDUINO UNO sont connectés via des résistances de limitation de courant, des LED d'opto-simulateurs ou des "relais statiques".

Karavkine V. RK-08-17.

Littérature : 1. Karavkin V. - Thermomètre à quatre canaux sur ARDUINO UNO, RK-06-17.

Il partagera avec vous l'expérience de la création d'un contrôleur de vitesse de ventilateur intelligent, avec la participation d'un capteur de température, d'un écran LCD et, bien sûr, d'Arduino.

Il y a plusieurs mois, j'ai lu un certain nombre d'articles sur Arduino et je suis devenu très intéressé par cet appareil et j'ai rapidement décidé d'en acheter un. A noter que je suis loin de la microélectronique, la carte a donc séduit tout d'abord par sa relative facilité d'utilisation. Après avoir touché aux LED et aux "Hello world", je voulais faire quelque chose de pratique, tout en me familiarisant plus en détail avec les capacités de l'Arduino. Compte tenu de l'été anormalement chaud de 2010, l'idée est née d'assembler un variateur de vitesse plus froid en fonction de la température avec affichage de toutes les caractéristiques associées sur l'écran LCD. J'espère que ce schéma ou ses variantes pourront être utiles à quelqu'un, alors j'ai décidé de poster mes croquis.

Pour ce schéma, il nous faut :

  • Le plateau lui-même Arduino ou équivalent;
  • Planche à pain pour assembler des composants de circuit;
  • Écran WH1601A-NGG-CT avec résistance de réglage activée 20 kΩ ou similaire;
  • Résistances - 220 ohms, 10 kΩ, 4,7 kOhms;
  • Transistor bipolaire SS8050D ou similaire;
  • Capteur de température numérique DS18B20;
  • Diode 1N4148 ou équivalent;
  • Ventilateur axial à trois fils (12V), par exemple - ordinateur;
  • Connecteur de prise nutrition 2,1 / 5,5 mm.

Le refroidisseur d'ordinateur a trois fils, dont deux - rouge (+ 12V) et noir (GND) sont utilisés pour l'alimentation, et le troisième (jaune) est connecté à un tachymètre construit sur un élément Hall. Malheureusement, 5V de la carte ne nous suffisent clairement pas, mais les 6 sorties numériques de l'Arduino peuvent fonctionner en mode PWM (elles sont marquées sur la carte elle-même avec des carrés blancs, ou des lettres PWM), nous pouvons donc réguler le signal de la carte au relais, qui sera responsable de la modification de la tension fournie au ventilateur.

Nous recevrons des informations sur le régime du troisième fil du tachymètre, en utilisant une méthode modifiée basée sur la mise en œuvre interrompt, qui sur la plupart des Arduinos peuvent arriver aux broches numériques 2 (interruption 0) et 3 (interruption 1). Soit dit en passant, l'Arduino Mega dispose de 4 broches supplémentaires avec la possibilité de recevoir des interruptions.

Maintenant, vous devez positionner capteur de température numérique, dont nous utiliserons les données pour réguler la tension fournie à la sortie numérique avec PWM, et donc pour "ouvrir" le canal de tension du ventilateur. Pour les capteurs Dallas, il existe sa propre bibliothèque Arduino - DallasTemperature, que nous connecterons plus tard dans le croquis. La bibliothèque doit être décompressée dans le répertoire arduino-0018/bibliothèques/.

Il reste une dernière chose - connecter l'écran LCD, où nous afficherons toutes les informations actuelles sur la température et la vitesse du ventilateur. Depuis que j'ai utilisé l'écran WH1601A pour l'assemblage, il peut y avoir des problèmes d'affichage de chaîne connus. Pour les éliminer, nous utiliserons la bibliothèque LiquidCrystalRus, qui doit également être décompressée dans le répertoire arduino-0018/librairies/.

// Connecter la librairie du capteur thermique#comprendre // Connecter la librairie pour LCD#comprendre #définir PowerPin 9 // broche pour le contrôle de la puissance du ventilateur#define HallSensor 2 // broche pour le capteur de vitesse du ventilateur (interruption)#define TempPin 7 // broche pour capteur de température LiquidCrystalRus lcd (12, 11, 10, 6, 5, 4, 3); // Connecter LCD DallasTemperature tempSensor; int NbTopsFan, Calc, fadeValue ; // variables entières pour les calculs trempe flottante; // variable réelle pour stocker la température struct typedef ( // Introduire un nouveau type de variables pour les fans type de fan char; int fandiv non signé; ) fanspec ; // Tableau de variables du nouveau type fanspec espace de fans = ((0,1), (1,2), (2.8)); // Variable responsable de la sélection du type de capteur de ventilateur (1 - capteur Hall unipolaire, 2 - capteur Hall bipolaire)éventail de caractères = 2 ; // Cette fonction sera appelée pour nous à chaque interruption void rpm () (NbTopsFan ++;) // Fonction de calcul de la tension appliquée à une broche numérique avec PWM void temp () (fadeValue = min (int (temper * 7), 255); // Multiplier la température par un facteur // prend un entier du produit } // Parce que la valeur PWM maximale est de 255, alors cela n'a plus de sens d'alimenter - nous en prenons au moins deux annuler installer() (tempSensor.begin (TempPin); // Exécuter le capteur de température lcd.begin (16, 2); // Définir les caractéristiques de l'écran LCD lcd.setDRAMModel (LCD_DRAM_WH1601) ; // Et le type d'affichage pinMode (HallSensor, INPUT); // Configurer la broche pour recevoir des interruptions attachInterrupt (0, rpm, RISING); // Nous lions l'interruption au numéro 0 à notre fonction, et elle sera calculée à chaque fois que le signal change) annuler boucle() (temper = tempSensor.getTemperature (); // Obtenir la température température (); // Calculer la tension appliquée au PWM analogWrite (PowerPin, fadeValue); // Nourrissez-le NbTopsFan = 0; // Zéro la variable contenant les tours retard (1000); // Attendre 1 seconde Calc = ((NbTopsFan * 60) /fanspace.fandiv); // Calculer le rpm en 60 secondes divisé par le multiplicateur du ventilateur lcd.print (Calc, DEC); // Affiche la valeur calculée sous forme décimale lcd.print ("tr/min -"); lcd.print (humeur); // Affichage de la température lcd.home (); )

Construisons quelque chose de simple sur l'Arduino pour commencer. DANS Chapitre 12 nous avons déjà inventé des thermostats avec des composants purement analogiques. Voyons maintenant comment vous pouvez impliquer la technologie numérique dans cette entreprise utile.

Nous avons déjà évoqué (cf. Chapitre 18) que les contrôleurs AVR incluent un CAN multicanal 10 bits. Sur les cartes Arduino, ses broches sont spécialement marquées comme entrées analogiques (avec la lettre MAIS avec des nombres de zéro à cinq). Notez qu'ils peuvent être utilisés comme des numéros numériques ordinaires avec des nombres de 14 à 18, et nous les utiliserons à ce titre. Nous utiliserons l'une de ces entrées pour mesurer la température, et nous contrôlerons la connexion de la charge à partir de l'une des sorties numériques.

Total dont nous avons besoin :

□ Carte Arduino Uno (toute autre fera aussi l'affaire);

J'ai une thermistance comme capteur de température. Par exemple, l'existant

□ "Amperke" B57164-K 103-J avec une résistance nominale de 10 kOhm à 25°C - ses caractéristiques sont données en Chapitre 13 comme illustration des propriétés des thermistances ;

□ résistance variable 10 kOhm, résistance fixe 620 Ohm ;

□ relais exécutif - électromagnétique (nécessairement avec un commutateur à transistor amplificateur, voir ci-dessous) ou à semi-conducteurs.

Il existe sur le marché des modules à base de relais électromagnétiques 5 volts, spécialement adaptés pour le contrôle depuis les sorties Arduino. Les relais électromagnétiques eux-mêmes nécessitent un courant de commande assez important (et c'est d'autant plus le cas, plus le relais est puissant - seuls les relais reed les plus faibles peuvent fonctionner directement à partir de la logique), par conséquent, dans tous ces modules de relais, il y a nécessairement un commutateur d'amplification à transistor. Par exemple, Amperka commercialise un tel module basé sur le relais HLS8L ‑ DC5V ‑ S ‑ C. Si le relais électromagnétique ne vous convient pas et que vous recherchez la plus grande simplicité du circuit, vous pouvez rechercher des relais à semi-conducteurs - par exemple, le Crydom CX240D5R ou des similaires avec une tension de réponse de 3-15 V. Ils ont un courant de contrôle d'environ 15 mA à 5 volts par entrée, ce qui est acceptable pour l'AVR, car leur entrée de contrôle peut être connectée directement à la broche numérique de l'Arduino. Certes, à une tension de 220 volts, le CX240D5R ne peut pas commuter une charge d'une puissance supérieure à un kilowatt, mais nous n'en avons pas besoin de plus dans cette tâche.

Le circuit du thermostat Arduino Uno est illustré à la Fig. 21.2.

Riz. 21.2. Circuit thermostat activé Arduino Uno

Dans le schéma, la bobine du relais K1 (avec contacts normalement ouverts) est conditionnellement connectée directement à la sortie numérique de l'Arduino - il est entendu qu'il s'agit soit du relais à semi-conducteurs mentionné précédemment avec les caractéristiques requises, soit simplement de la commande entrée de la carte du module relais fini. Pour surveiller l'état du circuit, la LED est activée en même temps que le réchauffeur. Le programme du thermostat selon un schéma similaire est extrêmement simple :

Les valeurs de résistance sont adaptées à la thermistance B57164 - K spécifiée avec une résistance nominale de 10 kΩ à 25 ° C (103 - J). Conformément au programme, le relais fonctionnera près de la valeur à la sortie ADC, égale à 500. C'est approximativement le milieu de la plage de 10 bits (l'échelle entière est de 1024 gradations), c'est-à-dire que cette valeur sera établie lorsque les résistances supérieure et inférieure sont approximativement égales à l'entrée AO (la tension à cette entrée sera alors d'environ 2,5 volts).

Veuillez noter que les deux fonctions si ne pas finir avec l'habituel autre... Pour éviter les rebonds, une hystérésis a été introduite dans le programme : le relais s'allume lorsque la valeur du code est dépassée 510, et s'éteint lorsqu'il descend à la valeur 490. En attendant, il conservera son état précédent. Vingt unités de code (ce qui est dans Chapitre 12 nous avons appelé zone morte) correspondent à environ 10 millivolts, c'est-à-dire que l'hystérésis à une température comprise entre 30 et 40 degrés sera légèrement inférieure à un dixième de degré (vérifiez par vous-même à l'aide du tableau 13.1 de Chapitre 13).

Le réglage de la température de réponse à l'aide de la résistance R2 avec ces paramètres est possible dans la plage d'environ 22 à 96 ° C. Bien entendu, en pratique, une plage de réglage aussi large n'est pas nécessaire, il est donc conseillé de réduire la valeur de R2. La valeur de R1 est choisie de sorte que R1 et la valeur nominale de R2 s'ajoutent à la résistance de la thermistance à la valeur inférieure de la plage de température souhaitée (conformément au tableau 13.1). Pour un ajustement plus précis, vous pouvez calibrer et modifier les valeurs seuils dans le programme en mesurant la température en régime permanent avec un thermomètre conventionnel.

Si vous utilisez d'autres capteurs dans ce circuit, n'oubliez pas le signe du coefficient de température. Une diode ou un transistor ordinaire dans une connexion de diode (comme dans les circuits de Chapitre 13) ont également une pente négative de la caractéristique, donc pour eux seules les valeurs numériques du seuil de déclenchement devront être modifiées dans le programme. Mais les capteurs semi-conducteurs de type TMP35 (voir. Chapitre 13) ou simplement des thermomètres à résistance métallique (comme dans la conception de Chapitre 17) ont un coefficient de température positif, les conditions de déclenchement devront donc être inversées. De plus, modifiez non seulement «plus» en «moins» et vice versa, mais modifiez également le rapport des seuils d'hystérésis - dans une nouvelle situation, le chauffage devra s'allumer si la valeur est inférieure au seuil inférieur, et éteignez si plus que le plus grand.



Vous avez aimé l'article ? Partagez-le