PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sharp GP2D12



Che Guevara
05.03.2009, 17:56
Hallo Leute,

heute ist endlich meine lieferung von robotikhardware gekommen (2x SFR02 und 2x GP2D12).
der sfr02 funktionierte auf anhieb :-D und der sharp eig auch, nur in kombination mit dem atmega32 nicht :-(
am oscar bekomme ich beim gp2d12 völlig korrekte werte, nur wenn ich das in die entfernung umrechnen will, kommt 0 raus :-(

hier mal mein code:


$regfile = "m32def.dat"
$crystal = 16000000

Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
Config Lcdbus = 4
Initlcd
Cls
Cursor Off Noblink

Config Adc = Single , Prescaler = Auto
Start Adc

Config Pina.0 = Input
Porta.0 = 0

Enable Interrupts


Dim D As Single
Dim X As Word
Dim Y As Single
Dim Z As Single

Const A = 24.93
Const B = 0.0695


'D = A /(x -b)


Do

X = Getadc(0)

Y = X - B
Z = A / Y
D = Z * 100

Locate 1 , 1
Lcd "X = " ; X
Locate 2 , 1
Lcd "Y = " ; Y
Locate 3 , 1
Lcd "Z = " ; Z
Locate 4 , 1
Lcd "D = " ; D

Wait 1
Cls

Loop

End


könnt ihr mir helfen??
vielleicht ist der fehler auch ganz einfach, nur ich sehe ihn nicht *grübel*

P.S.: Das mit y und z unso ist nur, damit ich die werte sehe! ich weiß, dass das viel einfacher zu machen ist, hatte ich auch vorher einfacher, nur wollte ich jetzt mal die werte sehen ;-)

danke schon mal
gruß
chris

MelMan
05.03.2009, 18:32
Bekommst du denn ergebnisse für y und z? Weis nicht wie das ist wenn du ne single von nem word subtrahierts (
y=x-b)

Che Guevara
05.03.2009, 18:42
Hallo MelMan

danke für deine schnelle antwort!
ja, bekomme ich schon!

ich bekomme auch einen wert für d (die entfernung), also nicht richtig!
aber könnte es vielleicht sein, dass ich von d noch etwas abziehen muss, um auf den richtigen wert zu kommen??

gruß
chris

Che Guevara
05.03.2009, 18:42
Hallo MelMan

danke für deine schnelle antwort!
ja, bekomme ich schon!

ich bekomme auch einen wert für d (die entfernung), aber nicht richtig!
aber könnte es vielleicht sein, dass ich von d noch etwas abziehen muss, um auf den richtigen wert zu kommen??

gruß
chris

MelMan
06.03.2009, 16:47
Hmm kann ich dir leider nicht sagen kenn mich mit dem Ding nicht aus. Du willst einfach nur die Entfernung messen richtig? Im Datenblatt steht max. Range = 80cm, min. Range = 8cm. Wofür hast du die Werte A und B?

oberallgeier
06.03.2009, 17:10
... gp2d12 ... wenn ich das in die entfernung umrechnen will, kommt 0 raus ...Da ja der Sensorausgang stimmt, ist einfach Deine Umrechnung nicht richtig. Ich kann Dir mit Bascom nicht weiterhelfen - aber lies Dir mal hier durch, (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384168#384168) wie ich die Umrechnung mache. Die stimmt dann auf den Millimeter . . . . Für den Entfernungsbereich der Sensorwerte oberhalb des maximalen Spannungswertes dürfte für alle Sensortypen dieser Art die Regression
Abstand = konstante / ADC-Wert
stimmen. Natürlich gibt es immer wieder Abweichungen - und wer in Mathe pingelig ist, findet sicher auch ein richtig hübsches Polygon als Näherung (aber wer wirklich Mathe kann, rechnet so etwas auch nicht bis zur fünften signifikanten Stelle).

Viel Erfolg

Che Guevara
06.03.2009, 19:12
Hallo,

@MelMan,
ich habe die formel d = a/(x-b) i-wo im forum gelesen!

@oberallgeier,
danke für den link, allerdings kenne ich das schon ;-)

@all:
auch wenn eure antworten sehr hilfreich waren, bin ich nun schon von alleine draufgekommen. und die lösung ist wirklich haarsträubend einfach:

mit "ausgabewert des sensors" (also x) ist nicht der adc-wert, sondern die spannung, die der sensor ausgibt gemeint :-)
jetzt funktionierts tadellos :-)

gruß
chris