Forum: Analoge Elektronik und Schaltungstechnik Kleine Spannungen mit dem ATMEGA8 messen und anzeigen


von Dieter G. (dieter1957)


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

von Peter II (Gast)


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.

von Harald W. (wilhelms)


Lesenswert?

Dieter Golze schrieb:

> ich möchte gern Spannungen zwischen 30-150 mV messen.

Solch kleine Spannungen musst Du üblicherweise vor der Einspeisung
in den AD-Wandler verstärken.
Gruss
Harald

von Dieter Golze (Gast)


Angehängte Dateien:

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.

von Dieter Golze (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Solch kleine Spannungen musst Du üblicherweise vor der Einspeisung
> in den AD-Wandler verstärken.

Danke für die schnelle Antwort. Aber wie kann ich das machen?

von Peter II (Gast)


Lesenswert?

Dieter Golze schrieb:
> Ich habe mal das Listing angehangen

wir machen hier keine Bilderrätsel. Code bitte als Text posten.

von Dieter G. (dieter1957)


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

von Peter II (Gast)


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.

von Dieter G. (dieter1957)


Lesenswert?

Danke Peter, das hilft mich schon ein wenig weiter. Den Minusanschluss 
lege ich dann an GND an?

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.