Guten Abend zusammen,
habt ihr eine Idee, warum die Ausgangsspannung von meinem 10k Poti nach
nur ganz kurzem drehen von 5V (Potistellung maximal=10K) auf ca. 50mV
(Potistellung ab unter ca. 9.5K) einbricht?
Der Schleifkontakt liegt am Analogeingang meines uC Atmega32.
Kann es sein, das der Eingang falsch konfiguriert ist und deswegen
irgendwie die Spannung einbricht?
hier der Code meiner Messung, glaube aber es ist eher etwas
hardwaremäßiges
1 | /* ADC initialisieren */
|
2 | void ADC_Init(void)
|
3 | {
|
4 |
|
5 | uint16_t result;
|
6 |
|
7 | ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); // Frequenzvorteiler: setzen auf 32 (4 MHz / 32 = 125 kHz) und ADC aktivieren
|
8 | ADMUX |= (1<<REFS0) ; // interne Spannung nutzen
|
9 |
|
10 |
|
11 | /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
|
12 | also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
|
13 |
|
14 | ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
|
15 | while (ADCSRA & (1<<ADSC) ) {} // auf Abschluss der Konvertierung warten
|
16 | /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten
|
17 | Wandlung nicht übernommen. */
|
18 | result = ADCW;
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 | /* ADC Einzelmessung der Übergabeparameter ist der zu messende Analogkanal */
|
24 | uint16_t ADC_Read( uint8_t channel )
|
25 | {
|
26 | // Kanal waehlen, ohne andere Bits zu beeinflußen
|
27 | ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
|
28 | ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion"
|
29 | while (ADCSRA & (1<<ADSC) ) {} // auf Abschluss der Konvertierung warten
|
30 | return ADCW; // ADC auslesen und zurückgeben
|
31 | }
|
32 |
|
33 |
|
34 |
|
35 | while(1)
|
36 | {
|
37 | adcval = ADC_Read(5); lcd_gotopos(1,16); lcd_writezahl (adcval); //AD_WErt ausgeben
|
38 |
|
39 | }
|
Bei 10k Potistellung werden noch 1023 Inkremente angezeigt. Drehe ich
das Poti auf ca. 9,5K sind es nur noch 50 inkremente.
Die Versorgungsspannug des Potis von 5V bleibt erhalten und bricht nicht
ein.
Auch die Analogreferenzspannung bricht nicht ein.
Ich habe keine Idee woran das liegen könnte. Ich vermute, das der
Analogeingang die Spannung wegzieht?
Das Poti habe ich auch schon gegen ein anderes ausgetauscht, es war in
Ordnung. Wenn das Poti nicht an den Analogeingang angeschlossen ist, das
verändert sich der Spannungswert des Potis linear mit der Drehbewegung.
Ich habe alle Analogeingänge ausprobiert. Überall das gleiche Verhalten.
Benutze ich das auf meine uC Platine aufgelötete Poti, dann werden alle
Inkremente auch sauber angezeigt, nur nicht, wenn ich ein externes Poti
auf einer anderen Platine, siehe Auszug Schaltplan verwende, dann klappt
es nicht.
Habt ihr einen Tipp, ich komme bei diesem leichten Problem schon nciht
weiter und suche schon seit 2 1/2h.
Vielen Dank und viele Grüße,
Matthias.