Forum: Mikrocontroller und Digitale Elektronik Angezeigter Wert und berechneter Wert unterschiedlich


von Achim S. (achims)


Lesenswert?

Hallo Gemeinde
Habe ein Problem mit der Anzeige von Werten.
Gebe mit einem AT1284p über den I2C Bus an einem PCF8591 eine Spannung 
aus. Dazu verwende ich eine Referenz von 2,46 V. über den AT1284p gebe 
ich einen Wert von 0 bis 255 am PCF8591 am Ausgang aus. Weiter mit einem 
LM358 ergibt sich damit eine Spannung von 0-10V.
Gleichzeitig geht die Spannung auf einen AM 422-2. Diesen IC benutze ich 
als Stromquelle mit einer Bürde von 250 Ohm. Leider fängt dieser IC erst 
mit 2 mA an. Dadurch stimmen angezeigter Wert von 0-255 nicht mit dem 
Strom von 2 bis 20 mA überein. Ich kann den AM422-2 mit einen Poti den 
Strom verändern, leider verschiebt sich damit der ganze Bereich und 
stimtt mit dem angezeigten Bereich nicht überein.
Spannung und Strom berechne ich separat.
Verwende zur Berechnung da folgende Stück Code:
1
lcd_printlc(1,1," Spannung/Strom");
2
    itoa( anz, Buffer, 10 );      // Ausgabe Wert
3
    lcd_printlc(2,1,"Wert ");
4
    lcd_printlc(2,12,"   ");
5
    lcd_printlc(2,12,Buffer);
6
    
7
    int16_t anz1a, anz1b, anz1c, anz1d;
8
    int16_t anzs1a, anzs1b, anzs1c, anzs1d;
9
    
10
    anz1=((anz*40)/10);          // Berechnung Ausgabe Spannung
11
    anz2=(((anz*40)/5)+200);          // Berechnung Ausgabe Strom
12
    
13
14
    lcd_printlc(3,1,"Strom");      // Anzeige Strom
15
    lcd_printlc(3,10,",");
16
    lcd_printlc(3,14,"mA");
17
    
18
    lcd_printlc(4,1,"Spannung");    // Anzeige Spannung
19
    lcd_printlc(4,12,",");
20
    lcd_printlc(4,16,"V");
21
    
22
    anz1a=anz1 % 10;          // Berechnung Ausgabe Zahlen Spannung
23
    anz1b=anz1/10;
24
    anz1c=anz1b % 10;
25
    anz1d=anz1b/10;
26
    
27
    // Zeile 4, Anzeige Spannung
28
    itoa( anz1d, Buffer, 10 );      // Zahl 1
29
    lcd_printlc(4,11,Buffer);
30
    itoa( anz1c, Buffer, 10 );      // Zahl 2
31
    lcd_printlc(4,13,Buffer);
32
    itoa( anz1a, Buffer, 10 );      // Zahl 3
33
    lcd_printlc(4,14,Buffer);
34
    
35
    // Zeile 3,  Anzeige Strom
36
    
37
    anzs1a=anz2 % 10;          // Berechnung Ausgabe Zahlen Strom
38
    anzs1b=anz2/10;
39
    anzs1c=anzs1b % 10;
40
    anzs1d=anzs1b/10;
41
      
42
    itoa( anzs1d, Buffer, 10 );      // Zahl 1 Strom
43
    lcd_printlc(3,8,Buffer);
44
    
45
    itoa( anzs1c, Buffer, 10 );      // Zahl 2 Strom
46
    lcd_printlc(3,11,Buffer);
47
    itoa( anzs1a, Buffer, 10 );      // Zahl 3 Strom
48
    lcd_printlc(3,12,Buffer);

Beispiel:

Anzeige Wert:     0
Anzeige Spannung: 0 V
Anzeige Strom:    2,00 mA

Anzeige Wert:     100
Anzeige Spannung: 4,00 V
Anzeige Strom:    9,8 mA

Anzeige Wert:     200
Anzeige Spannung: 8,00 V
Anzeige Strom:    17,6 mA

Anzeige Wert:     254
Anzeige Spannung: 10,12V
Anzeige Strom:    21,73 mA

Wie kann ich die Anzeige dazu bringen korrekt anzuzeigen bei einem 
minimalen Strom von 2 bzw. 4 mA?

achim

: Verschoben durch User
von Joachim B. (jar)


Lesenswert?

machst du eine Strommessung oder eine Spannungsmessung an der Bürde?

Egal du hast ein Funktion mit Offset, der Rest sollte linear sein.

dann mache dir doch einfache eine Wertetabelle

ADC 0 - I0 mA =
ADC 1 - I1 mA =
ADC 2 - I2 mA =
.....
.....
.....
ADC 253 - I0 mA =
ADC 254 - I1 mA =
ADC 255 - I2 mA =

aus der eine Funktion und im linearen Bereich ermittelst du m die 
Steigung
mit dY/dX

die Geradengleichung y = f(x)ist ja

y = m * x + b

für x=0 hast du b

damit solltes du hinkommen.

von Achim S. (achims)


Lesenswert?

An dieser Stelle mach ich keine direkte Messung an der Bürde. Die 
Ausgabe der Spannung und die Anzeige ist liniar und stimmt so weit 
überein. In der Berechnung sind ein paar Sachen drin zum Ausgleich bzw. 
Anpassung. Ich nutze den "Wert" von 0 bis 255 als Grundlage zur 
Berechnung.
Die 4 Eingänge des PCF8591 nutze ich als 4 Kanäle für eine Messung von 
0-20mA oder 0-10V. Den Ausgang des PCF8591 nutze ich über ein Menue zur 
Einstellung von 0-10V und gleichzeitig 0-20mA. Besser gesagt von 
2(4)-20mA.
Deinen Vorschlag werde ich testen, klingt gut
achim

von Joachim B. (jar)


Lesenswert?

da du mit dem Strom ja nicht auf 0mA kommst würde ich auch keine 
Ausgaben mit DAC 0 und ähnliche machen, das vorher schon begrenzen also 
nie unter Imin gehen mit den DAC Werten.

sorry eben DAC mit ADC verwechselt, aber du hast es ja verstanden!

von MaWin (Gast)


Lesenswert?

Achim S. schrieb:
> Wie kann ich die Anzeige dazu bringen korrekt anzuzeigen bei einem
> minimalen Strom von 2 bzw. 4 mA?

?!?

Du addierst 200 drauf

anz2=(((anz*40)/5)+200);

und wunderst dich daß dort eine 2 00 steht ?

2,00 mA

von Achim S. (achims)


Lesenswert?

Die 200 habe ich als unteren Wert eingetragen. Damit es nicht unter die 
möglichen 2mA geht. Nehme ich die 200 aus der Berechnung habe ich 
Anzeige Strom von 0mA, aber messe 2mA als minimalen Wert. Damit ergibt 
sich am unteren Ende eine Differenz von 2mA

MaWin schrieb:
> anz2=(((anz*40)/5)+200);

Mit 40 kann ich die Berechnug angleichen in Abhängigkeit des 
Spannungsteilers.

achim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.