Spannung über ADC des C167 messen

OP #2767123
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!
Gast
Weshalb nutzt du hier float-Werte?

Setze in deine Formel mal Beispielwerte ein (0 und 1023), jetzt rechne 
es mal selbst durch und schaue ob du mit dem Ergebnis zufrieden bist.
OP
Danke für die Antworten !

Ja das mit den Werten einsetzen habe ich dann auch gemacht und den 
Fehler gleich gefunden... jetzt funktionierts!

Die float-Werte nehme ich, da die Spannungen immer 3,8.... betragen, 
also von den hinteren kommastellen abhängen (bzw. der strom in µA ... ). 
bei int-werten würde er ja immer die selbe temperatur anzeigen
Gast
Noch ein kleiner Nachtrag

Programm mit Debugger durchsteppen, dann siehst Du sehr schoen an 
welcher Stelle es hakt, bzw. das Programmverhalten sich von Deinem 
gedachten Verhalten unterscheidet.

Leider kommt "diese Art des Testens" in den meisten Vorlesungen,... zu 
kurz.

Viele Gruesse
Winfried

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.