AD-Wanlder über Atemga168?

Gast #792313
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
Gast #792320
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
Gast #792321
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
#793105
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.