PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sharp GP2D12 Frage zum Auswerten |RN-Control



WDragon91
18.07.2008, 12:16
Hallo zusammen, habe von einem Forenmitglied, den oben genannten Sensor gekauft. Habe dem Sensor eine Spannungsstabilisierung verpasst und funzt auch alles wunderbar, wenn ich die Werte mit einem Multimeter messe.

Wenn ich den Sensor allerdings an den Port A vom RN-Control anschließe und mir dann von der Basecom Demo die Spannungen an dem Port ausgeben lasse bekomme ich nur Müll raus, in der Wiki habe ich schon gelesen allerdings finde ich darauf keine Antwort.

Hoffe ihr könnt mir helfen.

Mfg Matze

oberallgeier
18.07.2008, 12:27
... Sensor allerdings an den Port A vom RN-Control anschließe und mir dann von der Basecom Demo die Spannungen an dem Port ausgeben lasse bekomme ich nur Müll raus ...
An welchen der sieben Ports A ?

Gibt´s zur RNControl nicht gleich als Demo (mit Code) eine Messung der Spannung am ADC ? Guck doch dort mal nach?

ikarus_177
18.07.2008, 12:28
Hi,

poste mal deinen Code, ich hab das bei mir so gemacht:


Const Ref = 5 / 1023
Dim Volt As Single
Const A = 27
Const B = 0.05
Dim D As Single
Dim Z As Single

Config Adc = Single , Prescaler = Auto
Config Porta.2 = Input


Start Adc
W = Getadc(2)
Volt = W * Ref

Z = Volt - B
D = A / Z

Viele Grüße

WDragon91
18.07.2008, 14:17
Sub Showporta()
Local Ws As Word

Config Porta = Input
For I = 0 To 5 ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport
Porta.i = 1
Next I

Print
Print "Ermittelte Messwerte an Port A:"
For I = 0 To 7 ' Alle Eingänge inkl. messen
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref
Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt"
Next I
End Sub



@oberallgeier habe genau diese Demo genommen. Hatte den Sensor an PortA.0 angeschlossen.

Ich müsste dann ja eigentlich die Spannung raus bekommen, die ich auch rausbekomme wenn ich mit dem Multimeter nachmesse, es kommt aber wirklich nur schrott bei rum, er gibt sowas aus wie 3.6 obwohl das ja weit über der maximal ausgabe des sensors liegt. Normalerweise sollte das mit der Demo doch klappen.

@ikarus du hast jetzt schon mit der Nährungsformel gearbeitet oder? Die Spannung die das RN-Control ausgibt ist aber richtig oder?

jeffrey
18.07.2008, 14:35
hi,
das du einfach den adc wert falsch in einen spannungswert umrechnest?
mfg jeffrey

oberallgeier
18.07.2008, 14:47
Pin A0 ist ok, da hängt ja sonst nix dran.

Ich versteh ja nix von Bascom aber ist das ok?

For I = 0 To 5 ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport

wo Du doch am PortA0 misst?

jeffrey
18.07.2008, 14:57
Pin A0 ist ok, da hängt ja sonst nix dran.

Ich versteh ja nix von Bascom aber ist das ok?

For I = 0 To 5 ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport

wo Du doch am PortA0 misst?
hi,
stimmt daran liegt´s wohl. hatte ich vorher total überlesen. das problem hatte ich soweit ich mich erinnere auch mal.
probier mal die pullups auszuschalten.
mfg jeffrey

ikarus_177
18.07.2008, 16:29
Hi,

wo hast du denn dein ADC initialisiert? Ist das im Hauptprogramm ganz oben?

Ja, die Spannung stimmt soweit, sie verändert sich ziemlich genau nach diesem Diagramm mit der Entfernung.

Viele Grüße

oberallgeier
18.07.2008, 16:55
Hallo WDragon91,

übrigens habe ich meinen Sharp, es ist ein GP2D120, selbst "geeicht" (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384168#384168)und daraus eine ziemlich simple Formel für den Abstand abgeleitet:

GPDmm = 25600 / gpdtmp; // gpdtmp ist der eingelesene ADC-Wert.

Wie gesagt - die Parameter sind selbst bestimmt (siehe Link). Der so gewonnene Abstandswert stimmt bei mir gut. Ich weiß aber nicht, ob es bei dem Teil stärkere Bauteiltoleranzen gibt. Allerdings stellte ich deutlich schwankende Ergebnisse fest, wenn die Referenzspannung oder die Versorgungsspannung des Sharp geringfügig variiert wird - das kommt ja im Betrieb schon mal vor.

WDragon91
18.07.2008, 20:42
So da bin ich wieder :)

@ Jeffrey denke ich nicht habe mich genau an den Wiki Eintrag gehalten, sollte eigentlich Richtig sein.

Config Porta = Input
For I = 0 To 5 ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport
Porta.i = 0
Next I



So wären dann doch die Pullup widerstände ausgeschaltet? Werde ich morgen sofort mal ausprobieren

@ikarus ja den ADC Wert habe ich weiter oben im Programm definiert

Config Adc = Single , Prescaler = Auto

@oberallgeier
das problem ist ja das ich schon so falsche Spannungswerte zurück bekomme, mit dem ich nichts anfangen kann, sollte das dann mal klappen, werde ich wohl auch deine Gleichung nehmen ist simpler als die Nährungsformel. Schwankt die Versorgungsspannung denn auch wenn man einen Spannungsstabilisator dran hat?


Mfg Marcel

masabuana
18.07.2008, 21:10
Ich garantier dir das is irgendein Trick mit dem Pullup...hat mich auch graue Haare gekostet aber irgendwann hats funktioniert.


MfG

oberallgeier
18.07.2008, 21:56
Hallo Marcel WDragon91,


@ Jeffrey denke ich nicht habe mich genau an den Wiki Eintrag gehalten, sollte eigentlich Richtig sein
...
So wären dann doch die Pullup widerstände ausgeschaltet? Werde ich morgen sofort mal ausprobieren
Also ICH habe für meinen ADC den Eingangspin ohne Pull up initialisiert (ein Auszug aus den allerersten Initialisierungen in (m)einer main) :

DDRC = 0b01110000; // PC3 ist ADC3, PC0 .. 6 , kein PC7-Pin bei m168/PDIP
PORTC = 0b00000111; // Änderung für ADC: PC3 ist Eingang ##>> OHNE Pullup !!
... und der ADC mit dem GP2D120 funktionieren an diesem Port prächtig (eben alles in C programmiert - bei mir eher Cäh - und nicht Bascom).

Vielleicht liest Du Dir auch mal die Abhandlung zum ADC (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29) beim microcontroller.net durch? Nur mal so. Zur Störungsminderung habe ich wenigstens einen Kondensator 100nF zwischen GND und AVcc so nah wie es geht bei den Pinnen, besser ist eine LC-Kombination wie im Atmel-doc beschrieben.

Zur Spannungsstabilisierung kann ich nix sagen - die tuts oder tuts nicht - kommt auf die Versorgung und die Verbräuche an. Ich hatte mir wenigstens die Störungen durch den Sharp (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=37624&highlight=) selber etwas gedämpft mit zwei Kondensatoren (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384864#384864), das steht in diesem Thread - oder bei anderen Leuten.

Viel Erfolg bei Deinen Messungen

WDragon91
20.07.2008, 21:04
Sooooooooooooooooo Erledigt :) Es funzt das Problem lag wirklich an den Pullup Widerständen ausgestellt und funktioniert.
Werde morgen mal den Wiki Beitrag erweitern :-)
Vielen Dank euch allen.


Mfg Marcel