Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Forum Index



Problème de programmation ou optocoupleur


 
Post new topic   Reply to topic    Simple-Duino Forum Index -> Arduino & Électronique -> Questions
Previous topic :: Next topic  
Author Message
Thibault
Débutant

Offline

Joined: 12 Mar 2014
Posts: 4
Masculin
Niveau d'éléctronique: Débutant

PostPosted: Sun 23 Mar - 17:27 (2014)    Post subject: Problème de programmation ou optocoupleur Reply with quote

PublicitéSupprimer les publicités ?
Bonjours à tous,

Voila mon problème:
Je réalise actuellement un kart hybride pour mon projet de fin d'étude et j'ai besoin d'aide.
Le démarreur du moteur essence s'actionne en fonction d'un programme arduino. Étant donné que ce moteur n'est pas très performant, il ne démarre pas toujours du premier coup.
J'ai donc programmé le démarreur électrique pour qu'il s'actionne pendant 4 secondes et si le moteur n'a pas démarré, on attend 4 secondes supplémentaire pour ne pas l'endommager  et il se ré-actionne pendant 4 secondes et ainsi de suite.
J'ai placé un optocoupleur (Omron, EE-SX1042) autour de la cloche du moteur essence. J'ai découpé plusieurs petits carré de métal de la cloche pour permettre à l'optocoupleur de détecter un changement de signal, pour avoir l'information que le moteur à bien démarrer.

Mais le problème est que lorsque le moteur tourne, le démarreur continue à s'enclencher toutes les 4 secondes. J'ai d'abord pensé que l'optocoupleur grillait à chaque démarrage du à une surtension,...
Après test avec un oscillo, multimètre,... ça ne peut pas être ça.

Pour moi il reste 2 solutions:

- Ou mon programme arduino n'est pas correct,

- Ou l'optocoupleur que j'utilise n'est pas assez rapide pour détecter le changement d'état, étant donné que la cloche tourne très vite.
(Un autre optocoupleur du même type détecte la vitesse des roues du kart et fonctionne très bien cependant le changement d'état se fait beaucoup moins souvent sur l'espace d'une seconde)

Quand pensez-vous ?

Voici mon programme:

#include "LiquidCrystal.h"
#define PULSE_PIN 0
#define PULSE_TIMEOUT 1000000
 
unsigned long rpm;
LiquidCrystal lcd(13,12,8,11,9,10);
const int led_demarreur = 7;
const int demarreur = 4;
const int moteur_tourne = 6;
const int bouton_demarreur = 1;
const int entree_thermique = 5;
int etat_bouton_demarreur;
int pin = 0;
int etat_entree_thermique;
 
void setup ()
{
  lcd.begin(16, 1);
  lcd.print("LCD OK");
  pinMode(PULSE_PIN, INPUT);
  digitalWrite(PULSE_PIN, HIGH);
  pinMode(led_demarreur, OUTPUT);
  digitalWrite(led_demarreur, LOW);
  pinMode(demarreur, OUTPUT);
  digitalWrite(demarreur, LOW);
  pinMode(moteur_tourne, OUTPUT);
  digitalWrite(moteur_tourne, LOW);
  pinMode(bouton_demarreur, INPUT);
  digitalWrite(bouton_demarreur, HIGH);
  pinMode(entree_thermique, INPUT);
  digitalWrite(entree_thermique, HIGH);
  etat_bouton_demarreur = HIGH;
  etat_entree_thermique = HIGH;
  delay(1000);
  lcd.clear();
  delay(500);
}
 
void loop ()
{
  rpm = pulseIn(PULSE_PIN, LOW, PULSE_TIMEOUT);
  rpm = 60 / (rpm / 1000000.0);
  lcd.print(rpm);
  etat_bouton_demarreur = digitalRead (bouton_demarreur);
  etat_entree_thermique = digitalRead (entree_thermique);
 
  if((rpm<700) && (etat_bouton_demarreur == HIGH) && (etat_entree_thermique == HIGH))
  {
    digitalWrite(demarreur, HIGH);
    delay(4000);
    digitalWrite (demarreur, LOW);
    delay(4000);
  }
  else
  {
    digitalWrite(demarreur,LOW);
  }
  if(rpm<700 &&  etat_entree_thermique == HIGH)
  {
    digitalWrite(demarreur, HIGH);
    delay(4000);
    digitalWrite (demarreur, LOW);
    delay(4000);
  }
  else
  {
    digitalWrite(demarreur,LOW);
  }
  delay(500);
}


Merci d'avance
Thibault
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Simple-Duino Forum Index -> Arduino & Électronique -> Questions All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  

Index | Xooit.com free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino