Kleine Spannungen mit dem ATMEGA8 messen und anzeigen

OP #3600114
Lesenswert?
• ▲
▼
Hallo zusammen,
ich möchte gern Spannungen zwischen 30-150 mV messen. Dabei soll mir der 
Atmega8 helfen, die zu verwirklichen. Ich habe mir nun das myAVR board 
MK2 mit der passenden LCD Anzeige gekauft und mit BASCOM versucht, dies 
zu realisieren. Dabei bin ich nun fürchterlich auf die Nase gefallen. 
Ich habe das zwar ein Programm gefunden, welches evtl. passen könnte, 
jedoch "flatterten" die Werte im Display auf und ab. Also keine stabile 
Anzeige. Leider war auch nicht angegeben, auf welchem Port ich meinen 
Messeingang legen muss. Wie kann ich denn das nur hinkriegen? Bin jetzt 
völlig verwirrt und ratlos. Kann mir einer (oder mehrere von euch) von 
euch Profis dabei helfen, mein Problem zu lösen? Ich muss auch dazu 
sagen, dass ich nicht sehr bewandert in BASIC (von anderen Sprachen habe 
ich gar keine Ahnung) bin, weil ich doch schon etwas älter bin. Bitte 
bitte ->>> HÜLFE
Gast #3600121
Lesenswert?
• ▲
▼
Dieter Golze schrieb:
> Ich habe das zwar ein Programm gefunden, welches evtl. passen könnte,
> jedoch "flatterten" die Werte im Display auf und ab.

µC Programmiert man eigentlich selber. Wenn du etwas fertiges braucht 
kauf ein Multimeter. Das zeigt dir die Spannung an.

Was erwartest du jetzt von uns? Ohne das Fragwürdige Programm kann dir 
niemand sagen welchen Eingang man verwenden muss. Außerdem kann auch die 
Schaltung schon falsch sein.
Gast #3600189
Lesenswert?
• ▲
▼
Peter II schrieb:
> µC Programmiert man eigentlich selber. Wenn du etwas fertiges braucht
> kauf ein Multimeter.

Hallo Peter, wie schon erwähnt, bin ich nicht sehr bewandert im 
programmieren, möchte dies jedoch mit etwas Hilfe lernen. In Büchern 
sind immer tolle Versuche aber selten so erklärt, dass ein Neuling wie 
ich viel damit anfangen kann. Ich habe mal das Listing angehangen. Ich 
denke, dass es der Port C0 ist.
Angehängte Dateien:
OP #3600206
Lesenswert?
• ▲
▼
Peter II schrieb:
> keine Bilderrätsel

ok, so sei es ;-)     -    Hier der Klartest

$regfile = "m8def.dat"
$crystal = 1000000
$swstack = 10

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , 
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Cursor Off
Cls
Waitms 10

Config Adc = Single , Prescaler = Auto , Reference = Avcc 
'Analogwandler definieren

Config Portc.0 = Input                                      'ADC

Config Portb = Output                                       'LEDs
Leds Alias Portb

Dim Analogwandler As Integer                                'Variable 
zur Aufnahme des Wertes vom Analogwandler
Dim Volt As Single

Dim Vorkomma As Byte
Dim Nachkomma As Byte
Dim Gesamt As Integer

Lcd "ADC-Wert"
Locate 1 , 11
Lcd "Volt"


Do
Analogwandler = Getadc(0)                                   'AD-Wandler 
einlesen. Werte zwischen 0 und 1023

Locate 2 , 1
Lcd Analogwandler ; "  "


Volt = Analogwandler * 14.7                                 '0..1024  -> 
0..15000
Volt = Volt / 1000                                          ' 0... bis 
15,..
Locate 2 , 11
Lcd Volt ; "    "

Vorkomma = Int(volt)                                        'Ganze 
Vorkommazahl 1 .. 15
Volt = Volt - Vorkomma                                      'Nur 
Nachkommastellen  0,x..
Volt = Volt * 10                                            'Erste 
Nachkommastelle  x,...
Nachkomma = Int(volt)

Gesamt = Vorkomma * 16                                      ' vvvv0000
Gesamt = Gesamt + Nachkomma                                 ' vvvvnnnn
Leds = Gesamt

Waitms 100
Loop
End
Gast #3600222
Lesenswert?
• ▲
▼
> Volt = Analogwandler * 14.7                                 '0..1024  ->
> 0..15000


woher kommt du 15000? Damit skalierst du den wert auf 0 bis 15V. Das 
macht für dich aber überhaupt kein sinn.

Dies verwendet man wenn man mit einen Spannungsteiler 15V messen will.

Aber zu der Hauptfrage, wo die Spannung angelegt werden muss.

> Getadc(0)
damit müsste es der Anschluss ADC0 sein -> siehe Datenblatt.


Auch solltest du nicht gegen VCC messen, sondert gegen die interne 
Referenz:
> Reference = Avcc
muss also geändert werden.

Aber ich kenne Bascom nicht, damit kann ich nicht sagen in was man es 
ändern müsste.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.