Hallo,
Ich möchte den durch einen Strom CAS50 gemessenen Strom in eine Spannung
wandeln.
Hierführ habe ich folgende Messwerttabelle angefertigt:
-10A : 573
- 9A : 569
- 8A : 566
- 7A : 562
- 6A : 559
- 5A : 556
- 4A : 553
- 3A : 549
- 2A : 546
- 1A : 543
+ 0A : 540
+ 1A : 537
+ 2A : 535
+ 3A : 533
+ 4A : 531
+ 5A : 528
+ 6A : 526
+ 7A : 524
+ 8A : 522
+ 9A : 520
+10A : 518
Es ergibt sich für den positiven Bereich -2,2/A
Für den negativen Bereich +3/A.
Diese Werte möchte ich nun Programmgesteuert in den entsprechenden Strom
umwandeln.
1 | if(i1<540) //Positiver Strom
|
2 | {
|
3 | mode2_1[3]='+';
|
4 | double strom=(double) (i1-540)*-2.2;
|
5 | int zehn=strom/10;
|
6 | strom=strom-(zehn*10);
|
7 | int eins=strom;
|
8 | strom=(strom-eins)*10;
|
9 | int zehntel=strom;
|
10 | strom=(strom-zehntel)*10;
|
11 | int hundtel=strom;
|
12 | mode2_1[4]=(zehn+0x30);
|
13 | mode2_1[5]=(eins+0x30);
|
14 | mode2_1[7]=(zehntel+0x30);
|
15 | mode2_1[8]=(hundtel+0x30);
|
16 | }
|
17 | else
|
18 | {
|
19 | mode2_1[3]='-';
|
20 | double strom=(double) (i1-541)*3.0;
|
21 | //double strom=15.29;
|
22 | int zehn=strom/10;
|
23 | strom=strom-(zehn*10);
|
24 | int eins=strom;
|
25 | strom=(strom-eins)*10;
|
26 | int zehntel=strom;
|
27 | strom=(strom-zehntel)*10;
|
28 | int hundtel=strom;
|
29 | strom=(strom-hundtel)*10;
|
30 | mode2_1[4]=(zehn+0x30);
|
31 | mode2_1[5]=(eins+0x30);
|
32 | mode2_1[7]=(zehntel+0x30);
|
33 | mode2_1[8]=(hundtel+0x30);
|
34 | }
|
Ich nehme also 540 als Nullpunkt an.
Werte kleiner 540 Stehen für positiven Strom, werte > für neg-Strom.
Danach wird der 0-Punkt abgezogen und je nach Pos/Neg mit 3 oder -2,2
multipliziert.
--> Hier scheint etwas nicht zu funktionieren.
Es kommt z.b. "+°,,(0" raus
Wenn ich jedoch strom z.b. mit 15,29 definiere so steht auf dem Display
auch 15,29.
Habt ihr eine Idee was an den Zeilen:
1 | double strom=(double) (i1-541)*-2.2;
|
2 | double strom=(double) (i1-541)*3.0;
|
entscheident falsch sein könnte?