hallo wenn ich meinen Analogwert auf max stelle zeigt er mir 1023 im
display an! ich würde gerne wisse wo ich die Auflösung ändern kann? zum
Beispiel auf 256...
gruß
1
#include<avr/io.h>
2
#include"subprogramme.h"
3
#include<util/delay.h>
4
5
6
voidpwmanalog(void){
7
8
uint16_tmesswert;
9
10
11
12
13
// ADC 0 - Bit 4 - 0 auf 0
14
// interne Referenzspannung nutzen Bit 7-6 auf 1
15
16
ADMUX=0b01000000;
17
18
19
// ADC Enable - Bit 7 auf 1
20
// ADC Prescaler 128 - Bit 2-0 auf 1
21
ADCSRA=0b10000111;
22
23
24
while(1){
25
26
set_cursor(2,1);
27
lcd_string("Analog-Steuerung");// Überschrift
28
29
30
set_cursor(0,3);
31
lcd_string("Analogwert [V]:");// Helligkeit in Prozent
32
33
charpuffer_analog[20];//*
34
sprintf(puffer_analog,"%4d",messwert);
35
set_cursor(16,3);
36
lcd_string(puffer_analog);//* Ausgabe der Variablen messwert
37
38
39
40
41
ADCSRA|=(1<<ADSC);// eine Wandlung "single conversion"
42
43
while(ADCSRA&(1<<ADSC)){
44
;// auf Abschluss der Konvertierung warten
45
}
46
47
messwert=ADCW;// Wandlungsergebnisse aufaddieren
48
49
if(PINC&(1<<6))gotomenue;//wenn Taster 1 gedrückt zurück ins Hauptmenü
die goto Befehle brauche ich um aus der while(1) schleife rauszukommen
damit ich wieder zurück ins menü zu gehen kann.
Oder haste eine bessere Alternative?
gruß
Hallo
Du gibst am Anfang messwert aus, woher der Wert auch immer kommen mag.
Erst weiter unten wird er dann erst ermittelt.
Hat mit deine Problematik nichts zu tun. Aber ist es
wirklich das, was du vorhast??
Gruß
Joachim
ja funktioniert wunderbar...
habe aber noch ne andere Frage, ich habe will 2 verschiedene
Eingangsspannungen abfragen, einmal 5V und dann 2,5 V. Die 5V
funktioniert soweit sehr gut da ich die ReFspg. 5V wählen konnte aber
wie kann ich im Programm sagen dass ich gerne ne Referenzspannung von
2,5 V hätte.
ADMUX = 0b01000000;
Bit 7 und 6 können verstellt werden soweit ich das im Datenblatt gesehen
habe. in diesem Fall habe ich die 5V Refspg. die auch Funktioniert.
ADMUX = 0b11000000;
Laut Datenblatt müsste diese Kombi die 2,56V Refspg sein.
wisst ihr da weiter?
Christian schrieb:> ja funktioniert wunderbar...
Aber nur, wenn man am Anfang nicht zu genau hinschaut.
> habe aber noch ne andere Frage, ich habe will 2 verschiedene> Eingangsspannungen abfragen, einmal 5V und dann 2,5 V. Die 5V> funktioniert soweit sehr gut da ich die ReFspg. 5V wählen konnte aber> wie kann ich im Programm sagen dass ich gerne ne Referenzspannung von> 2,5 V hätte.
Gar nicht.
Entweder du legst die 2.5V als externe Referenzspannung an AREF an und
teilst deinem ADC mit das er gefälligst die als Referenz benutzen soll
oder du lebst mit den 5V als Referenz.
> Laut Datenblatt müsste diese Kombi die 2,56V Refspg sein.
Die sind aber nicht sehr genau.
Das können auch deutlich weniger sein.
Atmel garantiert dir nur, dass es die Referenzspannung sauber hält,
nicht dass da exakt 2.56V entstehen.
hmm,
würde also funktionieren dass ich die interne Refspg. 5V Spg. für meine
5V nehme, und per Programmcode auf externe Refspg. 2,5V umschalten kann,
diese ich dann für 2,5V nutzen würde....?
mfg
Nein,
es ist so: ich will zwei verschiedene Eingangsspannungen über einen
Eingang einlesen, einmal 10V und einmal 5V... so da 10V recht schlecht
fürn µC ist habe ich ne OP beschaltung gebaut diese mir mit einer
Verstärkung von 0,5 die Eingangsspannung halbiert. 10V ---> 5V und 5V
----> 2,5V mein Problem ist nun die Eigentliche 5V die nun 2,5V sind wie
kann ich die einlesen?
Irgendwie ist das was du vor hast nicht sehr logisch.
Auf der einen Seite willst du unbedingt eine externe Referenzspannung
von 2.5V, damit du Spannungen unter 2.5V mit höchster möglicher
Auflösung messen kannst, auf der anderen Seite verwirfst du dann 2 Bit,
indem du den Messwert durch 4 teilst.
Das ist ungefähr so, als ob die den Wasserstand der Donau mit dem
Mikrometer misst, auf die Anzeigetafel dann aber 3.8Meter hinschreibst.
Wenns dir Spass macht, ok tus, aber so richtig erschliesst sich der Sinn
der Sache nicht.
Du liest deine 5V ein genauso wie du deine 2,5V einliest.
Der Analog Digitalwandler liefert dir das Verhältnis der gemessenen
Spannung zur Referenzspannung
d.h. bei 5v Referenz und 10 Bit Auflösung (0-1023)
1023 = 5V
512 = 2,5V
um eine Spannung zu erhalten Multiplizierst du deinen A/D-Wert in diesem
Beispiel mit 4,8mV = 5V/1024 Werte
also spuckt dir dein A/D Wandler 221 aus ist die anliegende Spannung
1,06V