PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wertebereich einen Ausgangswert zuweisen?



Maxxtro
23.02.2009, 16:48
Hallo allerseits! :mrgreen:

Ich hab nun das Problem, dass ich beim messen der Windrichtung, über Poti und Spannungsteiler, leider absolut kein lineares Ergebniss des Richtungswertes zustande bekommen, selbst nicht mit einer Funktion 3. Grades :-k

Also nun die Frage, ob es möglich ist einem ADC-Wertebereich über einen Befehl einen bestimmten Ausgabewert zuzuweisen. Evtl über eine Art Tabelle o.Ä.?
Wüsste auch nicht, nach was ich in der Bascom-Hilfe suchen sollte?!

MfG,
Maxxtro

BurningBen
23.02.2009, 18:10
hast du ein logarithmisches poti verwendet?

for_ro
23.02.2009, 18:17
Wenn du es wirklich nicht hinbekommst, die Werte einigermaßen linearisiert zu bekommen, dann kannst du Lookup() Funktion benutzen.
Du legst dazu die Ausgabewerte im Flash ab (mittels Data Anweisungen).
Dein ADC Wert ist dann der Index in diese Tabelle.

Gruß

Rolf

Maxxtro
23.02.2009, 18:20
Nein, ist ein lineares Poti mit einer Linearitätstoleranz von ±2%!


Dim B1 As Byte , I As Integer

B1 = Lookup(2 , Dta)

Print B1 ' Prints 3 (zero based)



I = Lookup(0 , Dta2) ' print 1000

Print I

End





Dta:

Data 1 , 2 , 3 , 4 , 5

Dta2:

Data 1000% , 2000%


Wie darf ich das mit lookup() verstehen?

Welcher Wert muss dann unten anstelle 1 , 2 , 3 , 4 ,5 hin? Die ganezn ADC Werte, welche dann auf eine Richtungsangabe führen müssen?

MfG

for_ro
23.02.2009, 20:04
Angenommen du nutzt die volle ADC Auflösung von 1024 Werte.
Deine Ausgabe soll aber nur in 1° Schritten von 0° - 359° gehen.
Dann schreibst du hinter Data 1024 Werte. Jeder Wert ist dann eine Zahl zwischen 0 und 359. Welcher ADC-Wert z.B. zu 147° führt, musst du mit einem Gradmesser an dem Windrichtungsanzeiger feststellen.

Gruß

Rolf

Maxxtro
23.02.2009, 20:08
Ich versteh das nicht :mrgreen:

Ich schreibe also unten hinter "Data" 1024 Werte? Also 1 , 2 , 3, ... 1024? :-s

for_ro
23.02.2009, 20:29
Ich versteh das nicht :mrgreen:

Ich schreibe also unten hinter "Data" 1024 Werte? Also 1 , 2 , 3, ... 1024? :-s
Dann hätte ich wohl geschrieben:
Du schreibst hinter Data die Zahlen von 1 bis 1024.
Bei mir steht da "1024 Werte. Jeder Wert ist dann eine Zahl zwischen 0 und 359."
Wenn ich dich richtig verstehe, möchtest du z.B. den ADC Werten 500, 501, 502 und 503 z.B. die Gradzahl 150 zuweisen. Den ADC Werten 504, 505 und 506 dann die Gradzahl 151 usw.

Das Ganze natürlich nur, wenn sich wirklich kein Zusammenhang erkennen lässt.

Gruß

Rolf

Maxxtro
23.02.2009, 20:34
Stimmt, ich möchte solchen ADC-Werten einen bestimmen Gradwert zuweisen!

Wie funktioniert das aber?
Ich schreib hinter Data also was genau? Wie soll sich der dann aus der Liste mit 1024 Zahlen den richtigen Gradwert bilden?

Entschuldigung für mein Unwissen :mrgreen:

for_ro
23.02.2009, 21:18
Etwa so:



winkel_adc=Getadc(0) 'z.B. 500
winkel_grad=Lookup(Winkel_adc,Winkel_tabelle) 'ergibt den Wert 150
....


End

Winkel_tabelle:
Data 0%,0%,0% 'usw
...
Data 150%,150%,150%,150%,151%,151%,151%,152% 'hier die Werte 500 - 507
... 'hier die restlichen Werte

Maxxtro
23.02.2009, 21:46
Die "150%, 150%..." stehen also für den Winkel der zum Schluss ausgegeben wird?!

Aber wie müsste ich die "0%, 0% ..." fortzsetzen? Mit 1, 2 ,3 usw.%? Die sind also quasi der ADC Wert?

Edit: Habs probiert und, wie ich denke, auch kapiert :mrgreen:
... nun, funktionieren würde es sicher - aber es ist echt nicht die schönste Lösung ](*,) Ich muss noch weiter versuchen, wie Du schon sagtest Rolf, das ganze umzurechnen...

Nun, einmal mehr sag ich: Danke!

MfG

P.S. https://www.roboternetz.de/phpBB2/viewtopic.php?t=46460 :mrgreen: