Hallo,
ich möchte eine Temperaturmessung über den C167 auswerten. Aus meinem
Temperatursensor kommt ein Strom (273 µA bei 0°C und dann konstant
steigend 1µA / °C), den ich über einen Widerstand in eine Spannung
zwischen 0 und 4 V wandel. Die Spannung schließe ich an den Port 5.4 des
C167 an. Im Programm soll dann aus der Spannung wieder die Temperatur
berechnet werden und an einer 7-Segment-Anzeige, die an Port 1
angeschlossen ist, angezeigt werden.
Die Referenzspannung ist 5 V, der Widerstand 11,3 kOhm. (4 V sollen ca.
bei 80 °C abfallen)
Im Moment schaut das Programm so aus:
1 | void Ports_Init(void)
|
2 | {
|
3 | DP1L = DP1H = 0xFF; //Port1 as output
|
4 | P1L = 0x00;
|
5 | P1H = 0x00;
|
6 | }
|
7 |
|
8 | void ADC_Init(void)
|
9 | {
|
10 | ADCON = 0x0014; //Fixed Channel (P5.4), Continuous Conversion
|
11 | ADDAT = 0x0000; //Start value
|
12 | P5DIDIS = 0xffff; //Digital Input disable
|
13 | ADST = 1;
|
14 | }
|
15 |
|
16 | void main(void)
|
17 | {
|
18 | float temperatur;
|
19 | int iwert;
|
20 | float strom;
|
21 | float u_ein;
|
22 | Project_Init();
|
23 |
|
24 |
|
25 | while (TRUE)
|
26 | {
|
27 | while (ADBSY);
|
28 | iwert = (ADDAT & 0x03FF);
|
29 | u_ein = iwert*(5.0/1023.0);
|
30 | strom = u_ein / 11300.0;
|
31 | temperatur = strom - 273;
|
32 | P1L = temperatur;
|
An der 7-Segment-Anzeige wird aber nur 00 angezeigt.. Der ADC müsste
funktionieren, da ich "iwert" auch für eine PWM benutze, die auch
funktioniert...
Wär lieb wenn mir hier jemand weiterhelfen könnte. Danke!