Hallo Zusammen
Ich habe mir eine Taschenlampe mit einem RGB-LED und einem ATMega8
gebaut (siehe Bild).
Das Problem ist, ich habe an AREF 5V gebracht vom Spannungsregler 7805.
Die Batterie-Spannung wird im Verhätnis 1.8 geteilt daher mit 8.7V
Batteriespannung (100% Landung) wird ca. 4.8V erzeugt. Fällt die
Spannung nun auf 6.6V ab, dies ist die Spannung wo noch 5V erzeugt
werden kann, enspricht die ADC-Spannung 3.6V.
So: Fällt nun die Spannung unter 6.6V kann 5V nicht mehr erzeugt werden,
daher fällt die Referenzspannung ab. z.B. auf 4V. Die ADC-Spannung von
der Batterie, entspricht aber z.B. 3V. Dies beteutet, dass die
Spannungsanzeige wieder ansteigt, was ja nicht sein darf... grrrrr.
So könnte ich die interne Referenzspannung für das Vorhaben nutzen?
Dann hätte ich 2.56V ja?
Frage: Fällt diese Spannung auch, wenn der AVR nicht mehr 5V bekommt?
Frage2: AREF muss dann mit C an GND geschlossen werden?
Frage3: Initialisierung der internen Referenzspannung, wie geht das?
Siehe Beispiel unten wie es jetzt gemacht wird. Was muss ich da ändern?
Frage4: Ist GND and Pin22 mit Pin8 verbunden? Oder dient dieser Pin für
die ADC-Gruppe?
Danke für Eure Hilfe.
Gruss Fox
1 | ADMUX = 0; // auch ADMUX = 2; (Kanalnummer) oder ADMUX = 0b00000010;
|
2 | ADCSRA = 1<<ADEN | 1<<ADPS2 | 1<<ADPS1 | 1<<ADPS0; // Initialisierung des ADC über das ADCSRA-Register
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | while(1){
|
9 |
|
10 |
|
11 | int value;
|
12 |
|
13 | ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
|
14 | while ( ADCSRA & (1<<ADSC) ) {
|
15 |
|
16 | ; // auf Abschluss der Konvertierung warten
|
17 | }
|
18 |
|
19 | value = ADCW;
|