Forum: Mikrocontroller und Digitale Elektronik Bascom-AVR: ADC-Werte umrechnen


von GrossmeisterB (Gast)


Lesenswert?

Hallo!!

Habe mein myAVR-Board mitlerweile soweit, das ich einen Wert über den
AC an PortC.0 einlesen kann, und den Wert (0...1023) auf dem Display
ausgeben kann...hier der Code dazu:

$regilfe = "m8def.dat"
$crystal = 368400

Condig Adc= Single , Prescaler = Auto , Reference = Internal
Start ADC
Dim W as Word
Dim A as Word

Do

W = Getadc(0)

Cls

LCD W ; " Wert" ;

Waitms 500

Loop

End


Jetzt möchte ich den Wert 0...1023 in einen "Spannungswert" oder
"Temperaturwert" umrechnen.

Wie mache ich das?

Die Umrechnungsformel dazu habe ich mir wie folgt "überlegt":

Wert in Volt = W * (Maximale Spannung) / 1024

Die Maximale Spannung habe ich mit einem guten Voltmesser zu 5.23V
gemessen, also müsste die Formel lauten:

Wert in Volt = W * 5.23 / 1024

Aber wie setze ich das jetzt in Bascom um?

Wäre für jede Hilfe dankbar!

von Cheffe (Gast)


Lesenswert?

Hallo,

naja irgenwie so:


DIM Volt as Single

Volt = w * 5.23
volt = volt/1023

von GrossmeisterB (Gast)


Lesenswert?

Hehe...ich als "alter" C-Programmierer wollte das in eine Zeile
machen, kein Wunder das es nicht ging...

Jetzt geht es aber...

Danke soweit!


Ach so, wie kann ich die Anzahl der Zeichen von "Volt" ändern?

So:

Dim Volt as Single * 5


?!?!

von Simon K. (simon) Benutzerseite


Lesenswert?

Warum bleibst du nicht einfach bei C. ist wesentlich besser als BASCOM..

von GrossmeisterB (Gast)


Lesenswert?

Würde ich ja gerne, aber mit den Programmen WinAVR und so weiter komme
ich mal überhaupt nicht klar... :-/

Das programmieren an sich ist ja kein Problem, aber ich bekomme es
einfach nicht hin, eine Hex-Datei zu bekommen, und die irgendwie zu
programmieren...das programmieren an sich könnte ich ja mit myAVR
Workpad SE Demo machen, aber dazu bräuchte ich erstmal ein Grundgerüst
für den mega8 in C, und so weiter und so weiter...da ist Bascom dich
irgendwie einfacher... :-/

Aber bin für jeden guten Tip dankbar... ;-)

von HansHans (Gast)


Lesenswert?

und ich will von Bascom zu C verrückte Welt ...

Habe WinAVR installiert und ich bekomme auch eine Hex Datei ,
und auch das „Brennen“ mit dem STK200 Klappt ....
Dank der Anleitung im AVR-GCC-Tutorial

Das Programmieren in C na ja mal sehen ....

Wie meinst das mit :
Anzahl der Zeichen von "Volt" ändern?
 Die Komma stellen oder was ?

dann schau dir mal den Befehl  Fusing "#.##"
an oder Erkläre noch mal  was du vor hast .

von GrossmeisterB (Gast)


Lesenswert?

Ja, genau, "Volt" soll halt eine Nachkommastelle haben (wird später
zur Temperaturmessung verwendet, und genauer geht's da eh nicht!)

Habe dann noch eine Frage:

Der MC soll auf "Tastendruck" Befehle ausführen, habe

Config Portd = Input    gesetzt, und dann

Do

If Pind.5 = 1 then
   Portd.6 = 1

End If

Loop

Aber warum macht er es nicht? Habe den Taster 1 vom myAVR-Board an
PortD.5 gelegt, wenn ich den Port betätige tut sich aber an Portd.6
nix...

von HansHans (Gast)


Lesenswert?

...ohne Test aber so in etwa :

 $regfile = "m8def.dat"
$crystal = 368400

 Config Pind.5 = Input                                      'Tasten
   Config Pind.6 = Output                                   'LED
     Config Adc = Single , Prescaler = Auto , Reference = Internal
Start ADC
Dim W as Word
Dim A as Word
Dim Volt As Single



 W = Getadc(0)

   Volt = W * 5.23
   Volt = Volt / 1023

    Cls

 Lcd Fusing(volt , "#.#") ; " V"

If Pind.5 = 1 Then
    Set Portd.6
   Else
   Reset Portd.6
  End If


Oder Den Befehl Debounce....einsetzen !

von Jahn (Gast)


Lesenswert?

Hallo Großmeister,

beachte bei der nutzung des PORTD das da ja schon das display dran
hängt... ;-)

von Gross M. (grossmeisterb)


Lesenswert?

Das Display ist an Port B, Port C wird für die A/D-Wandlung genutzt,
Port D soll für die Ein- /Ausgabe genutzt werden...

Also von daher sollte das passen, werde mal den Code von HansHans
versuchen...danke erstmal!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.