mikrocontroller.net

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


Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Cheffe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

naja irgenwie so:


DIM Volt as Single

Volt = w * 5.23
volt = volt/1023

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


?!?!

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... ;-)

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 .

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Jahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Großmeister,

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

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht 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!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.