Hallo ich habe eine variable mit: uint16_t x = 0; und bekomme oft gleitkommawerte z.B.: x = ADC()/1000 = 1 //bei adc =1000 oder x = ADC()/1000 = 0.5 //bei adc =500 welcher datentyp wird verwendet um auch gleitkommazahlen zu lesen. oder wie trickst ihr? grüse
float? oder double? ;)
Gast
#1107655
float
Gast
#1107656
Da hat sich einer vorgedrängt.
Hallo, ich bins nochma… ich bednutze den adc channel und lege zurzeit eine spannung von 0 bis 5 V an den ADC0. Habe mal einen multimeter drangehangen und der adc scheint sich bei <1,5 V aufzuhängen. Von 1,55 V bis ca. 5V arbeitet er ganz normal aber unter 1,55 macht er plötzlich gar nix mehr. Weiss jemand woran das liegen könnte? Habe mein AVCC auf VCC gelegt und über einen 100 nF zum GND geschaltet. dachte bisher es würde am datentyp liegen :(
Wie groß ist denn deine Auflösung? Ich setze mal 1000 mit 1024 gleich, dh. 10Bit. Wenn du 12 Bit Auflösung hast, dann sind 2Bit nach der Division übrig. 5/4 = 1,25V pro Bit. Ab da ist nix mehr mit Wert. Rest kann vom Offset und der Genauigkeit abhängen. Wenn dann rechne mit float.
Benjamin S. wrote:
> und der Genauigkeit abhängen. Wenn dann rechne mit float.
Oder versuch die Berechnung umzustellen.
Division schiebt man so weit wie möglich in einer Fomral nach rechts.
Aber aufpassen, dass Zwischenmultiplikationen nicht überlaufen können.
Am besten aber, du zeigst erst mal dein Programm.
Hallo die auflösung ist 10 bit, ich benutze einen atmega8L. hier ist der code: ich schaffe es immernoch nicht unterhalb von 2 volt mit dem adc was einzulesen..nur von 2volt bis ca 5 volt liest er. aber darunter geht gar nix.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
zusatz Frage: werden alle ADC werte für das delay verwendet oder nur nach der nächsten abfrage? zum beispiel wenn der adc den ersten wert ausliest, von mir aus für 1ms...dann dauert das blinken 4 ms mit ein und ausschaltphasen.....d.h im endeffekt dass zu diesem zeitpunkt wahrscheinlich ein anderer wert als 2 ms gelesen wird oder? oder arbeitet das delay wirklich jeden einzelnen gemessenen wert ab? P.S.: Bin laie in diesem gebiet...
Nobody knows? :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.