Arduino Forum

International => Deutsch => Topic started by: Mouns on Feb 07, 2019, 02:12 am

Title: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 07, 2019, 02:12 am
Hallo Zusammen,

für ein Uniprojekt lese ich mich gerade in das Arduino Thema ein, bin jedoch ein bisschen ratlos und komplette Anfängerin was Arduino betrifft.

Und zwar habe ich einen 24V Led Streifen (weiß) // 12 W
hier der Link dazu
https://www.isolicht.com/s/neuheiten/ultra-flexible-led-streifen-24v-12w-ip20-neutralweiss-fuer-winkel-und-ecken

den ich mit dem Arduino steuern möchte.
Nun habe ich einiges über Mosfets gelesen, bin mir nur nicht genau sicher was davon ich benötige um den Led-Streifen an den Arduino anzuschließen.
Könnt ihr mir etwas empfehlen?
Der Led-Streifen ist zwar 5 m lang, jedoch brauche ich für den ersten Versuch ca. nur 20 cm.

Meine 2. Frage ist: brauche ich ein Breadboard? Da ich das Ganze in einer relativ kleinen "Box" verbauen möchte, will ich so platzsparend wie möglich arbeiten. Und soweit ich das verstanden habe könnte ich das ganze auch ohne Breadboard lösen?

Die Grundidee ist es einen Zugschalter zu betätigen, mit dem Arduino eine "Wartezeit" zu steuern und nach ca 2-3 Minuten geht das Licht kurz an und dann wieder aus, das heißt den Zugschalter muss ich auch noch mit einplanen.

Über eure Hilfe würde ich mich sehr freuen!
Grüße
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 07, 2019, 07:40 am
(http://forum.arduino.cc/index.php?action=dlattach;topic=596150.0;attach=293668)
Ich würde eine kleine Platine zusammenlöten,
Breadboards sind wacklig und nicht für höhere Ströme/Spannungen ausgelegt.

Die Diode brauchst du bei einem LED Strip nicht, die 12V sind bei dir natürlich 24V.

Der Fet ist unkritisch, solange er früh genug schaltet. (Logic Level FET (https://www.mikrocontroller.net/articles/MOSFET-%C3%9Cbersicht))
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 07, 2019, 08:04 am
Die Grundidee ist es einen Zugschalter zu betätigen, mit dem Arduino eine "Wartezeit" zu steuern und nach ca 2-3 Minuten geht das Licht kurz an und dann wieder aus, das heißt den Zugschalter muss ich auch noch mit einplanen.
Der Zugschalter könnte einen INPUT_PULLUP Pin des Arduinos gegnen GND schalten.

Willst du wirklich eine zufällige Wartezeit? Dann kannst du random() (https://www.arduino.cc/reference/en/language/functions/random-numbers/random/) benutzen,
für randomSeed() (https://www.arduino.cc/reference/en/language/functions/random-numbers/randomseed/) kannst du gut millis() (https://www.arduino.cc/reference/en/language/functions/time/millis/) zum Zeitpunkt der Zugschalterbetätigung nehmen.

P.S. blamiere dich nicht durch Benutzen von delay(), du bist auf der Uni.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 07, 2019, 09:46 pm
Okay, danke schonmal für die Infos!

Platine klingt gut, werde ich mir besorgen.
Ich habe mir jetzt die Mosfet-Liste angeschaut. IRL3803 oder IRL3103, macht das Sinn? Die Daten verwirren noch ziemlich, ich habe auch schon einige Seiten durchforstet und viel durchgelesen, ich denke mal das dauert bis ich da ganz durchsteige.

Ja, eine zufällige Wartezeit. Beim Programmieren werde ich wahrscheinlich noch Unterstützung bekommen, ich bin nur gerade dabei die ganzen Komponenten für das Projekt zusammenzutragen.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 07, 2019, 09:54 pm
IRL3803 oder IRL3103, macht das Sinn?
Vielleicht sind die 30V ein wenig knapp, dafür sind die 64A bzw 140A üppig.
Funktionieren werden die, für gut regulierte 24V sollte das reichen.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 07, 2019, 10:39 pm
Okay, dh die hier müssten ja dann auch gehen:

https://www.amazon.de/100-rfp30-N06le-0-047ohm-n-channel-220-ESD-spezifische/dp/B071VXRQYR/ref=sr_1_fkmr0_1?s=industrial&ie=UTF8&qid=1549573785&sr=1-1-fkmr0&keywords=irl+mosfet+arduino

Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 07, 2019, 10:49 pm
Ja, die sollten auch gehen.  :D
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 08, 2019, 10:05 am
Die IRLZ34N (https://www.amazon.de/IRLZ34N-Transistor-N-LogL-MOSFET-IRLZ34/dp/B01FUSRARW/ref=pd_sbs_147_2/262-0380436-6101652?) (55V 30A 68W TO220) sind etwas günstiger.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mahimus on Feb 08, 2019, 01:19 pm
Besorg dir noch einen Step-Down (Spannungsregler), dann kannst du den Arduino auch an die 24V Quelle hängen - natürlich mit dem Step-Down dazwischen, der auf ~7V eingestellt ist.

Zum Thema FET hätte ich jetzt aber eine Frage: Woher sieht man denn, dass die 5V vom Arduino reichen um den (vollständig) leitend zu schalten? Zum Beispiel bei diesem steht dazu nichts in der Beschreibung:

https://www.amazon.de/IRLZ34N-Transistor-N-LogL-MOSFET-IRLZ34/dp/B01FUSRARW/ref=pd_sbs_147_2/262-0380436-6101652?
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 08, 2019, 01:31 pm
Besorg dir noch einen Step-Down (Spannungsregler), dann kannst du den Arduino auch an die 24V Quelle hängen - natürlich mit dem Step-Down dazwischen, der auf ~7V eingestellt ist.

Zum Thema FET hätte ich jetzt aber eine Frage: Woher sieht man denn, dass die 5V vom Arduino reichen um den (vollständig) leitend zu schalten? Zum Beispiel bei diesem steht dazu nichts in der Beschreibung:

https://www.amazon.de/IRLZ34N-Transistor-N-LogL-MOSFET-IRLZ34/dp/B01FUSRARW/ref=pd_sbs_147_2/262-0380436-6101652?
und natürlich hier http://www.irf.com/product-info/datasheets/data/irlz34n.pdf (http://www.irf.com/product-info/datasheets/data/irlz34n.pdf)
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: michael_x on Feb 08, 2019, 01:55 pm
Quote
Zum Beispiel bei diesem steht dazu nichts in der Beschreibung:
https://www.amazon.de/...
Bei Amazon findest du nie eine brauchbare Beschreibung.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 08, 2019, 02:43 pm
Besorg dir noch einen Step-Down (Spannungsregler), dann kannst du den Arduino auch an die 24V Quelle hängen - natürlich mit dem Step-Down dazwischen, der auf ~7V eingestellt ist.
Besser den StepDown auf 5V und an den 5V-Pin anschließen. Der Längsregler erzeugt nur Wärme.

Zum Thema FET hätte ich jetzt aber eine Frage: Woher sieht man denn, dass die 5V vom Arduino reichen um den (vollständig) leitend zu schalten? Zum Beispiel bei diesem steht dazu nichts in der Beschreibung:
Aus dem Datenblatt: "Logic-Level Gate Drive" und "VGS(th) Gate Threshold Voltage 1 bis 2 V"

Wobei ich das Datenblatt nicht besonders toll finde, da gibt es bessere. Aber praktisch funktioniert es ganz gut.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Rentner on Feb 08, 2019, 02:48 pm
Hallo,

Besorg dir noch einen Step-Down (Spannungsregler), dann kannst du den Arduino auch an die 24V Quelle hängen - natürlich mit dem Step-Down dazwischen, der auf ~7V eingestellt ist.

Zum Thema FET hätte ich jetzt aber eine Frage: Woher sieht man denn, dass die 5V vom Arduino reichen um den (vollständig) leitend zu schalten? Zum Beispiel bei diesem steht dazu nichts in der Beschreibung:

https://www.amazon.de/IRLZ34N-Transistor-N-LogL-MOSFET-IRLZ34/dp/B01FUSRARW/ref=pd_sbs_147_2/262-0380436-6101652?
VGS(th) ist die Angabe bei welcher Spannung durchgeschaltet wird.

Der Wert sollte für 5V Logik Level natürlich kleiner als 5V sein. Wenn bei einem Typ 2-4V angegeben wird reicht das eigendlich. Nun hat man in der Regel ja noch einen Widerstand in Reihe zur Strombegrenzung  und einen zweiten nach Masse damit auch sicher wieder gesperrt wird. Die beiden Widerstände wirken als Spannungsteiler. Je nach dem wie die ausgelegt sind wird die Gatespannung also etwas kleiner werden. Um also sicher zu sein nimmt man besser einen Typ der mit 1-2V angegeben ist der funktioniert dann auch sicher bei 3,3V Technik


stimmt so nicht


Übersicht (https://www.mikrocontroller.net/articles/MOSFET-%C3%9Cbersicht)

Heinz
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 08, 2019, 05:00 pm
Nun hat man in der Regel ja noch einen Widerstand in Reihe zur Strombegrenzung  und einen zweiten nach Masse damit auch sicher wieder gesperrt wird. Die beiden Widerstände wirken als Spannungsteiler. Je nach dem wie die ausgelegt sind wird die Gatespannung also etwas kleiner werden.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mahimus on Feb 08, 2019, 05:32 pm
Aus dem Datenblatt: "Logic-Level Gate Drive" und "VGS(th) Gate Threshold Voltage 1 bis 2 V"

Wobei ich das Datenblatt nicht besonders toll finde, da gibt es bessere. Aber praktisch funktioniert es ganz gut.

Ich würde das jetzt so verstehen, dass er da überhaupt erst anfängt zu leiten. Das heißt aber ja nicht, dass der innere Widerstand klein genug ist für die Anwendung? Oder versteh ich V_GS,th falsch?
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 08, 2019, 07:37 pm
Ich würde das jetzt so verstehen, dass er da überhaupt erst anfängt zu leiten. Das heißt aber ja nicht, dass der innere Widerstand klein genug ist für die Anwendung? Oder versteh ich V_GS,th falsch?
Genau um diesen Punkt kreisen auch meine Gedanken, ohne eine Antwort im Datenblatt zu finden. Genauer stolpere ich über die 20 µs pulse width.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 08, 2019, 07:54 pm
Quote
Genauer stolpere ich über die 20 µs pulse width.
Warum?

Es ist nur eine Maßgabe dafür, unter welchen Bedingungen die Werte/Diagramme entstanden sind.
So wird es reproduzierbar.

Quote
Ich würde das jetzt so verstehen, dass er da überhaupt erst anfängt zu leiten.
Ja!
Meistens ist 250µA oder so angegeben.
Das ist nur wenig mehr, als  nix, für einen Leistungs FET.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 08, 2019, 10:58 pm
So wird es reproduzierbar.
Ja, Kampf dem Zufall, darum schaut man in ein Datenblatt.

Warum?
In diesem Thema soll ein Strom längere Zeit eingeschaltet werden, deutlich länger als 20 µs und ohne Pulsierung. Ich suche also nach einer Kurvenschar, wann der Transistor "richtig durchgeschaltet" ist.

Leider deckt sich meine Erwartung nicht mit dem, was ich im Datenblatt finde. In der Annahme, das Datenblatt wird schon richtig sein, würde ich gerne meine Erwartung anpassen, nur weiß ich halt nicht wie.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 08, 2019, 11:45 pm
Quote
Ich suche also nach einer Kurvenschar, wann der Transistor "richtig durchgeschaltet" ist.
http://www.irf.com/product-info/datasheets/data/irlz34n.pdf (http://www.irf.com/product-info/datasheets/data/irlz34n.pdf)

Dann ist Fig 3 das richtige für dich!
Die sagt 20A bei 5Vgs 4Vgs
*korrigiert*

Durchgeschaltet ist er, wenn der den nötigen Strom fließen lassen kann.
Alles unterhalb der Kurve ist der nutzbare Bereich. Den Bereich da drüber kann man nicht erreichen.
Da die Kurve nur die typische Linie zeigt, solltest du ein bisschen Reserve lassen.

Quote
In diesem Thema soll ein Strom längere Zeit eingeschaltet werden, deutlich länger als 20 µs und ohne Pulsierung
Die Pulse sind so kurz, damit die Eigenerwärmung keine Rolle bei dem konkreten Wert spielt.
Fig 4 zeigt das Verhalten bei Erwärmung.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 09, 2019, 12:30 pm
Dann ist Fig 3 das richtige für dich!
Die sagt 20A bei 5Vgs
Nur zur Sicherheit, daß wir auf die selbe Figur schauen: Ich komme auf 35 A oder 45 A, je nach junction temperature (Transistorübergangstemperatur):

(https://forum.arduino.cc/index.php?action=dlattach;topic=596150.0;attach=293979)

Durchgeschaltet ist er, wenn der den nötigen Strom fließen lassen kann.
Alles unterhalb der Kurve ist der nutzbare Bereich. Den Bereich da drüber kann man nicht erreichen.
Da die Kurve nur die typische Linie zeigt, solltest du ein bisschen Reserve lassen.
Dann kann ich also die 20 µs ignorieren, auch gut.

Wenn Du wegen der Reserve auf 20 A gegangen bist (s. o.), dann bin ich bei Dir.


@Mouns: Für 12V und 0,5A ist der Transistor geeignet, bitte lasse Dich nicht von meinen Fragen irritieren. Aber wir haben solche Fragen häufiger mal, da möchte ich dann schon wissen, was ich empfehlen kann und was nicht. Wer ganz sicher gehen möchte, schaltet UGS mit einem bipolaren Transistor, der auch in einem Optokoppler sitzen kann. Aber einen Logic Level FET direkt an einen Arduino-Ausgang anzuschließen, ist natürlich schön einfach.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Whandall on Feb 09, 2019, 12:42 pm
Ich komme auf 35 V oder 45 V, je nach junction temperature (Transistorübergangstemperatur):
Ampere nicht Volt. (bei 25V)
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Rentner on Feb 09, 2019, 01:20 pm
Hallo,

danke für die kleine Nachhilfe. Mit Bezug auf die Fig 3 aus dem Datenblatt.

d.h mit diesem Typ könnte man bei 5VGS 30A schalten bei  3,3VGS etwa 8A. ?

Heinz
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 09, 2019, 01:22 pm
Erstmal die Fakten sammeln

http://www.irf.com/product-info/datasheets/data/irlz34n.pdf
 (http://www.irf.com/product-info/datasheets/data/irlz34n.pdf)


Electrical Characteristics @ TJ = 25°C:
Rds(on) = 0,06 Ohm bei Vgs = 4V

Wärmewiderstand zwischen Juction und Umgebung Rθja = 62 K/W

Jetzt wollen wir den Transistor belasten.
Tj = 25°C ist also illusorisch

Absolute Maximum Ratings sagt:
Todesgrenze für Tj = 175°C

Fig 4 sagt:
Rds(on) Faktor 2,25 bei  Tj = 175°C

Die Umgebungstemperatur muss man wohl schätzen.
Annahme: Geschlossenes Gehäuse und  Hochsommer
Ta = 50°C

--------------


Erste Rechnung:
Rds(on heiß) = 0,06 * 2,25 = 0.135 // in Ohm


Formel für die Leistungsberechnung:
U = R * I
P = U * I
P = R * I²

I = sqr(P/R)


Formeln für die Temperaturberechnung:

Tj = Ta + (Rθja * Ptot)

Rθja * Ptot = Tj - Ta

Ptot = (Tj - Ta)/Rθja


----
Ptot = (175 - 50) / 62 = 2,02 W

Itot = sqr(2,02/0,135) = 3,68A

----
In Fig3 liegt 3,68A  bei 4Vgs im erreichbaren Bereich, also unterhalb der Linie

Unter den genannten Bedingungen kann man diesem Transistor ohne Kühlblech einen dauerhaften Strom von 3,68A gerade noch so eben zumuten.
Einen kleinen Sicherheitsbereich sollte man einplanen






---
Na, ob das wohl alles so stimmt?
Oder habe ich da einen Fehler eingebaut?




-----------

Quote
Nur zur Sicherheit, daß wir auf die selbe Figur schauen: Ich komme auf 35 A oder 45 A, je nach junction temperature (Transistorübergangstemperatur):
Ja, die Figur!
Wobei man bei einem UNO, welcher an USB hängt nicht viel mehr als 4,3V an seinem belasteten Pin erwarten darf.

Hier ist also ein Vertipper:
> Die sagt 20A bei 5Vgs
Ich meinte:
> Die sagt 20A bei 4Vgs
Denn die 5V sind zu optimistisch.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 09, 2019, 07:55 pm
> Die sagt 20A bei 4Vgs
Nun weiß ich, wir sehen dieselbe Figur!
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: uwefed on Feb 09, 2019, 08:29 pm
Der von Combie errechnete max Dauerstrom gilt für den Transistor ohne Kühlkörper.

Wenn der Transistor auf einem Kühlblech oder Kühlkörper hat dieser wegen der größeren Oberfläche eine bessere Wärmeabgabe an die umgebende Luft. Darum bleibt der Transistor bei gleichem Strom kühler bzw kann der Strom größer sein wenn die Temparatur im Halbleiter gleich hoch sein kann.

Grüße Uwe
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 10, 2019, 12:15 pm
Nun weiß ich, wir sehen dieselbe Figur!
Ja!

Ich hoffe, ich habe mit der Rechnung nicht zu sehr übertrieben.
Denn deine Frage:
Quote
Ich suche also nach einer Kurvenschar, wann der Transistor "richtig durchgeschaltet" ist.
Habe ich nicht damit beantwortet.
Nicht beantworten können.


d.h mit diesem Typ könnte man bei 5VGS 30A schalten bei  3,3VGS etwa 8A. ?
Wenigstens das habe ich beantworten können!
Mit einem eingeschränktem: Ja
Aber nicht ohne erhebliche Kühlmaßnahmen.
(das Werkzeug dazu, habe ich dir hoffentlich jetzt geliefert)


Übrigens:
Die ganzen billig Kühlkörper, bei Ebay und Konsorten, werden ohne Wärmewiderstandsangabe verkauft.
Haben teilweise so raue Oberflächen, für die Transistormontage, dass der Wärmewiderstand in den Himmel schießt.
Gruselig.

Namhafte Händler geben den Wärmewiderstand an.
z.B. Conrad und viele weitere

Also:
Augen auf, beim Kühlkörper kauf.

Tipp:
Die Befestigung der Transistoren auf dem Kühlkörper sollte mit Federklammern erfolgen. Das bewirkt einen gleichmäßigen Anpressdruck. Nur so sind die jeweiligen  angegebenen Wärmewiderstände einzuhalten.


Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 10, 2019, 12:53 pm
Nicht beantworten können.
Die Kernfrage nach den 20 µs hast Du geklärt, das war mein Hauptverständnisproblem. Ich habe zusätzlich folgende Dinge gelernt:

Danke für die Rechnung!

Irgendwo habe ich Wärmeleitpaste herumliegen, die könnte den Wärmeübergang verbessern.

@Mouns: Ich hoffe, Du kannst nun nachvollziehen, wie sich so ein Transistor verhält. Das Datenblatt versucht, einen mehrdimensionalen Raum abzubilden, was beim Betrachter eine Menge Phantasie voraussetzt.  

Irgendwann gibt es möglicherweise eine Suchmaschine, bei der ich die geforderten technischen Daten eingebe und den passenden Transistor gezeigt bekomme.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: michael_x on Feb 10, 2019, 01:16 pm
Quote
Irgendwann gibt es möglicherweise eine Suchmaschine, bei der ich die geforderten technischen Daten eingebe und den passenden Transistor gezeigt bekomme
.mouser versucht, so etwas zu bieten per Vorauswahl, Filter und Sortierung.
Fehlt nur ein Filter "Auch bei Aliexpress vorhanden"  ;)
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 10, 2019, 01:53 pm
Quote
Die Annahme "Rds(on) Faktor 2,25 bei  Tj = 175°C" ist ein Extremwert und hätte ich mir genauer gewünscht. Allerdings wüßte ich auch nicht, welche Figur da hilft.
Wieso genauer? :o

Der Wert ist im Datenblatt zu finden (Fig 4) und MUSS bei der Berechnung mit einbezogen werden.
Wenn man den Maximalstrom wissen will, und das war bei der Berechnung mein Ziel, muss man von der Grenztemperatur ausgehen.
Ich sehe da keinen Raum für "Genauer"


Quote
Irgendwo habe ich Wärmeleitpaste herumliegen, die könnte den Wärmeübergang verbessern.
Die Verwendung ist ein Pflicht Standard.
Die Angaben in den Datenblättern gehen immer von einer Verwendung einer Wärmeleitpaste aus.
Sonst steht es explizit dabei.
Zumindest kenne ich es nicht anders.

Das Datenblatt sagt:
0,5 K/W , zwischen Transe und Kühlkörper, bei Verwendung von Wärmeleitpaste, und ich sage:
Nur mit Federklammer, nicht mit Verschraubung zu erreichen
Mein Lehrer sagte damals: Nimm 2 K/W für trocken verschraubt an.


Quote
Ich habe zusätzlich folgende Dinge gelernt:
Danke für die Rückmeldung!
Und ja, dann hat es sich ja gelohnt.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: michael_x on Feb 10, 2019, 02:09 pm
Quote
Nimm 2 K/W für trocken verschraubt an.
Faustregeln sind immer gut.
Man sollte aber auch eine Idee der (Rand-)Bedingungen haben. Ist das für TO220 auf "ausreichend" großem Kühlkörper gemeint, oder passt der Wert für jede M3- Schraube?
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 10, 2019, 02:36 pm
Quote
Ist das für TO220 auf "ausreichend" großem Kühlkörper gemeint, oder passt der Wert für jede M3- Schraube?
Ich störe mich an dem Wort "ausreichend"

 "ausreichend" bedeutet für mich hier, dass der Kühlkörper die Kühlfläche des Transistors vollständig abdeckt. Vollflächiger Kontakt. Ob der Kühlkörper, an sich, "ausreichend dimensioniert" ist, lässt sich an seinem Wärmewiderstand und den anderen Schaltungsparametern fest machen.

Die Schraube ist da recht belanglos.
Mal abgesehen davon, dass ein zu festes anziehen kontraproduktiv ist, da es den Wärmewiderstand deutlich erhöht.
> Viel hilft viel
Ist da eher nicht angesagt.
Ebenso bei der Paste.


Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Tommy56 on Feb 11, 2019, 12:50 pm
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [*code] davor und [*/code] dahinter ohne *).
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 11, 2019, 12:58 pm
Ah mist sorry. Also nochmal:
Okay, vielen Dank schonmal an euch!

Ich bin jetzt von de 24V Streifen umgestiegen auf einen NeoPixelRing 24 LEDs, da ich das Ganze in einer Box verbauen möchte und das per Batterie speisen will. (Habe jetzt eine 9V Batterie, die ich direkt an den Arduino anschließen würde).
Die Idee ist immernoch die gleiche, ich habe jetzt einen Code hierfür geschrieben, jedoch zeigt er mir immer
'strip' was not declared in this scope an bzgl der Zeile high = strip.setPixelColor ...

Könnt ihr mir sagen woran das liegt und ob ich den Code einigermaßen passend geschrieben habe?

Code: [Select]
#include <Adafruit_NeoPixel.h>
#define NUM_LIGHTS  24
const int buttonPin = 8;
const int LEDPin = 1;
bool s = HIGH;
int t;
uint32_t low = strip.setPixelColor(0, 0, 0);
uint32_t high = strip.setPixelColor(225, 225, 225);


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LIGHTS, LEDPin, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {

  s = digitalRead(buttonPin);
  if (s = HIGH) {

    t = random (60000, 180001);

    delay (t);



    for ( int i = 0; i < NUM_LIGHTS; i++) {
      strip.setPixelColor(i, high);
      strip.show();
    }
    delay(1000);

    for ( int i = 0; i < NUM_LIGHTS; i++) {
      strip.setPixelColor(i, low);
      strip.show();
    }

    delay(100);
  }

  else {
    digitalWrite (LEDPin, LOW);
  }
}


Title: Re: Steuerung LED-Strip für ein Projekt
Post by: agmue on Feb 11, 2019, 01:01 pm
Du hättest Deinen Beitrag auch verändern können.

Code: [Select]
uint32_t low = strip.setPixelColor(0, 0, 0);
uint32_t high = strip.setPixelColor(225, 225, 225);

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LIGHTS, LEDPin, NEO_GRB + NEO_KHZ800);

Falsche Reihenfolge. Du mußt erst ein Auto kaufen, dann kannst Du damit fahren.

Außerdem hat setPixelColor keinen Rückgabewert.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 11, 2019, 01:27 pm
Das heißt zum einen müsste ich die Zeilen umdrehen und der Befehl für die Farben ist an sich falsch? Wurde mir in der adafruit library vorgeschlagen.. ich bin verwirrt..
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 11, 2019, 02:29 pm
Ah, hab den Fehler gefunden
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Tommy56 on Feb 11, 2019, 02:34 pm
Würdest Du die Nachwelt an Deinen Erkenntnissen teilhaben lassen?

Gruß Tommy
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: postmaster-ino on Feb 11, 2019, 08:23 pm
Hi

Ihmr wird wohl in den Tiefen des WWW ein Aufruf folgender Methode über den Weg gelaufen sein:
Code: [Select]
// Convert separate R,G,B into packed 32-bit RGB color.
// Packed format is always RGB, regardless of LED strand color order.
uint32_t Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b) {
  return ((uint32_t)r << 16) | ((uint32_t)g <<  8) | b;
}

Adafruit_Neopixel.cpp, Zeile 2072ff - die Lib scheint keine interne Versionsnummer zu haben, bei mir ist die 1.1.6 installiert.
In Seinem Code dann wohl in der Art
Code: [Select]

...
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LIGHTS, LEDPin, NEO_GRB + NEO_KHZ800);
...
uint32_t aus=strip.Color(0,0,0);
uint32_t an=strip.Color(255,255,255);
...


MfG

PS: Wurde sogar per PN auf die falsche Anrede aufmerksam gemacht - sorry dafür :)
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 12, 2019, 06:28 pm
* Ihr ;)

also hier der aktuelle Code

Code: [Select]
#include <Adafruit_NeoPixel.h>
#define NUM_LIGHTS  24
const int buttonPin = 12;
const int LEDPin = 8;
//bool s = LOW;
int t;
//int high;
//int low;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LIGHTS, LEDPin, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  pinMode(buttonPin, INPUT_PULLUP);
  randomSeed(analogRead(0));
}

void loop() {

  // high = strip.setPixelColor(24, 225, 225, 225);
  //  low = strip.setPixelColor(24, 0, 0, 0);
  // s = digitalRead(buttonPin);
  if (digitalRead(buttonPin) == LOW) {

    t = random (10000, 30000);

    delay (t);

    for ( int i = 0; i < NUM_LIGHTS; i++) {
      strip.setPixelColor(i, 225, 225, 225);
      strip.show();
    }
    delay(1000);

    /* for ( int i = 0; i < NUM_LIGHTS; i++) {
       strip.setPixelColor(i, 0, 0, 0);
       strip.show();
      }*/
    while (digitalRead(buttonPin) == LOW) {
      for ( int i = 0; i < NUM_LIGHTS; i++) {
        strip.setPixelColor(i, 0, 0, 0);
        strip.show();
      }
    }

    if (digitalRead(buttonPin) == HIGH) {

      t = random (10000, 30000);

      delay (t);

      for ( int i = 0; i < NUM_LIGHTS; i++) {
        strip.setPixelColor(i, 225, 225, 225);
        strip.show();
      }
      delay(1000);

      /* for ( int i = 0; i < NUM_LIGHTS; i++) {
         strip.setPixelColor(i, 0, 0, 0);
         strip.show();
        }*/
      while (digitalRead(buttonPin) == HIGH) {
        for ( int i = 0; i < NUM_LIGHTS; i++) {
          strip.setPixelColor(i, 0, 0, 0);
          strip.show();
        }
      }
      delay(100);
    }

    else {
      digitalWrite (LEDPin, LOW);
    }
  }
}


das einzige Problem, was ich momentan habe:
Ich habe mehrere Tests durchgeführt und die delay-Zeit aufgeschrieben.
Eigentlich hätte ich gerne eine random delay-Zeit zwischen einer halben Minute und 3 Minuten
wenn ich jedoch den random betrag auf random (30000, 180000) ändere, dann reagiert mein Licht nichtmehr.
Das Maximum, was ich erreichen konnte war eine delay-Zeit von random (20000, 30000).
Ich bin mir gerade nicht sicher ob das einfach eine zu große Zeit von einer halben bis 3 Minuten sind, beziehungsweise wie ich das in den Griff bekomme.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 12, 2019, 06:47 pm
Wenn mich nicht alles Täuscht, kann random Zahlen bis 2147483647 liefern Und Delay Zahlen bis 4294967295 korrekt verarbeiten.

evtl:
random (10000L, 30000L);

Ansonsten:
Verzichte doch lieber auf das delay() und arbeite lieber mit der "Nachtwächter Erklärung"
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: postmaster-ino on Feb 12, 2019, 06:58 pm
Hi Sie dort ;)

Du benutzt t als zufällige Zeit - als INT deklariert.
Warum INT? Erwartest Du negative Wartezeiten?
Nein -> UNSIGNED (vorzeichenlos) hast Du direkt den doppelten Zahlenvorrat.
int 16bit, bei signed 15bit + Negativ-Bit, bei unsigned 16bit.
-32768...32767 zu 0...65535
Erklärt, warum Du nur auf ~30 Sekunden (32767ms, um genau zu sein) kommst.
Bei 'int unsigned' - ich schreibe uint16_t (u steht hier ebenfalls für unsigned, int16->16bit breit, t ist wohl ein Überbleibsel aus der Urzeit, in der Art laß ich darüber) wird das 15.te Bit nicht für das Vorzeichen benutzt, sondern ganz normal als Zahlen-Wert - da jedes weitere Bit den doppelten Wert hat -> doppelter Zahlenraum.
Meine Schreibweise hat den Vorteil, daß ICH immer sehe, wie breit meine Variablen wirklich sind.
Bei int/long/long kann Das je nach verwendetem µC variieren.

Wenn Du auf das delay() ganz verzichtest?
Ok, akut macht Dein Sketch dann eben die ganze Zeit Nichts - wie beim delay() auch - ABER in DEINER Schleife (loop) - bei delay eben in einer while-Schleife der delay()-Funktion (Zum Selber-Googeln yield() ).

Dein Delay-Konstrukt sieht ... äh ... 'interessant' aus - was willst Du damit bezwecken?
Schaue Dir Blink_without_delay in der IDE an und/oder die Nachtwächter-Erklärung (http://forum.arduino.cc/index.php?topic=586959.msg3993031#msg3993031) hier im Forum.

Dann strickst Du Deine delay()-Warterei auf einzelne Schritte um und prüfst bei jedem (der tausenden) loop()-Durchläufe pro Sekunde, ob die Wartezeit bereits um ist, Du also den nächsten Schritt machen kannst.
Combie (Klick auf den Nachtwächter, dort ich Der nämlich verlinkt) hat auch Makros im Angebot, wo man sich eigene und von einander unabhängige Timer zusammen bauen kann.

MfG
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 12, 2019, 07:13 pm
Quote
Du benutzt t als zufällige Zeit - als INT deklariert.
Warum INT? Erwartest Du negative Wartezeiten?
Nein -> UNSIGNED (vorzeichenlos) hast Du direkt den doppelten Zahlenvorrat.
int 16bit, bei signed 15bit + Negativ-Bit, bei unsigned 16bit.
-32768...32767 zu 0...65535
Interessant, dass ich das übersehen konnte!
:o Ein Fall von Betriebsblindheit, vermute ich mal  :o

Vermutlich weil ich mir angewöhnt habe, immer möglichst den gleichen Type zur Weiterverarbeitung zu nutzen, den mir die Funktionen liefern.

Dem Schema folgend:
Ja, da wäre sicherlich long, oder sofort unsigned long der richtige Type

Quote
Combie (Klick auf den Nachtwächter, dort ich Der nämlich verlinkt) hat auch Makros im Angebot, wo man sich eigene und von einander unabhängige Timer zusammen bauen kann.
Ja, die "niedrigen" Funktionen nutze ich kaum noch.
Mittlerweile haben die Taskmakros ein Update Richtung OOP erfahren.
Und auch switch/case sind jetzt in dem Zusammenhang möglich, da die "neuen" Makros auf dem heiß geliebten und zu allem bereiten goto basieren.

Title: Re: Steuerung LED-Strip für ein Projekt
Post by: postmaster-ino on Feb 12, 2019, 07:50 pm
Hi

Oha - goto und noch kein blubbernder Teer?? ;)
(da hat man sich gerade an Intervall heran getastet und schon wieder gibt's neues Zeug)
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Mouns on Feb 12, 2019, 07:53 pm
Ja stimmt, int macht keinen Sinn, das war wohl noch ein Überbleibsel von meinem Anfangscode, ist mir entgangen. Danke für den Hinweis!

Quote
Wenn Du auf das delay() ganz verzichtest?
Ok, akut macht Dein Sketch dann eben die ganze Zeit Nichts - wie beim delay() auch - ABER in DEINER Schleife (loop) - bei delay eben in einer while-Schleife der delay()-Funktion (Zum Selber-Googeln yield() ).
Ja, also theoretisch muss/ soll während der delay-Zeit erstmal nichts anderes ausgeführt werden (der Schalter soll auch währenddessen nicht reagieren) ich bin aber jetzt auch immer öfter auf den millis () Befehl gestoßen und werde versuchen das noch einmal zu überarbeiten. Die Blockade des Schalters kann ich ja dann trotzdem noch mit einbauen.
Und danke für die Nachtwärtererklärung!

Nachdem ich eine zeitliche Begrenzung für den ersten "Prototypen" meines Konstrukts habe, habe ich das Ganze erst einmal so programmiert, wie es für mich als Einsteiger verständlich ist, um das erste Konzept zu vermitteln.

Quote
Dein Delay-Konstrukt sieht ... äh ... 'interessant' aus - was willst Du damit bezwecken?
Meinst du für was ich diesen Code am Ende verwende oder "interessant" weil er umständlich geschrieben ist?   ;D
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: postmaster-ino on Feb 12, 2019, 08:00 pm
Hi
...
Meinst du für was ich diesen Code am Ende verwende oder "interessant" weil er umständlich geschrieben ist?   ;D
Beides :)
Mir ist nicht klar, was Du Da bezweckst und ja, umständlich ist's auch.
Der Ersatz wird sich in millis() und dem Nachtwächter finden lassen.

MfG
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: combie on Feb 12, 2019, 08:09 pm
Hi

Oha - goto und noch kein blubbernder Teer?? ;)
(da hat man sich gerade an Intervall heran getastet und schon wieder gibt's neues Zeug)
Teer schon...
Aber für die Federn reichts bisher nicht.
Vermutlich hat es noch kaum einer bemerkt.
Ist ja auch so gut versteckt, dass man die Nase schon recht tief reinstecken muss.

Hier ist die erste testbare Version zu finden. (https://forum.arduino.cc/index.php?topic=596279.msg4051105#msg4051105)
Die Lib selber wird sich kaum noch ändern.
Aber noch ein paar Beispiele und eine Doku dazu kommen.

Das Prinzip an sich, hat sich ja mit den Taskmakros (https://forum.arduino.cc/index.php?topic=415229.0) schon seit bald 3 Jahren bewährt.
(zumindest bei mir)

Tipp:
Schaue dir mal ein paar Flacherde Videos an, dann kommt dir das mit dem Goto gar nicht mehr so schlimm vor.
Title: Re: Steuerung LED-Strip für ein Projekt
Post by: Tommy56 on Feb 12, 2019, 08:33 pm
@combie: Bei Dir weiß ich, dass das goto in guten Händen ist.

Anfängern würde ich es trotzdem weiterhin ausreden, da es bei denen in 99,9% der Fälle nur schlechte Programmierung/Planung kaschieren soll.

Gruß Tommy