Hallo, ich lese die letzten tage schon zich Beiträge, finde aber nur teils zum ziel. Problem ist mein ADC Wert springt wie er will. Nun habe ich schon gesehen, dass man digitale und analoge Masse einführen sollte. Soweit so gut. Ich wollte mal fragen ob jemand hier vielleicht mal seine rundum Beschaltung posten kann. Ich nutze die interne Frequenz und ansonsten einige Pufferkondensatoren. Habe meine Schaltung mal angehangen. Nicht wundern an den ADC Eingängen hängt was dran, ist nur abgeschnitten. Ich habe aktuell am ersten Pin einen Spannungsteiler 10K zu 10K wobei parallel zu einem 100nF puffern und selbst da wackelt der adc Wert. Ich nutze die interne Referenz 5V Würde mich freuen wenn jemand ma ne Schaltung postete von der Versorgungsseite wie er es gelöst hat :) danke mfg michael
Hi >Du hast Aref, also deine Referenzspannung nicht beschaltet Der notwendige Kondensator ist doch dran. >Ich habe aktuell am ersten Pin einen Spannungsteiler 10K zu 10K wobei >parallel zu einem 100nF puffern und selbst da wackelt der adc Wert. In welcher Größenordnung? MfG Spess
> nutze die interne Referenz 5V
Der hat keine interne 5V Referenz, sondern nur ne 2,56V Referenz. Du
misst gegen die VCC, dass kann die Schwankungen auslösen.
Knut
Wenn beim ADC Wert von maximal 1024 Werten ausgeht schwankt er immer zwischen 50 und 60 Werten. Die Schwankung tritt auch auf, wenn ich gegen die 2,56 V Messe.
Vcc ist nicht beschaltet. Alleine mit AVcc geht's nicht. Blackbird
ach du scheiße, was hab den ich da fürn mist gebaut.....wieso liegt vcc auf masse?! Augen auf....das wird es sein denke ...ich teste ma und berichte
Mit welcher Frequenz lässt du den ADC laufen? Mach mal ein Bild von deinem Aufbau. Lass einfach mal den ADC langsamer laufen. Hier mal drei Links die vllt. helfen könnten. http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf (S.195-198) http://www.atmel.com/dyn/resources/prod_documents/doc8003.pdf http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf
danke, habs ma eben umgelötet, hatte ja gepasst nur eine brücke vergessen, ändenr tut sich trotzdem nichts. Auch wenn ich den ADC ganz langsam mache ändert sich nichts
wie wärs denn mal mit Code, Details zur Spannungsversorgung und Taktquelle
Also als Takt nutze ich intern die 1 Mhz Spannungsquelle hab ich mir ein 7805 Regler aufgebaut, aber auch schon meine Labornetzteil genommen, ist bei beiden das gleiche problem. /* ADC initialisieren */ void ADC_Init(void) { uint16_t result; ADMUX = (0<<REFS1) | (1<<REFS0); // AVcc als Referenz benutzen ADCSRA = (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0); // Frequenzvorteiler ADCSRA |= (1<<ADEN); // ADC aktivieren ADCSRA |= (1<<ADSC); // eine ADC-Wandlung while (ADCSRA & (1<<ADSC) ) {} // auf Abschluss der Konvertierung warten result = ADCW; } /* ADC Einzelmessung */ uint16_t ADC_Read( uint8_t channel ) { // Kanal waehlen, ohne andere Bits zu beeinflußen ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion" while (ADCSRA & (1<<ADSC) ) {} // auf Abschluss der Konvertierung warten return ADCW; // ADC auslesen und zurückgeben } int main(void) { _delay_ms(100); lcd_init(); lcd_clear(); ADC_Init(); while (1) { char Buffer[30]; result= ADC_Read(2); _delay_ms(10); lcd_goto_xy( 8, 3 ); itoa(result, Buffer, 10); while(strlen(Buffer) <4) strcat(Buffer," "); lcd_write(Buffer); so das ist der code, Einführung etc hab ich ma weggelassen. Ich weiß das er sicher net optimal ist aber es geht um erste Linie darum, dass mir adc wert um bis zu 60 werten springt.
An der Software sollte es nicht liegen, die sieht OK aus. Für die Abblockkondensatoren und Störungen über die Versorgung kommt es nicht nur darauf an wie der Schaltplan aussieht, sondern auch wie die Verbindungen liegen, und ggf. auch was für Kondensatoren das sind. Durch die Pinbelegung ist es aber so, das man es in der Regel richtig macht, weil die Kondensatoren gerade zu den dicht beieinander liegenden Pin-Paaren gehören. Wenn die Versorgungsspannung keine größeren Störungen hat, sollte es so gehen. Ein Versuch wäre es sonst noch die Analoge Versorgung noch mal extra zu filtern, mit einer kleinen Induktivität oder ggf. ersatzweise ein Widerstand von etwa 10 Ohm, wenn da keine nennenswerte Last an Port A hängt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.