Go Down

Topic: Porte automatique pour poulailler (Read 52249 times) previous topic - next topic

etibou

Voici la dernière version de code compatible avec le compilateur Arduino 1.6.5.
Il y a peut être une petite adaptation à réaliser avec la bibliothèque de l'horloge (la mienne est ancienne).

chris35

Ce message pour remercier Etibou et Achess qui m'ont fortement inspiré dans la réalisation de ma version.

Mon montage étant terminé, je poste ici quelques infos pour ceux qui veulent s'en inspirée.
Ma version est mécaniquement différente, mon poulailler du commerce avait une porte coulissante latéralement, je suis donc partie sur une solution à crémaillère.

L'ensemble des composants électroniques ont étés récupérés, le moteur aussi (automobile).
Le moteur 12V DC + motoréducteur a beaucoup conditionné le choix des composants.
Le moteur fonctionne encore sous 4V a vitesse réduite et couple suffisant pour ma porte, il consomme 1.1A (3A en blocage), heureusement il ne fonctionne que 30secondes par jour.
Pour fournir un tel courant, j'ai opté pour une batterie plomb 6V 5Ah et panneau solaire car je n'ai pas d'énergie à proximité.
Mon poulailler est très ombragé (sous un cerisier) et beaucoup d'arbre dans l'environnement.
Mon choix initial d'un panneau solaire 6V s'est relevé non adapté car un tel panneau fourni le maximum de puissance vers sa tension nominale 6V et pour une batterie plomb, il faut environ 7V + seuil diode anti retour. Mon choix final est un panneau 9V 3W clampé à 7.5V par zéner 5W et une diode schottky en anti retour (dans le cas d'un poulailler fortement ensoleillé, doubler ou changer de type de diode pour éviter de dépasser 7.05V)

La consommation de ma carte Arduino nano est d'environ 10-15mA avec système de mise en veille.
Ayant peur de manquer d'énergie en hiver, j'ai imaginé une solution entièrement analogique et très basique. Le montage basé autour d'un ampli op ne consomme que 0.5mA mais n'a pas la souplesse d'un logiciel. Il m'a obligé à réaliser mon pont en H par solution à mosfet.
L'avenir nous diras si la solution Arduino passe l'hiver ?

La sélection entre les 2 versions s'effectue par 4 switchs

J'ai aussi prévu une option hard pour alimenter un moteur capable de nourrir les poules. Un système basé sur une vis sans fin que je réaliserai dans un futur.

Un bouton poussoir (a la demande de ma femme) pour fermer (ou ouvrir) le poulailler de façon anticipée et être ainsi sur de la fermeture (cela la rassure).
Et aussi (modif de ce matin) pouvoir ouvrir exceptionnellement si une poule n'est pas rentré dans les délais comme cela est arrivé hier soir mais j'avais mis une heure maximum de fermeture trop tôt.

Coté cout de réalisation (environ 30€)
Batterie 12.5€ (port inclus)
Panneau solaire 5€
Carte Arduino Nano 2.5€
Module RTC 1.5€
Quelques composants (Zéner, Mos)

Place au photos, codes, mesures .....

Le mos canal P IRF9520 a été remplacé par un IRF5305 (bien meilleur RdsOn)

etibou

Pas mal du tout..
Reste à voir si le système sera autonome toute l'année.
Pour ma part, j'ai du tirer une petite ligne 12V pour recharger la batterie l'hiver car avec un temps couvert sur plusieurs jour et ma batterie était vide et le système en alerte.
Ne pas descendre en dessous d'une tension de 10V pour une batterie de 12V sinon il y a quelques fois des soucis pour reprendre la charge..
Attention à ISF avec toutes ces poules de luxe !!

electronn2002

Bonsoir,

Très intéressé par votre montage pour le realizer aussi à la maison

alors j'ai voulu simplement recopier et utiliser la version poulallier2.ino mais lorsque je veux vérifier la compilations j'ai plusieurs messages d'erreur du type :


Poulailler_2:942: error: 'setTime' was not declared in this scope

         setTime(now.hour(),now.minute(),now.second(),now.day(),now.month(),now.year());

Poulailler_2:946: error: 'now' was not declared in this scope

       if (prevtime != now())

Poulailler_2:1026: error: 'hour' was not declared in this scope

         Temps = hour()+minute()/60.0;

Poulailler_2:1026: error: 'minute' was not declared in this scope

         Temps = hour()+minute()/60.0;

 
exit status 1
'hour' was not declared in this scope


n'étant pas très féru de la programmation je rame un peu

Merci de vos conseils et aide

etibou

Hello,

Je pense qu'il manque la librairie RTC dans le module de compilation..
A rechercher et télecharger sur le net.
Bon courage..

electronn2002

Bonsoir,

j'ai pourtant plusieurs librairies RTC dans le répertoire (RTClib-master et ARduino-DS3231-master).

et tjrs cette erreur

etibou

Bonjour,

Je n'ai pas d'idée sur le problème, il faudrait que je réinstalle le dernier compilateur sur un autre PC pour tester.
Si je trouve la solution, je posterai..

gogolch

Bonjour Etibou, comme plusieurs autre je débute en Arduino et bute sur des problèmes de bibliothèques. Serait-il possible que vous postiez toute les vôtres et nous donniez la version de votre compilateur ?

etibou

Bonjour,

Actuellement j'ai un vieux compilateur en 1.6.5.
Quand je migre mon programme sur la version 1.8.3, plus rien se compile même avec les anciennes bibliothèques.

Il faudrait reprendre le programme et le corriger pour le rendre compatible avec la nouvelle version de compilateur..
Je regarderai si j'ai un peu de temps..
Bon courage.


sagittarius21

Pas mal. Bon boulot. Ceci dit, pourquoi toujours utiliser des fins de course et donc utiliser inutilement des IO et de la câblerie redonbdante au lieu d'une eeprom i2c, procéder à un apprentissage ouverture/fermeture et donc mémorisation des temps d'ouverture fermeture dans cette eeprom? En plus de la détection d'intensité du moteur en protection avec réglage du seuil de détection. Juste une idée, comme ça. Ainsi ce montage pourra être utilisé pour d'autres champs d'application du domaine d'ouverture/fermeture.

_pepe_

#40
Oct 17, 2017, 08:32 am Last Edit: Aug 19, 2018, 04:39 am by _pepe_
Supprimé

achess

Bonjour,
Je ne suis pas d'accord : c'est parce que j'avais un problème de fiabilité de contacts fin de course que j'ai opté pour l'arrêt sur contrôle du courant moteur.

J'ai d'abord inséré une résistance en série avec le moteur pour ne pas guillotiner une poule coincée et protéger le moteur en cas de défaut de fin de course. Réglé pour obtenir juste la puissance nécessaire à l'ouverture de la porte.

J'avais dans un premier temps fait une détection sur un seuil de courant correspondant au courant de blocage, mais ce n'était pas non plus fiable à cause de la grande variation de la résistance de contact des balais sur le collecteur moteur.

La solution a été de prendre en compte le fait que le courant ne varie plus quand le moteur est bloqué avec cet extrait de programme :
Code: [Select]
   
unsigned long debut_blocage; // début du blocage
int delai_blocage = 100;
int mem_courant; // courant moteur au début du blocage
....

 case 1 : // surveillance courant moteur
      courant_moteur = analogRead(pinmoteur);
      if (courant_moteur != mem_courant) { // normal
        // sauve le courant moteur et debute le comptage
        mem_courant = courant_moteur;
        debut_blocage = millis();
      }
      // arret moteur si courant moteur invariable depuis delai_blocage
      if (courant_moteur == mem_courant) { // bloqué
        if ((millis() - debut_blocage) > delai_blocage) {
          // bloqué et délai dépassé
          stop();
        }
      }; break;

Ça économise les contacts, leurs taquets de fin course et leur câblage.
Il aurait été possible facilement de faire comme une logique de réouverture de porte comme dans les ascenseurs.

icare

Bonjour,
Ça économise les contacts, leurs taquets de fin course et leur câblage.
Il aurait été possible facilement de faire comme une logique de réouverture de porte comme dans les ascenseurs.
Toutes les solutions sont bonnes mais quid de la sécurité ?
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

_pepe_

#43
Oct 17, 2017, 11:04 am Last Edit: Aug 19, 2018, 04:39 am by _pepe_
Supprimé

achess

#44
Oct 17, 2017, 12:35 pm Last Edit: Oct 17, 2017, 12:43 pm by achess
Bonjour,
Vous êtes dans un raisonnement de process industriel, moi dans l'efficacité et la simplicité de fabrication DIY et puis il s'agit de poules, pas de VIP ;)

Pour la détection de blocage, une simple résistance suffit. Et puis le risque de blocage peut se gérer facilement, sachant que la durée normale d'ouverture et de fermeture sont connues. Ce n'est jamais arrivé sur mon bricolage en 2 ans et demi de fonctionnement, sinon j'aurais pu ajouter un signal d'alarme  et des détecteurs optiques ou à effet hall.

Go Up