Go Down

Topic: Lösungen für Wohnzimmerdeckenbeleuchtung gesucht (Read 14948 times) previous topic - next topic

Serenifly

Die haben beide Vor-und Nachteile. Der IRLZ44 hat einen geringeren Kanalwiderstand. Der IRLZ34 hat eine geringe Gate-Kapazität. Das spielt bei dieser Anwendung aber keine Rolle. Da kann man dann ruhig nach dem Preis gehen.

Jarny

Danke für die Infos und Unterstützung. Werde den IRLZ 34N bestellen. Den 24er bekommt man bei Reichelt nur als SMD und das will ich nicht.

Gruß
Jarny

Serenifly

Das hast du falsch geschaut. Das hier war gemeint:
http://www.reichelt.de/index.html?ACTION=3;ARTICLE=41764;SEARCH=IRLD%20024
Ist DIP4

Der macht nur 2,5A, aber das reicht für viele Sachen

Eisebaer

hi,

genau, und vier von diesen DIP4 hab ich in einem normalen IC-sockel nebeneinander. schön platzsparend...
in dem ersten thread oben siehst Du die grundschaltung und auch die fertige platine.

gruß stefan

Jarny

Hallo!
Ich habe vor dem Absenden der Bestellung glücklicherweise nochmal hier reingeschaut und dann doch die MOSFETs IRLD 024 in der Dip4 Bauform bestellt. Danke nochmal für die Hinweise. Ich kannte diese Bauform für Transistoren gar nicht und die Bilder sahen für mich aus, als ob das was SMD-ähnliches ist. Da hat mir der Größenvergleich gefehlt.

Muss aber nochmal ein paar Fragen an die Profis stellen:
Die ursprüngliche WebSeite für die ShiftPWM-Lib ist nicht mehr online aber man bekommt die Lib noch über GitHub. Leider finde ich nirgends einen einfachen Schaltplan wie ich das Shiftregister 74hc595 an den Arduino Pro Mini anschließen muss.
Ich möchte die Verbindung über SPI nutzen (soll 2.5x schneller sein). Hat jemand einen Link wo man das mal klar erkennen kann wie man das Schieberegister in meinem Fall anschließen muss?

Mir genügt für mein Projekt ja ein einziger 74hc595 weil ich nur 6 Leuchten steuern möchte, also ist die Schaltung nicht kompliziert. Mir würde bestimmt auch einfach eine Liste mit den PINs genügen und der dazu passenden Initialisierung der ShiftPWM-Lib.

Aus einigen CodeBeispielen kann ich erkennen, dass Pin11 und Pin13 benutzt werden muss aber dann blick ich schon nicht mehr ganz durch welchen Pin ich noch verwenden muss.

Wäre nett wenn mir da nochmal kurz jemand helfen kann.  :-[

Gruß
Jarny


PS:
Kurze Frage wegen dem doppelten Netzteil (12V und 5V):
Den Arduino kann man ja direkt mit dem V(raw) Eingang an 12V hängen. Intern läuft er dann auch ganz normal mit 5V.
Gibt es einen Pin am Arduino wo man die geregelten 5V abgreifen kann und daran den 74hc595 hängen kann? Damit könnte ich mir sparen die 5V selbst zu erzeugen oder irgendwo mit nem zweiten bzw. kombinierten Netzteil einzuspeisen. Der 74hc595 treibt ja nur die 6 MOSFETs an seinen Ausgängen, verbraucht also nicht so viel Strom.  :smiley-eek:

Eisebaer

hi,

auf der ersten seite dieses threads ist meine platine. da siehst Du, wie's angeschlossen wird. der "arduino" ist oben rechts, und wiederum oben rechts an dem chip sind die 2 SPI-pins angeschlossen und die leitungen gehen zum schieberegister. ein dritter, "normaler" pin in der unteren reihe ist der latch-pin.

es gibt einen 5V-pin am arduino.

gruß stefan

Jarny

auf der ersten seite dieses threads ist meine platine. da siehst Du, wie's angeschlossen wird. der "arduino" ist oben rechts, und wiederum oben rechts an dem chip sind die 2 SPI-pins angeschlossen und die leitungen gehen zum schieberegister. ein dritter, "normaler" pin in der unteren reihe ist der latch-pin.
Sorry wenn ich mich grad bisschen blöd anstelle aber einen Schaltplan anhand des doppelseitigen fast unbeschrifteten Layout zu erkennen trau ich mir nicht zu  ::)  

Hab jetzt mal versucht die Brocken aus ein paar anderen Foren zu sortieren. Die Lib wird ja schon seit Jahren nicht mehr weiterentwickelt und die Doku ist leider offline.
Wäre die Verschaltung so richtig?

Code: [Select]

 Arduino Pro Mini  |  74hc595
-------------------+--------------
  11 (MOSI)        |  14 (DS)
  13 (SCK)         |  11 (SH_CP)
  8                |  12 (ST_CP)



Im Sketch genügt dann folgende Initialisierung um es über SPI anzusteuern?
Code: [Select]

const int ShiftPWM_latchPin=8;
const bool ShiftPWM_invertOutputs = false;

ShiftPWM.SetAmountOfRegisters(1);
ShiftPWM.SetPinGrouping(1);
ShiftPWM.Start(pwmFrequency,255);


Gruß
Jarny

Eisebaer

#37
Dec 30, 2014, 12:08 am Last Edit: Dec 30, 2014, 12:40 am by Eisebaer
hi,

so nach 7 bier halt ich es für richtig, wobei es egal ist, wo der latch-pin hinkommt.
ich häng meinen sketch an, so als hilfe. da sind sicher einige parameter zuviel, muß ich noch kürzen...

gruß stefan

EDIT. PWMFrequency setzen nicht vergessen (wert geben).

Jarny

So, habe das Ganze mal versuchsweise auf nem Breadboard zusammengesteckt. Ohne MOSFETS, sondern nur eine LED (mit übertriebenen 680 Ohm Vorwiderstand) am ersten Ausgang des Schieberegisters.
Verschaltung nach der obigen Tabelle, zusätzlich beim 74hc595 noch OE auf Ground und MR auf 5V gelegt.
Folgenden Sketch hab ich geschrieben um testweise die LED langsam sinusförmig (5 Sekunden von Aus bis volle Helligkeit) leuchten zu lassen:

Code: [Select]
const int ShiftPWM_latchPin=8;
const bool ShiftPWM_invertOutputs = false;
const bool ShiftPWM_balanceLoad = false;

#include <ShiftPWM.h>
unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 60;
unsigned int numRegisters = 1;

double time = 0;

void setup()
{
  delay(100);
  ShiftPWM.SetAmountOfRegisters(numRegisters);
  ShiftPWM.Start(pwmFrequency,maxBrightness);
  ShiftPWM.SetAll(0);
  delay(1000);
  Serial.begin(9600); 
}

void loop()
{
  int brightness = (int) (sin(time) * 127.0 + 127.0);
 
  Serial.println(brightness);
  ShiftPWM.SetAll( brightness );
  delay(40);
  time = time + .025;
}


Das Ergebnis überzeugt mich noch gar nicht  :( . Die LED flackert sichtbar mit wenigen Herz als ob sie beim Fadingvorgang mehrmals (ca 5 mal pro Sekunde) ausgeschaltet wird.
Also prinzipiell ist das Fading erkennbar aber irgendwas scheint die LED dann noch mehrmals auszuschalten. Besser kann ichs gerade nicht beschreiben.
Sieht jemand auf Anhieb was ich falsch gemacht haben könnte bzw was hier noch fehlt?
Ein Abblockkondensator habe ich am 74hc595 übrigens auch verbaut um das als Ursache auszuschließen.

Gruß
Jarny

Jarny

Gnaaaa! Ich hab gefunden woran es lag. Es war die Ausgabe über Serial. Da wird wohl dann intern entweder was mit dem Timer durcheinander geworfen oder Interrupts stören sich.
Ohne die Ausgabe fadet die LED jedenfalls (mehr oder weniger) sauber. BTW: Finde PWM beim steuern von LEDs sehr ungenau. In dem Bereich für niedrige Helligkeiten sinkt die Auflösung auf gefühlte 4-5 Bit. Richtig sanfte lineare Übergänge bekommt man nicht so recht gebacken. Ist mir bei meinen WS2812 LED Stripes bei ner anderen Bastelarbeit auch schon negativ aufgefallen. Aber das kann man nicht wirklich ändern.

Gruß
Jarny


Serenifly

Finde PWM beim steuern von LEDs sehr ungenau.
Das liegt an deinen Augen. Die arbeiten nicht linear, sondern logarithmisch.

Das kann man aber in Software mit Hilfe einer Tabelle ausbessern:
http://www.mikrocontroller.net/articles/LED-Fading

Jarny

Das liegt an deinen Augen. Die arbeiten nicht linear, sondern logarithmisch.
Ja, ich weiss. Hab schon so ziemlich alle Seiten diesbezüglich durch. Im Endeffekt läuft natürlich alles darauf hinaus, sich ne Tabelle zu machen wo man alles auf gerade mal 5 Bit Auflösung reduziert und selbst dann noch Werte doppelt und dreifach vorkommen. Gerade im dunklen Bereich hat ne Mischfarbe fast nichts mehr mit dem zu tun was man eigentlich darstellen möchte. Aber das ist hier im Thread offtopic.

Gruß
Jarny

sschultewolter

Die Tabelle macht man, da diese deutlich "schonender" für den MCU ist, als diesen zu berechnen. Es gibt eigentlich keinen Grund, diesen innerhalb eines kleinen Controllers zu berechnen.

Wieso 5Bit Auflösung? Das ist falsch. Hast du dir mal das Calc/Excel Sheet dazu angeschaut?
Orginal Atmel AVRISP mkII zu verkaufen. Anfrage per PN ;)

Jarny

Die Tabelle macht man, da diese deutlich "schonender" für den MCU ist, als diesen zu berechnen. Es gibt eigentlich keinen Grund, diesen innerhalb eines kleinen Controllers zu berechnen.
Hab ja nichts gegenteiliges behauptet. Mir ist das schon klar, dass man die korrigierten Werte nicht jedesmal aufwendig berechnen will und deshalb in einer einfachen Lookup-Table vorberechnet ablegt.

Quote
Wieso 5Bit Auflösung? Das ist falsch. Hast du dir mal das Calc/Excel Sheet dazu angeschaut?
Wie gesagt, ich kenn die ganzen Seiten mit den Berechnungsgrundlagen schon. Heraus kommt, wenn man es bei einer 8 Bit PWM sinnvoll linear abstufen will, ca. 5 Bit Abstufungen (also 32 wahrnehmbare Helligkeitsschritte). Das steht doch so auch im Link von Serenifly.
Zumindest die WS2812 arbeiten hardwaremäßig mit 8 Bit PWM. In diesem Projekt (für die LED-Strahler) mit der benutzten ShiftPWM wird wieder mit 8 Bit PWM gearbeitet. Mehr kann man wohl nicht rausholen, oder versteh ich da was nicht?

Gruß
Jarny

Serenifly

16 Bit PWM geht auch auf dem Arduino wenn man es per Hand programmiert (8, 9 und 10 Bit sind andere Optionen).

ShiftPWM beschränkt sich aber wie die Arduino Software wohl auf 8 Bit. Man kann zwar mit maxBrightness was einstellen. Aber das ist nur ein unsigned char.

Go Up