dimanche 5 juillet 2020

Porte Motorisée de Poulailler (le bilan)




Porte Motorisée de Poulailler (4ème Partie)


Il est temps de faire le bilan de ce projet et de donner quelques chiffres.

1. Configuration retenue

1.1. Moteur continu

Voici le moteur utilisé :
Moteur JGA25-370 60 tours / minute

La configuration est la suivante :
  • alimentation : 2 batteries 18650 (2000mAH au total)
  • panneau solaire 18V 4W
  • moteur à courant continu 12V 60 tours / minute
  • pas de contact de fin de course
  • module radio NRF24L01 + liaison serveur DOMOTICZ
  • module RTC DS3231
  • ouverture et fermeture par calcul de l'heure de lever et de coucher du soleil
  • module SHT31D
  • temps de sommeil : 5 minutes
  • demande de l'heure au serveur DOMOTICZ : une fois par mois
Comme je le disais en 1ère partie, un petit motoréducteur de ce type conviendrait parfaitement :
J'ai réussi à trouver deux vis de fixation de Ø1.6mm. Il me reste à trouver un petit manchon pour l'axe moteur Ø3mm pour l'adaptation de la poulie à alésage Ø4mm.

Après adaptation d'un manchon de cuivre Ø3mm / Ø4mm voici le résultat :
Ce moteur semble avoir une vitesse inférieure à ce qui est annoncé. De plus il n'a pas résisté bien longtemps. Au bout de quelques ouvertures les engrenages ont lâché sur un blocage moteur en fin de course.

Ce moteur est à déconseiller lorsque l'on utilise une détection de fin de course par mesure du courant.

1.2. ServoMoteur

Le fait que j'aie adopté une solution à moteur continu ne veut pas dire qu'une configuration à base de servomoteur n'est pas viable, bien au contraire.
Entre le 24 avril et le 20 juin celle-ci a donné entière satisfaction.

On utilisera de préférence un contact de fin de course haut, un contact REED + aimant par exemple :


En cas de besoin on trouve des servomoteurs ayant un couple plus élevé que le MG996R, le TD-8120MG (20kg.cm) :
TD-8120MG


2. Problème

Il est important que le couple moteur soit suffisamment faible pour d'éviter que les dents de la poulie ne forcent trop sur celles de la courroie. C'est une histoire de compromis entre la puissance du moteur, le diamètre de la poulie et la vitesse d'ouverture.
Avec le moteur que j'utilise (60 tours / minute) et une poulie de 10mm (16 dents), la valeur minimale du PWM pour que le moteur puisse soulever la porte de 250g est de 100 (le maximum est de 255). En choisissant une valeur de 120 le temps d'ouverture est de 22 secondes.

La valeur du PWM appliqué au moteur a donc été réduite car la puissance moteur est encore trop importante. La courroie est soumise à une tension trop importante en fin de course et a tendance à sauter.

Il est possible aussi que la courroie se soit légèrement détendue du fait que la température est plus élevée qu'en avril. J'ai donc ajouté un tendeur réalisé dans un morceau de fil d'acier galvanisé d'un diamètre de 3mm et un petit morceau de tube aluminium :


La courroie passe à 1mm de la poulie de renvoi située plus bas. Il est préférable qu'elle ne la touche pas, afin d'éviter toute usure.

Avec ce dispositif, outre le fait que la courroie est tendue, le nombre de dents en prise sur le pignon est légèrement supérieur. Le comportement est excellent.
Reste à voir ce que cette solution donnera en fonction de la saison.

3. Comportement

En pilotant le moteur en PWM le courant est irrégulier et il y a des pics allant  jusqu'à 220mA.

On pourrait filtrer ces pics en ajoutant un condensateur en parallèle sur la résistance shunt du L293D (R8). Pour filtrer un PWM à 500Hz sur une résistance de 1Ω ou 1.5Ω il faudrait une capacité de quelques milliers de µF .

J'ai ajouté un condensateur de 3300µF. Le fonctionnement est optimal.

Avec un rapport PWM de 120 les temps d'ouverture et de fermeture sont de 22 et 17 secondes.
L'arrêt moteur est réglé sur 50mA, grâce au condensateur.

4. Mesure du courant du panneau solaire

Le module de mesure du courant du panneau a été ajouté. Il s'agit d'un module équipé d'un INA138 décrit ici :


Il est enfiché sur un connecteur DUPONT femelle 7 points soudé sur la carte afin de pouvoir être retiré après la phase de tests.


L'information est remontée au serveur DOMOTICZ, c'est à dire que celui-ci sera capable d'afficher un graphique de la puissance fournie par le panneau solaire.

Ce qui m'intéresse est de connaître le courant et le temps de charge en fonction de la météo.

Voici les premières données affichées :


Pour réaliser ces premiers essais j'ai déchargé la batterie à plusieurs reprises avec une résistance de 10Ω. La puissance maximale débitée par le panneau est de 1.7W.

Le module de mesure ne sera utile que pendant la phase de test du système. Il sera retiré au printemps, quand la puissance journalière sera connue sur une période suffisamment longue, hiver compris, et éventuellement neige comprise.
Il sera remplacé par un cavalier entre les broches 5 et 6 afin que le courant du panneau puisse passer directement.

4. Consommation

Avec cette configuration la consommation totale est de 1mA, essentiellement due au DS3231.
La consommation est donc d'une dizaine de mAH pendant la nuit en été. Cette perte est compensée par le chargeur le matin aussitôt que le soleil se lève.

La capacité des batteries étant d'environ 2000mAH l'autonomie sans recharge sera de 2000 heures, donc 2.7 mois.
Cette capacité peut paraître disproportionnée, mais pendant l'hiver l'efficacité des batteries sera amoindrie, par conséquent je préfère surdimensionner.

Enfin, durant l'hiver il se peut que de la neige recouvre le panneau solaire. La batterie ne sera donc pas rechargée pendant des périodes plus ou moins longues.

5. DOMOTICZ

Le serveur DOMOTICZ permet de récupérer des informations sous forme de graphiques :


Ce matin la porte s'est ouverte à 05:49:26.


La tension du panneau solaire commence à augmenter à 5H25.


A 5H30 le chargeur TP4056 absorbe 0.4W fournis par le panneau solaire pendant une courte période. La consommation de la nuit est donc compensée en très peu de temps.

La porte s'ouvre à 05:49. Le chargeur TP4056 ne juge pas nécessaire de recharger la batterie, car la tension de celle-ci n'est probablement pas descendue suffisamment bas.

Entre 5H30 et 7H25 le système continue à consommer : 1mA.

Ensuite à 7H25 une phase de recharge démarre. La tension de la batterie est donc descendue en dessous du seuil déclenchant la recharge. La puissance absorbée varie entre 0.1W et 0.2W. La charge se termine à 8H45.

A 8H45 la tension du panneau est de 5.65V. Elle monte ensuite brutalement à 16.5V, ce qui est normal car la recharge est terminée et le TP4056 n'absorbe plus de courant, le panneau ne débite donc plus rien.

Les conditions météo ce matin : temps couvert.
Le panneau est à l'ombre jusqu'à environ 10H30.

Comme on le voit le panneau solaire n'a aucun mal à recharger la batterie, même par temps couvert et à l'ombre. La consommation est faible et par conséquent la quantité d'énergie nécessaire est faible également.

Le panneau solaire est utilisé au maximum à 10% de ses capacités. Tout ceci est extrêmement satisfaisant. Un panneau de 1W suffirait probablement.

6. Téléchargements

Cette version finale est disponible ici :

https://bitbucket.org/henri_bachetti/mysensors-gate/src/v1.0/

7. IDE ARDUINO

Quelques librairies sont nécessaires :

Celles-ci sont optionnelles en fonction des options choisies dans options.h :

8. Évolutions

Dans sa dernière version le schéma a évolué :
 

8.1. Filtrage de la mesure du courant moteur

Un condensateur de 3300µF a été ajouté en parallèle sur la résistance de mesure de courant moteur R8 (version moteur continu). Ce condensateur permet d'amortir la tension aux bornes de la résistance et d'obtenir une mesure plus stable, et donc de régler le courant de blocage du moteur plus finement.
 
La mesure de courant moteur est elle-même moyennée dans le logiciel, afin de lisser la mesure. D'autre part la mesure n'est pas effectuée pendant 1 seconde au démarrage du moteur, afin d'éviter le pic de courant.

8.2. Servomoteur sans fin de course

Dans sa version servomoteur il est possible de se passer de contact de fin de course. Un servomoteur est composé d'un moteur continu, d'un certain nombre d'engrenages et d'un potentiomètre qui est utilisé par un circuit électronique afin de déterminer la position.
Il faut ouvrir le servomoteur et souder un fil sur le curseur du potentiomètre de celui-ci. Sur un MG996R c'est facile :
Il faut dévisser les 4 vis du servomoteur, enlever le capot du côté câble, et souder un fil sur le point milieu du potentiomètre (le fil blanc ci-dessus). Avant de refermer il faut agrandir de 1mm l'ouverture réservée au passage du câble, et refermer le tout.
 
Il vaut mieux éviter de retirer le capot du côté axe moteur, les engrenages risquent de tomber, et il serait dommage de perdre le petit axe du pignon central.

Le potentiomètre délivre environ 0V en position ZÉRO et 2.5V en position 180°.
 
On pourra ainsi mesurer la tension du curseur afin de déterminer la position du servomoteur. Le fil doit être branché en lieu et place du contact fin de course sur la broche 13 de l'ARDUINO.
Il suffit d'activer une option USE_SERVO_POT dans le code (options.h), et de désactiver l'option USE_LIMIT_SWITCH :

// limit switch is used (recommanded in a servomotor version)
//#define USE_LIMIT_SWITCH

// use the servomotor potentiometer voltage (needs a modification of the servo)
#define USE_SERVO_POT


Remarque : on peut aussi acheter un servomoteur avec retour de position analogique, si l'on en trouve un qui convient. En général il s'agit plutôt de petits modèles.

8.3. Ports auxiliaires

Un expander MCP23008 a été ajouté. Il permettra d'ajouter des entrées / sorties supplémentaires, pour de future évolutions :
  • distributeur de nourriture
  • approvisionnement en eau
  • etc.
Ce composant est une option.

9. Conclusion

Ce projet est certes complexe du fait de ses nombreuses possibilités :
  • moteur
    • courant continu
    • servomoteur
  • alimentation
    • secteur
    • batterie + panneau
  • méthode d'ouverture / fermeture
    • grâce à la luminosité
      • LDR : idéal en cas d'alimentation secteur
      • panneau solaire
    • à l'aide d'un calcul de l'heure de lever et de coucher du soleil
      • RTC DS3231 avec saisie manuelle de l'heure
      • RTC DS3231 avec demande d'heure au serveur DOMOTICZ
A partir du moment où l'on a fait les choix principaux le paramétrage est relativement simple. Le fichier options.h regroupe toutes les options et les commentaires sont nombreux.
Les paramètre liés au moteur continu sont expliqués en 4ème partie :
Voir 3. Le logiciel

J'espère que cette suite d'articles apportera des réponses suffisantes à qui souhaite mener à bien un projet analogue, qu'il s'agisse de piloter une porte de poulailler ou simplement d'automatiser le pilotage d'un moteur en fonction de l'heure, avec une alimentation autonome ou non.


Cordialement
Henri

5 commentaires:

  1. Bonjour,
    Super boulot. Mes cours d'électronique étant lointains et mon métier actuel sans aucun rapport, j'ai besoin de votre aide pour mettre en place une solution similaire :
    J'envisage un panneau solaire (poulailler éloigné du réseau électrique), une porte motorisée et connectée en wifi à mon serveur Jeedom installé sur Raspberry Pi 4 à mon domicile. J'ai une réception Wifi acceptable au poulailler -64dBm.
    Quels sont les éléments à retenir, enlever ou ajouter à votre système ?

    RépondreSupprimer
    Réponses
    1. Je dirais : remplacer l'ARDUINO+NRF24L01 par un ESP32 (WIFI). Par contre je conseillerais un module ESP32 nu, pas une carte du genre DEVKIT qui consomme pas mal. Un module nu en veille consommera 5µA.
      Le circuit DS3231 devient inutile car l'ESP32 peut obtenir l'heure via NTP.
      Il faut alimenter l'ESP32 sous 3.3V. Un régulateur ME6211 500mA peut faire ce travail.
      Il faut choisir le mode de transmission (servomoteur ou moteur CC) : voir le premier article.

      Supprimer
  2. Bonjour, Je travailler à mon poulailler, comment est-il possible d'envoyer DEPUIS domoticz des données à mon ESP 32 ? Dans le sens inverse c'est facile avec API / JSON mais là je sèche ! je souhaiterais envoyer la commande "ouverture porte" ou "fermeture porte" ainsi que les heures de coucher et lever du soleil à l'ESP de manière à ce qu'il réagisse en conséquence ... Merci beaucoup ;-)

    RépondreSupprimer
    Réponses
    1. Il faut que l'ESP32 embarque un serveur WEB, et soit à l'écoute sur le port 80 (ou 8080 ou 8000). Le serveur doit être capable de traiter des URLs du type http://192.168.X.X/?door=open ou http://192.168.X.X/?door=close (ce n'est qu'un exemple).

      Ensuite il faut ajouter un dispositif virtuel à l'aide du menu "Configuration / matériel", type Dummy, puis lui associer un capteur virtuel du type Interrupteur / Sélecteur.
      Dans l'onglet interrupteurs, régler le type sur On/Off et associer deux URLs aux actions ON et OFF (les mêmes que précédemment).
      Il vaut mieux que l'IP de l'ESP32 soit fixe.

      Supprimer
    2. Le WEB server peut être construit facilement avec la classe WebServer, ou mieux : ESPAsyncWebServer
      https://randomnerdtutorials.com/esp32-async-web-server-espasyncwebserver-library/

      Supprimer