PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sharp Gp2D12



tornado
29.04.2006, 18:40
Hallo,
ich wollte meinem Roboter einen Sharp GP2D12 verpassen.
Ich habe den Sensor auch schon. Aber da er nicht sehr billig war, möchte ich nicht rumexperimentieren bis er kaput ist, sondern lieber direkt fragen wie ich ihn richtig anschliessen muss.
Mein Roboter funktioniert mit einem PIC und wird in c oder c++ programiert.
ICh brauche nur ein digitales signal um zu wissen ob etwas vor meinem roboter steht oder nicht.
der sensor hat drei kabel: GND und Vcc ist klar, aber wie und wo stecke ich Vo an???
Am Pic, damit ein pin kontakt macht, macht man ja zum beichspiel einen schalter an einen pin und an masse. wie mache ich das dann hier?
Könnte man das auch mit einem Relais regeln oder gibt es eine einfachere lösung?
viele grüsse
tornado

Günter49
29.04.2006, 20:30
Schau mal hier (ganz unten auf der Seite ist ein Anschluss-Diagramm):

http://www.mikroelektronika.co.yu/english/product/compilers/mikropascal/project0008/

Gruß, Günter

Fritzli
29.04.2006, 20:38
Hallo

Vout ist der analoge Ausgang des Sensors. Dort "kommt eine Spannung raus", die sagt, wie weit das Objekt entfernt ist. Normalerweise schliesst man das an einen analogen Eingang des PIC's an. Da Du sowieso in C programmierst, sollte auch der ADC kein grosses Problem sein. Schau mal im Compiler-Handbuch nach.

Wenn Du trotzdem kein Analog-Signal messen willst, kannst Du das Ausgangssignal mit einem Komparator digitalisieren (siehe Attachement).

Gruess
Fritzli

tornado
30.04.2006, 12:29
OK, dann verwende ich wohl doch lieber das analoge signal und programiere den rest halt.
welcher PIN ist den eigendlich analog oder digital beim PIC (PIC16F876) oder PIC16F876A

das mit dem direkt an einen pin anschliessen... bei meinem roboter wird nichts direkt an einen pin angeschlossen, das geht alles erst noch durch ein ic (40106) wofÚr ist der? kann ich da den sharp anschliessen?

tornado
30.04.2006, 12:32
@günter49
ich sollte wohl erst lesen und dann fragen ;-)
ok, also in dem anschlussdiagramm steht, dass man den direkt an den PIN RA2 anschliessen kann. ist das bei meinem PIC auch so?
jetzt werde ich mir mal den code durchlesen um zu sehen wie man das programiert damit der auch richtig mit den daten umgeht

tornado
30.04.2006, 13:03
Heute ist wohl nicht mein Tag...
OK, also ich kann dieses KAbel wie auf dem Anschlussdiagramm auch direckt an meinen Roboter anschliessen.
Ich habe jetzt gesehen welche die analogen EingÄnge sind. Die analogen Eingänge gehen auch nicht durch dieses IC...
OK also den Sharp richtig anschliessen ist kein Problem mehr, danke fúr eure HIlfe.
Jetzt muss er "nur noch" programiert werden. Damit werde ich mich die nÄchsten Tage beschÄftigen (ich werde auch den einen Teil von diesem fertigen Code benutzen).
Danach melde cih mich wieder und sage ob es funktioniert oder ob der sharp angefangen hat zu rauchen ;-)

shaun
30.04.2006, 13:05
Der 40106 enthält 6 invertierende CMOS-Schmittrigger, die in etwa die Funktion des oben gezeigten Komparators hätten. Der Haken: die Schwelle, an der geschaltet wird, kannst Du nicht direkt beeinflusse und genau ist sie auch nicht wirklich. Nimm also bitte einen Analogeingang, welcher da in Frage kommt, müsste mal jemand aus der PIC-Ecke beantworten, ich komm von der anderen Seite des Grabens, über den die Schlacht tobt (Atmel).

tornado
30.04.2006, 17:05
Danke shaun, dafür ist also der 40106.
OK, ich werde das über den analogen Eingang machen.

ich habe schon ein StÜck Code geschrieben.
am PC funktioniert der Code auch.
Also die "cout" müssten dann spÄter, anhalten, abbiegen oder so sein.
ich zeige euch den mal weil ich noch eine Frage habe.

Am PC, um es erst nur so zu probieren habe ich ein "cin" gemacht bei dem ich den Wert der über Vo kommt zu "simulieren".

Wie müsste ich das dann machen wenn das Programm im Roboter wÄre (sharp hÄngt am PIn RA1, ein analoger Pin).

1. Wie sage ich ihm, dass das was "reinkommt" = die Variabel "wert" ist?
2. Muss ich den Wert noch mal 100 multiplizieren? ICh sage das weil in dem array was ich oben habe alles mal 100 multipliziert wurde.

#include <iostream.h>
#define Sharp RA1 //Sharp GP2D12 Vo an PIN RA1 (analog)
//PIC 16F876 @ 1MHz
int main(){

int distance [10] = {9, 8, 10, 20, 30, 40, 50, 60, 70, 80};//Werte aus der Sharp Tabelle
int value [10] = {9,260,240,140, 96, 77, 62, 55, 49, 41};// idem
int a;
int wert;
do{
cout<<endl<<"Geben sie einen Wert ein"; //das würde Sharp
cin>>wert; // selber machen

for (a=0;a<=9;a++){
if (wert == value [a]){
cout<<distance [a];
}
else if (wert<value[a-1]&& wert>value[a]){
cout<<distance[a-1]+5; //bis zu 4cm max Ungenauigkeit
} //damit kann ich im Moment leben
else if (wert < value[a]||wert<40){
}
}//for
}while (wert != 0); //das muss ein Wert sein den der Sharp nie ereicht
}//()

Fritzli
30.04.2006, 17:50
Das hängt davon ab, welchen PIC Compiler du hast?

Die haben da jeder eine etwas andere Benamsung der Funktionen

tornado
30.04.2006, 20:28
Da muss ich noch mal nach gucken...
also die fertige *.hex datei kommt mit hilfe von IC Prog auf den PIC.
Um die *.hex datei mache ich mit... ne, ich werde morgen mal gucken... ich glaube mit "mp lap" oder so...

Fritzli
30.04.2006, 21:33
MPLAB ist die Entwicklungsumgebung.

Poste doch einfach mal das Programm, man erkennt den Compiler dann sehr schnell.

Gruess
Fritzli

tornado
08.05.2006, 13:01
Also, als compiler benutze ich eine *.bat Datei. Ich habe so viele Programe instaliert, dass ich nicht mehr wusste welcher jetzt dafür zuständig ist. In der Bat Datei steht etwas von HI Tech. Genau das war der Compiler.
HI TECH
und wie geht es jetzt weiter???