PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GP2D12 konkret



tobimc
03.11.2004, 00:37
HI!

Ich habe einen GP2D12, der über einen I²C, 8-Bit ADC ausgelesen wird.
In BASCOM wird dieser Wert in einer Single-Variable zur Voltzahl
umgerechnet.

Ich habe im Internet nach einem stichhaltigen Verfahren gesucht, das in die Entfernung umzurechnen. Ohne Erfolg, der funktioniert hätte.

Die Formel aus diesem Thread funktoniert bei mir irgendwie nicht:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=174

Deshalb: Hat jemand eine Fromel für den GP2D12 oder wie muss ich das anstellen?

Wie macht ihr das?

Vielen Dank schonmal jetzt,
Tobi

Manf
03.11.2004, 09:15
Was meinst Du genau?
Die Formel mit dem x hoch y ist sicher etwas schwierig für den Controller ist das das Problem?

https://www.roboternetz.de/phpBB2/viewtopic.php?p=34344#34344

Manfred

tobimc
03.11.2004, 09:20
HI Manf,

Ich meine einfach ein einfaches Patentrezept für die Berechnung der Entfernung aus der Spannung; :D
Diehier habe ich getestet, es funzt aber nicht:
D = A/(X-B)

Danke schonmal!
Tobi

PS/EDIT: Ich wüsste nciht, wie ich x^y mit dem controller ausrechnen sollte... ohne Schleife mit BASCOM... :-k

tobimc
03.11.2004, 09:50
Hi,

Ich fahre jetzt leider nach Sinsheim ins Museum; Familienausflug, da kann man sich schlecht drum drücken... :D

Trozdem danke für alle Antworten! Ich beantworte heute Abend!

Tobi

Mr. Burns
03.11.2004, 10:44
Hallo,

soweit ich weiß beherrscht Bascom die Potenzrechnung. Sollte es Probleme durch die Floatzahl im Exponent geben, so läßt sich die Formel sicherlich mit etwas Geschick (und einer Matheformelsammlung) geeignet umstellen. Ich fang schon mal mit dem Minus an:

y = A * x^-B = A / x^B

Ich habe mir gerade die Tabelle nochmal angeschaut. Der Wert für B ist etwa 1,15. Durch leichte Anpassung des Sensorsignals (nach unten) kann der Wert auf knapp 1 gebracht werden. Ich habe mal von allen Werten des A/D-Wandlers (Tabelle1, Spalte C) 10 subtrahiert. Dann ergibt sich im Diagramm die Formel

y = 2407,8 * x^-1,0036

Das kann man dann schon etwas vereinfachen

y = 2408 / x

Als Gesamtformel ergibt sich also

y = 2408 / (x - 10)

wobei y = Entfernung in cm
und x = Wert des A/D-Wandlers

Also das sollte für den µC kein Problem sein und der Fehler ist gering (max. 1 cm).

Grüße

Markus

tobimc
03.11.2004, 22:25
HI!

Danke!

Hast du berücksichtigt, dass ich mit 8 Bit arbeite?
Ich werd's testen!

Viele liebe Grüße und Danke,
Tobi

tobimc
03.11.2004, 22:33
Hi,

Also, hab's schnell programmiert. Da kommen schon wieder ordentliche Zahlen raus, aber ich glaube, dass du das für 10Bit oder so ausgelegt hast?!

Tobi

Mr. Burns
04.11.2004, 10:57
Hallo,

also ich habe mit einem 8-bit-ADC gearbeitet. Im Prinzip ist es aber egal. Im 2. Diagramm ist das ganze ja gegen die Spannung aufgetragen, da kannst du das genauso vereinfachen. Durch Verwendung eines 10-bit-ADC wird ja nur die X-Achse des Diagramms gestreckt, das Berechnungsprinzip bleibt gleich. Das gleiche gilt auch, wenn du einen anderen Sharp-Sensor nimmst. Einfach etwas mit den Zahlen spielen, bis du etwas raushast, daß sich leicht berechnen läßt.
Haben die AVRs oder Bascom überhaupt Probleme mit der ersten Formel? Ich hatte die Sensorauswertung auf dem PC gemacht und mich deshalb nicht um Rechenkapazität gekümmert.

Markus

tobimc
04.11.2004, 11:23
Hi

Ja, danke, es funktioneirt jetzt!!

Also mit den n Stellen hinterm Komma haben die AVRs schon so ihre Problemchen... Vor allem steigt der Flash-Verbrauch extrem an, wenn man
SINGLE-Variablen nimmt.

DANKE AN ALLE!

Tobi