Bonjour, j'essaie de faire ma porte de poule automatique pour mes poules.
j'ai une carte arduino Mega 2560R3, une photorésistance, une L293D, un Moteur DC et deux capteurs (Haut et bas représenté par des BP).
je voudrais que ma porte s'ouvre quand la luminosité est bonne (valeur superieure à 500) jusqu’à ce que le haut la porte touche le capteur BP Haut (le moteur s'arrete).
puis a la tomber de la nuit le moteur se met en route en sens inverse (la photoresistance a une valeur inferieure a 500), la porte descend et le moteur s'arrete quand la porte touche le capteur bas. et ainsi de suite.
Or cela ne fonctionne pas et je ne comprend pas pourquoi ?
La porte s'ouvre, une variation minime de la luminosité se produit, la porte se referme aussitôt.
Il faut mettre de l'hystérésis pour éviter ce problème.
Parce que analogWrite ecrit dans la photoresistance ... En fait, comme vous la lisez par la suite, ce n'est pas bien grave....
Maintenant que se passerait-il si votre montage fonctionne, et que vous êtes très voisin du seuil (disons 500)
Mettons qu'une seconde, vous ayez seuil+1, l'autre seconde seuil-1 : votre porte va s'agiter frénétiquement et ça va user le moteur en vain, bouffer de l'énergie, voire décapiter une poule (ou la faire glousser comme une oie). là c'est beaucoup plus gênant.
fdufnews a raison d'indiquer qu'il faut une programmation un peu plus compliquée, pour éviter un comportement erratique au crépuscule, à l'aube ou près d'un gros nuage....
La façon la plus simple de le faire est de ne rien faire si l'on est dans la plage (500 - Seuil, 500 + seuil) et de remplacer les tests
if (luminosité < 500) par if (luminosite < (500 - Seuil))
et
if (luminosite > 500) par if (luminosite > (500 + Seuil))
Seuil étant, comme 500, à définir....
Peut être faudrait il rajouter un compteur de poules, ou peser le nichoir....
Mais c'est plus compliqué (et que se passe-t-il s'il y a des poussins?)
Une autre solution serait de fermer le nichoir une heure après le coucher du soleil, s'il y a une horloge temps reel, et de l'ouvrir une heure avant son lever. Ca permettrait de s'affranchir des feuilles, autres fients qui vont occulter une LDF, et de gros nuages d'orage.
A noter qu'avr-libc avr-libc: <time.h>: Time offre (mais pas dans la portion qui est livée avec arduino des fonctions gérant la position su solei (sun_rise et sun_set, pour l'aube et le crépuscule); il y a 2 ans, je les avais comparées avec un calendrier, sans être choqué (ça manque cruellement sur un PC/RPi) ....
while ((etatBP_Bas) !=LOW){
digitalWrite (DO_MOTOR_1,LOW);
digitalWrite (DO_MOTOR_2,LOW);
}
Les 2 entrées à LOW doivent mettre le moteur à l'arrêt.
à la limite je comprendrais
while ((etatBP_Bas) !=LOW); // <- noter le point virgule ici
digitalWrite (DO_MOTOR_1,LOW);
digitalWrite (DO_MOTOR_2,LOW);
qui attendrait que la porte atteigne la butée puis arrête le moteur.
Encore que cette solution est dangereuse car il n'y a pas de sécurité, si la porte se bloque.
Si cela est plus simple on peux refaire le code depuis le début en ajoutant les composants pour assurer une sécurité.
Cela ne me dérange pas et me permettrait d'avancer dans mon projet.
Je suis dans le même projet que toi.
C'est mon premier projet en arduino.
Je fait comme toi, sauf que je pense utilisé un calendrier avec les éphémérides pour l'ouverture et fermeture de la porte, en complément de la photoresistance.
Et je veux créer un tutoriel simple pour tout le gens qui cherche à créer la même chose.
Je vais suivre ton travail avec beaucoup d'attention !
à mon avis la luminosité n'est pas un capteur adéquat pour piloter la porte. Jours gris, nuages, saleté sur le capteur... trop d'incertitude sur la source d'information.
une RTC de qualité correcte (DS3231) avec un code qui prend en compte les heures d'hiver et d'été et lever / coucher de soleil me semble plus approprié.
les évènements seraient leverDuSoleil, coucherDuSoleil, capteurFinDeCourseBas, capteurFinDeCourseHaut, surConsommationCourant (si la porte se bloque en cours de route).
C'est comme cela que j'approcherais la programmation