[Conseil] Automatisation porte de poulailler

Bonjour,

Je galère vraiment pour reprendre un projet que j'ai laissé dans un placard durant quelques années.

Je voudrais automatiser la porte coulissante de mon poulailler en fonction de la luminosité ambiante.

J'ai sous la main :

  • Carte arduino Uno
  • Grove Base shield v2.0
  • Carte moteur I2C v1.3b
  • Deux capteurs magnetic switch v1.3
  • Un capteur de luminosité light sensor v1.1

Avec ca normalement je devrais pouvoir faire ce que je veux mais j'ai toujours fait un blocage niveau programmation

J'ai connecté le magnetic switch 1 en D8 et le 2 en D7 sur le Grove base shield

J'ai connecté le light sensor en A0
Et la carte I2C sur un port I2C
Mon moteur sur les bornes M1- et M1+

Déjà je galère à mort car je pars de 0 et tous les exemple de programme que je trouve pour comprendre le fonctionnement de la carte moteur ne fonctionnent pas du tout, rien qu'en software. A chaque fois ca me créée un message d'erreur dès la compilation.

Par exemple ici :

#include "Grove_I2C_Motor_Driver.h"
// default I2C address is 0x0f
#define I2C_ADDRESS 0x0f

void setup() {
 Motor.begin(I2C_ADDRESS);
}

void loop() {
 // Set speed of MOTOR1, Clockwise, speed: -100~100 
 Motor.speed(MOTOR1, 50);
 // Set speed of MOTOR2, Anticlockwise
 Motor.speed(MOTOR2, -70);
 delay(2000);
 // Change speed and direction of MOTOR1
 Motor.speed(MOTOR1, -100);
 // Change speed and direction of MOTOR2
 Motor.speed(MOTOR2, 100);
 delay(2000);
 // Stop MOTOR1 and MOTOR2
 Motor.stop(MOTOR1);
 Motor.stop(MOTOR2);
 delay(2000);
}

(Tiré du site http://www.instructables.com/id/Arduino-Grove-I2C-Motor-Driver-1/)

Quand je vérifie le programme dans l'éditeur Web Arduino ou la dernière versionde l'IDE 1.8.5, ca ne change rien, déjà ca ne compile pas et ce n'est pas le seul programme...
Pourquoi ?

Je suppose qu'il y a un problème de bibliothèque...

hello

mets ton code entre balises voir là

la librairie est ICI

tu la télécharge et dézippe dans le sous-répertoire "librairies" du répertoire de ton IDE Arduino

Bonjour,

Merci pour l’aide j’apprécie.

J’ai bien compris pour la librairie.

Maintenant le problème c’est que ça fonctionne, mais trop bien !

Je m’explique, quand je branche la carte moteur I2c via ma pile 9V ou pire un transfo 12v, c’est tout le montage qui est alimenté, même l’Arduino, et même si celui-ci est totalement débranché (pas de prise USB ni Jack branché quoi) !

Est-ce que ma carte moteur est foutue ? ou c’est normal ?

WillB1984:
Bonjour,

Merci pour l'aide j'apprécie.

J'ai bien compris pour la librairie.

Maintenant le problème c'est que ça fonctionne, mais trop bien !

Je m'explique, quand je branche la carte moteur I2c via ma pile 9V ou pire un transfo 12v, c'est tout le montage qui est alimenté, même l'Arduino, et même si celui-ci est totalement débranché (pas de prise USB ni Jack branché quoi) !

Est-ce que ma carte moteur est foutue ? ou c'est normal ?

Bonsoir
8)
AMHA
tout est (au moins jusque là) parfaitement normal
Ne te fais pas là maintenant "des nœuds au cerveau" 8)

Tu viens simplement de découvrir "des nouvelles possibilités"

T’inquiète pas ! :grin: , tu va progresser et découvrir ensuite , que ce ne sera pas toujours "aussi simple"

Bonjour à tous

J’ai beaucoup travaillé sur mon programme et ça a bien avancé.

Mon projet arrive à sa fin mais j’ai besoin d’aide pour le terminer.
En l’état je ne peux pas laisser l’installation sur le poulailler car elle n’est pas opérationnelle.

Voici mon code :

#include "Grove_I2C_Motor_Driver.h"
#define I2C_ADDRESS 0x0f
#define MAGNECTIC_SWITCH_BAS 8
#define MAGNECTIC_SWITCH_HAUT 6

const int thresholdvalue=20;         // Seuil de luminosité considéré comme de la nuit 
float Rsensor; //Résistance du capteur

void setup() 

{  
  Motor.begin(I2C_ADDRESS);
}

void loop()

{
int sensorValue = analogRead(0); 
Rsensor=(float)(1023-sensorValue)*10/sensorValue;

int magnetbas = digitalRead(MAGNECTIC_SWITCH_BAS);
int magnethaut = digitalRead(MAGNECTIC_SWITCH_HAUT);
  
if(Rsensor>thresholdvalue && magnetbas != HIGH) //S'il fait nuit et que la porte est ouverte
  {
  Motor.speed(MOTOR1, 8);
   delay (2000);
  }
    
else if(Rsensor<thresholdvalue && magnethaut != HIGH) //S'il fait jour et que la porte est fermée
  {
	Motor.speed(MOTOR1, -60);
	 delay (2000);
  } 
    
else
  {
  Motor.stop(MOTOR1);
  }
}

J’ai deux problèmes dont le 1er est le plus grave :

1. Mon moteur tourne beaucoup trop vite !, et surtout il n’a aucun couple aux valeurs de PWM basses !

Quand ma porte de poulailler monte, c’est à toute vitesse, et du coup mon capteur magnétique n’a pas le temps d’enregistrer le passage de l’aimant.
De plus c’est assez dangereux.

Si je baisse la valeur de mon Motor.speed de -60 à -50 par exemple, le moteur broute et n’arrive plus à soulever ma porte coulissante (qui est en PVC de 3mm d’épaisseur, elle doit peser 300 grammes seulement). Si j’augmente la valeur de Motor.speed ca tourne du feu de dieu au point d’envoyer valdinguer ma porte en une demi-seconde… beaucoup trop vite

Ca se jour vraiment à un cheveu niveau réglage.
C’est pas normal si ?

Voici les caractéristiques de mon moteur qui je trouve est plutôt volumineux :

"Alimentation: 4,5 à 15 Vcc
Consommation:

  • 0,52 A à vide (12 Vcc)
  • 2,85 A en charge (12 Vcc)
    Vitesse de rotation:
  • 15800 t/min à vide (12 Vcc)
  • 13360 t/min en charge (12 Vcc)
    Couple en charge: 154 g.cm (12 Vcc)
    Couple bloqué: 1000 g.cm (12 Vcc)
    Diamètre du moteur: 36 mm
    Diamètre de l’axe: 3 mm (sans méplat)
    Platine de fixation: 49 x 46 mm
    Longueur: 59 mm (+ axe 8,5 mm)
    Poids: 146 g"

C’est ce modèle de chez Gotronic :

J’alimente mon montage directement via la carte moteur, via une alim de 12v et 2,5A que j’ai même mesurée à 15v sur mon multimètre (mais je suis pas doué avec un multimètre) !

Est-ce par ce que mon moteur n’a pas assez de couple, ou il y a un problème dans mon code ?

Est-ce que je dois remplacer mon moteur par un plus puissant ou mettre un motoreducteur à la place ?
Car je ne trouve pas de réducteur vendu seul pour monter sur mon moteur.

Un ami me dit que ca vient surement de mon programme.

En effet ce moteur est déjà assez gros je ne comprends pas.

Deuxième question subsidiaire, malgré mes recherches je n’ai pas trouvé de moyen propre de prolonger le moyeu de mon moteur, il fait moins de 1cm, rendant la bricole difficile.
J’ai mis un domino pour le prolonger par une tige filetée, ce n’est pas très précis.

Merci