mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [Mega8] ADC gibt nur 0 oder 1023 zurück


Autor: Alan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ADC von meinem Atmega 8 gibt, obwohl der entsprechende Pin über 
einen Widerstand an VCC hängt nur 1023 aus, hängt er an GND bekomme ich 
0.
Aber: Wenn der Pin in der Luft hängt bekomme ich was von ~500.
uint16_t ReadChannel(uint8_t mux){
  uint8_t i;
  uint16_t result;
 
  ADMUX = mux;                      // Kanal waehlen
  ADMUX |= (1<<REFS0); // AVCC Referenzspannung nutzen
 
  ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // Frequenzvorteiler 
                               // setzen auf 8 (1) und ADC aktivieren (1)
 
  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung 
  while ( ADCSRA & (1<<ADSC) ) {
     ;     // auf Abschluss der Konvertierung warten 
  }
  result = ADCW;  // ADCW muss einmal gelesen werden,
                  // sonst wird Ergebnis der nächsten Wandlung
                  // nicht übernommen.
 
  /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
  result = 0; 
  for( i=0; i<4; i++ )
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    result += ADCW;        // Wandlungsergebnisse aufaddieren
  }
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)
 
  result /= 4;                     // Summe durch vier teilen = arithm. Mittelwert
 
  return result;
}

Autor: Stefanie B. (sbs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Miss mal AVcc!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der ADC von meinem Atmega 8 gibt, obwohl der entsprechende Pin über
>einen Widerstand an VCC hängt nur 1023 aus, hängt er an GND bekomme ich
>0

Schon mal was von Spannungsteiler gehört ?

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch in Ordnung so.
Bau mal nen Spannungsteiler dran. Am einfachsten mal ein Poti, mit dem 
Schleifer an dem ADC-Pin:

 VCC
  ^
  |
 +-+
 | |
 | /----> ADC
 / |
v+-+
  |
  -
 GND

Und dann rumdrehen...

Autor: Alan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah danke, der Spannungsteiler wars.

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.