Forum: Mikrocontroller und Digitale Elektronik Ledstreifen Regelung funktioniert auf dem Steckbrett aber nicht sauber auf der Platine?


von Fritz B. (kleinfritzchen)


Angehängte Dateien:

Lesenswert?

Hallo, Ich habe eine Schaltung zum beleuchten des Kellerflurs aufgebeut. 
Sie soll über einen Bewegungsmelder das Licht (vorerst mal nur weis) 
eines RGBW Led Streifens einschalten.
Die Schaltung hat auf dem Steckbrett einwandfrei funktioniert, das heist 
das die Led's an und aus gingen wenn sie sollten.
In Keller im eingebeuten oder auch im offenen Testbetrieb (unter dem 
Zählerschrank) gingen die Led's nicht mehr zuverlässig aus sondern 
blieben eingeschaltet obwohl sie laut Programm ausgehen müssten.

Meine vermutung ist das ich noch ein paar Kondensatoren einlöten muss. 
Die frage ist nur wo und wie groß.
Kann mir mal jemend bei der Fehlersuche helfen?

MfG Fritz
 hier mal das aktuelle Programm:
1
/*Steuerprogramm füuer  die Kellerbeleuchtung mit LED Strip 
2
  incl. ueberwachung der Hintertuer und Anzeige durch 
3
  Lichtsignat
4
  */
5
//Initialisieren der Ledpins fuer PWM
6
 int ledGruen = 3;
7
 int ledGelb = 5;
8
 int ledBlau = 6;
9
 int ledWeis = 9;
10
 int fadeSprung = 5;
11
 //Initial ledhelligkeit
12
 int ledw = 0;
13
 int ledg = 0;
14
 int ledr = 0;
15
 int ledb = 0;
16
 
17
 //sonstige Sensoren
18
 //int tuerGeschlossen = 4;
19
 //int tuerVerschlossen = 7;
20
 
21
 //Bewegungsmelder
22
 int bewHinten = 8;
23
 int bewVorn = 12;
24
 int sensorHinten =digitalRead(bewHinten);
25
  int sensorVorn = digitalRead(bewVorn);
26
  
27
  //Zeitsteuerung
28
  unsigned long previusMillis = 0;
29
  unsigned long interval = 10000; //zeit in Millisekunden
30
 
31
 void setup(){
32
   pinMode(ledGruen, OUTPUT);
33
 /*  pinMode(ledGelb, OUTPUT);
34
   pinMode(ledBlau, OUTPUT);
35
   pinMode(ledWeis, OUTPUT);*/
36
 //  pinMode(tuerGeschlossen, INPUT);
37
 }
38
 
39
  void loop(){
40
  //  int sensorHinten =digitalRead(bewHinten);
41
 //   int sensorVorn = digitalRead(bewVorn);
42
    
43
    
44
      
45
        if (sensorHinten == 1 || sensorVorn ==1){
46
          heller(ledWeis,ledw);
47
          ledw=255;
48
          
49
          previusMillis = millis();
50
          digitalWrite(ledGruen, HIGH);
51
          digitalWrite(ledGelb, HIGH);
52
          digitalWrite(ledBlau, HIGH);
53
          
54
        }
55
         if (millis() - previusMillis > interval)
56
          {
57
            
58
            dunkler(ledWeis,ledw);
59
            ledw=0;
60
          
61
            digitalWrite(ledGruen, LOW);
62
          /*  digitalWrite(ledGelb, LOW);
63
            digitalWrite(ledBlau, LOW);*/
64
          }
65
    
66
  }
67
  
68
  //Fading Routine
69
  void heller(int led,int helligkeit){
70
    for (int i=helligkeit;i <256;i+=5){
71
      analogWrite(led,i);
72
      delay(20);
73
    }
74
    
75
  }
76
    
77
     void dunkler(int led,int helligkeit){
78
    for (int i=helligkeit;i >=0;i-= 5){
79
       if (sensorHinten == 1 || sensorVorn ==1){
80
          heller(led,helligkeit);
81
         break; 
82
       }
83
      analogWrite(led,i);
84
      delay(20);
85
    }
86
  }

von MaWin (Gast)


Lesenswert?

Was sollen R6, R7,  R11 in der Schaltung ? Wieso sind die FET 
Schaltzeichen falsch und eine Typennummer fehlt ?

von Won K. (Firma: Outside the Asylum) (the_sane)


Lesenswert?

Wozu überhaupt die Optokoppler?

Hast Du mal die Signale am Arduino gemessen? Passen die zum Programm?
Was sagen die Ausgänge der Optokoppler? Passen die zu den Eingängen?
Zeig mal ein Bild der Platine.
...

: Bearbeitet durch User
von Nils S. (workwind) Benutzerseite


Lesenswert?

Ich würde prinzipiell jedem IC einen 100 nF Kondensator spendieren, und 
für die gesamte Platine einmalig einen Elko mit 100-470 µF verwenden...

Der Optokoppler macht wenig Sinn, da Du keine galvanische Trennung 
erreichst (es sind ja die selben 5 V)! Mit 100 Ohm zwischen Portpin und 
dem Gate vom FET sollte der µC selbst dann nicht kaputtgehen, falls der 
FET mal durchbrennt - da der FET dann auch schneller durchschaltet hält 
er wahrscheinlich sogar länger ;-)

von Fritz B. (kleinfritzchen)


Angehängte Dateien:

Lesenswert?

hier mal ein Foto der Schaltung.
als FET hab ich IRF3205 verbaut. Ich weis das der Opokopler hier niht 
unbedingt Sinn macht weil alles aus dem gleichen Netzteil gespeist wird.
Das ich hab den Plan gezeichnet bevor ich den FET hatte. Außerdem hatte 
ich keinen passenden Footprint gefunden und musste erst einen anpassen.
R6, R7, R10, R11  sind Strombegrenzungen des Optokoplers und Gates des 
Fet.
Die waren so vorgesehen. (siehe: 
http://blog.simtronyx.de/arduino-rgb-led-strip-steuerung-mit-mosfets-und-optokopplern-teil-1-die-hardware/)

Wo muss ich den am besten welche Kondensatoren hinzufügen? Die Schaltung 
reagiert so empfindlich das ich schon aufpassen muss wo ich meine Finger 
hin mache damit die Fet's nicht durch schalten. Das ganze wird gespeist 
über das 12V Netzteil was bei dem LED Streifen dabei war.
ich werde mal einen größeren Elko hinter die Hohlbuchse löten weil die 
Probleme anscheinend über die Stromversorgung kommen (vermute ich mal).
Als Leiterbahnbreite hab ich 0,4mm mit 0,4mm Abstand gewählt damit ich 
die Platine vernünftig mit der Tonertransfer Methode fertigen konnte.

von oszi40 (Gast)


Lesenswert?

Fritz B. schrieb:
> Das ganze wird gespeist> über das 12V Netzteil
> was bei dem LED Streifen dabei war.

Hast Du zum Steckbrett-Test auch dieses Netzteil benutzt oder ein 
gescheites Labornetzteil? Entweder sammelst Du schon Müll über Dein 
Netzteil ein oder der Keller-Aufbau hat durch lange Drähte noch weiteren 
Müll eingesammelt?

von Stefan F. (Gast)


Lesenswert?

> Ich weis das der Opokopler hier nicht unbedingt Sinn macht
> weil alles aus dem gleichen Netzteil gespeist wird.

Das ist die falsche Begründung. Er macht keinen Sinn, weil alle 
Spannungen ein gemeinsames GND Potential haben. Das kannst duch auch mit 
mehreren Netzteilen haben und es ist üblicherweise der Fall. Nicht 
gemeinsames GND Potential wäre ein Sonderfall.

Wie bereits gesagt sollte jedes IC einen 100nF Kondensator zwischen VCC 
und GND bekommen, und zwar so nahe am IC, wie möglich.

Dann halte dich an die Infos des Datenblattes vom Spannungsregler. Da 
gehören mehrere Kondensatoren hin (egal, welchen du verwendest).

Und alle längeren leitungen sollten durch einen Tiefpass vor Einstreuung 
von Radiowellen beschützt werden. Lies dich zum Thema EMV ein.
1
           100 Ohm
2
Kabel o----[===]-----+---------o Eingang des µC
3
                     |
4
                    === 100nF
5
                     |
6
                     |
7
kabel o--------------+---------o GND

Dann solltest du dafür sorgen, dass der I2C Bus nicht mit langen 
leitungen verwendet wird. Der Bus eignet sich nur, für Verkabelungen 
innerhalb eines Gerätes. Mehr als 50cm sind sehr bedenklich.

Bei I2C kannst du natürlich keinen 100nF Kondensator nehmen, wegen der 
Frequenzen. Und da die Pins von µC Bidirektional sind, musst du den 
Widerstand auf die andere Seite legen.
1
                  100 Ohm
2
I2C o----------+---[===]------o I/O Pin vom µC
3
Clk oder Data  |
4
               |
5
              === 100nF
6
               |
7
               |
8
kabel o--------+---------o GND

von Stefan F. (Gast)


Lesenswert?

Ich sehe gerade, dass dein Spannungsregler Teil des Arduino Clones ist.

Prüfe mal, ob der überhaupt genug Strom für die externen Lasten liefern 
kann, insbesondere die 4 Optokoppler.

von Robert S. (bimbo385)


Lesenswert?

Du hast wahrscheinlich ein EMV-Problem.

Mit analogWrite betreibst du deine LEDs geschaltet (PWM). Das verursacht 
Oberwellen in der 12 V Versorgungsspannung. Die solltest du daher in der 
Nähe der MOSFETs mit nem 100 nF und einem 470 µF Kondensator abblocken. 
Der Arduino hat eigentlich alle Kondensatoren drauf, die er braucht.

Dann solltest du erstmal ein einfaches Testprogramm auf den Arduino 
schieben mit dem du via Serieller Monitor einfach den analogWrite 
ansprichst. Also wenn du 0 schreibst weiße LEDs aus, wenn du 127 
schreibst bei 50 % usw.

Dann kannst du testen ob die LEDs bei 0 auch aus gehen, wenn nicht tut 
die Endstufe mit dem Optokopllern und Mosfets nicht das was sie soll.

Hast du ein Oszilloskop zum Messen?

Die Endstufe von http://blog.simtronyx.de/ ist ziemlich, naja, 
bescheiden. Die Optokoppler haben hier keinen Sinn und eignen sich auch 
eigentlich nicht um MOSFETs anzusteuern. Die Gatespannung ist mit 6 V 
(wenn denn die Optokoppler voll durchsteuern) auch ziemlich knapp (sind 
ja keine Logic-Level Mosfets).

Als Alternative zu der Endstufe würde ich IRLU024N vorschlagen, die 
kannst du einfach mit einem 270 Ohm Widerstand an die Ausgänge vom 
Arduino hängen, wenn du mit weniger als 12 A aus kommst.

Mfg Bimbo385

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Fritz B. schrieb:
> hier mal ein Foto der Schaltung.

Warum hast du das so verquer aufgebaut - die Endstufen sollten in die 
Nähe der Ausgangsbuchsen, deine Pegelwandler (Optokoppler) zwischen 
Endstufen und MC und das ganze so logisch aufgebaut, das vor allem die 
leistungsführenden Leiterbahnen kurz und dick sind.
Mit den von MaWin schon angesprochenen R6,R7, R9 und R11 baust du einen 
Spannungsteiler mit den Pulldowns und verschenkst damit den Vorteil der 
hohen Gatespannung, die du eigentlich aus den 12V gewinnen wolltest. 
Diese Widerstände solltest du also durch sehr viel kleinere (vllt. so 
100-330 Ohm) ersetzen, um die Gates bei leitendem Optokoppler voll 
durchzusteuern. Dann kannst du auch die IRF3205 nehmen.

von MaWin (Gast)


Lesenswert?

Fritz B. schrieb:
> als FET hab ich IRF3205 verbaut.

Wenn man wenigstens vorher mal in Die Datenblätter der Bauteile gucken 
würde, die man verkaut, findet man
RDS(on) Static Drain-to-Source On-Resistance ––– ––– 8.0 mΩ VGS = 10V, 
ID = 62A
die benötigen also 10V Ansteuerspannung. Du hast 12V, aber einen 10k/10k 
Spannungsteiler auf 6V. Natürlich geht das nicht bzw. geht nur 
zufälligerweise manchmal.

> 
http://blog.simtronyx.de/arduino-rgb-led-strip-steuerung-mit-mosfets-und-optokopplern-teil-1-die-hardware/)

Der Schaltplanvorschlag ist einfach Humbug.
Von Laien für Laien... ...aber Hauptsache schön bunt und als Video für 
die Teletubbigeneration.
Lass die 10k in Reihe zum Optokopplerphototransistor weg.

Fritz B. schrieb:
> Das ganze wird gespeist
> über das 12V Netzteil was bei dem LED Streifen dabei war.

Kann ein Problem sein, die müssen nicht ebaonders gut sein.

> ich werde mal einen größeren Elko hinter die Hohlbuchse löten weil die
> Probleme anscheinend über die Stromversorgung kommen

Kann sinnvoll sein.

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.