Frage zu SRAM und EEPROM bei einem Arduino

Hallo liebes Arduino Forum,

Ich habe vor eine Wandverkleidung zu bauen, die ich mit Ws2812b Stripes und mit Hilfe eines Arduinos steuern will. Ich bin ein absoluter Anfänger in dem Gebiet aber ich hatte letztes Jahr mal eine Vorlesung über Mikrocontroller gehabt, in der erklärt wurde, dass man mit dem Speicher aufpassen muss.

Bei mir würde es sich um ca. 25m handeln mit 60LED's pro Meter. Beim recherchieren habe ich aufgeschnappt, dass 3Bytes pro LED benötigt werden. Das wären dann 4,5kB insgesamt.

Ich hatte vor das Alles mit einem Arduino Mega zu realisieren aber da bin ich mir nicht sicher, ob es realisierbar ist und wenn ja, ob die Performance dann auch stimmt.
Der Mega hat ein SRAM von 8kB und einen EEPROM von 4kB.

Auf dem Arduino würde ich gerne ein Progrämmchen haben, mit denen ich die Farbe , dimmen und Effekte einstellen kann und das am Besten über eine Fernbedienung oder per Handy (da weiß ich aber noch nicht, wie man sowas am Besten macht).

Meine Frage ist nun welcher Speicher da eine Rolle spielt und ob das so machbar ist oder nicht?

Vielen Dank im Vorraus schonmal! :slight_smile:

(deleted)

Ansonsten wenn WiFi-Funktionalität gewünscht ist. nimm einen ESP8266, am Besten in Form eines WEMOS/LOLIN D1 mini.

Gruß Tommy

Mit dem Mega sollte das gehen wenn du nicht verschwenderisch mit dem Rest umgehst. Alternative: Teensy 3.2

Handy Zugriff wäre über Bluetooth machbar

Ram ist relevant!
Da drin liegt das Array mit den Farben.

wenn ja, ob die Performance dann auch stimmt.

Dazu kann ich nichts sagen, da deine Bedürfnisse in dem Punkt geheim zu sein scheinen.
Außerdem ist ja der Zeitbedarf pro LED im Datenblatt zu finden.

Performance?
evtl einen anderen µC (mit DMA) verwenden. z.B. einen Dual Core ESP oder einen STM32.

Hi

So wie Du schreibst, sollen alle LED gemeinsam die Farbe ändern - Das geht ganz ohne Speicher - böse Zungen würden sogar sagen: ohne Arduino.

Bei den WS2812B sind die LED einzeln ansprechbar.
Du kannst jeder LED sagen, welche Farbe Sie annehmen soll.
Allerdings will jede LED auch bis zu 60mA Strom dafür haben - bei 25m x 60LED/m sind Das stolze 1500 LED, was stolze 90A (bei 5V) bedeuten würde.

Bei WS2812B hast Du das Problem, daß das Timing ziemlich genau eingehalten werden muß, weshalb der Arduino z.B. die Interrupts abschaltet (damit Keiner stört).
Auch braucht jede LED eine gewisse Zeit (0 und 1 Bit sind gleich lang, Da ändert sich also Nichts).
Hier wirst Du vll. Glücklich, wenn Du die 25m in viele Einzel-Stripes aufteilst - eine Lib gab's, Die die Farben auf mehrere Einzel-Stripes verteilen konnte - wird sich hier ggf. Einer zu zu Wort melden.

Sinnvoller wird Es wohl aber sein, auf andere LEDs zu setzen - Apa102 oder Apa106 (einer der Typen ist identisch mit den WS2812b) - der Andere hat getrennte Takt und Data-Leitung, kann WESENTLICH schneller als die WS2812B und man kann die Ansteuerung auch unterbrechen - also Interrupts zulassen, daß z.B. auch auf eine IR-Fernbedienung reagiert werden kann.

Der Stromhunger bleibt allerdings, und die 450W Schweine-Heiz-Strahler wollen auch hier gefüttert werden.

Stichwort Strom: 90A sind kein Spaß mehr - Die gehen durch jeden noch so dünnen Draht und lassen unlustige Licht- und Toneffekte ablaufen!!
Auch sind für 90A fingerdicke Drähte nötig, daß das Kabel überlebt!
(die einzelnen Drähte sind fingerdick)

Auf den Stripes ist nahezu kein Kupfer als Leiterbahn vorhanden - spätestens alle 2 meter sollte daher eine Einspeisung statt finden - so muß der Strom nicht erst über zig Meter dünnste Leiterbahn, bevor die LED erreicht ist.

Hier ist aber auch wieder die Gefahr, daß man aus Unachtsamkeit diese Versorgungsdrähte verbindet (mit Schraubendreher abgerutscht) - und das Netzteil prügelt die 90A gnadenlos da durch!

Meine Wahl der Hausbeleuchtung sähe anders aus - auch wirst Du einige Euro hinblättern können und hast trotzdem nur eine recht gefährliche Bastel-Lösung.

MfG

*PS: Toll, bin ich jetzt wieder der Spielverderber?!?

Vielen Dank für die ganzen Antworten!
Ich werde mir mal die Vorschläge anschauen mit den Verbindungsmöglichkeiten, aber ich habe erst 1 Jahr Programmier-"Erfahrung" und würde mir das gerne so einfach wie möglich gestalten :slight_smile: Ich dachte da vielleicht an irgendeine vorgefertigte App, mit der man benutzerdefinierte Befehle an den Arduino schcken kann, der dann darauf reagiert.

combie:
Dazu kann ich nichts sagen, da deine Bedürfnisse in dem Punkt geheim zu sein scheinen.
Außerdem ist ja der Zeitbedarf pro LED im Datenblatt zu finden.

Performance?
evtl einen anderen µC (mit DMA) verwenden. z.B. einen Dual Core ESP oder einen STM32

Also sehr hohe Ansprüche habe ich nicht. Ich will die Beleuchtung dezent einsetzen und keine aufwendige Lichtershow :slight_smile: Das Aufwendigste wäre vielleicht eine Reihe von leuchtenden LED's über die gesamte Länge zu schicken (Ich denke ihr wisst was ich meine).

postmaster-ino:
Bei WS2812B hast Du das Problem, daß das Timing ziemlich genau eingehalten werden muß, weshalb der Arduino z.B. die Interrupts abschaltet (damit Keiner stört).
Sinnvoller wird Es wohl aber sein, auf andere LEDs zu setzen - Apa102 oder Apa106 (einer der Typen ist identisch mit den WS2812b) - der Andere hat getrennte Takt und Data-Leitung, kann WESENTLICH schneller als die WS2812B und man kann die Ansteuerung auch unterbrechen - also Interrupts zulassen, daß z.B. auch auf eine IR-Fernbedienung reagiert werden kann.

Ah okay danke für den Tipp!

postmaster-ino:
Stichwort Strom: 90A sind kein Spaß mehr - Die gehen durch jeden noch so dünnen Draht und lassen unlustige Licht- und Toneffekte ablaufen!!
Auch sind für 90A fingerdicke Drähte nötig, daß das Kabel überlebt!
(die einzelnen Drähte sind fingerdick)

Auf den Stripes ist nahezu kein Kupfer als Leiterbahn vorhanden - spätestens alle 2 meter sollte daher eine Einspeisung statt finden - so muß der Strom nicht erst über zig Meter dünnste Leiterbahn, bevor die LED erreicht ist.

Hier ist aber auch wieder die Gefahr, daß man aus Unachtsamkeit diese Versorgungsdrähte verbindet (mit Schraubendreher abgerutscht) - und das Netzteil prügelt die 90A gnadenlos da durch!

Ja das mit der Einspeisung und, dass man mit dem Querschnitt aufpassen muss ist mir ein Begriff, allerdings habe ich im Internet gelesen, dass man nach jeden 5m ein seperates Netzteil anschließen kann, das jeden Stripe seperat mit Strom versorgen soll. Ich bin dann davon ausgegangen, dass man dann kleinere Querschnitte benötigt und es sicher ist. Mit Strom bin ich auch sehr vorsichtig und extrem hohe Stromstärken,Querschnitte, Wärmeentwicklung würde ich gerne vermeiden.

postmaster-ino:
*PS: Toll, bin ich jetzt wieder der Spielverderber?!?

Nein, ich bin für jeden Tipp und Mögliche Risiken dankbar, weil ich mich nicht perfekt auskenne aber gerne mal was umsetzen würde. Ich bin Maschinenbaustudent und ein bisschen Praxis in E-Technik, Mikrocontroller und deren Programmierung würde nicht schaden^^

Hi

Wenn Du mehrere Klein-Netzteile verwendest - die GND (Minus) gehören ALLE zusammen.
Da hier kaum Ausgleichsströme fließen, reicht hier recht dünner Draht - selber würde ich Diesen aber für den Strom wählen, Den das stärkste Netzteil aufbringen kann!
Da so auch ein Netzteil aussteigen kann, muß vor dem ersten Data-In ein Sicherheits-Widerstand verbaut werden, damit von D-In kein unzulässig großer Strom (durch die interne Schutzbeschaltung der LED) nach Vdd fließen kann - Der würde Dir diesen D-In verstören.

Wie geschrieben, dürften die WS2812B Probleme mit der Geschwindigkeit (sofern nicht als Matrix ansprechbar) und der Kommunikation mit dem Arduino, während Er die Bilder malt, auftreten.
Hier wäre der Apa_xxx Typ besser geeignet (sind aber auch teurer ... wobei 25m WS2812B nun auch kein Schnapper sind).

MfG

Um euch über mein Vorhaben mal aufzuklären, zeige ich mal ein Bild, wenn dies erlaubt ist?

Ich würde gerne die Verkleidung mit den Hexagons in abgewandelter Form nachbauen und für die Hintergrundbeleuchtung sind die Stripes dann gedacht. Mit paar Effekten wäre das meiner Meinung ein Hingucker, allerdings nur wenn man es dezent hält.

  • bei einem 60Led/m Stripe hast du alle 1,6cm eine LED. Das VIEL VIEL VIEL heller als man hier am Bild sieht. ich würde da LEDs reduzieren und eher dafür sorgen, dass sie gut verteilt werden.

  • überleg mal obs wirklich einzeln ansteuerbare sein müssen, oder vieleicht ein gleiche Farbe je Hexagon reicht. Mit geschickt gewählten Übergängen von Hexagon zu Hexagon schaut das sicher auch noch schick aus.

postmaster-ino:
Hi

Wenn Du mehrere Klein-Netzteile verwendest - die GND (Minus) gehören ALLE zusammen.
Da hier kaum Ausgleichsströme fließen, reicht hier recht dünner Draht - selber würde ich Diesen aber für den Strom wählen, Den das stärkste Netzteil aufbringen kann!
Da so auch ein Netzteil aussteigen kann, muß vor dem ersten Data-In ein Sicherheits-Widerstand verbaut werden, damit von D-In kein unzulässig großer Strom (durch die interne Schutzbeschaltung der LED) nach Vdd fließen kann - Der würde Dir diesen D-In verstören.

Wie geschrieben, dürften die WS2812B Probleme mit der Geschwindigkeit (sofern nicht als Matrix ansprechbar) und der Kommunikation mit dem Arduino, während Er die Bilder malt, auftreten.
Hier wäre der Apa_xxx Typ besser geeignet (sind aber auch teurer ... wobei 25m WS2812B nun auch kein Schnapper sind).

MfG

Danke dir für deine nützlichen Tipps! Ich bin mit diesem Beitrag schonmal um einiges klüger geworden :slight_smile:

noiasca:

  • bei einem 60Led/m Stripe hast du alle 1,6cm eine LED. Das VIEL VIEL VIEL heller als man hier am Bild sieht. ich würde da LEDs reduzieren und eher dafür sorgen, dass sie gut verteilt werden.

  • überleg mal obs wirklich einzeln ansteuerbare sein müssen, oder vieleicht ein gleiche Farbe je Hexagon reicht. Mit geschickt gewählten Übergängen von Hexagon zu Hexagon schaut das sicher auch noch schick aus.

Ja da fehlt mir die Erfahrung, weil ich noch nie so einen Stripe benutzt habe :slight_smile: Und über die Helligkeit habe ich mir auch Gedanken gemacht aber zur Not hätte man es ja durchs dimmen einschränken können. Ich habe allerdings noch was Zeit mir Gedanken über die perfekte Umsetzung zu machen, da erstmal die Prüfungen vor der Tür stehen und ich mich erst danach so wirklich an das Projekt begeben würde. Aber je früher man mit Planung anfängt, desto besser :slight_smile: Ich würde schon gerne einzel ansteuerbare benutzen, weil ich gerne mal was mit dem Arduino machen würde und somit auch flexibel wäre, um das Perfekte Design zu finden z.B. blaues Licht und punktuell an manchen Stellen rotes.

Ich wüsste auch nicht, wie man es sonst machen könnte. Im Video hat man auch LED Stripes gesehen.

Aber die Anzahl/m zu reduzieren klingt nach einem Plan. Ich habe 60 gewählt, da ich Angst hatte, dass man dann so dunkle Rillen dazwischen hat bzw. es ungleichmäßig aussieht:-)

Hi

Kaufe Dir zuerst nur einen Stripe 'zum Spielen'.
Der ist noch nicht ganz so teuer und wenn Du merkst, daß Du das Hexagon eh einfarbig ausleuchten willst, kannst Du auf wesentlich günstigere Stripes umschwenken.
Oder auf Stripes mit doch mehr/weniger LED/Meter - Optik ist Da schon etwas eigen!
Oder Du beleuchtest die Kanten, also ein Stück Stripe 'gehört' immer zu zwei Hexagons - so hast Du dann auch das Problem nicht, daß zwei benachbarte Flächen unterschiedlich leuchten ... Möglichkeiten es Da viele gibt.

MfG

Ja das mit der Einspeisung und, dass man mit dem Querschnitt aufpassen muss ist mir ein Begriff, allerdings habe ich im Internet gelesen, dass man nach jeden 5m ein seperates Netzteil anschließen kann, das jeden Stripe seperat mit Strom versorgen soll. Ich bin dann davon ausgegangen, dass man dann kleinere Querschnitte benötigt und es sicher ist. Mit Strom bin ich auch sehr vorsichtig und extrem hohe Stromstärken,Querschnitte, Wärmeentwicklung würde ich gerne vermeiden.

Man kann wo man will den Strip auseinanderschneiden und den Pluspol unterbrechen und so neu einspeisen.
Bei jeder Unterbrschung der Versorgung soll ein 330 Ohm Widerstand in die Datenleitung eingelötet werden. Das damit bei fehlender Versorgungsspannung ein Signal an der Datenleitung den Ws2812 nicht kaputtmacht. Wenn Du Dir den strip genau anschaust wirst Du sehen daß alle 50cm dieser zusammengelötet ist; Es scheint daß die Stücke fertigungstechnisch nicht länger sein können.

Eine 5m, 60 LED pro m Strippe verbraucht wenn sie weis leuchtet immernoch 18A !!! Da brauchst Du mindestens 2,5mm^2 Kupferquerschnitt. Außerdem rate ich Dir alle 50 cm einzuspeisen, notfalls durch eine paralell verlaufende Versorgungskabel.

Alternativ kannst Du auch ein 24V Netzteil nehmen und diese 24V durch DC/DC Wandler auf 5V reduzieren. So hast Du bedeutend kleinere Ströme die Du über die Kabel schicken mußt (ca18 A statt 90A). Nachteil ist es daß Du ca 1 Wandler je m brauchst.

Grüße Uwe

Hi

Als Parallel-Versorgung macht sich Lautsprecherkabel ganz gut.

MfG

Ja 60LED’s/m scheinen vielleicht wirklich überdimensioniert zu sein. Ich werde es dann wahrscheinlich mit den 30ern anstreben. Es werden wahrscheinlich auch “nur” 20m. Nach den Prüfungen werde ich mir mal ein CAD Projekt dazu machen, so wie ich es haben wollen würde an der Wand und den genauen Umfang dann bestimmen. Das Licht soll auch nur paar cm überstehen, das bedeutet, dass ich mal Testweise einen Streifen an die Wand halten werde, um zu schauen in wie weit das Licht bei einem gewissen Abstand auf die Wand strahlt.Dadurch kann sich der Umfang der Stripes ja nochmal reduzieren :slight_smile:

uwefed:
Eine 5m, 60 LED pro m Strippe verbraucht wenn sie weis leuchtet immernoch 18A !!! Da brauchst Du mindestens 2,5mm^2 Kupferquerschnitt. Außerdem rate ich Dir alle 50 cm einzuspeisen, notfalls durch eine paralell verlaufende Versorgungskabel.

Alternativ kannst Du auch ein 24V Netzteil nehmen und diese 24V durch DC/DC Wandler auf 5V reduzieren. So hast Du bedeutend kleinere Ströme die Du über die Kabel schicken mußt (ca18 A statt 90A). Nachteil ist es daß Du ca 1 Wandler je m brauchst.

Grüße Uwe

Das mit den 24V hört sich nicht schlecht an, aber wenn ich ehrlich bin habe ich das noch nicht ganz verstanden. Also der richtige Weg wäre:

  1. Berechnen wieviel Watt ein 24V Netzteil für die gewünschte Anzahl der LED’s benötigt und ca 20% mehr nehmen(damit das Netzeil nicht unter Volllast arbeitet).
  2. Mit dem daraus ermittelten Strom den Querschnitt für die ganze Verkabelung ermitteln.
  3. Nach jedem Meter den Strom neu in die LED’s einspeisen mit einem 24V->5V Wandler und sobald man den Stripe teilt einen 330Ohm Widerstand in die Datenleitung verlöten.

Ich habe mal ein Aufbau gemalt, den ich mal anhängen werde. Bei den Datenleitungen bin ich mir nicht sicher, ob ich auch “unten” drangehen kann. Aber wahrscheinlich schon, wenn man den D-IN, dann einfach so wählt, dass er dann “unten” liegt, um Kabel zu sparen.

Wie sieht das denn aus, wenn ich ein Netzteil habe, das die Leistung aufbringen kann und ich x-beliebig mal einspeisen will? Da fehlt mir die Erfahrung. Läuft das dann so, dass man dann mit Klemmen arbeitet, um so dann externe Kabel für die Stripes zur Verfügung hat?

MfG :slight_smile:

Hi

Sämtliche GND (also Minus-Anschlüsse) MÜSSEN verbunden sein.
Ohne diese Verbindung 'sieht' der Stripe die Steuerspannung desArduino nicht, da Diese 'vom GND des Arduino' aus 5V beträgt.

Ist wie eine neben Dir liegende Batterie - Da können so viele Volt drin sein, wie nur denkbar - solange Du nur den Plus-Pol für irgend etwas benutzt, passiert Nichts.
Erst, wenn der Minus als 'Ground' (... GND) ins Spiel kommt, 'sehen' die Elektronen, wohin die Reise geht - Die wollen nämlich zum 'eigenen Minus' zurück.
Erst durch die Verbindung der 'Minus' können die Plus-Signale zurück zu Ihrem GND 'finden'.
Gleichzeitig wird das Signal auch nur mit dieser Verbindung vom Stripe 'gesehen' - ohne Bezug (dem Ground=GND) ist das 5V-Signal des Arduino 'nur ein potentialfreies Potential' - Es hat zwar 5V, aber NICHT vom Stripe aus 'gesehen' - dort ist der Draht potentialfrei.
Der Versuch, Das 'gerade zu biegen' ist wohl verbesserungswürdig ...

Das gilt für die 5V Stripe-Versorgung, wie für die 5V Steuer-Signale vom Arduino.

ACHTUNG: Wenn die Steo-Down eine Strom-Einstellung haben, messen Die am eigenen Minus-Ausgang, wie viel Strom 'zurück kommt', um entsprechend den Plus runter zu regeln!
Wenn hier die 'Minus' zusammen geklemmt sind, kann der Strom sich aber jeden möglichen Weg aussuchen, da auf den Step-Down-Modulen der Minus eine direkte Verbindung zum Zuleitungs-Minus hat (mit etwas Leiterbahn als Shunt).
Damit stören sich die Regelungen gegenseitig - die Step-DN, Die keinen Rückfluss auf Ihrem Minus 'sehen', steuern voll auf, Der Step-DN, Der den ganzen Strom abbekommt, regelt auf Null zurück (hilft Ihm aber Nichts) - wenn der Strom zu groß wird, brennt das Teil einfach ab und eine neuer 'Schwächster' wird ausgewürfelt.
Kurz vorher ist der arme Regler brüllend heiß ... frag nicht, woher ich Das weiß ...

MfG

postmaster-ino:
Erst, wenn der Minus als 'Ground' (... GND) ins Spiel kommt, 'sehen' die Elektronen, wohin die Reise geht - Die wollen nämlich zum 'eigenen Minus' zurück.

Du verwechselst technische Stromrichtung (+ --> -) und Elektronenflussrichtung (- --> +)

Gruß Tommy

Hi

Oha - Lapsus :slight_smile:

Die Elektronen wollen natürlich zu Ihrem PLUS.
Aber zugegeben SO macht Das bildlich dann wieder kaum Sinn - und jetzt mit Löchern als Ladungsträgern anzukommen scheint mir auch nicht hilfreich.

Werde Mal versuchen, Das irgendwie umgedeutscht zu bekommen ...

MfG

Die technische Stromrichtung wurde festgelegt, als man noch nicht wußte, dass da Elektronen fließen.
Man hat es dann nie geändert.

Gruß Tommy

Es gibt ja auch fehlende Elektronen (Löcher) zB in P-Halbleitern, die dann positiv sind und von plus nach minus fließen.
Grüße Uwe