PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Anzeige Analoger Signale



Henry
25.05.2006, 18:36
Hallo,

ich habe mir für eine Funktion erstellt mit der ich die Analogen Eingänge auslesen kann (ist nahezu 1:1 aus dem Tut von mikrocontroller.net übernommen, bis auf einige bezeichnungen).



//Code zum Auslesen des AD Eingang
uint16_t analog_lesen(uint8_t kanal)
{
uint8_t i;
uint16_t result = 0;

ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<< ADPS1) | (1<< ADPS0); // Frequenvorteiler auf 128 setzen und AD-Wandler aktivieren

ADMUX = kanal;
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) );

for (i=0;i<4;i++)
{
ADCSRA |= (1<<ADSC);
while( ADCSRA & (1<<ADSC) );
result += ADCW;
}
ADCSRA &= ~(1<<ADEN); //AD-Wandler deaktivieren

result /= 4;

return result;
}


Nun habe ich mir in meinem einen AD Kanal ausgelesen und möchte ihn anzeigen.


...
uint16_t messwert0 = 0;
char ausgabe0;
//***

messwert0 = analog_lesen(1);
itoa(messwert0, ausgabe0, 10);

lcd_gotopos(1,11);
lcd_writetext(" ");
lcd_gotopos(1,11);
lcd_writetext(ausgabe0);
...

Das Anzeigen von Text auf dem Display klappt, die Funktion ist also i.O. ich hatte so auch schon eine Anzeige des Wertes vom AD-Wandler, dann wurden aber plötzlich nur noch wirre Zeichen angezeigt, was ich mir nicht erklären kann.
Meine Frage ist nun :
habe ich einen Fehler in der Funktion zu auslesen des AD-Wandler oder wandelt due itoa() Funktion den Integerwert nicht richtig um?

Danke schon einmal für die Hilfe

izaseba
25.05.2006, 18:45
Vielleicht hilft unsigned char anzeige0[5]; anstatt
char anzeige0; ???

gruß Sebastian

Henry
25.05.2006, 19:04
Danke, das war es wohl, habe es nun geschafft mir meine 4 Eingänge aufs Display zu bekommen.
Aber kann es sein das die Eingänge sich ganz schön beeinflussen?
Muss ich da noch irgendwie PullDownwiderstände einsetzen um das zu vermeiden?
Habe zum Testen nur ein Poti angeschlossen (Schleifer auf den Eingang und die anderen beiden an die 5V, also als verstellbaren Spannungsteiler).

izaseba
25.05.2006, 19:13
Aber kann es sein das die Eingänge sich ganz schön beeinflussen?

Das wäre mir ganz neu.


Habe zum Testen nur ein Poti angeschlossen (Schleifer auf den Eingang und die anderen beiden an die 5V, also als verstellbaren Spannungsteiler).


Du meint sicher :
und die anderen Beiden an die 5V und GND

oder ??

Gruß Sebastian

Henry
25.05.2006, 19:20
Du meint sicher :
und die anderen Beiden an die 5V und GND

oder ??

Ja, genau so meine ich das.

Es ist so, ich habe an ADC0 und ADC1 je ein Poti. Drehe ich das an ADC1 auf 0 dann bleibt das natürlich auch so. stelle ich dort einen Wert ein und ändere dann den wert an ADC0 steigt bzw. sinkt der Wert an ADC1 um ein gewisses Maß mit und umgekehrt.
Bei denen die in der Luft hängen kann ich es mir ja noch erklären, aber wenn ein Signal anliegt sollte es sich nicht mehr beeinflussen, oder sehe ich das falsch?

izaseba
25.05.2006, 19:32
Hmmm,
das siehst Du richtig.
Normal ist das nicht, also wie gesagt, hatte solche Problemme noch nie.
Vielleicht liegt ein Problem in der Schaltung ?
Mess mal die Spannung am Schleifer, AREF mit dem Multimeter nach, wenn Du an den Potis drehst, vielleicht ist da irgendwo der Hund begraben..

Gruß Sebastian

Henry
25.05.2006, 20:27
So, habe es gerade mal gemessen.
Die Spannung am Schleifer des zweiten Poti ändert sich tatsächlich mit.
Die Versorgungsspannung ist allerdings stabiel.

dadurch kann ich mir das wieder nicht erklären. Die Leitungen liegen ca. 2,54mm auseinander, das sollre meiner Meinung nach reichen, denn es fließen ja keine hohen Ströme wo man dann von Induktion sprechen könnte. Äußerst seltsam.
Hat jemand ne Idee wie ich das unterbinden könnte?

Henry
25.05.2006, 20:51
Also mit Pull Down Widerständen geht es wunderbar und stört sich nicht mehr gegenseitig. Also doch ganz einfach ;)