Go Down

Topic: Piloter moteur via capteur présence  (Read 45 times) previous topic - next topic

Baptizback

May 19, 2019, 06:06 pm Last Edit: May 19, 2019, 06:13 pm by Baptizback
Bonjour à tous,

Après avoir pas mal parcouru le site, j'en viens à poser mon 1er message.

En gros, je vous explique, ma mère se fait vieille et je souhaite lui faire un système d'alimentation de poêle à pellet de façon automatique.

La 1ère galère a été d'arriver à faire fonctionner mon capteur 12v ... Mais à force de chercher j'ai réussis :)

Du coup, j'ai acheté un monster motorshield mono pour piloter un moteur d'essuie glace qui entraine une vis sans fin. ( https://fr.aliexpress.com/item/1pcs-30A-Mini-VNH2SP30-Stepper-Motor-Driver-Monster-Moto-Shield-module-For-Arduino/32731836967.html )
Quand j'utilise un code tout fait sur le net (fonctionnement en entrant des valeurs dans l'explorateur), ça marche bien, mais je ne souhaite pas ce fonctionnement.

En gros, je veux que quand le capteur détecte qu'il n'y a plus rien devant son nez, on lance le moteur d'essai glace pour remplir le réservoir. Sauf que .... rien ne se passe, enfin si, le capteur détecte bien une présence mais ne lance pas le moteur. J'ai fait un serial print, je vois que mon capteur vit bien, car j'ai bien son état qui change quand je passe quelque chose devant (1,0).

Quelqu'un aurait t'il une idée ?

Merci d'avance à tous,

Baptiste

Voici mon code :

Code: [Select]

int val=0;

//MOTOR 1
#define MOTOR_A1_PIN 7  //Driver Board IN1
#define MOTOR_B1_PIN 8  //Driver Board IN2
#define PWM_MOTOR_1 5   //Driver Board PWM
#define EN_PIN_1 A0     //Driver Board EN
#define PRESENCE_PELLET 2 // Etat capteur
 
void setup()                 
{
  pinMode(MOTOR_A1_PIN, OUTPUT);
  pinMode(MOTOR_B1_PIN, OUTPUT);
  pinMode(PWM_MOTOR_1, OUTPUT);
  pinMode(EN_PIN_1, OUTPUT);
  pinMode(PRESENCE_PELLET, INPUT);


};

void loop()
{

    if (PRESENCE_PELLET, LOW)
    {
      val = digitalRead(PRESENCE_PELLET); // lire valeur du capteur
      Serial.print(val);
      digitalWrite(MOTOR_A1_PIN, HIGH);
      digitalWrite(MOTOR_B1_PIN, HIGH);
      analogWrite(PWM_MOTOR_1, 100);
}
    else
    {
      digitalWrite(MOTOR_A1_PIN, LOW);
      digitalWrite(MOTOR_B1_PIN, LOW);
}

}

Baptizback

Finalement j'ai modifié mon code mais ça ne marche toujours pas.

Mon problème vient je pense du retour d'état du capteur.

Quand "j'agrandis" la condition sur le capteur des fois le moteur se déclenche ...

Baptizback

Rebonjour,

A force d'insister, j'ai finalement trouvé mon problème. J'ai refait le programme, et déclaré l'entrée de mon capteur en entrée analogique.

Bonne soirée

Go Up