Nourisseur poissons 2

Nourisseur de poissons automatique de 22 jours pour étang

Un vrai bricolage de dernière minute

Nourisseur de poissons automatique 22 jours

L’histoire

J’avais quelques pensionnaires dans l’étang et nous avions trouvé, mon épouse et moi, un projet de vacances de dernière minute.
Il me restait une semaine pour trouver une solution pour nourrir automatiquement ces petits poissons.
Je souhaitais me familiariser avec la programmation des microcontrôleurs. De ce fait, je m’était procuré un kit Arduino R3 en 2014. Or, dedans, il y avait un moteur pas à pas.
Il me restait peu de temps ! Je ne pouvais compter que sur mes rikètes. Pas question de commander du matériel ni d’aller faire des courses car chaque minute était comptée pour la préparation du voyage.

Le principe

En partant du moteur pas à pas, j’ai imaginé de déplacer une réglette constituée de 22 cases contenant les billes de nourriture quotidiennes, au dessus d’un trou calibré donnant sur l’étang. Ainsi, la quantité de nourriture placée dans une alvéole, tombait dans l’eau. Il restait à programmer le microcontrôleur pour qu’il déplace la réglette juste ce qu’il fallait afin que la case suivante se présente juste au dessus du trou après 24 heures.

Fabrication

L’entrainement

Le moteur pas à pas 28BYJ-48 et la carte pilote ULN2003

L’entrainement est constitué du microcontrôleur, du moteur pas à pas, de son pilote et d’une bobine pour enrouler la ficelle de traction de la réserve de nourriture. La bobine, faite maison, est réalisée avec un vieux bouton de potentiomètre, qui se visse sur l’axe du moteur, et deux rondelles de bois.

La réserve de nourriture

Pour la réserve de nourriture, j’ai entaillé une goulotte et collé des cloisons perpendiculaires à distances égales. Ensuite, à son extrémité, j’ai attaché une ficelle pour la tracter.

Nourisseur poissons goulotte 2
Nourisseur poissons goulotte 3
Nourisseur poissons goulotte 1

On voit bien, sur la photo ci-dessus, le trou dans la planche qui correspond à la taille d’une cellule de la réglette.

Le système de guidage

Avou dès vî bokèts d’bwès et quelques clous, j’ai constitué les deux bords d’un couloir, passant sur le trou, ayant pour but de guider la réglette.
Cependant, cette dernière avait tendance à se soulever vers la fin de sa course à cause de l’angle croissant entre la ficelle et elle-même.
L’augmentation de l’angle était due au remplissage de la bobine d’enroulement de la ficelle !
J’ai simplement lesté la réglette avec un petit morceau de plomb du côté de la ficelle.

Nourisseur poissons glissière 1
Nourisseur poissons glissière 2

Le programme

J’avais besoin d’un outil pour rebobiner le système afin de replacer la réglette au départ durant les essais.

rebobinage

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int play = 4;
int avance = 2;
//nombre de millisecondes avant première dose
unsigned long InitDelay = 8000;
// pour 24H
//unsigned long periode = 86400000;
// pour 1'
unsigned long periode = 15000;
int stepdelay = 3 ;
int pulsecount = 200;
int nbjours = 15;
int playstate = 0;
int avancestate = 0;
int i = 0;

void setup() {
  pinMode(play, INPUT);
  pinMode(avance, INPUT);
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
    digitalWrite(motorPin4, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, LOW);
    delay (stepdelay);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, LOW);
    delay (stepdelay);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin1, LOW);
    delay (stepdelay);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, HIGH);
    delay (stepdelay);
     }

Le pilotage du distributeur de nourriture à proprement parler

Distribution

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
// pour 24H
unsigned long periode = 86400000;
// pour 15''
//unsigned long periode = 15000;
int stepdelay = 10 ;
int pulsecount = 156;
int nbjours = 15;
int i = 0;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  while (nbjours > 0) {
    nbjours = nbjours - 1;
        for (i = 0 ; i <= pulsecount ; i++) {
      digitalWrite(motorPin4, HIGH);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin1, LOW);
      delay (stepdelay);
      digitalWrite(motorPin4, LOW);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin1, LOW);
      delay (stepdelay);
      digitalWrite(motorPin4, LOW);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin1, LOW);
      delay (stepdelay);
      digitalWrite(motorPin4, LOW);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin1, HIGH);
      delay (stepdelay);
          }
    delay(periode);
  }
}

Conclusion

C’était, en ce qui me concerne, avant l’impression 3D et les ESP.

Sur les 22 jours, seulement 2 doses de nourriture n’ont pas été déversées. Elles sont restées coincées et agglutinées dans leur alvéole 😉

Au final, pour une conception et une fabrication en urgence avec juste les camatches dont je disposais, j’estime m’en être bien tiré !

Nourisseur poissons 2

Laissez un commentaire et posez vos questions ci-dessous

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *