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

34 commentaires:

  1. Bonjour, j'ai téléchargé et compilé le code (différentes versions), plusieurs librairies sont manquantes (<Adafruit_SHT31.h, MySensors.h...)
    cordialement

    RépondreSupprimer
    Réponses
    1. Il suffit de les chercher sur le WEB et de les télécharger.
      https://github.com/adafruit/Adafruit_SHT31
      https://github.com/mysensors/MySensors.git
      etc.

      Supprimer
    2. La liste des librairies est dispo dans le dernier article :
      https://riton-duino.blogspot.com/2020/07/porte-motorisee-de-poulailler-le-bilan.html

      Supprimer
  2. Bonjour, bien fait ton tuto. Mais un peu trop pousser pour moi. J'ai réussi a faire une porte auto avec ouverture fermeture par luminosité et 2 fdc et un moteur dc et une carte L293D et une batterie de voiture. Je souhaiterais supprimer les 2 fdc pour faire un arret par mesure de courant, est ce possible avec le matériel que j'ai déja ?

    RépondreSupprimer
    Réponses
    1. Comme je l'ai fait, avec une résistance de mesure du courant de blocage entres les broches GND du L293D et la masse (voir schéma plus haut).

      Supprimer
  3. Bonjour. Grand merci pour ce tuto, quel travail!! :-)
    Je voulais épurer la carte pcb sous Kicad (en enlevant par exemple le module AUX, mais le logiciel me parle de footprint manquant... En quelle version de Kicad le schéma a t il été fait?

    RépondreSupprimer
    Réponses
    1. Éventuellement je peux fournir les empreintes manquantes.

      Supprimer
    2. J'ai aussi une repository BitBucket regroupant tous mes modules :
      https://bitbucket.org/henri_bachetti/kicad-libraries

      Supprimer
    3. Sinon, si le module MCP23008 est gênant, il suffit de récupérer la version v0.4 :
      https://bitbucket.org/henri_bachetti/mysensors-gate/src/v0.4/

      Supprimer
  4. Bonjour Henri, merci pour toutes ces réponses!
    En fait, ce MCP ne me servira pas, ni ce qui concerne le serveur domotique. Mais, question de newbie, peut être que je peux faire fabriquer la carte grace à tes schémas Kicad SANS y souder les composants en trop ensuite? Merci beaucoup

    RépondreSupprimer
    Réponses
    1. Oui bien sûr.
      Le NRF24 est optionnel (y compris dans le code), et le MCP23008 également.
      Également, comme je disais plus haut, la v0.4 n'intègre même pas le MCP23008 au niveau du schéma.

      Supprimer
  5. Bonjour,
    j'ai des difficultés à trouver les MOSFET AOI4S60 et UP90P06-09L. Ils sont bien disponibles sur AliExpress mais il y a 1 mois d'attente.
    Quels sont les caractéristiques à vérifier pour en trouver des équivalents plus rapidement ?
    Merci

    RépondreSupprimer
    Réponses
    1. Il s'agit plutôt de AOI403.
      Il faut se méfier des délais annoncés par les vendeurs AliExpress. Il sont souvent de 15 jours en réalité.

      Le choix des MOSFETS est assez peu critique.

      Ce sont des MOSFETS canal P

      La caractéristique principale est la tension VGSth, la plus basse possible, 1.5V à 3.5V pour l'AOI403. L'AOI409 est encore meilleur.

      La résistance RDSon doit être faible. Sur ce point L'AOI403 est très bon.

      Pour le reste, tension et courant, tout dépend du moteur. Tous les MOSFETs supportent 12V et quelques ampères de courant Id suffisent.

      Au départ j'avais choisi le SUP90P06 car j'étais assez indécis à propos de la puissance du moteur à choisir.
      Mais le SUP90P06 pourrait être remplacé par un AOI403 ou AOI409 sans problème. Donc autant acheter un seul modèle. Le boîtier TO251 IPAK est au pas de 2.29mm au lieu de 2.54. Un petit coup de pince et ça passe ...

      Ma liste :
      https://riton-duino.blogspot.com/2019/01/mosfets-de-puissance.html

      ATTENTION de bien choisir l'onglet "P channel MOSFETS" en bas de la liste.
      ATTENTION aussi : il y a des MOSFETs CMS, SOT23 par exemple.

      Il sera difficile de trouver ces MOSFETs en France, même GOTRONIC ne les distribue pas.

      Je vous orienterais bien sur www.tme.eu mais il y a 8€ de port et il y a des problèmes de pénurie de composants en ce moment. AOI403 disparu, AOI409 ZÉRO stock.

      Pour conclure, je commanderais plutôt sur AliExpress si le stock est OK. Le délai sera plus court que celui annoncé.

      Supprimer
    2. Je confirme : l'AOI4S60 ne convient pas. VGSth trop élevé 2 à 4V.
      Attention à cocher la bonne case si le vendeur propose plusieurs modèles sur la même page.

      Supprimer
    3. Le seul disponible sur TME : AOI4185
      https://www.tme.eu/fr/details/aoi4185/transistors-avec-canal-p-tht/alpha-omega-semiconductor/
      0.50TTC par 5 pièces. Il sera chez vous en deux jours.
      Par contre il serait bien de faire une commande un peu plus étoffée car payer 8€ de port pour 2.50€ de marchandise ce n'est pas très rentable.

      Supprimer
  6. Absolument génial votre article sur les MOSFET et la feuille de calcul synthétique. Finalement j'ai commandé sur Ali, et effectivement c'est bien du AO1403 dont je voulais parler et non du AO14S60, erreur de ma part.
    Merci

    RépondreSupprimer
  7. Bonjour, j'ai une petite question concernant le TP4056, j'ai pris la version sans protection mais du coup je n'est pas les bornes B+ et B-. Puis je raccorder les pins OUT+ avec B+ et OUT- avec B- sur le PCB ? Ou dois je changer de TP 4056 ? D'avance merci

    RépondreSupprimer
    Réponses
    1. Sur un module sans protection, la sortie a deux usages :
      - batterie
      - montage à alimenter
      Les deux se retrouvent donc en parallèle.

      Supprimer
    2. Merci pour cette réponse rapide.

      Supprimer
  8. Bonjour et merci pour cette excellent Tuto. Je ne comprend pas comment et géré l'activation et la désactivation du NRF24L01. Dans le code je vois bien les deux pin qui permette de gérer cela MY_RF24_CE_PIN et MY_RF24_CS_PIN mais à part leur définition je n'ai pas trouvé où ces 2 pins sont configurées et utilisées. Ça veut dire que le module est tout le temps allumé ?
    D'avance merci

    RépondreSupprimer
    Réponses
    1. Non, cette partie est prise en charge par la librairie MySensors. Dans la fonction lowPowerSleep() du fichier lowpower.cpp, la fonction sleep() est appelée si le système est configuré pour utiliser DOMOTICZ. La fonction sleep() de MySensors met en sommeil l'ARDUINO, mais également le NRF24L01.

      Supprimer
    2. Un serveur DOMOTICZ ou autre, compatible avec MySensors, doit avoir été installé dans l'habitation, avec sa passerelle NRF24L01.

      Supprimer
    3. D'accord merci pour la réponse. En effet j'avais pas pensé à vérifier dans les librairies... N'ayant pas de passerelle NRF24L01 j'ai modifié le PCB pour remplacer les NRF24L01 par un ESP8266 pour se connecter au wifi et envoyer un tweet grâce à l'api Thingspeak pour l'instant sans grand succès mais je ne désespère pas.

      Supprimer
    4. Dans ce cas, autant réaliser l'ensemble avec un ESP32, sans ARDUINO. La consommation sera certainement inférieure à celle d'un couple ARDUINO+ESP8266.
      Il faudra choisir un driver moteur adapté au 3.3V comme le TB6612FNG.

      Supprimer
    5. Oui, j avais vu cette possibilité en lisant le tuto mais ayant des connaissances limitées en électronique j ai préféré conserver le schéma du Tuto et juste remplacer le NRF24L01 par un ESP8266. L alimentation étant déjà un 3.3V en sortie du HT7533 j ai juste rajouté deux diviseurs de tension sur la broche 11 de l Arduino connectée à la pin RX de l Esp et a la broche 7 de l Arduino connectée à la pin CH_PD de l Esp. L Arduino ayant des résistances de pull UP j ai connecté en direct le TX de l Esp sur la pin 12 de l Arduino . Pour le moment l Esp a l air de s allumer ( sa led clignote au démarrage) mais je ne reçois pas de réponse de sa part à mes commandes AT

      Supprimer
    6. En fait il y avais quelque soucis dans mon code.Maintenant j'arrive a lire ce que renvoit l'esp.
      Pour une raison que je n'arrive pas a comprendre l'esp envoie des traces au démarrage en baud rate 74880 :

      ets Jan 8 2013, rst cause:1 boot mode (3,6)

      load 0x40100

      Puis plus rien il ne réagis a aucune commande AT.
      Henri aurais tu une idée s'il te plait ?

      Supprimer
  9. Le baudrate de 74880 ne concerne que le boot. Ensuite il passe à 115200, mais cela dépend du firmware AT.
    Voir ici :
    https://forum.arduino.cc/t/les-bases-dun-serveur-web-sur-esp-01-en-commande-at/482180

    RépondreSupprimer
    Réponses
    1. Merci beaucoup, le problème venait en fait de la pin Reset qui n’était pas connectée au 3V3.
      La carte démarre comme il faut, j'ai pu la configurer en la mettant sur une bread board avec un FTDI USB donc elle se connecte a mon Wifi mais une fois remise dans la PCB pour la porte du poulailler impossible de lui envoyer des commandes. Je vois bien sa séquence de démarrage donc le read de l'esp fonctionne mais rien ne se passe quand j'essaye d'envoyer une commande. La tension est bien de 3V3 pourtant donc le pont diviseur est bon. Mais est ce qu'il peut perturber le fonctionnement du SoftwareSerial de l'arduino ?

      J'avoue être un peu perdu sur ce coup la l'esp démarre et envoie des données donc pas un problème d'alimentation. J'arrive à lire ses données donc le cablage TX ESP -> RX arduino -> OK . Par contre pas d’émission donc TX arduino-> RX ESP :KO. Du coup soit c'est le câblage mais j'ai bien les 3.3V sur la pin RX de l'esp soit c'est le code qui est pas bon j'en ai essayé plusieurs et toujours même comportement et puis en utilisant softwareserial.h c'est relativement facile c'est soit write soit println (si on veut être sur d'avoir le CR LF d'envoyé).

      Supprimer
    2. SofwareSerial supporte mal le 115200 baud. Il faudrait essayer de configurer le firmware en 9600.

      Supprimer
    3. Il est à noter également qu'un ESP8266 consommera environ 100mA (Il n'y a pas de commande AT pour endormir l'ESP8266), contrairement à un NRF24L01 qui lorsqu'il est mis en sommeil consomme 1µA.

      Supprimer
    4. Merci Henri je vais essayer de changer la conf voir si c'est mieux. Pour la consommation de l'ESP8266 j'ai prévu de l'allumer juste pendant quelque secondes puis de l'éteindre avec la PIN CH_PD commandée par l'Arduino du coup il ne devrait pas consommer trop.

      Supprimer
    5. J'ai trouvé la solution. Le problème venait du pont diviseur de tension. Je l'avais fait avec une résistance de 10k et une de 20k et cela faisait un courant trop faible pour que l'esp reçoive les infos sur sa pin RX. Avec une résistance de 1k et 2k plus de soucis.

      Supprimer