Affichage des articles dont le libellé est Moteurs. Afficher tous les articles
Affichage des articles dont le libellé est Moteurs. Afficher tous les articles

samedi 3 juillet 2021

Moteur Continu et Puissance

 

Moteur Continu et Puissance

 

Lorsqu'on a besoin d'un moteur on se pose souvent la question de savoir quelle puissance électrique on doit lui fournir en fonction de la charge qu'il va lever ou déplacer.

Cette question est souvent posée sur les forums.

La puissance électrique ou mécanique s'exprime en watts, ou en chevaux (1 cheval = 736W).

1. Domaine électrique

Dans le domaine électrique la puissance est égale à la tension d'alimentation multipliée par le courant absorbé : P = U * I

U est donné en volts, et I en ampères.

2. Domaine mécanique

Le moteur a un couple (C) et une vitesse de rotation (V).

Dans le domaine mécanique la puissance est égale au couple délivré par le moteur multiplié par sa vitesse de rotation : P = C * V

C est donné en newton.mètre, et V en radian par seconde. 1 tour par seconde est équivalent à 2 * PI radian / seconde = 6.28 rd/s.

Il suffira donc de calculer la puissance mécanique pour savoir quelle est la puissance électrique nécessaire, en tenant compte du rendement.

On peut se rendre compte immédiatement que les calculs seront impossibles si l'on ne possède pas les caractéristiques du moteur (vitesse, couple). Il nous faut au minimum la référence du moteur et rechercher sa datasheet.

Premier conseil : ne jamais acheter un moteur si le vendeur ne fournit pas au minimum de renseignements.

3. Exemple

3.1. Soulever une charge

Imaginons que nous ayons une charge à soulever :
  • poids : 2Kg
  • hauteur : 1 mètre
  • temps de levage : 10 secondes

Nous disposons d'une poulie de 2cm de diamètre, et la charge sera soulevée par un câble, un fil ou une courroie.

La circonférence de la poulie est de PI * D = 3.14 * 2cm = 6.28cm.

Le nombre de tours nécessaires pour lever la charge sera donc de 100cm / 6.28cm = 16 tours.

La vitesse nécessaire sera de 16 tours / 10 secondes = 1.6 tours / seconde

Ce qui donne une vitesse de 1.6 * 60 = 96 RPM (tours par minute)

Le couple C nécessaire est de 2Kg * 1cm (le rayon de la poulie).

1Kg est équivalent à 9.81N (newtons).

C = 2Kg * 9.81 * 0.01m = 0.196 N.m (newton.mètre)

A ce stade, il nous faut rechercher un moteur ayant un couple d'au moins 2 Kg.cm, soit 0.196 N.m. (en fonction du constructeur, l'une ou l'autre information sera donnée dans la datasheet), et une vitesse d'environ 100 RPM.

Je précise : au moins 2Kg.cm, car il y a des frottements éventuels qu'il faudra combattre.

Dans ces calculs, un paramètre important est négligé : l'accélération au démarrage. Plus le moteur sera puissant plus la vitesse nominale sera atteinte rapidement.

Prenons comme exemple un motoréducteur JGA25-370. C'est un moteur équipé d'un réducteur de vitesse à engrenages (la photo ci-dessus). Voici sa datasheet :

https://www.openimpulse.com/blog/jga25-370-gearmotor-selector/

Il existe un modèle de moteur JGA25-370 12V ayant une vitesse nominale de 108 RPM, avec un couple de 8.4 Kg·cm.

Son couple est donné en Kg.cm. Attention : il s'agit du couple maximal lorsque le moteur bloque (couple de blocage ou Stall Torque en anglais). Le couple réellement utilisable est forcément légèrement inférieur.

En newton.mètre cela donnerait 8.4 * 9.81 / 100 = 0.82N.m

Convient-il ? Oui, très largement. Il est même 4 fois trop puissant, mais vu son prix de 5€, ce n'est pas très gênant. Si l'on cherche à optimiser (encombrement, poids, coût) on peut rechercher un moteur moins puissant.

Si le moteur n'avait pas été assez puissant on aurait pu changer pour un moteur plus puissant, ou choisir un modèle avec un rapport de réduction supérieur, ce qui revient à réduire la vitesse, augmenter le couple et augmenter le temps de levage, et donc à réviser notre cahier des charges à la baisse.

Si l'on désire absolument utiliser un moteur existant et que celui-ci n'est pas assez puissant il y a plusieurs solutions :

  • réduire la charge mécanique, par exemple réduire le diamètre de la poulie
  • réduire le poids de la charge
  • adopter un contrepoids

Pour terminer, calculons la puissance nécessaire pour notre exemple.

Comme vu précédemment la puissance mécanique P = C * V (avec C en newton.mètre, et V en radian par seconde. 1 tour par seconde est équivalent à 2 * PI radian / seconde = 6.28 rd/s.

Théoriquement la puissance mécanique développée sera de :

P = C * V = 0.196 N.m * 1.6 tour/s * 2 * PI = 1.96W

Le courant sera de :

I = P / U = 1.96W / 12V = 163mA

On peut accessoirement calculer la puissance maximale du moteur, en considérant son couple maximal :

Pmax = C * V = 0.82 N.m * 1.6 tour/s * 2 * PI = 8.24W

Cela confirme qu'il est bien 4 fois plus puissant que nécessaire pour l'application envisagée.

Il faut également prendre en considération le rendement. Si l'on adopte une valeur de 85% l'alimentation devra délivrer une puissance de :

P = 1.96W / (85 / 100) = 2.3W

Et un courant de :

I = 163mA / (85 / 100) = 193mA

On pourra ajouter à cette puissance et ce courant une marge de sécurité de 20%.

Cela nous amène au final à choisir une alimentation minimale de 12V / 2.76W / 231mA. A cela il faudra ajouter la puissance nécessaire aux autres composants (microcontrôleur, driver moteur, etc.).

Dans le tableau de sélection (voir lien précédent), le moteur sélectionné consomme au maximum, en cas de blocage, 1.2A sous 12V, soit 14.4W. Il faudra une alimentation adaptée si l'on considère que le moteur peut éventuellement être amené à bloquer, en arrivant en butée par exemple. Là encore, une marge de sécurité de 20% ne fera pas de mal.

Remarque : si l'on préfère un moteur 6V ou 24V il suffit de choisir le modèle qui convient le mieux dans le tableau et refaire les calculs.

3.2. Déplacer une charge

Déplacer une charge (un véhicule par exemple, ou un chariot) est un problème différent. Si le plan est horizontal et si les frottements sont négligeables, un couple faible suffira à déplacer la charge. Si le plan est incliné il faudra un couple supérieur.

Une charge roulante ou coulissante ayant des frottements nuls n'existe pas. Le meilleur moyen de connaître la force globale nécessaire au déplacement est d'utiliser un dynamomètre. Un simple pèse bagage électronique peut suffire, ou un poids connu pendu au bout d'une ficelle attachée à la charge (prévoir une poulie de renvoi).

Ensuite, une fois la mesure effectuée, on fera le calcul comme précédemment.

3.3. Accélération

L'accélération est peut-être un critère important. Celle-ci va dépendre essentiellement du poids de la charge, mais également de l'inertie du rotor du moteur et du réducteur.

L'accélération est la relation entre la variation de vitesse et la variation de temps :

Elle est donc exprimée en m/s².

Le plus logique est de se fixer un temps pour atteindre la vitesse voulue. Si l'on désire atteindre une vitesse de 10cm/s en 0.1 seconde, l'accélération sera de :

a = m/s²

Pour une voiture l'accélération est donnée sous forme de vitesse atteinte dans un temps donné :

Exemple : 0 à 50 km/h en 10 secondes

50 km/h = 13,9 m/s

L'accélération de ce véhicule est donc de 13.9m/s / 10s = 1.39m/s²

Le calcul du couple nécessaire à une accélération donnée dépend du mécanisme utilisé :

https://eduscol.education.fr/sti/sites/eduscol.education.fr.sti/files/ressources/techniques/1198/1198-116-p34.pdf

Ensuite l'auteur va plus loin dans ce document :

https://eduscol.education.fr/sti/sites/eduscol.education.fr.sti/files/ressources/techniques/1290/1290-152-p26.pdf 

Il utilise des données que l'on aura du mal à dénicher pour nos petits moteurs de bricolage :

  • inertie du rotor + réducteur éventuel
  • rendement (on peut adopter un chiffre moyen : 85%)
  • pour un moto-réducteur le rendement des engrenages entraînera une perte supplémentaire de 20%.

Si l'on ne connaît pas les données d'inertie, il suffit de les considérer comme égales à ZÉRO. Si l'inertie de la charge est importante par rapport à l'inertie du moteur, l'erreur sera faible.

Sinon, il faudra essayer de calculer l'inertie du rotor en estimant son poids et son diamètre.

Il existe des formulaires pratiques :

https://www.toutcalculer.com/mecanique/moment-d-inertie.php

4. Pilotage d'un moteur

Si vous ne savez pas piloter un moteur cet article est fait pour vous :

ARDUINO : Bien Débuter (voir paragraphe 1.5.5. La commande de puissance, et plus précisément 1.5.5.4. Commande de moteur, s'il s'agit d'un moteur continu).

5. Conclusion

On peut assez facilement constater que les calculs sont simples dans le cas où l'accélération n'est pas une contrainte forte. Dans le cas contraire de bonnes connaissances mécaniques sont nécessaires.


Cordialement

Henri


dimanche 5 juillet 2020

Porte Motorisée de Poulailler (le bilan)




Porte Motorisée de Poulailler (le bilan)


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

Pour rappel la partie électronique est composée de deux cartes. Leur largeur est identique, elles sont donc empilables :

Carte de puissance

Carte de commande

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 afin 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 .

Dans la dernière version du schéma j'ai ajouté une cellule RC 1KΩ / 22µ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 100mA, grâce à la cellule RC.

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 :

https://riton-duino.blogspot.com/2020/07/lina138-current-monitor.html

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/

Depuis le 25 mars 2023 une nouvelle version est disponible : 

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

Les modifications hardware sont mineures (déplacement du connecteur 11 broches sur la carte de commande), les modifications logicielles concernent uniquement le paramétrage.

Egalement, une option a été ajoutée (voir options.h : CLOSE_DELAY).

// close delay in minutes
#define CLOSE_DELAY       30

Cette option permet de retarder la fermeture de la porte au coucher du soleil. En effet, lorsque le soleil  se couche la luminosité est loin d'être nulle, et les poules ne ressentent pas forcément la nécessité de rentrer dans le poulailler, en tous cas, pas toutes. Cela peut prendre plus d'un quart d'heure.

Enfin, l'activation du shell change. Il faut appuyer sur les deux boutons simultanément, et les relâcher pour que l'on puisse modifier l'heure et la date à l'aide du serial monitor. Pour en sortir, si par exemple on a appuyé sur les deux boutons par mégarde, il suffit d'appuyer sur un des deux boutons.

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

Une cellule RC de 1KΩ / 22µF a été ajoutée en parallèle sur la résistance de mesure de courant moteur R8 (version moteur continu). Cette cellule permet de lisser 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
  • chauffage
  • etc.

Ce composant est une option.

A savoir : en fonction des évolutions prévues le poulailler pourra difficilement se passer d'une alimentation secteur.

Si l'on ne veut pas s'encombrer de ce MCP23008 et de la place supplémentaire qu'il occupe sur le PCB, on peut télécharger la version v0.4 : 

https://bitbucket.org/henri_bachetti/mysensors-gate/src/v0.4/

Tout en conservant la carte puissance de la dernière version, afin de bénéficier du filtrage de la mesure du courant moteur, que la v0.4 ne possède pas.

9. Liens utiles

Après deux ans et demi, suite à un déménagement, la suite : l'installation

https://riton-duino.blogspot.com/2023/04/porte-motorisee-de-poulailler.html

10. 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 :

https://riton-duino.blogspot.com/2020/06/porte-motorisee-de-poulailler-4eme.html

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

samedi 20 juin 2020

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




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



Aujourd'hui nous allons étudier la version à moteur continu et poulie crantée.

1. Mécanique

Le schéma de principe et les cotes sont ceux vus en première partie :

Le seule différence est que la poulie intermédiaire (sous la poulie de renvoi qui se trouve immédiatement sous le moteur) disparaît. En effet vu la taille réduite du moteur, elle n'a aucun intérêt.

Le montage a pris quelques heures :

Vue d'ensemble (la hauteur est de 1.20m)

Support moteur

Poulie de renvoi (porte ouverte)

Poulie inférieure

Poulie inférieure (porte fermée)

Les supports de poulies ainsi que le support moteur sont réalisés dans une feuille d'aluminium de 1mm d'épaisseur, à l'aide d'une cisaille, une perceuse et une lime. Le pliage est réalisé à l'étau.

Comme prévu (voir première partie) un profilé plat (10mm x 2mm x 40cm) en acier est fixé sur la porte à l'aide d'un petit boulon (photo 3) et à la poulie à l'aide d'une pince (photo 2 et 4).
La pièce plate de la pince (côté gauche) est un morceau du même profilé (10mm x 2mm) de 40mm de longueur percé en son centre (diamètre 4mm).
Un trou de 4mm est pratiqué dans la courroie afin de laisser passer la vis de fixation.

Comme on le voit sur les photos 2 et 4 la pince doit pouvoir évoluer entre les deux supports de poulie sans les rencontrer. L'écartement entre les deux supports est d'au minimum 32cm + la longueur de la pince (40mm). J'ai donc prévu 40cm.

La courroie fait 1m de long et 10mm de large (pitch 2mm) : GKTOOLS
La partie crantée de la pince est ce modèle (pitch 2mm, 10mm de large) :
La poulie moteur est un modèle 4mm 16 dents : GKTOOLS
Les 2 autres poulies sont des modèles 4mm 20 dents : GKTOOLS

Le moteur adopté est le suivant : JGA25-370
J'avais choisi un modèle 36 tours par minute mais le modèle 60 tours / minute s'avère plus intéressant. Ceci est expliqué plus loin.

2. L'électronique

Je rappelle le schéma publié en 3ème partie :

Les composants suivants ont été ajoutés à la carte de puissance :
  • le L293D avec son condensateur de découplage (à droite)
  • son transistor de commutation d'alimentation Q1 AOI403 (en bas à droite)
  • le convertisseur SX1308 (à gauche)
  • le connecteur P4 (en haut à droite)

Quelques essais préliminaires montrent que le MT3608 et le SX1308 ont un fonctionnement assez équivalent. On peut utiliser l'un ou l'autre. La carte de puissance est capable d’accueillir l'un ou l'autre modèle.

Le convertisseur FP6293-5V et le connecteur P3 dédiés à la version à servomoteur deviennent bien évidemment inutiles. Je ne les ai pas retirés pour l'instant.

Le moteur 30 tours / minute a beaucoup trop de couple et la courroie a tendance à sauter de quelques crans avant l'arrêt moteur. Le risque de dégrader la courroie est important. De plus l'arrêt moteur est difficile à détecter à l'aide de la mesure de courant.

Il a été changé pour un modèle 60 tours / minute. Le nouveau moteur met 11 secondes à ouvrir ou fermer la porte et consomme deux fois moins de courant (120mA maximum au lieu de 200mA).

Il sera facile avec ce moteur d'augmenter le temps d'ouverture et de fermeture de la porte en agissant sur la valeur du rapport PWM appliqué au L293D.
Il y a fort à parier que même un modèle 130 tours / minute convienne, avec un rapport PWM adapté.

La résistance shunt (R8) est de 1.5Ω. Ce shunt provoque une chute de tension de 180mV quand le moteur tourne (il consomme 120mA), négligeable par rapport aux 12V de l'alimentation.
La puissance supportée par cette résistance est faible : 20mW. Un modèle 1/4W peut convenir.
Celle que j'avais prévue (2W) était surdimensionnée au cas où j'utiliserais un moteur plus puissant.

Le contact de fin de course n'est pas utilisé. Lors du démarrage du logiciel, si la porte est ouverte et qu'il fait jour, une commande d'ouverture est envoyée. Comme le moteur se bloque immédiatement, le logiciel l'arrête aussitôt.

3. Le logiciel

Le sketch a évolué :
Le courant moteur est mesuré pendant l'ouverture et la fermeture. Lorsque la porte arrive en fin de course, le courant dépasse la consigne et le moteur est arrêté.

Les paramètres (options.h) sont plus nombreux :

#define PWM       120
#define IMOTOR_SHUNT      1.5

#define MOTOR_MAX_ONTIME  25000
#define MOTOR_CURRENT     0.05

PWM désigne le rapport de modulation de largeur d'impulsion du signal appliqué à la pin EN du L293D. Le maximum est de 255 (pleine vitesse).
IMOTOR_SHUNT est la valeur de la résistance shunt de mesure du courant moteur (R8 sur le schéma).
MOTOR_MAX_ONTIME est le temps de fonctionnement maximal autorisé pour le moteur. Le moteur est coupé si ce temps est dépassé. Cela pourrait se produire par exemple en cas de problème :
  • courroie détendue
  • courroie rompue
  • problème électronique
MOTOR_CURRENT est le courant maximal autorisé pour le moteur. Avec un rapport PWM de 120, le courant n'excède pas 30mA.

Il est bien évident que ces paramètres sont directement dépendants du moteur et des poulies utilisées.

Il est facile de les régler. Au départ la courroie est laissée libre, c'est à dire que la pince de fixation au profilé de manœuvre de la porte n'est pas mise en place.

Le premier paramètre à régler est le PWM. On pourra fixer ainsi le temps d'ouverture et de fermeture de la porte.
On peut chronométrer le temps que met un trait à la craie sur la courroie pour parcourir les 32cm nécessaires.
Par exemple, avec le matériel que j'ai utilisé un PWM de 120 permet d'ouvrir la porte en 20 secondes.

Lors de l'ouverture et de la fermeture de la porte le sketch affiche le courant moteur en temps réel sur la console. Il suffit d'utiliser les boutons pour ouvrir et fermer la porte et de donner à MOTOR_CURRENT une valeur supérieure de 20% à la valeur maximale affichée.

Le temps d'ouverture ou de fermeture peut facilement être estimé en connaissant la vitesse de rotation du moteur et le diamètre de la poulie moteur.
On peut également chronométrer le temps que met un trait à la craie sur la courroie pour parcourir les 32cm nécessaires.
On donnera à MOTOR_MAX_ONTIME une valeur supérieure : 20% suffisent.

4. Remarques

4.1. Le chargeur

Le TP4056 a tendance a entrer en protection en fin de course si le moteur utilisé est trop puissant. C'était assez souvent le cas avec le moteur 30 tours / minute.

Il existe deux modèles de chargeur TP4056 :
Avec protection

Sans protection

On peut adopter le modèle sans protection.

Si l'on utilise le modèle avec protection et que celle-ci se déclenche on peut relier les bornes OUT- et B-, ce qui la désactivera.

4.2. Le convertisseur 12V

Les modules MT3608 et SX1308 fonctionnent moins bien avec une tension de batterie proche de 3V. Leur tension de sortie chute à environ 8V. Cela n'empêche pas la porte de s'ouvrir et de se fermer, mais le déplacement est plus lent.
Normalement ce genre de situation ne devrait pas arriver, sauf si la batterie arrive en fin de vie.

5. Téléchargements

Cette quatrième version est disponible ici : 

Le paramétrage correspond à un moteur du type JGA25-370 et un temps d'ouverture de 17 secondes (PWM = 150).

6. Liens utiles

La suite : le bilan

7. Conclusion

Ce montage offre pas mal d'avantages par rapport à celui équipé d'un servomoteur :
  • le moteur peut soulever une porte de plusieurs kilos
  • aucun contact de fin de course n'est nécessaire
  • la porte fermée est plaquée avec force au sol
Le montage mécanique ne m'a pas pris plus de temps, malgré la fabrication des supports de moteur et de poulies. La version à servomoteur nécessitait un levier pas très facile à fabriquer.


Cordialement
Henri

dimanche 3 mai 2020

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




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


Ceci est la suite des articles précédents :
Porte Motorisée de Poulailler (1ère Partie)
Porte Motorisée de Poulailler (2ème Partie)

Nous allons parler aujourd'hui plus en détail de la réalisation électronique. Celle-ci va être découpée en deux parties :
  • la carte alimentation
  • la carte de commande
La carte alimentation regroupe tous les organes de puissance.

1. Les schémas

1.1. La carte de puissance

1.1.1. Alimentation sur batterie

Carte alimentation
Carte alimentation


Les schémas sont réalisés à l'aide de KICAD.

Pour récupérer le projet voir plus bas :  5. Téléchargements.

En fonction de l'option choisie (moteur continu ou servomoteur) cette carte sera pourvue de différents composants.

Les composants suivants sont communs aux deux solutions :
  • batterie
  • TP4056
  • MP1584 5V (sauf panneau solaire 5V ou 6V)
  • Q2 : transistor de commande de puissance
  • XR2981 : convertisseur 5V pour l'ARDUINO
  • P1 connecteur panneau solaire
  • P2 : connecteur pour la carte de commande
  • Q3 + Q4 :  transistors de commande du chargeur
1.1.1.1. Version à servomoteur
Les composants suivants sont prévus pour la version servomoteur :
  • FP6293-5V : convertisseur 5V pour le servomoteur
  • P3 : connecteur MG996R
1.1.1.2. Version à moteur continu
Les composants suivants sont prévus pour la version moteur continu :
  • MT3608 ou SX1308 : convertisseur de tension pour le moteur
  • L293D : pont en H 
  • R8 : résistance de mesure du courant moteur
  • P4 connecteur moteur
  • Q1 : transistor de commande de l'alimentation VCC1 du L293D
Dans sa version à moteur à courant continu la carte est prévue pour recevoir un convertisseur réglable au choix, soit un MT3608 soit un SX1308. Il sera réglé sur 12V ou une autre tension en fonction du moteur.
1.1.1.3. Détails
Comme on le voit sur le schéma j'ai prévu deux emplacements pour les batteries. Cela permettra d'utiliser soit 1 batterie de marque neuve, soit 2 batteries de moindre qualité ou même 2 batteries usagées.

Les deux transistors Q3 et Q4 permettent de connecter ou déconnecter le panneau solaire du chargeur TP4056. Le chargeur est coupé pendant la mesure de la tension du panneau solaire.Si l'option LDR est choisie ces deux transistors sont inutiles, on court-circuitera les pins 2 et 3 de Q3.

Un emplacement est prévu pour un circuit de mesure du courant du panneau, un INA138 suivi d'un amplificateur opérationnel :
Ce module me sera utile pour remonter les informations de courant de charge au serveur DOMOTICZ. Si cette option n'est pas envisagée il faudra court-circuiter les pins 5 et 6 sur la carte (U2 sur le schéma).

On voit également un jumper sur la borne + de la batterie. C'est un simple connecteur DUPONT mâle à deux broches. Celui-ci est utilisé pour la mesure du courant consommé à l'aide d'un câble relié au multimètre :


En fonctionnement normal un jumper doit être mis en place :
1.1.2. Alimentation secteur
Que ce soit dans sa version à moteur continu ou à servomoteur, le montage peut être alimenté par un simple chargeur de téléphone mobile 5V / 1A, à moins que le moteur soit très puissant, auquel cas il faudra adopter une alimentation adaptée.

Rappel : le moteur que je compte utiliser consomme 200mA sous 12V : 2.4W.

1.1.2.1. Version à moteur continu
Si l'on désire alimenter par le secteur il suffira d'un montage de ce type :
Ici aussi dans sa version à moteur à courant continu la carte est prévue pour recevoir un convertisseur réglable au choix, soit un MT3608 soit un SX1308. Il sera réglé sur 12V ou une autre tension en fonction du moteur.
Bien entendu ce montage peut être facilement réalisé sur une plaquette à pastilles.

Si le moteur choisi est un modèle 5V on pourra se passer de convertisseur et adopter tout simplement un module L293D du commerce :
Les branchements seront les suivants :
  • 0V de l'alimentation
    • GND du module L293D
    • GND de la carte de commande (broche 4)
  • +5V de l'alimentation
    • VCC et VIN du module L293D
    • +5V de la carte de commande (broche 6)
  • IN1 et IN2 du module L293D seront reliés à L293D-1A et L293D-2A de la carte de commande
  • le moteur sera relié à A- et A+ du module L293D

Par contre je déconseille totalement de relier un module L293D avec des fils DUPONT. C'est une source évidente de faux contacts. Il est préférable d'utiliser un boîtier DUPONT 8 contacts :

 
Avec des contacts appropriés (ci-dessous à droite) :


Il faudra une pince à sertir, ou bien souder les contacts sur les fils.

1.1.2.2. Version à servomoteur
Enfin, pour une version à servomoteur sur secteur, il n'y aura besoin d'aucune carte additionnelle. Les branchements seront les suivants :
  • 0V de l'alimentation
    • fil marron du servomoteur
    • GND de la carte de commande (broche 4)
  • +5V de l'alimentation
    • fil rouge du servomoteur
    • +5V de la carte de commande (broche 6)
  • orange : broche 11 de la carte de commande
Il faudra prévoir deux petits branchements en dérivation (un domino ou un petit bornier).

1.2. La carte de commande

Voici le schéma retenu pour la partie commande :

La carte de commande comporte tous les composants et modules basse puissance :

  • ARDUINO PRO MINI 5V 16MHz
  • SHT31D (optionnel)
  • DS3231 (optionnel)
  • NRF24L01 + régulateur HT7533-1 (optionnels)

Les entrées D2 et D3 sont réservées aux boutons d'ouverture et fermeture. Ce sont les seules à pouvoir réveiller le PRO MINI par interruption.

Sur l'entrée A3 on voit un capteur de fin de course pour la version à servomoteur, avec une résistance de PULL-UP de 1MΩ. Cette résistance remplace la PULL-UP interne de l'ATMEGA328, car la valeur de ces résistances internes est trop faible (20kΩ à 50kΩ) et cela occasionnerait une surconsommation lorsque le contact est fermé.

Sur l'entrée A0 un pont diviseur permet de mesurer la tension du panneau solaire. Ce pont est adapté à la mesure d'un panneau 12V (tension à vide environ 20V).

Sur l'entrée A1 un pont diviseur permet de mesurer la tension de la batterie.

La mesure sur ces entrées analogique est faite en utilisant la référence interne de l'ATMEGA328 : 1.1V. La valeur des ponts diviseurs est calculée pour obtenir une tension inférieure  1.1V :

  • 4.4V au maximum sur A0 : OK pour une batterie LITHIUM-ION 4.2V maxi
  • 24V au maximum sur A1 : largement suffisant pour un panneau 12V

Cette carte est reliée à la carte alimentation par un connecteur 11 points.

2. Les photos

La carte de commande (photo ajoutée récemment) :


Voici une photo de la carte de puissance :

En haut à gauche : le connecteur du panneau solaire.

Plus bas : le connecteur 11 points pour la carte de commande et le connecteur 3 points pour le MG996R.

Sur la photo la LED bleue du TP456 est allumée. La batterie est pleine.

J'utilise donc deux batteries chinoises. Elles sont vendues pour 6000mAH alors qu'elles n'en font que 1000, c'est dire le niveau de publicité mensongère.

La carte est équipée de tous les composants pour la version servomoteur, hormis la résistance noire 1W de mesure du courant moteur, inutile pour l'instant. Sous la résistance de 1W se trouve l'emplacement du futur L293D et du convertisseur MT3608 ou SX1308.

Les fonctionnalité suivantes sont assurées :

  • ouverture / fermeture
  • recharge de la batterie
  • mesure de la tension de la batterie
  • mesure de la luminosité (LDR)
  • mesure de la tension du panneau solaire
  • utilisation d'un capteur de fin de course haut

La coupure du panneau solaire pendant la mesure de la tension du panneau est particulièrement efficace. La luminosité pourra facilement être déterminée par ce moyen.

Par contre si un éclairage public est présent dans les parages cette solution sera inexploitable, qu'il s'agisse de mesure de luminosité par LDR ou à l'aide du panneau solaire.

Une sécurité a été ajoutée : après l'ouverture de la porte l'état du capteur de fin de course est contrôlé. S'il n'est pas vu en position haute, une deuxième tentative d'ouverture est lancée, et éventuellement une troisième.

Avec cette version sur PCB le couple moteur est nettement plus élevé qu'avec la version sur breadboard. Même en doublant le poids de la porte le moteur ne cale pas.

Ce n'est pas surprenant. La largeur des piste et les composants et connecteurs soudés contribuent grandement à ce résultat.

La tension de la batterie, qui est de 4.18V à vide, chute à 4.07V pendant l'ouverture de la porte. Sur breadboard il est impossible d'obtenir un résultat équivalent.

A noter : le routage de la carte est fait en double face, mais il est également possible de le graver en simple face (à la CNC par exemple) et de souder des straps pour remplacer les pistes de la face supérieure.

La carte se prête particulièrement bien à la gravure à l'anglaise côté recto. Elle est pourvue d'un large plan de masse.

Il est également possible de la réaliser sur une plaquette à pastilles d'environ 100mm x 100mm, avec des fils rigides de section suffisante pour la partie puissance :

  • batteries
  • TP4056
  • convertisseur FP6293
  • transistor Q1
  • etc.

Les parties faible puissance peuvent se contenter de fil à wrapper.

La carte de commande également peut éventuellement être réalisée sur une plaquette à pastilles, mais elles est plus complexe.

4. Mesures

D'après les premiers essais avec ce servomoteur, j'observe que la batterie fournit une pointe de courant de plus d'1A à mi-ouverture de la porte, lorsque le bras de levier se trouve à l'horizontale, la position où il force le plus. Cela équivaut à environ 4W puisque la batterie a une tension de 4V pendant l'ouverture. Sous 5V le courant moteur devrait donc être de 800mA, c'est qui est très raisonnable.

Comme dit plus haut : même en doublant le poids de la porte le moteur ne cale pas. Il consommera plus de courant mais le temps d'ouverture est suffisamment court pour éviter un échauffement excessif.

Contrairement à ce qui se passait sur breadboard je n'ai pas observé de blocage moteur lors de l'ouverture de la porte.

4. Avancement

4.1. 04/05/2020

Le module RTC DS3231 a été ajouté.

Le calcul de l'heure de lever et de coucher du soleil et donc d'ouverture et de fermeture de la porte est effectué à l'aide d'une API disponible dans la librairie standard ARDUINO :

#include <time.h>
    time_t          sun_rise(const time_t * timer);

    time_t          sun_set(const time_t * timer);

C'est simple et efficace, et cela peut éviter les aléas liés à une variation de luminosité indésirable, due à un éclairage public par exemple.

Bien entendu on peut changer l'heure et la date à l'aide de la console ou d'un terminal quelconque. Il faut donc un convertisseur USB / série branché sur l'ARDUINO MINI.

Comme l'ARDUINO est en sommeil, pour changer l'heure ou la date il faut le réveiller. Pour cela j'utilise une petite astuce :
Si la porte est ouverte appuyer sur le bouton ouvrir. Si la porte est fermée appuyer sur le bouton fermer. Comme la porte est déjà ouverte ou fermée, le logiciel entre dans un mode éveil pendant un certain temps : 30 secondes, le temps nécessaire pour entrer une petite commande sur la console :

date May 04 2020
time 16:25:00

Attention : bien respecter le format. Le jour doit être sur deux chiffres, tout comme l'heure, les minutes et les secondes.

Le mois doit être entré en abrégé :

Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, ou Dec

L'heure doit être entrée en valeur UTC (GMT). C'est important car il n'y a pas de gestion de changement d'heure été / hiver. De plus la librairie calcule les heures de lever et de coucher du soleil en temps UTC, donc le DS3231 doit obligatoirement donner l'heure UTC.
Il faudra donc entrer l'heure courante moins 2 heures en été, et l'heure courante moins 1 heure en hiver.

Le DS3231 est très précis, il possède un oscillateur interne calibré et compensé en température. Il dérivera très peu. On peut parier que l'heure restera exacte même après un an d'utilisation, à quelques secondes près.

Je n'envisage pas d'alternative du genre PCF8523, DS1307 ou autre. La précision de ces modules est trop dépendante de leur fabrication, en particulier du quartz utilisé, et de plus ils dériveront forcément beaucoup plus qu'un DS3231 en fonction de la température.

Un détail : certains modules DS3231 sont équipés d'une LED allumée en permanence. Elle doit être retirée afin d'éviter cette consommation inutile, environ 4mA. On peut la dessouder ou la faire sauter à l'aide d'une pince coupante.

Après retrait de la LED le module DS3231 consomme tout de même 800µA, ce qui va porter notre consommation totale à environ 1mA.
Cela ne m'inquiète pas étant donné que cela nous laisse tout de même 2500 heures d'autonomie avec une batterie de 2500mAH, c'est à dire plus de 3 mois.

4.2. 06/05/2020

4.2.1. Le NRF24L01
Le module NRF24L01 a été ajouté.

Le système remonte bien les informations :
  • porte ouverte ou fermée
  • état de charge de la batterie
  • tension du panneau solaire
Il reçoit également la date et l'heure de la part du serveur DOMOTICZ.

La mauvaise nouvelle est que la librairie time standard C ne gère pas l'heure de manière automatique, il faut la mettre à jour toutes les secondes à l'aide d'un appel à la fonction system_tick(). Comme l'ARDUINO est endormi pendant de longues périodes, cela ne sera pas possible.

Il est à noter que la fonction millis() ne fonctionne pas non plus pendant les périodes de sommeil. J'ai déjà été contraint de gérer certains aspects temporels en comptant le nombre de secondes d'endormissement à l'aide d'un compteur.

Le circuit RTC DS3231 doit donc être conservé. On pourra récupérer l'heure du serveur DOMOTICZ une fois par mois pour mettre à jour le DS3231, ce sera amplement suffisant.

Ici deux copies d'écran DOMOTICZ :

Historique des ouvertures et fermetures

Dispositifs

Sur la page dispositifs on voit la porte, la tension du panneau, le capteur de température & humidité, avec la capacité de la batterie.


4.2.2. Le SHT31D
Un capteur de température et humidité SHT31D a été également ajouté.
Ces informations sont également remontées au serveur.

5. Options

Le logiciel étant bien avancé il est largement utilisable.

Le fichier options.h regroupe toutes les options. Actuellement la configuration par défaut est :
  • servomoteur
  • pas de capteur de température
  • ouverture et fermeture en fonction du panneau solaire
  • réveil toutes les 30 secondes
  • utilisation du capteur de fin de course haut
Les options sont facilement modifiables. Il suffit de changer quelques constantes :
  • moteur :
    • #define MOTOR             SERVO_MOTOR : version servomoteur
    • #define MOTOR             DC_MOTOR : version moteur continu (non disponible actuellement)
  • capteur de température :
    • #define SENSOR      NONE : aucun
    • #define SENSOR      HDC2080 : utilisation d'un HDC2080
    • #define SENSOR      SHT31D : utilisation d'un SHT31D
    • #define SENSOR      HTU21D : utilisation d'un HTU21D
  • ouverture et fermeture :
    • #define OPEN_CLOSE_METHOD USE_PANEL : utilisation du panneau solaire comme capteur de luminosité
    • #define OPEN_CLOSE_METHOD USE_LDR : utilisation d'une LDR comme capteur de luminosité
    • #define OPEN_CLOSE_METHOD USE_RTC : utilisation d'un circuit RTC
    • #define OPEN_CLOSE_METHOD USE_DOMOTICZ : utilisation d'un circuit RTC + DOMOTICZ
  • réveil
    • #define SLEEP_TIME        30 : réveil toutes les 30 secondes
  • utilisation du capteur de fin de course haut :
    • #define USE_LIMIT_SWITCH : avec capteur
    • //#define USE_LIMIT_SWITCH : sans capteur
La LDR sera reliée à la carte par un connecteur, donc facilement exposée à la lumière à travers un trou de 5mm dans la paroi extérieure.

L'option RTC nécessite l'approvisionnement d'un circuit RTC DS3231.

L'option DOMOTICZ requiert un module NRF24L01 (avec son régulateur HT7533-1) et également un DS3231.

Le capteur de température qui sera implanté sur la carte sera un SHT31D alimenté en 5V.
La modification du schéma et du routage pour implanter un HDC2080 ou un HTU21D est minime. Ce sont tous des composants I2C.
Attention à l'alimentation du HDC2080 ou un HTU21D qui est de 3.3V (le régulateur HT7533-1 sera nécessaire).
Si la carte est réalisée sur une plaquette à pastilles la modification sera encore plus aisée.

Il y a d'autres options moins importantes :
  • les horaires été / hiver (France par défaut)
  • la latitude et longitude ( à renseigner si l'option RTC est utilisée)
  • TIME_REQUEST_PERIOD : la période de demande de l'heure au serveur DOMOTICZ (30 jours par défaut)
  • MANUAL_TIMEOUT : le temps maximal au bout duquel l'ouverture et fermeture automatique reprend le contrôle après une action manuelle
  • MANUAL_WAKEUP : le temps de réveil pour la saisie de l'heure avec un terminal

6. Téléchargements

Cette troisième version est disponible ici : 

https://bitbucket.org/henri_bachetti/mysensors-gate/src/v0.3/

Le code prévu pour un moteur continu n'est bien entendu pas finalisé.

7. Liens utiles

La quatrième partie : le moteur continu
https://riton-duino.blogspot.com/2020/06/porte-motorisee-de-poulailler-4eme.html

8. Conclusion

Il me semblait indispensable de ne pas continuer à faire du prototypage sur breadboard pour la partie puissance. Le résultat est là et il est très encourageant.

Les différentes options fonctionnent et donnent un résultat très satisfaisant.
J'ai une légère préférence pour la solution à horloge RTC avec calcul du lever et coucher du soleil, qui sera forcément moins tributaire de la luminosité ambiante, éclairage de rue en particulier.

Je recommande particulièrement l'utilisation du capteur de fin de course haut. Depuis que je l'ai mis en place le comportement est plus rationnel, en particulier lors des redémarrages.

L'occupation mémoire de la PRO MINI est assez rassurant (avec les options DOMOTICZ + capteur de température activées) :
  • 74% de l'espace en mémoire FLASH
  • 51% de l'espace en RAM
C'est fou ce que l'ont peut faire avec ces petites cartes.


Cordialement
Henri

6. Mises à jour

04/05/2020 : ajout du DS3231
06/05/2020 : ajout du NRF24L01 et SHT31D