mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC-Wert springt von 984 auf 1023 bei 4,48V


Autor: Marcus H. (darox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte über den ADC0 des ATMEGA32 ein Stromsignal messen. Dazu liegt 
an diesem Pin ein 220 Ohm Shunt gegen Ground. Zudem verwende ich als 
externe 5V-Referenzspannung ein LM4040. Soweit funktioniert auch alles.

Jetzt wollte ich zur Fehlerauswertung und -anpassung eine Kennlinie von 
Eingangsspannung 0-5V und ADC-Ausgang aufnehmen. Bis zu einer Spannung 
von 4,84V und einem ADC-Wert von 984 ist auch alles in Ordnung, danach 
springt der ADC-Wert jedoch sofort auf 1023. D.h. für die letzten 160mV 
bis zu 5V gibt der ADC nur noch 1023 aus.

Hat jemand eine Idee woran das liegen könnte oder ähnliche Erfahrungen 
gemacht?

Auf einem Testboard ohne Shunt und mit VCC als Referenzspannung gab es 
keine Probleme.

MfG
Marcus H.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programm zeigen
Schaltung zeigen

Autor: Marcus H. (darox)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schaltung im Anhang und hier der entsprechende Programmausschnitt:
void ADC_init (void)
{
  uint32_t Ergebnis;
  DDRA &= ~0xFF;    
  PORTA &= ~0xFF;        
  ADMUX |= (1<<REFS0);   
  ADMUX &= ~(0<<REFS1);    
  ADCSRA = (1<<ADPS1)|(1<<ADPS0);      
  ADCSRA |= (1<<ADEN); 
  ADCSRA |= (1<<ADSC);          
  while (ADCSRA & (1<<ADSC) );    
  Ergebnis = ADCW;
}

uint32_t ADC_lesen (uint8_t Kanal)
{
  ADMUX = (ADMUX & ~(0x1F)) | (Kanal & 0x1F);
  ADCSRA |= (1<<ADSC);            
  while (ADCSRA & (1<<ADSC) );  
  return ADCW; 
}

int main (void)
{
ADC_init ();
  do
  {
    ADC_Wert = ADC_lesen (KANAL_0);
    LCD_position (0,1);
    LCD_text ("ADC:");
    LCD_position (0,2);
    LCD_Info (ADC_Wert, 7, 7, 4, " LSB", 0);
  }while(1);  
return 0;
}

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Marcus H. (darox)

>Schaltung im Anhang und hier der entsprechende Programmausschnitt:

Hmm, also mit einer 5V Referenz und 5V Vcc wird das wahrscheinlich nix. 
Denn du kannst nicht garantieren, dass die 5V von Vcc immer höher als 
die 5V der Referenz sind. Und das müssen sie.

Mein Tip. Nimm die 4,096V Version vom LM4040 und alles ist in Butter. 
Oder dreh deine VCC auf 5,5V hoch.

MfG
Falk

Autor: Marcus H. (darox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis, darüber werde ich nochmal nachdenken!

Also müsste ja mein VCC 4,84V betragen? Denn die Referenz erkennt er ja 
korrekt wenn er bei dieser Spannung noch 984 ausgibt.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Marcus H. (darox)

>Also müsste ja mein VCC 4,84V betragen? Denn die Referenz erkennt er ja
>korrekt wenn er bei dieser Spannung noch 984 ausgibt.

Kann sein.

Autor: Marcus H. (darox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok - noch eine Überlegung:

Was wäre wenn Avcc = Aref ist? Avcc darf ja 0,3V von VCC abweichen 
wodurch Schwankungen in der Versorgung egal wären.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Marcus H. (darox)

>Was wäre wenn Avcc = Aref ist? Avcc darf ja 0,3V von VCC abweichen
>wodurch Schwankungen in der Versorgung egal wären.

Theoretisch machbar. Aber dort hängt noch anderes Zeug dran, nämlich der 
gesamte PortA. Würde ich vermeiden wollen. Ach ja, 100nF an Aref wären 
auch nicht verkehrt.

MFG
Falk

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.