Pages: [1] 2   Go Down
Author Topic: Sharp Is471f mit dem Arduino steuern  (Read 1605 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hat die benutze IR-Diode eine Wellenlänge von 940nm ?
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ein Fehler steckt schon mal im Code.
Code:
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.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dann würde ich ab jetzt schrittweise vorgehen.
Versuch erstmal mit folgendem Sketch heraus zu finden, ob der Sensor überhaupt was liefert:
Code:
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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:


* arduino.JPG (1932.65 KB, 2592x1936 - viewed 41 times.)

* plan.JPG (1930.48 KB, 2592x1936 - viewed 39 times.)
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Positionier den Sensor und die IR Diode mal so wie auf diesem Foto zu sehen ist:
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Braucht die IR Led kein Widerstand?
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Leuchtet denn deine LED auch? Einfach mal mit einer digitalen Kamera testen, Handyknipse bzw. die Kamera deines Ipads reicht auch...
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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ß



* Foto.JPG (1870.95 KB, 2592x1936 - viewed 22 times.)
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 19, 2012, 01:27:00 pm by uwefed » Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code sieht folgendermaßen aus:
Code:
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);
  }
}


* Foto(1).JPG (1771.06 KB, 2592x1936 - viewed 41 times.)
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1] 2   Go Up
Jump to: