Go Down

Topic: Infrared Reflectance Sensor (Read 1 time) previous topic - next topic

m1s73r

Hello I want to build a line follower so I bought one of this http://www.ebay.at/itm/270589619744?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_3121wt_802

I have made some projects before, but this is the first time using a sensor... So I soldered it together an connected pin1 and pin2 to 5V and GND, pin3 to AnalogIn 0. I connected the other pins to digital. I tried around with pinOut to the digital pins and checked the LEDs with a camera. They all work. Now here comes the tricky part: I used analog read(A0) but it just gives me 843 or 842 on the Serial Monitor...? What am I doing wrong? Can somebody help me please?

Thanks a lot!

Krodal

You can test the IR leds (IR transmitters) with a webcam or normal photo camera.
If they work you can hold a paper in front of them, see if the value changes.

The value seems okay to me.

Chagrin

Reflectance sensors are finicky things. Try to bend the LEDs / phototransistors a bit so they point towards each other (imagine the light bouncing off the surface between the LED / phototransistor). Play around with the distance to your target and what you're using for a "line". Some things that are black to you and me turn out to be much more reflective to these phototransistors.

m1s73r

The problem is the value doesn't even change... I think my code might be wrong! I set all the digital pins to output. I check the LEDs they are a lit up. Then I analogRead Pin 0. Value stays 844, 844, sometimes 843. I can do anything I want, I used white paper, black paper, LCD screens (for reflecting) the value doesn't change.

I really want to get this to work!

Chagrin

Go ahead and post your code. Also explain how you have the Arduino pins connected to the pins on the board -- the diagram on the eBay page shows the pins numbered 1 through 10 on the board so using that nomenclature would be helpful.

m1s73r

#5
Jan 18, 2013, 11:32 pm Last Edit: Jan 18, 2013, 11:44 pm by m1s73r Reason: 1
Code: [Select]
int aval1 =0;
int aval2 = 0;
int avalr = 0;
int refval = 0;
int pwm=0;
int bias=0;
int t=0;
char* str1[] = {"CHANNEL A", "CHANNEL B", "CHANNEL C"};
int lf = 0;
int rg = 0;
int st = 0;
void setup()
{
// Print a message to the LCD.
//lcd.print(str1[st]);
//lcd.print(analogRead(0));
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
Serial.begin(9600);
bias = 40;
}
void loop()
{
st = 0;
aval1 = 0;
aval2 = 0;
digitalWrite(7,HIGH);
analogWrite(9,255);
analogWrite(10,255);
while (st < 10)
{
st++;
digitalWrite(7,HIGH);
delayMicroseconds(10);
aval1 = aval1+analogRead(0);
digitalWrite(7,LOW);
delayMicroseconds(10);
aval2 = aval2+analogRead(0);
}
//refval = analogRead(1);
refval = 20;
Serial.print(aval2-aval1);
avalr = aval2-aval1;
Serial.print("<");
Serial.print(avalr);
Serial.print(">");
if (abs(aval2-aval1)>refval)
{
digitalWrite(5,HIGH);
pwm = 50;
analogWrite(9,255);
analogWrite(10,pwm+bias);

}
else
{
digitalWrite(5,LOW);
pwm = 50;
analogWrite(9,pwm);
analogWrite(10,pwm+bias);
}
//lcd.clear();
//lcd.print(str1[0]);
//lcd.setCursor(1,1);
//lcd.print("Analog=");
//lcd.print(aval2-aval1);
//lcd.print(" : ");
//lcd.print(refval);
delay(500);
}


This is the code they sent me... It seems a little bit wrong because they defining 6 pins to output, but the schematic just shows 5 to connect to the digital ports... This code just gives me -2, -1, 0, 3... Whats wrong here? I can't figure out why this isn't working...

Then I coded this myself: (I think this is also wrong)

Code: [Select]
void setup() {
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}

void loop() {
  int myInts[5];
  int pin = 5;
  for (int i = 0; i < 5; i++) {
    digitalWrite(pin, LOW);
    int var = analogRead(0);
    myInts[i]=var;
    pin++;
    delay(100);
  }
  int i;
  for (i = 0; i < 5; i = i + 1) {
  if(myInts[i] == 843){
    Serial.println("Weiss");
  } else {
    Serial.println("Schwarz");
}
  }
  Serial.println("---------------");
}

Being new to IR Led White is i think emmiter which gives signals and black is receiver which receives signals i think, after searching on net, i didn't got any good code to be used with arduino uno so that i can run my own codes for simple task like on and off or cut-off pulse detection etc.

1. Can anybody help me out for how to use IR Leds black and white without TSOP 17xx ?

2. if i connect TSOP (3 PIN 1: Ground, 2: 5V, 3: Output) it catches signals but when i give output pin to analogread to pin A0 or arduino, it is not reading anything !!!.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy