Table des matières:
- Étape 1: Configuration
- Étape 2: Configuration des relais
- Étape 3: Contrôleur d'hystérésis
- Étape 4: Contrôleur PID
- Étape 5: Bus de messages
- Étape 6: bibliothèques
Vidéo: Thermostat basé sur Arduino : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Cette fois, nous allons construire un thermostat basé sur Arduino, un capteur de température et un relais. Vous pouvez le trouver sur github
Étape 1: Configuration
Toute la configuration est stockée dans Config.h. Vous pouvez modifier les codes PIN contrôlant les relais, la température de lecture, les seuils ou les horaires.
Étape 2: Configuration des relais
Supposons que nous aimerions avoir 3 relais:
- ID: 0, PIN: 1, Point de consigne de température: 20
- ID:1, PIN: 10, Point de consigne de température: 30
- ID: 2, PIN: 11, Point de consigne de température: 40
Vous devez d'abord vous assurer que le code PIN de votre choix n'est pas déjà utilisé. Toutes les broches peuvent être trouvées dans Config.h, elles sont définies par des variables commençant par DIG_PIN.
Vous devez éditer Config.h et configurer les codes PIN, les seuils et le nombre de relais. De toute évidence, certaines propriétés existent déjà, vous n'avez donc qu'à les modifier.
const statique uint8_t DIG_PIN_RELAY_0 = 1;const statique uint8_t DIG_PIN_RELAY_1 = 10; const statique uint8_t DIG_PIN_RELAY_2 = 11;
const statique uint8_t RELAYS_AMOUNT = 3;
const statique int16_t RELAY_TEMP_SET_POINT_0 = 20;
const statique int16_t RELAY_TEMP_SET_POINT_1 = 30; const statique int16_t RELAY_TEMP_SET_POINT_2 = 40;
Maintenant, nous devons configurer les relais et le contrôleur, cela se produit dans RelayDriver.cpp
initRelayHysteresisController(0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0);initRelayHysteresisController(1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController(2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
xxx
Étape 3: Contrôleur d'hystérésis
C'est celui choisi dans l'exemple ci-dessus, il a quelques configurations supplémentaires:
const statique uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutesconst statique uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS donne le temps d'attente pour la commutation du relais suivant. Imaginez que la configuration de notre exemple commence à fonctionner dans un environnement à 40 degrés. Cela entraînerait l'activation des trois relais en même temps. Cela pourrait éventuellement conduire à une consommation d'énergie élevée - en fonction de ce que vous contrôlez, le moteur électrique par exemple consomme plus d'énergie au démarrage. Dans notre cas, la commutation des relais a le flux suivant: le premier relais s'active, attendez 5 minutes, le deuxième s'allume, attendez 5 minutes, le troisième s'allume.
RHC_RELAY_MIN_SWITCH_MS définit l'hystérésis, c'est la fréquence minimale pour qu'un relais particulier change d'état. Une fois allumé, il restera allumé pendant au moins cette période de temps, en ignorant les changements de température. Ceci est très utile si vous contrôlez des moteurs électriques, car chaque interrupteur a un impact négatif sur la durée de vie.
Étape 4: Contrôleur PID
C'est un sujet avancé. La mise en œuvre d'un tel contrôleur est une tâche simple, trouver les bons réglages d'amplitude est une autre histoire.
Pour utiliser le contrôleur PID, vous devez changer initRelayHysteresisController(…..) en initRelayPiDController(….) et vous devez trouver les bons paramètres pour cela. Comme d'habitude vous les trouverez dans Config.h
J'ai implémenté un simulateur simple en Java, afin qu'il soit possible de visualiser les résultats. Il se trouve dans le dossier: pidsimulator. Ci-dessous, vous pouvez voir des simulations pour deux contrôleurs PID et P. PID n'est pas parfaitement stable car je n'ai appliqué aucun algorithme sophistiqué pour trouver les bonnes valeurs.
Sur les deux tracés, la température requise est réglée sur 30 (bleu). La température actuelle indique la ligne de lecture. Le relais a deux états ON et OFF. Lorsqu'il est activé, la température baisse de 1,5, lorsqu'il est désactivé, il augmente de 0,5.
Étape 5: Bus de messages
Différents modules logiciels doivent communiquer entre eux, espérons-le pas dans les deux sens;)
Par exemple:
- le module de statistiques doit savoir quand un relais particulier s'allume et s'éteint,
- appuyer sur un bouton doit modifier le contenu de l'affichage et doit également suspendre les services qui consommeraient de nombreux cycles CPU, par exemple la lecture de la température du capteur,
- après un certain temps, la lecture de la température doit être renouvelée,
- etc….
Chaque module est connecté à Message Bus et peut s'enregistrer pour des événements particuliers, et peut produire n'importe quel événement (premier diagramme).
Sur le deuxième diagramme, nous pouvons voir le flux d'événements en appuyant sur le bouton.
Certains composants ont des tâches qui doivent être exécutées périodiquement. Nous pourrions appeler leurs méthodes correspondantes à partir de la boucle principale, puisque nous avons Message Bus, il suffit de propager le bon événement (troisième diagramme)
Étape 6: bibliothèques
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Conseillé:
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : 5 étapes
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : vidéo de ce projet
Notions de base sur les transistors - Tutoriel sur les transistors de puissance BD139 et BD140 : 7 étapes
Notions de base sur les transistors | Tutoriel sur les transistors de puissance BD139 et BD140 : Hé, quoi de neuf, les gars ! Akarsh ici de CETech.Aujourd'hui, nous allons acquérir des connaissances sur la centrale des circuits de transistors de petite taille mais beaucoup plus gros dans le travail.Fondamentalement, nous allons discuter de quelques bases liées aux transistors et
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 - Surveiller la température, l'humidité et l'indice de chaleur sur le M5stick-C avec DHT11 : 6 étapes
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 | Surveiller l'indice d'humidité et de chaleur de la température sur M5stick-C avec DHT11 : Salut les gars, dans ces instructables, nous apprendrons comment interfacer le capteur de température DHT11 avec m5stick-C (une carte de développement par m5stack) et l'afficher sur l'écran de m5stick-C. Donc, dans ce tutoriel, nous allons lire la température, l'humidité & chauffer je
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : 4 étapes (avec photos)
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : Sonoff est une gamme d'appareils pour Smart Home développée par ITEAD. L'un des appareils les plus flexibles et les moins chers de cette gamme est le Sonoff Basic. Il s'agit d'un commutateur compatible Wi-Fi basé sur une excellente puce, ESP8266. Cet article décrit comment configurer le Cl