Go Down

Topic: Capteur photo electrique à fourche (Read 9970 times) previous topic - next topic

dfgh

teste ça
moniteur en 9600
et câblage des collecteurs sur 8 et 9
Code: [Select]
#include "Encoder_Polling.h"

const int encoderPin_A = 8;
const int encoderPin_B = 9;
int nbb = 0;

void setup()
{
  Serial.begin(9600);
  encoder_begin(encoderPin_A, encoderPin_B); // Start the decoder
}

void loop()
{
 
  int dir = encoder_data(); // Check for rotation
 
  if(dir == 1)       // If its forward...
  {
    nbb++;       // Increment the counter
    Serial.println(counter);
  }
 
  else if(dir == -1) // If its backward...
  {
    nbb--;       // Decrement the counter
    Serial.println(nbb);
  }
 
}

ghoster-cr

Euh non désolé ça marche pas :S

dfgh

la compilation fonctionne ?
c'est uniquement à l'execution que tu n'as rien sur ton moniteur ?

ghoster-cr

En fait c'est comme si il me détecter qu'un seul capteur à chaque fois :/ Et quand je échange les câbles il y en a toujours qu'un qui fonctionne sur le moniteur

Artouste

En fait c'est comme si il me détecter qu'un seul capteur à chaque fois :/ Et quand je échange les câbles il y en a toujours qu'un qui fonctionne sur le moniteur
bonjour
le  pull-up des  phototransistors est realisé comment ?
avec des resistances externes ou par declaration des entrées  en INPUT_PULLUP ?
(de base la lib est en INPUT simple

ghoster-cr


Artouste

#36
May 04, 2015, 05:46 pm Last Edit: May 04, 2015, 05:47 pm by Artouste
bonjour
la resistance de 220 Ω est la résistance de limitation de la led , ce n'est pas une resistance de pullup necessaire je remet le schema
il faut soit mettre une resistance de pullup externe , soit modifier la librairie

en remplaçant dans le .CPP
Code: [Select]

pinMode(encoder.pin_A, INPUT);
pinMode(encoder.pin_B, INPUT);


par

Code: [Select]

pinMode(encoder.pin_A, INPUT_PULLUP);
pinMode(encoder.pin_B, INPUT_PULLUP);




dfgh

#37
May 04, 2015, 05:51 pm Last Edit: May 04, 2015, 05:53 pm by dfgh
rouge, rouge, noir==> c'es la résistance de limitation du courant dans la led
mets tu une résistance entre ta sortie "signal" et le +5Volts?

nota désolé Artouse, je n'avais pas vu ta réponse

ghoster-cr

Mais je dois capter l'entrée et la sortie avec deux capteurs en parallèle pour que cela s'affiche dans le moniteur série :S

Je te remet mon programme que j'ai tenté de créer mais il compte -1 pour un capteur et +1 pour l'autre du coup faudrait que je fasse quand ça passe par le n°1 en  premier +1 et sinon le n°2 en premier -1 .

Mon programme :
Code: [Select]
const int capteur1 = 6;
const int capteur2 = 9;
int nbb = 0;

void setup ()
{
  Serial.begin(9600);
}

void loop ()
{
 int capteur1_val = digitalRead(capteur1);
 int capteur2_val = digitalRead(capteur2);
 
 
 
 if(capteur1_val < 1)
  {
    
  
  }
 else
 {
   nbb=nbb+1;
  
 }
 delay(100);
 
 if(capteur2_val < 1)
 {
  
  
 }
 else
 {
   nbb=nbb-1;
  
 }
  delay(100);
  
  Serial.println(nbb);
  delay(1000);
}

ghoster-cr

Euh non il y a juste celle là resistance

dfgh

#40
May 04, 2015, 06:34 pm Last Edit: May 04, 2015, 06:37 pm by dfgh
sur le schéma que t'as posté Artouse, la résistance de limitation du courant dans la led est de 270ohms
sur ta photo de ton capteur, on voit bien son homologue qui est de 220ohms. rien de bien choquant. donc jusqu'ici tout va bien.

sur le schéma que t'as posté Artouse, tu vois la résistance indiqué sur le collecteur du transistor, elle est donnée pour 4.7Kohms

tu dois la mettre physiquement sur ton montage.
elle doit etre entre le collecteur du transistor et le +5volts
donc entre la sortie "sign"de ton capteur et le + 5 volts.

lorsqu'une abeille passe dans le faisceau de la led, la partie sensible du transistor ne reçoit plus la lumière. il devient "passant" et l'entrée arduino se retrouve à "0" volts.
lorsque le transistor voit la lumière de la led, il n'est plus passant et l'entrée arduino doit etre à "5 volts"
mais le transistor est monté en collecteur "ouvert", il a besoin d'une résistance pour qu'il y ait 5 volts.
cette résistance est dite de "pull-up"

si une abeille coupe le 1er faisceau puis le 2ème, elle est considérée comme entrante et la "bibliothèque" te retourne une valeur de "+1"
si une abeille coupe le 2ème faisceau puis le premier, elle est considérée comme sortante et la "bibliothèque te retourne une valeur de -1

mais cette valeur est à considérer comme un flag, et il t'appartient dans ton code de gérer un compteur que tu incrémente ou décrémente en fonction de ce flag

d'où les instructions "if" :

Code: [Select]
if(dir == 1)       // If its forward...
  {
    nbb++;       // Increment the counter
    Serial.println(counter);
  }
 
  else if(dir == -1) // If its backward...
  {
    nbb--;       // Decrement the counter
    Serial.println(nbb);
  }

ghoster-cr

Mais pourtant quand j'avais branché direct les deux capteurs le programme avec "direction" de la librairie "Encoder_polling" cela fonctionnait :/

Artouste

Mais pourtant quand j'avais branché direct les deux capteurs le programme avec "direction" de la librairie "Encoder_polling" cela fonctionnait :/
tu l' a recupéré où la lib ?
le lien de ma reponse du 7/04 12h34 ?


ghoster-cr

Oui avant ça marchait et là quand j'ai réessayer le programme ça ne marche plus :/

ghoster-cr

J'ai essayé de remplacer dans le .CPP le INPUT_PULLUP par INPUT et c'est pareil :S

Go Up