Forum: Mikrocontroller und Digitale Elektronik Spannungsmessung ADC


von Susi (Gast)


Lesenswert?

Hallo,

ich möchte eine Spannung (0 bis 5V) aus dem Netzgerät mit einem Attiny26 
Mikrocontroller (ADC Wandler)  messen. Da ich keine Erfahrungen 
bezüglich Mikrocontroller habe, habe ich bereits das Datenblatt (ADC) 
durchgelesen und auch schon viel gegoogelt. Gibts eventuell Quellcode 
(Assembler), welche ich mir durchlesen könnte. Kann jemand mir Tipps 
geben wie ich am besten an diese Aufgabe herangehen soll?

Danke im Voraus

von Max H. (hartl192)


Lesenswert?

Lies dir das mal durch: AVR-Tutorial: ADC

von Susi (Gast)


Lesenswert?

Danke ich habe es mir durchgelesen.Ich habe bis jetzt nicht ganz 
verstanden warum ich ein ADSC Bit brauche. Kann ich diesen Bit (Bit 6) 
auf Null setzen?

von spess53 (Gast)


Lesenswert?

Hi
>Ich habe bis jetzt nicht ganz
>verstanden warum ich ein ADSC Bit brauche.

Damit startet man eine Messung und stellt fest, wann der ADC damit 
fertig ist. Eigentlich eines der wichtigsten Bits.

MfG Spess

von Susi (Gast)


Lesenswert?

Ich meine was ist der Unterschied zwischen die beiden codes

1.
 ldi temp, 0b10000000
 out ADSCRA, temp

2.

 ldi temp, 0b11000000
 out ADSCRA, temp

von Hp M. (nachtmix)


Lesenswert?

Susi schrieb:
> Ich meine was ist der Unterschied zwischen die beiden codes

Keiner.
Beides ist falsch, da es kein ADSCRA-Register gibt.

Du meinst das Bit6 (ADSC) im ADCSR-Register.
Das zweite Beispiel startet den ADC, das erste Beispiel tut gar nichts, 
allenfalls aktiviert es, sofern nicht schon geschehen, über Bit 7 den 
ADC.

: Bearbeitet durch User
von Susi (Gast)


Lesenswert?

Vielen dank für die Antwort.

Heißt das, (2.) wenn ich den Bit 6 im ADSCR Register nicht setze 
(ADSC=0), keine Messung vorgenommen wird. Muss ich immer diesen Bit 
setzen (ADSC=1)?

von Wolfgang (Gast)


Lesenswert?

Susi schrieb:
> Muss ich immer diesen Bit setzen (ADSC=1)?

So wird es wohl sein, wenn auf S.96 im Datenblatt steht: "A conversion 
is started by writing a logical one to the ADC Start Conversion bit, 
ADSC. ".

von Hp M. (nachtmix)


Lesenswert?

Susi schrieb:
> Muss ich immer diesen Bit
> setzen (ADSC=1)?

Ja, das Rücksetzen erledigt der ADC selbst, als Zeichen dafür, dass die 
Messung fertig ist. Du kannst und sollst das per Software nicht machen.

Es gibt da auch noch die Möglichkeit, dass der ADC nur einmal über das 
ADSC Bit angestossen wird, und dann fortlaufend von selbst wandelt. 
Dieser Modus  wird über Bit5 ADFR angewählt.

von Hp M. (nachtmix)


Lesenswert?

Susi schrieb:
> ich möchte eine Spannung (0 bis 5V) aus dem Netzgerät mit einem Attiny26
> Mikrocontroller (ADC Wandler)  messen.

Ich würde dir auch empfehlen, diese Spannung mittels Spannungsteiler 
etwas zu reduzieren, z.B. auf 4V, damit du auch bei Überspannung noch 
gültige Messwerte bekommst.

von Susi (Gast)


Lesenswert?

Auf der Seite von AVR- Mikrocontroller. Link:

 http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

Code:

; ADC initialisieren: ADC0, Vcc als Referenz, Single Conversion, 
Vorteiler 128

    ldi     temp1, (1<<REFS0)                   ; Kanal 0, interne 
Referenzspannung 5V
    out     ADMUX, temp1
    ldi     temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
    out     ADCSRA, temp1


ist ADSC im ADSCR Register auch nicht gesetzt. Ist da ein Fehler 
unterlaufen? Da im Datenblatt steht, dass ADSC gesetzt werden soll.

Mfg

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Susi schrieb:
> ist ADSC im ADSCR Register auch nicht gesetzt. Ist da ein Fehler
> unterlaufen? Da im Datenblatt steht, dass ADSC gesetzt werden soll.

Jo, das ist ja auch nur die Voreinstellung. Ein paar Zeilen darunter 
wird der ADC dann per Setzen von ADSC gestartet:
1
; neuen ADC-Wert lesen  (Schleife - 256 mal)
2
 
3
sample_adc:
4
    sbi     ADCSRA, ADSC        ; den ADC starten
5
 
6
wait_adc:
7
    sbic    ADCSRA, ADSC        ; wenn der ADC fertig ist, wird dieses Bit gelöscht
8
    rjmp    wait_adc
und per Abfrage des ADSC Bits wird solange gewartet, bis der ADC fertig 
ist, denn das Bit wird vom ADC gelöscht, sobald die Messung beendet ist. 
Dann darf aus den Ergebnisregistern der neue Messwert gelesen werden.
Denke daran, das die Registerbezeichnungen und auch manchmal die 
Bitpositionen zwischen verschiedenen AVRs variieren, du nimmst also die 
Bezeichnungen aus dem Datenblatt, was für deinen MC gilt.

: Bearbeitet durch User
von µC-Bastler (Gast)


Lesenswert?

Matthias S. schrieb:
> ... du nimmst also die Bezeichnungen aus dem Datenblatt, was für
> deinen MC gilt.

Und wenn dann irgendetwas hakt, kann es - auch wenn das sinnvollerweise 
nicht passieren sollte - ggf. auch an Abweichungen zwischen Datenblatt 
und prozessorspezifischer Header-Datei liegen.

von Susi (Gast)


Lesenswert?

vielen Dank für die Antworten:)

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.