mikrocontroller.net

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


Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Danke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe.

Autor: Jörn Paschedag (jonnyp)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.