Projekt

Allgemein

Profil

Eval » main.cpp

Maximilian Seesslen, 28.10.2025 18:50

 
1
#include <stdio.h>
2
#include <time.h>
3
#include <termios.h>
4
#include <errno.h>
5
#include <fcntl.h>
6
#include <QList>
7

    
8

    
9

    
10
float E12[]
11
{
12
   100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680, 820,
13
   1000, 1200, 1500, 1800, 2200, 2700, 3300, 3900, 4700, 5600, 6800, 8200,
14
   10000, 12000, 15000, 18000, 22000, 27000, 33000, 39000, 47000, 56000, 68000, 82000,
15
};
16

    
17
float E24[]
18
{
19
   100, 110, 120, 130, 150, 160, 180, 200, 220, 240, 270, 300, 330, 360, 390, 430, 470, 510, 560, 620, 680, 750, 820, 910,
20
   1000, 1100, 1200, 1300, 1500, 1600, 1800, 2000, 2200, 2400, 2700, 3000, 3300, 3600, 3900, 4300, 4700, 5100, 5600, 6200, 6800, 7500, 8200, 9100,
21
   10000, 11000, 12000, 13000, 15000, 16000, 18000, 20000, 22000, 24000, 27000, 30000, 33000, 36000, 39000, 43000, 47000, 51000, 56000, 62000, 68000, 75000, 82000, 91000
22
};
23

    
24

    
25
#define E E12
26

    
27

    
28
float r2( float target, float r1 )
29
{
30
   return( r1 * ( ( target / 1.23 ) - 1 ) );
31
};
32

    
33

    
34
float voltage( float r1, float r2 )
35
{
36
   return(1.23 * ( 1 + ( r2 / r1 ) ) );
37
};
38

    
39

    
40
float r_ges(float r1, float r2)
41
{
42
   // https://studyflix.de/elektrotechnik/parallelschaltung-widerstand-4533
43
   return( ( r1 * r2 ) / ( r1 + r2 ) );
44
}
45

    
46

    
47
int main()
48
{
49
   float target=12.0;
50
   int bestR1=-1;
51
   int bestR2=-1;
52
   int bestR3=-1;
53
   float bestVoltage=1000000;
54
   float v;
55

    
56
   int count=sizeof(E)/sizeof(E[0]);
57

    
58
   //printf("%g Ohm\n", r2(target, 1000.0) );
59
   for(int i1=0; i1<count; i1++)
60
   {
61
      // if( ( E[i1] >= 1000 ) && ( E[i1] <= 5000  ) )
62
      if( E[i1] == 1000 )
63
      {
64
         for(int i2=0; i2<count; i2++)
65
         {
66
            for(int i3=0; i3<count; i3++)
67
            {
68
               v=voltage( E[i1], r_ges( E[i2], E[i3] ) );
69
               printf("%g V\n", v );
70
               if( ( v >= target ) && ( v < bestVoltage ) )
71
               {
72
                  bestR1=i1;
73
                  bestR2=i2;
74
                  bestR3=i3;
75
                  bestVoltage=v;
76
               }
77
            }
78
         }
79
      }
80
   }
81

    
82
   printf("%d/%d/%d\n", bestR1, bestR2, bestR3 );
83
   printf("R1=%g\n", E[bestR1] );
84
   printf("R2=%g\n", E[bestR2] );
85
   printf("R3=%g\n", E[bestR3] );
86
   printf("[R2|R3]=%g\n", r_ges( E[bestR2], E[bestR3] ) );
87
   //v=voltage(E[bestR1], E[bestR2] );
88
   v = bestVoltage;
89
   printf("Result=%g; %g%%\n", v, (v-target)*(100/target) );
90

    
91
   // References from TI:
92
   // 3.3 V R2 = 1.7 k
93
   // 5 V, R2 = 3.1 k
94
   // 12 V, R2 = 8.84 k
95
   // 15 V, R2 = 11.3 k
96
   // For ADJ. Version R1 = Open, R2 = 0 Ω Patent Pending
97
   v=voltage(1000, 8840);
98
   v=voltage(1000, 3100);
99
   v=voltage(1000, 11300);
100
   printf("Reference=%g\n", v);
101

    
102
   return 0;
103
}
    (1-1/1)