Projekt

Allgemein

Profil

Eval » main12.cpp

Maximilian Seesslen, 02.12.2025 18:52

 
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 totalVoltage, float r1, float r2 )
35
{
36
   //return(1.23 * ( 1 + ( r2 / r1 ) ) );
37
   return( ( totalVoltage / ( r1 + r2 ) ) * r2 );
38
};
39

    
40

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

    
47

    
48
int main()
49
{
50

    
51
   float totalVoltage=48; // 48V
52
   float targetVoltage=totalVoltage-20;
53

    
54
   // Invalidate values
55
   int bestR1=-1;
56
   int bestR2=-1;
57
   int bestR3=-1;
58
   float bestVoltage=1000000;
59
   float v;
60

    
61
   int count=sizeof(E)/sizeof(E[0]);
62

    
63
   printf("%g total Voltage\n", totalVoltage);
64
   printf("%g target Voltage\n", targetVoltage);
65
   //printf("%g Ohm\n", r2(target, 1000.0) );
66
   //for(int i1=0; i1<count; i1++)
67
   int i1=0;
68
   {
69
      // if( ( E[i1] >= 1000 ) && ( E[i1] <= 5000  ) )
70
      //if( E[i1] == 1000 )
71
      {
72
         for(int i2=0; i2<count; i2++)
73
         {
74
            for(int i3=0; i3<count; i3++)
75
            {
76
               v=voltage( totalVoltage, E[i2], E[i3] );
77
               printf("%g V\n", v );
78
               if( ( v >= targetVoltage ) && ( v < bestVoltage ) )
79
               {
80
                  bestR1=i1;
81
                  bestR2=i2;
82
                  bestR3=i3;
83
                  bestVoltage=v;
84
               }
85
            }
86
         }
87
      }
88
   }
89

    
90
   printf("%d/%d/%d\n", bestR1, bestR2, bestR3 );
91
   //printf("R1=%g\n", E[bestR1] );
92
   printf("R2=%g\n", E[bestR2] );
93
   printf("R3=%g\n", E[bestR3] );
94
   printf("[R2|R3]=%g\n", r_ges( E[bestR2], E[bestR3] ) );
95
   //v=voltage(E[bestR1], E[bestR2] );
96
   v = bestVoltage;
97
   printf("Result=%g; %g%%\n", v, (v-targetVoltage)*(100/targetVoltage) );
98

    
99
   // References from TI:
100
   // 3.3 V R2 = 1.7 k
101
   // 5 V, R2 = 3.1 k
102
   // 12 V, R2 = 8.84 k
103
   // 15 V, R2 = 11.3 k
104
   // For ADJ. Version R1 = Open, R2 = 0 Ω Patent Pending
105
   //v=voltage(totalVoltage, 1000, 8840);
106
   //v=voltage(totalVoltage, 1000, 3100);
107
   //v=voltage(totalVoltage, 1000, 11300);
108
   printf("   48V: Reference=%g\n", voltage(48.0, E[bestR2], E[bestR3])-48);
109
   printf("   36V: Reference=%g\n", voltage(36.0, E[bestR2], E[bestR3])-36);
110
   printf("   15V: Reference=%g\n", voltage(15.0, E[bestR2], E[bestR3])-15);
111

    
112
   return 0;
113
}
(2-2/2)