Go Down

Topic: Sharp Is471f mit dem Arduino steuern (Read 2382 times) previous topic - next topic

Gibsonuser

Hallo, ich versuche mit dem Sharp Sensor eine Touch funktion zu realisieren allerdings funktioniert es nicht. Den Sensor hab ich nach dem Muster an meinen Arduino angeschlossen: http://www.rn-wissen.de/index.php/Sensorarten#Distanzsensor_IS471F Wenn die Ir Led die Hand wahrnimmt sollte eine im Pin 13 angeschlossene Led angehen.

Hier mein Code:

Code: [Select]

const int sharp = 6;     
const int ledPin =  13;     


int buttonState = 0;       

void setup() {
 
  pinMode(ledPin, OUTPUT);       
  pinMode(sharp, INPUT);     
}

void loop(){
 
  buttonState = digitalRead(sharp);

 
  if (sharp == HIGH {     

    digitalWrite(ledPin, HIGH); 
  }
  else {
   
    digitalWrite(ledPin, LOW);
  }
}


Hat jemand eine Idee was ich falsch mache?

Megaionstorm

Hat die benutze IR-Diode eine Wellenlänge von 940nm ?
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

mkl0815

Ein Fehler steckt schon mal im Code.
Code: [Select]
void loop(){
 
  buttonState = digitalRead(sharp);

 
  if (sharp == HIGH {     

    digitalWrite(ledPin, HIGH); 
  }
  else {
   
    digitalWrite(ledPin, LOW);
  }


sharp ist die Variable in der Du die Pin-Nr speicherst, an das Dein Sensor angeschlossen ist. buttonState ist die Variable, in der Du den aktuellen Zustand des Sensors speicherst. Allerdings prüfst Du im if-Block auf "sharp == HIGH" statt auf "buttonState == HIGH"
Du prüfst also schonmal die falsche Variable.
Mario.

Gibsonuser

Ja, die IR LED hat eine Wellenlänge von 940 Nm.
Den Code hab ich geändert aber der Sensor funktioniert immer noch nicht. Im Datasheet hab ich es so verstanden, dass wenn die Ir LED etwas findet dann der Sensor auf Low geschaltet wird müsste ja richtig sein oder?

mkl0815

Dann würde ich ab jetzt schrittweise vorgehen.
Versuch erstmal mit folgendem Sketch heraus zu finden, ob der Sensor überhaupt was liefert:
Code: [Select]
const int sharp = 6;     
int buttonState = 0;       

void setup() {
  Serial.begin(9600);
  pinMode(sharp, INPUT);     
}

void loop(){
 
  buttonState = digitalRead(sharp);
 
  //status auf die serielle Konsole ausgeben
  Serial.print("state = ");
  Serial.println(buttonState);
 
  //eine Sekunde warten
  delay(1000);

}

Und poste mal bitte, wie Du den Sensor an den Arduino angeschlossen hast. Wenn der Sensor eine eigene Spannungsversorgung hat und nicht über den Arduino versorgt wird, müssen die beiden Massen verbunden sein, sonst passiert da nix.

neo2300

der sharp sensor liefert dir kein High Signal sondern ein Low Signal d.h. das er dir ne masse durchschaltet. Wenn du mal ne led an des Ausgang anschließt dann siehst du das die LED dauerhaft leuchtet und sie geht aus wenn der Sharp anspricht. ist aber auch im Datenblatt ersichtlich

Gibsonuser

Hab nun geschaut ob der Sensor überhaupt was liefert --Fehlanzeige..
Ich gehe mal davon aus den Sensor falsch aufgebaut zu haben. Hier erstmal ein Bild vom Aufbau und dem Schaltplan:

Megaionstorm

Positionier den Sensor und die IR Diode mal so wie auf diesem Foto zu sehen ist:
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Gibsonuser

Braucht die IR Led kein Widerstand?

uwefed

Der Is471f steuert die IR-LED mit einer Rechteckspannung an und eliminiert so das Umgebungslicht. Die IR-LED muß in Richtung des Is471f zeigen. Die flache Seite des Is471f  ist die lichtempfindliche Seite. Des Weiteren ist der Vorwiderstand für die IR-LED bereits im  Is471f integriert. Du brauchst also keinen weiteren Vorwiderstand.
Der Aufbau mit dem Trimpotentiometer ist sehr Störanfällig da Du die kabel nur in die Osen geseckt hast.
Grüße Uwe

sth77

Leuchtet denn deine LED auch? Einfach mal mit einer digitalen Kamera testen, Handyknipse bzw. die Kamera deines Ipads reicht auch...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Gibsonuser

Hallo, hab den Aufbau jetzt wie im Bild vorgenommen. Das komische ist sobald ich den USB Port anschließe schaltet sich das Bord langsam aus erkennt man auch an der PWR Led die langsam runter fadet. Im Anhang ein Bild vom Aufbau.
Gruß


uwefed

#12
Jun 19, 2012, 08:22 pm Last Edit: Jun 19, 2012, 08:27 pm by uwefed Reason: 1
Du hast die 5V Versorgungsspannung mit der IR-LED kurzgeschlossen. Die Sicherung auf dem Arduino Board greift ein.
Die IR-LED muß zwischen Pin 1 und 4 mit dem längeren Pin auf pin 1 (+5V).
Damit die Schaltung funktioniert muß die LED zum Is471f gerichtet sein. Der runde Teil muß zum Is471f schauen. Also die LED um 90 grad nach hinten biegen.

Tausche die IR-LED aus da die in der Zwischnezeit kaputtgegangen ist.

Der Pin 13 hat keine Vorwiderstand integriert (das is ein oft wiederholter Fehler ind den Tutorials, eine sehr alte Version ohne USB hatte einen Widerstand). Du kannst keinen LED direkt ohne Vorwiderstand Anschließen wie Du es auf dem Bild im Reply #6 gemacht hast.

Grüße Uwe

Gibsonuser

Ok bevor ich noch eine kaputt mache schicke ich mal ein Bild zur Kontrolle. Passt das?

Code sieht folgendermaßen aus:
Code: [Select]
const int sharp = 6;    
const int ledPin =  13;      

int State = 0;        

void setup() {
 pinMode(ledPin, OUTPUT);      
 pinMode(sharp, INPUT);    
}

void loop(){
 State = digitalRead(sharp);
 if (State == LOW) {      
   digitalWrite(ledPin, HIGH);  
 }
 else {
   digitalWrite(ledPin, LOW);
 }
}


uwefed

Stimmt fast alles.
Nur daß bei einer IR-LED wie bei allen anderen LED auch das Licht an der kugelförmigen Seite herauskommt und nicht zwischen den Füßchen. Also LED um 180 Grad nach hinten zum Is471f biegen.
Grüße Uwe

Go Up