Maison >interface Web >js tutoriel >Conception RTC avec calibrage automatique du cloud pour un contrôleur programmable simple basé sur ESP6
Dans le système de contrôle d'automatisation de l'industrie et de l'agriculture, l'horloge en temps réel (RTC) est une fonction très importante.
Par exemple, l'agriculture de la période désignée d'arrosage automatique, entre 8h00 et 9h00 chaque jour pour ouvrir automatiquement l'arrosage de l'électrovanne ;
Cette fonction nécessite que le contrôleur dispose d'une horloge RTC et du calendrier pour déterminer l'exécution de la sortie pour contrôler l'allumage/extinction de l'électrovanne ;
Une caractéristique importante de l'horloge RTC est que le contrôleur continue à être alimenté par la batterie après une panne de courant, ce qui nécessite que l'alimentation du module RTC soit séparée de l'alimentation des autres parties du processeur, et le courant de fonctionnement doit être très faible afin de garantir que l'horloge après une panne de courant soit suffisamment longue pour maintenir l'heure.
Processeur STM32F103, par exemple, le processeur a une broche VBAT séparée pour la fonction du module RTC, le courant de fonctionnement du module RTC est d'environ 2 µA environ, si vous utilisez une alimentation par pile bouton rechargeable de 5 mAh, le temps de rétention de l'horloge peut atteindre 208 jours .
De plus, l'horloge RTC a également besoin d'un cristal basse fréquence de 32,768k pour fournir une horloge permettant d'atteindre l'objectif de faible consommation d'énergie, le cristal passif peut généralement atteindre une précision d'environ 30 ppm, l'erreur de temps d'un an est d'environ 15 minutes.
L'oscillateur à cristal actif peut généralement atteindre une précision d'environ 5 ppm ; l'erreur de temps est d'environ 2 minutes par an ;
L'ESP8266 n'a pas un tel module RTC, si l'interface via la puce RTC externe I2C augmentera le coût du produit, ne pourra pas atteindre le prix de vente d'environ 30 RMB.
Mais l'avantage de l'ESP8266 est qu'il est facile de se connecter à Internet, vous pouvez calibrer automatiquement l'heure via Internet.
J'ai donc conçu un module d'horloge RTC via le logiciel, la pratique normale est d'écrire le code du calendrier perpétuel, de compter les secondes, de gérer les minutes, les heures, les jours des arrondis ainsi que les années bissextiles, le mois et une série de numéros;
L'ESP8266 fournit deux fonctions, mktime et localtime, qui peuvent réaliser la conversion mutuelle du calendrier et de l'horodatage.
L'utilisation de ces deux fonctions nécessite uniquement de compter les secondes, puis de les convertir en calendrier, et le jour de la semaine peut être calculé par l'année, le mois et le jour de l'année grâce à la formule de Caille ;
Dans le code du serveur TCP du serveur cloud, lorsqu'un message de battement de cœur est reçu du contrôleur, le serveur analyse la valeur de l'heure actuelle du contrôleur dans le message et la compare avec l'heure du serveur, et lorsque la différence dépasse une certaine valeur, puis le serveur envoie la commande pour régler l'heure et calibrer l'heure du contrôleur.
Dans le code du contrôleur, deux variables V225 et V226 sont utilisées pour enregistrer l'état du temps d'étalonnage, où V225 est remis à zéro après la mise sous tension du contrôleur, et est mis à 1 lorsqu'une commande de temps d'étalonnage du serveur est reçu et l'opération de modification de l'heure est effectuée ;
V226 est remis à zéro après la mise sous tension et s'accumule jusqu'à la valeur maximale en 1 s, et seulement lorsque le contrôleur est calibré par le serveur, il sera remis à zéro et continuera à s'accumuler.
Les utilisateurs peuvent utiliser un script pour programmer afin de déterminer que la variable V225 est égale à 1 avant d'exécuter certaines actions afin de garantir que l'horloge du contrôleur est précise pour le contrôle de l'automatisation ;
Vous pouvez également juger le V226 sur une certaine valeur, la mise en œuvre de la sortie, le contrôle de l'équipement d'alarme sonore et lumineuse, de sorte que le contrôleur ne puisse pas obtenir l'heure correcte, le rappel d'alarme instantané.
Une autre idée est que certains contrôleurs ne peuvent pas être mis en réseau pour corriger automatiquement l'heure, vous pouvez enregistrer l'horodatage dans FLASH, le contrôleur a redémarré après une panne de courant pour lire l'horodatage enregistré dans FLASH pour continuer à chronométrer, afin que le contrôleur ne réinitialisera pas l'heure à la valeur par défaut lors du redémarrage, une panne de courant provoquée par l'erreur de temps pour l'intervalle de temps entre les horodatages enregistrés plus l'heure de la panne de courant.
Le problème est qu'il y a une limite au nombre de fois où le FLASH peut être effacé, et le FLASH intégré du module ne peut être effacé qu'environ 1000 fois.
Si les horodatages sont enregistrés à intervalles d'une heure, alors 1 000 effacements dureront environ 41 jours pour le contrôleur.
C'est clairement inacceptable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!