Bascom-AVR: ADC-Werte umrechnen

Gast #262280
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!
Gast #262282
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


?!?!
Gast #262284
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... ;-)
Gast #262285
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 .
Gast #262286
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...
Gast #262287
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 !

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren