Forum: Mikrocontroller und Digitale Elektronik Probleme mit Multiplexen


von Chainex (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebes Forum,

Ich bin noch relativ neu im MC-Bereich und kenne mich auch 
dementsprechend nicht gut aus.
Da ich schon diverse Projekte mit MC gemacht habe (Lauflicht, 7-Segment, 
usw.) wollte ich mich mal an das Multiplexen von 7seg Anzeigen machen.
Ich weiß es gibt fertige Platinen und Steuerungen für Centbeträge aber 
mir geht es um die Erfahrung die ich dadurch gewinne etwas selbst zu 
erarbeiten...
Nun wollte ich eine Platine bauen die ein Eingangsbyte bekommt (2^0 - 
2^7)
und dieses dann auf 2 7seg-Anz dezimal ausgibt (2^3 == 0 dann wird 8 
ausgegeben usw.)
Dadurch dass mein Platinenlayout so kompakt ist musste ich die Ports 
etwas "mischen".

Nun zu meinem Problem die Anzeige gibt nur eine 9 aus (egal welcher 
eingang low ist und egal was ich mache...)

Ich habe nun den ganzen Tag rumprobiert und habe das Gefühl das mein 
Code nur noch kaputter wird.
Hat jemand eine Idee? Ich denke sehr stark an einen Programmierfehler da 
ich da eben noch kaum Kenntnisse habe....


LG Chainex

1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <stdint.h>
4
5
6
#define    E_on  PORTB  =  0b11011111;
7
#define    E_off  PORTB  =  0b11111111;
8
#define    Ea    PORTB  =  0b01011111;
9
#define    Eb    PORTB  =  0b10011111;
10
#define    Ec    PORTB  =  0b11011110;
11
#define    Ed    PORTD  =  0b10111111;
12
#define    Ed_off  PORTD  =  0b11111111;
13
#define    Ee    PORTB  =  0b11011101;
14
#define    Ef    PORTB  =  0b11010111;
15
#define    Eg    PORTB  =  0b11001+111;
16
17
#define    Z_on  PORTB  =  0b11111011;
18
#define    Z_off  PORTB  =  0b11111111;
19
#define    Za    PORTB  =  0b11101011;
20
#define    Zb    PORTB  =  0b11110011;
21
#define    Zc    PORTB  =  0b11111001;
22
#define    Zd    PORTD  =  0b10111111;
23
#define    Zd_off  PORTD  =  0b11111111;
24
#define    Ze    PORTB  =  0b11111010;
25
#define    Zf    PORTB  =  0b10111011;
26
#define    Zg    PORTB  =  0b01111011;
27
28
#define    Warten  _delay_ms(Wartezeit);
29
30
int  Zahl_wandeln()
31
{
32
  int Ausgabe  =  0;
33
  
34
  if (PIND0  ==  0)  {  Ausgabe    =  (Ausgabe    +  1  );    }
35
  if (PIND1  ==  0)  {  Ausgabe    =  (Ausgabe    +  2  );    }    
36
  if (PINA1  ==  0)  {  Ausgabe    =  (Ausgabe    +  4  );    }    
37
  if (PINA0  ==  0)  {  Ausgabe    =  (Ausgabe    +  8  );    }  
38
  if (PIND2  ==  0)  {  Ausgabe    =  (Ausgabe    +  16  );    }  
39
  if (PIND3  ==  0)  {  Ausgabe    =  (Ausgabe    +  32  );    }    
40
  if (PIND4  ==  0)  {  Ausgabe    =  (Ausgabe    +  64  );    }    
41
  if (PIND5  ==  0)  {  Ausgabe    =  (Ausgabe    +  128  );    }    
42
  
43
  if (Ausgabe    >=  100)  {  Ausgabe    =        99   ;    }  
44
  
45
  return  Ausgabe;
46
}
47
48
int main(void)
49
{
50
  DDRA    =    0b00000000;  
51
  DDRB    =    0b11111111;
52
  DDRD    =    0b01000000;
53
  
54
  PORTA    =    0b00000011;
55
  PORTB    =    0b00000000;
56
  PORTD    =    0b10111111;  
57
  
58
  int    Wartezeit    =  250;
59
  int    Zahl      =  0;
60
  int    Zahl_gesp    =  0;
61
  int    Zehnerstelle  =  0;
62
  int    Einerstelle    =  0;
63
64
65
  while (1) 
66
    {
67
    
68
  Zahl  =  0;
69
      
70
  if (PIND0  ==  0)    {  Zahl    =  (Zahl    +  1  );    }
71
  if (PIND1  ==  0)    {  Zahl    =  (Zahl    +  2  );    }
72
  if (PINA1  ==  0)    {  Zahl    =  (Zahl    +  4  );    }
73
  if (PINA0  ==  0)    {  Zahl    =  (Zahl    +  8  );    }
74
  if (PIND2  ==  0)    {  Zahl    =  (Zahl    +  16  );    }
75
  if (PIND3  ==  0)    {  Zahl    =  (Zahl    +  32  );    }
76
  if (PIND4  ==  0)    {  Zahl    =  (Zahl    +  64  );    }
77
  if (PIND5  ==  0)    {  Zahl    =  (Zahl    +  128  );    }
78
      
79
  if (Zahl  >=  100)  {  Zahl    =          99   ;    }
80
    
81
    if (Zahl    !=    Zahl_gesp)                          // Zahlen umwandeln / zerlegen
82
    {
83
      Zehnerstelle    =    (Zahl  /  10);
84
      
85
      Einerstelle      =    Zahl;
86
      
87
      while (Einerstelle  >=  10)
88
      {
89
        Einerstelle    =    (Einerstelle    -  10);
90
      }
91
      
92
    }
93
    
94
    Zahl_gesp  =  Zahl;
95
    
96
    
97
  switch (Zehnerstelle)
98
    {
99
    case 0:      Zd_off
100
            Z_off
101
            break;
102
            
103
    case 1:      Zb
104
            Warten
105
            Zc
106
            Warten
107
            Z_off
108
            break;
109
            
110
    case 2:      Za
111
            Warten
112
            Zb
113
            Warten
114
            Zg
115
            Warten
116
            Ze
117
            Warten
118
            Z_on
119
            Zd
120
            Warten
121
            Zd_off
122
            Z_off
123
            break;
124
            
125
    case 3:      Za
126
            Warten
127
            Zb
128
            Warten
129
            Zc
130
            Warten
131
            Zg
132
            Warten
133
            Z_on
134
            Zd
135
            Warten
136
            Zd_off
137
            Z_off
138
            break;
139
                            
140
    case 4:      Zb
141
            Warten
142
            Zc
143
            Warten
144
            Zg
145
            Warten
146
            Zf
147
            Warten
148
            Z_off
149
            break;  
150
            
151
    case 5:      Za
152
            Warten
153
            Zf
154
            Warten
155
            Zc
156
            Warten
157
            Zg
158
            Warten
159
            Z_on
160
            Zd
161
            Warten
162
            Zd_off
163
            Z_off
164
            break;              
165
            
166
    case 6:      Za
167
            Warten
168
            Zc
169
            Warten
170
            Ze
171
            Warten
172
            Zg
173
            Warten
174
            Zf
175
            Warten
176
            Z_on
177
            Zd
178
            Warten
179
            Zd_off
180
            Z_off
181
            break;  
182
            
183
    case 7:      Za
184
            Warten
185
            Zb
186
            Warten
187
            Zc
188
            Warten
189
            Z_off
190
            break;                        
191
                  
192
    case 8:      Za
193
            Warten
194
            Zb
195
            Warten
196
            Zc
197
            Warten
198
            Ze
199
            Warten
200
            Zg
201
            Warten
202
            Zf
203
            Warten
204
            Z_on
205
            Zd
206
            Warten
207
            Zd_off
208
            Z_off
209
            break;    
210
            
211
    case 9:      Za
212
            Warten
213
            Zb
214
            Warten
215
            Zc
216
            Warten
217
            Zg
218
            Warten
219
            Zf
220
            Warten
221
            Z_on
222
            Zd
223
            Warten
224
            Zd_off
225
            Z_off
226
            break;  
227
    
228
    default:    Zg
229
            Zd_off
230
            Z_off
231
            break;
232
                        
233
    }
234
    
235
  switch (Einerstelle)
236
    {
237
    case 0:      Ea
238
            Warten
239
            Eb
240
            Warten
241
            Ec
242
            Warten
243
            E_on
244
            Ed
245
            Warten
246
            Ed_off
247
            E_off
248
            break;
249
            
250
    case 1:      Eb
251
            Warten
252
            Ec
253
            Warten
254
            E_off
255
            break;
256
            
257
    case 2:      Ea
258
            Warten
259
            Eb
260
            Warten
261
            Eg
262
            Warten
263
            Ee
264
            Warten
265
            E_on
266
            Ed
267
            Warten
268
            Ed_off
269
            E_off
270
            break;
271
            
272
    case 3:      Ea
273
            Warten
274
            Eb
275
            Warten
276
            Ec
277
            Warten
278
            Eg
279
            Warten
280
            E_on
281
            Ed
282
            Warten
283
            Ed_off
284
            E_off
285
            break;
286
                            
287
    case 4:      Eb
288
            Warten
289
            Ec
290
            Warten
291
            Eg
292
            Warten
293
            Ef
294
            Warten
295
            E_off
296
            break;  
297
            
298
    case 5:      Ea
299
            Warten
300
            Ef
301
            Warten
302
            Ec
303
            Warten
304
            Eg
305
            Warten
306
            E_on
307
            Ed
308
            Warten
309
            Ed_off
310
            E_off
311
            break;              
312
            
313
    case 6:      Ea
314
            Warten
315
            Ec
316
            Warten
317
            Ee
318
            Warten
319
            Eg
320
            Warten
321
            Ef
322
            Warten
323
            E_on
324
            Ed
325
            Warten
326
            Ed_off
327
            E_off
328
            break;  
329
            
330
    case 7:      Ea
331
            Warten
332
            Eb
333
            Warten
334
            Ec
335
            Warten
336
            E_off
337
            break;                        
338
                  
339
    case 8:      Ea
340
            Warten
341
            Eb
342
            Warten
343
            Ec
344
            Warten
345
            Ee
346
            Warten
347
            Eg
348
            Warten
349
            Ef
350
            Warten
351
            E_on
352
            Ed
353
            Warten
354
            Ed_off
355
            E_off
356
            break;  
357
            
358
    case 9:      Ea
359
            Warten
360
            Eb
361
            Warten
362
            Ec
363
            Warten
364
            Eg
365
            Warten
366
            Ef
367
            Warten
368
            E_on
369
            Ed
370
            Warten
371
            Ed_off
372
            E_off
373
            break;  
374
            
375
    default:    Eg
376
            Ed_off
377
            E_off
378
            break;
379
                                            
380
    }  
381
  
382
    }
383
}

von Christian M. (Gast)


Lesenswert?

Hoi,

Kollektor und Emitter vertauscht!

Bitte, gern geschehen!

Gruss Chregu

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Chainex schrieb:
> #define    E_on  PORTB  =  0b11011111;

Das ist kaputt. Sieh Dir an, wie #defines funktionieren.

Chainex schrieb:
> #define    Eg    PORTB  =  0b11001+111;

Und das ist ganz sicher auch nicht das, was Du willst.

von Chainex (Gast)


Lesenswert?

Mhm

Die Tranistoren sind richtig drin leider im schaltplan falsch. sorry...

Das Plus gehört da auch nicht hin ist klar...

Aber was ist an den #defines falsch? Kann ich nur einen Wert hinter den 
Makronamen schreiben oder wie?

von Manfred (Gast)


Lesenswert?

Chainex schrieb:
> Die Tranistoren sind richtig drin leider im schaltplan falsch. sorry...

Wenn denn Deine Software irgendwann läuft, wirst Du sehen, dass Deine 
Helligkeit stark schwankt. Es gehören 7 Widerstände dran, pro Segment 
einer. In der C-Leitung vom Transistor entfällt er.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Warum hast du denn so eine beknackte Belegung gewählt? Da blickst du 
doch selber übermorgen nicht mehr durch.
Die meisten von uns bevorzugen Multiplexen im Timerinterrupt, weil die 
Zeiten und damit die Multiplex Helligkeit dann vorhersehbar sind.
Ausserdem sind die Basiswiderstände etwa um Faktor 10 zu hoch. Und 
parallel schalten muss man da auch nichts, es reicht ein simpler 1k 
Widerstand pro Transistor.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Schreibe Klammern um die Befehle, dadurch vermeidest du zahlreiche 
unerwartete Seiteneffekte.
1
#define SOFTSERIAL_TXD_HIGH   { PORTB |= (1<<PB3);  }
2
#define SOFTSERIAL_TXD_LOW    { PORTB &= ~(1<<PB3); }
3
4
#define LEFT_BUTTON (PINB &= ~(1<<PB0))

von Chainex (Gast)


Lesenswert?

Die Widerstände hab ich nach Datenblatt ausgewählt...
und da ich keinen 8k Widerstand hatte eben die zwei paralell.

Die Belegung geht eben aus Platzgründen nicht anders.

Das anzeigen der 9 geht ja bisher und ich wollte eigentlich nur einen 
Widerstand benutzen weshalb ja auch jedes Segment einzeln aufleuchtet...

von Stefan F. (Gast)


Lesenswert?

> weshalb ja auch jedes Segment einzeln aufleuchtet...

WTF?

So hast du 1:14 Multiplexing, dabei kann kaum eine angemessene 
Helligkeit heraus kommen. Es war außerdem extrem unvorteilhaft, die 7 
Kathode auf mehr als einen Port zu verteilen.

Aber das erklärt, warum dein Code so wirr ist. Du hast dich wohl so 
verzettelt, dass du selbst nicht mehr durchblickst. Bei DEM Code ist das 
aber auch kein Wunder.

Dein Code ist unlesbar, viel zu kompliziert und verworren. Benutze 
Zeichensatz-Tabellen und Funktionen!

von Stefan F. (Gast)


Lesenswert?

Ich sehe noch etwas: Es fehlt ein Abblock-Kondensator am 
Mikrocontroller. Ein Elko reicht dazu nicht aus.

von R. M. (Gast)


Lesenswert?

Die Segmente brauchen einzelne Vorwiderstände, bei einem je Digit, 
teilen sich die Ströme sonst ungleichmäßig auf. Außerdem ist so, die "1" 
deutlich heller als die "8".

von S. R. (svenska)


Lesenswert?

Chainex schrieb:
> if (PIND0  ==  0)  {  Ausgabe    =  (Ausgabe    +  1  );    }

Das ist immer wahr.

Chainex schrieb:
> if (PIND1  ==  0)  {  Ausgabe    =  (Ausgabe    +  2  );    }

Das ist immer falsch.

Chainex schrieb:
> switch (Zehnerstelle)
> [...ein Monster..]

Das so zu machen, ist Unfug.

Und längliche Quelltexte gehören als Dateianhang gemacht, nicht in den 
Post.


Schritt eins: Wandle deine Pins in eine Binärzahl.

Da du mit deiner Pinbelegung großen Mist gebaut hast, ist das sehr 
hässlicher Code.

int zahl = 0;
if (PIND & PIND5) { zahl |= 1; } zahl <<= 1;
if (PIND & PIND4) { zahl |= 1; } zahl <<= 1;
usw.

Schritt zwei: Wandle die Binärzahl in ihre dezimalen Stellen.

int zehner = zahl / 10;
int einer = zahl % 10;

Schritt drei: Wandle die Stellen in die Bitmuster für die Anzeige.

Bau dir eine Tabelle.

Schritt vier: Multiplexe die Anzeige.

Da du mit deiner Pinbelegung großen Mist gebaut hast, ist das auch sehr 
hässlicher Code. Mache erstmal eine Funktion, die die einzelnen Segmente 
ansteuert, damit das nicht ganz so furchtbar ist.

while(1) {
  schreibe_segmente(zehner);
  PORTB |= PORTB5;
  _delay_ms(1);
  PORTB &= ~PORTB5;

  schreibe_segmente(einer);
  PORTB |= PORTB2;
  _delay_ms(1);
  PORTB &= ~PORTB2;
}

Schritt fünf: Stopfe das Multiplexen in einen Timer-Interrupt.

Zeige ich nicht. Erstmal musst du das so hinkriegen.

von Stefan F. (Gast)


Lesenswert?

@S. R.:

Ich würde deinen Beitrag gerne als Lesenwert kennzeichnen. Du hast 
allerdings nicht beachtet, dass der TO absichtlich nur einen Widerstand 
pro Anzeige eingebaut hat und jedes Segment einzeln ansteuern will.

Dein Lösungsansatz hingegen gilt für ein Multiplexing mit 2x7 (7 
Segmente gleichzeitig).

von Chainex (Gast)


Lesenswert?

Hey danke Leute,

also mit den geschweiften Klammern in den Makros kommt jetzt zumindest 
eine fest einprogrammierte Zahl hinten raus.
Etwas dunkler aber das wusste ich schon vorher.

Ich muss aber sagen das ihr Recht hattet ich denke ich hab mich mit den 
Pinbelegungen etwas übernommen.
Ich denke ich werde das ganze auf einer größeren Platine nochmal neu 
angehen und die Anzeigen wie gewöhnlich MUXen (2x7).

Trotzdem Danke für die Hilfestellung.

Komm wohl nicht drumherum mich auch mal in Interrupts einzulesen...

LG Chainex

von S. R. (svenska)


Lesenswert?

Stefanus F. schrieb:
> Ich würde deinen Beitrag gerne als Lesenwert kennzeichnen. Du hast
> allerdings nicht beachtet, dass der TO absichtlich nur einen Widerstand
> pro Anzeige eingebaut hat und jedes Segment einzeln ansteuern will.

Na und? ;-) Hab ich aber tatsächlich übersehen.

Aber mit der Platine kann man trotzdem 2x7-Multiplexen (sieht halt doof 
aus) und, wenn das funktioniert, auf ein segmentweises Multiplexing 
erweitern. Der Code zeigt erstmal nur, dass da trotzdem noch viel zu 
viele Baustellen offen sind (wie z.B. Eingangspins lesen).

Chainex schrieb:
> Ich muss aber sagen das ihr Recht hattet ich denke ich hab mich mit den
> Pinbelegungen etwas übernommen.

Die Pinbelegung ist zwar einfach nur große Scheiße, aber wenn du den 
Code ordentlich baust, dann beschränkt sich das Hässlon nur auf zwei 
Stellen: Den Eingangswert einlesen und die Segmente beschreiben. Die 
Performance-Verluste sind auch eher egal.

> Ich denke ich werde das ganze auf einer größeren Platine nochmal neu
> angehen und die Anzeigen wie gewöhnlich MUXen (2x7).

An deiner Stelle würde ich den Code erstmal geradeziehen, dass er 
ordentlich funktioniert (mit 2x7-Multiplex). Also erstmal nur einen 
Zähler hochzählen lassen, dann das ganze per Timer im Hintergrund 
laufenlassen. Dann segmentweises Multiplexen machen (allein des 
Spieltriebs wegen).

Neue Platine kannst du danach noch machen. Mit dem, was du bis dahin 
gelernt hast, sollte die besser sein als das, was du jetzt entwerfen 
würdest.

von Stefan F. (Gast)


Lesenswert?

Du könntest die Vorwiderstände an den Anoden überbrücken und in die 
sieben Kathoden-Leitungen jeweils einen 220Ω Widerstand einschleifen.

Ich weiß jetzt nicht wie klein deine Platine ist. Bei meinen wäre locker 
genug Platz, um die 7 Leiterbahnen durchzuschneiden und einen kleinen 
SMD Widerstand über die Schnittstelle zu Löten.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Chainex schrieb:
> Die Belegung geht eben aus Platzgründen nicht anders.

Aber Platz für 2 parallele Basiswiderstände hast du schon? Ich kann dir 
nur raten, gerade wenn du Anfänger bist, die Hardware so übersichtlich 
wie möglich zu gestalten, damit du eben nicht in solche Schwierigkeiten 
wie o.a. beim Programm kommst. Reiss den Mist nochmal auseinander und 
folge den Ratschlägen für sinnvolle Hardware Anordnung und Struktur in 
der Software.
Und sag mir jetzt nicht, das du dafür eine Platine hast fertigen lassen.
Wenn sowas mal unvermeidlich ist (z.B. PWM Ausgänge oder so), dann 
benutze sinnvolle Bitmasken und Zuweisungen.

: Bearbeitet durch User
von foobar (Gast)


Lesenswert?

Er muß ja kein 14-fach Multiplexing machen. Die Schaltung ermöglicht 
auch nen 7-fach Multiplexing der Segmente mit gleichmäßiger Helligkeit. 
Die Widerstände sind allerdings etwas hoch.

 Dass die Pin-Belegung sehr wild ist, mag dem Layout geschuldet sein 
(evtl soll das ja auf ner Single-Layer-Platine direkt unter die Anzeige 
passen). Muß man halt etwas mehr Software-Aufwand treiben. Da hier kein 
ROM-Mangel herrscht und Geschwindigkeit keine Rolle spielt, kann man 
sich das leisten.

 Die Software ist aber greulich, selbst wenn man von Fehlern mal 
abgesieht. Z.B.: wenn man schon ne Routine zum Einlesen des Wertes hat 
(die prinzipiell ganz ok ist), darf man die auch aufrufen und nicht den 
Code nochmal kopieren. Die Makros sind schon genannt worden - solche 
Makros macht man nicht. Und die Schleife mit ihrem Mammut-Case ist sowas 
von verquert.

Kurze Skizzierung ohne pipapo:
1
static const char Ziffer_Segment[10] = { ... };
2
static int Wert_einlesen(void) { ... }
3
static void Transistor_ein_aus(int welcher, int an) { ... }
4
static void Segment_ein_aus(int welches, int an) { ... }
5
static void Warte_ms(int milliseconds) { ... }
6
7
int main(void)
8
{
9
    Init...
10
11
    for (;;)
12
    {
13
       int wert = Wert_einlesen();
14
       char zehner = Ziffer_Segment[wert/10];
15
       char einer = Ziffer_Segment[wert%10];
16
       for (int i = 0; i < 7; ++i)
17
       {
18
          Transistor_ein_aus(0, zehner & (1<<i));
19
          Transistor_ein_aus(1, einer & (1<<i));
20
          Segment_ein_aus(i, 1);          
21
          Warte_ms((1000/50+3)/7);
22
          Segment_ein_aus(i, 0);
23
        }
24
    }
25
}

von foobar (Gast)


Lesenswert?

Ich schrieb:
> Die Schaltung ermöglicht auch nen 7-fach Multiplexing der Segmente mit
> gleichmäßiger Helligkeit.

Ich merke gerade, dass das so nicht ganz stimmt. Ein I/O-Pin treibt nun 
bis zu zwei LEDs und dadurch kann es zu Helligkeitsunterschieden kommen. 
Die Transistoren selbst haben keinen Nutzen mehr. Wenn, müßten sie auf 
die andere Seite.

von Stefan F. (Gast)


Lesenswert?

>> Die Schaltung ermöglicht auch nen 7-fach Multiplexing der Segmente mit
>> gleichmäßiger Helligkeit.

> Ich merke gerade, dass das so nicht ganz stimmt. Ein I/O-Pin treibt nun
> bis zu zwei LEDs und dadurch kann es zu Helligkeitsunterschieden kommen.

Bei 2x Multiplexing ist es noch schlimmer: Ein Widerstand treibt dann 
bis zu 7 Segmente. Das sind 7 LEDs die quasi parallel geschaltet sind.

Aber ich denke, das war dem TO klar, weswegen er sich für 14x 
Multiplexing entschieden hatte.

von Uwe K. (ukhl)


Lesenswert?

Chainex schrieb:

> ... und ich wollte eigentlich nur einen
> Widerstand benutzen weshalb ja auch jedes Segment einzeln aufleuchtet...

Dann kannst Du dir die Transitoren auch sparen.

von Chainex (Gast)


Lesenswert?

Uwe K. schrieb:
> Chainex schrieb:
>
>> ... und ich wollte eigentlich nur einen
>> Widerstand benutzen weshalb ja auch jedes Segment einzeln aufleuchtet...
>
> Dann kannst Du dir die Transitoren auch sparen.

Stimmt alles in allem ziemlich undurchdacht...

Ich habs jetzt doch hinbekommen meine Software ist zwar immernoch ein 
wirrwar, aber es funktioniert erstaunlich gut.

Die T´s sind in der Tat unnötig, naja war n hingekritzelter Entwurf bei 
dem ich dachte ich hab nicht viel Aufwand.
Falsch gedacht allerdings hab ich denke ich einiges daraus gelernt.

Möchte mich trotzdem nochmal bedanken ;)


LG Chainex

von Chainex (Gast)


Lesenswert?

PS: Ich habe übrigens statt dem 1µF einen 100nF eingebaut.

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.