Forum: Mikrocontroller und Digitale Elektronik AD-Wanlder über Atemga168?


von Anfänger (Gast)


Lesenswert?

Hallo erstmal,
ich fange ambesten zuerst mit den Daten an.

MCU: atmega 168 + STK500 mit 16MHZ Crystal (habe den Teiler 8 für die 
Frequenz ausgeschaltet)

Ziel:
Ich möcht den AD-Wandler benutzen mit externer Rerferenzspannung von 
10V.

das habe ich schon geschaft:
Wandlungen über den interen Spannung (Vcc) mit dem Eingang VBG=1.1 hat 
schon geklappt.

Problem:
1) ich habe eine Spannung von 23V, die habe ich mit einem 
Spannungsteiler (R1= 1,3K OHM und R2= 1K Ohm) auf ca. 10 V gebracht 
sobalt ich es den Pin "REF" (STK500) anlege sinkt die Spannung am R2, 
warscheinlich weil            der Widerstand vom Pin viel kleiner ist 
als R2= 1K Ohm (parallel Schaltung). Zurstabilität habe ich einen 
Kondensator mit 10nF angelegt(hatte keinen Anderen da).
Frage:
Kann ich dies mit einem Op-Verstärker (positive Verstärkung) 
realisieren, ohne das die Spannung einbricht? -> (OP-Verstärker kleiner 
Ausgangswiderstand)Oder liegt es doch an etwas Anderm?

2) ich habe es geschaft an Pin "Ref" 7V anzulegen und habe die 
Referenzspannung vo STK500 auf 0 gestzt und die Aref brücke geschlossen, 
aber alle Messungen waren Falsch. Als Fehler habe ich 3LSB 
angenommen,aber
die Werte waren nicht mal inder nähe.
Frage:
Woran kann das Liegen? Kann ich überhaupt Referenzspannungen über 6V 
benutzen?

3) Trotz der Schleife (sehe unten Code) wandelt anscheinend der 
AD-Wanlder nur einmal.
Frage:
Woran kann das Leigen, muss ich den ADIF löschen obwohl ich kein 
Interrupt benutze?


Ich bin dankebar für jede Hilfe.

PS. der Code und Doku liegt im Anhang als zip :

.include "m168def.inc"

.def        temp_1      = r16
.def        temp_2      = r17
.def        data_H      = r18
.def        data_L      = r19

.cseg

MAIN:
 ;Stackpointer initialisieren
    ldi     temp_1,low(ramend)
    out     spl,temp_1
    ldi     temp_1,high(ramend)
    out      sph,temp_1

 ;PortD liegt an LED's an
    ldi     temp_1,0xFF
    out     DDRD,temp_1
 ;Init AD-Wandler
        ;Reverenz Spannung und Mux-Eingang einstellen
            ldi     temp_1,(0<<REFS1)|(0<<REFS0)|0x0E
            ldi     XH,high(ADMUX)
            ldi     XL,low(ADMUX)
            st      X,temp_1

         ;Alle Digitalbuffer ausschalten für PortC
            ldi     temp_1,0xff
            ldi     XH,high(DIDR0)
            ldi     XL,low(DIDR0)
            st      X,temp_1

         ;
            ldi     temp_1,0x00
            ldi     XH,high(ADCSRB)
            ldi     XL,low(ADCSRB)
            st      X,temp_1

loop:
  ;Start ADC, Single
     ldi     temp_1,(1<<ADEN)|(1<<ADSC)|0x03
     ldi     XH,high(ADCSRA)
     ldi     XL,low(ADCSRA)
     st      X,temp_1
  ;Warten bis messung vertig
     ldi     XH,high(ADCSRA)
     ldi     XL,low(ADCSRA)
   w_L_1:
     ld      temp_1,X
     sbrc    temp_1,ADSC
     rjmp    W_L_1
  ;Daten lessen
     ldi     XH,high(ADCH)
     ldi     XL,low(ADCH)
     ld      data_H,X
     ld      data_L,-X
  ;Invertieren und an Ergebnisausgeben, LED leuchtet bei 0
    com data_L
    out PORTD,data_L

rjmp    loop

von Michael U. (amiga)


Lesenswert?

Hallo,

wie wäre es mit einem Blick ins Datenblatt?

Dort wirst Du die Anhaben zur Referenzspannung finden.

Häher als die Betriebsspannung darf sie bei keinem mir bekannten AVR 
sein.

Gruß aus Berlin
Michael

von Anfänger (Gast)


Lesenswert?

Doku. konnte ich nicht hochladen weil es zu gross ist.
Adresse:
 -STK500:     www.controllersandpcs.de/pdfs/STK500.pdf
 -atmega168:  www.robotshop.ca/PDF/ATmega168.pdf

von Anfänger (Gast)


Lesenswert?

Habe mir im Datenblatt den Bereich AD-Converter durch gelesen, habe 
nichts gefunden darüber wie hoch die Spannung sein darf.

Grüße aus Berlin
Anfänger

von Spess53 (Gast)


Lesenswert?

Hi

Keine Spannung am AVR darf höher wie VCC sein.

Datenblatt:
                          Min  Max
VREF Reference Voltage    1.0 AVCC V
VIN  Input Voltage        GND VREF V

MfG Spess

von Falk B. (falk)


Lesenswert?


von Danke (Gast)


Lesenswert?

Danke für die Hilfe.

von Jörn P. (jonnyp)


Lesenswert?

Vielleicht sollte jemand mal einen ähnlichen Satz wie diesen ins 
Tutorial schreiben, der, bis auf ein paar Ausnahmen, immer gilt:
Keine Eingangsspannung DARF größer sein als die Versorgungsspannung,
keine Ausgangsspannung KANN größer sein als die Versorgungsspannung.

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.