PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED Multiplex (Cube) invertieren



Ryoken
13.02.2014, 00:52
Hallo!

Ich habe im wahrsten Sinne des Wortes Mist gebaut und bei der Vorbereitung für einen LED-Cube (https://www.roboternetz.de/community/threads/62390-Stromweiche?highlight=stromweiche) mit einer verpolten LED angefangen und dann immer von mir selbst abgeguckt - gemerkt habe ich das erst, als der ganze Würfel fertig zusammengelötet war. :oops:
Prinzipiell scheint das Schaltungsprinzip zwar auch so zu funktionieren, wenn man die Stromzufuhr auch umpolt - allerdings habe ich auch eine schon fertige Platine (http://www.ledstyles.de/fpost99870.html?highlight=Cube+leicht+gemacht).

Weiß jemand eine einigermaßen einfache Möglichkeit die beiden noch zusammenzubringen, indem man z.B. nach dem Ausgang der Platine noch die Polung invertiert?


Danke schonmal
Gruß Ryoken

PICture
13.02.2014, 01:23
Hallo!

Am einfachsten wäre die steuernde Transistoren mit Triacks austauschen und die LED-Platinen mit Wechselspannung versorgen.

Besserwessi
13.02.2014, 13:53
Man kann den Würfel zwar auch mit anderer Polung ansteuern, allerdings läuft das dann auf komplett andere Treiber hinaus.
Man hat also die Wahl neuer Würfel oder neue Schaltung.

Ryoken
14.02.2014, 01:16
Hab ich befürchtet. Wie umfassend wäre denn "komplett neue Schaltung"?

Für die Ebenen müssten halt wohl die Transistoren auf Plus (!=VCC?) statt GND schalten, wobei ja eigentlich aber ein variabler Vorwiderstand gefragt wäre, je nachdem, wie viele LEDs der Ebene aktiv sein sollen.
Für die Säulen kommt das Signal, soweit ich das sehe ja direkt (über Vorwiderstand) vom µC-Pinout - kann man das Signal invertieren, bzw. so ausfallen lassen, dass es die LEDs auch noch ein- und ausschalten kann?
Kenne leider weder das verwendete Programm, noch so genau die Möglichkeiten des µC.

Was ich mir denke ist jetzt vielleicht, dass für ausgeschaltete LED der betreffende Säulenpin auf High (statt original wahrscheinlich Low) liegen müsste (Säule High + Ebene auf Plus/VCC = keine Spannungsdifferenz zwischen beiden -> LED aus) und für LED ein auf Low. Könnte das so hinkommen? Und wie ists dann mit der Effizienz - würde es mehr Energie verbrauchen, wenn ein Pin auf High liegt, aber kein Strom fließt, als wenn das bei Low der Fall wäre?


Gruß Ryoken

Besserwessi
14.02.2014, 10:29
Wenn die LEDs andersherum sind, braucht man dann halt genau Treiber mit der anderen Polarität. Also etwa statt ULN2803 an der low side dann UDN2981 als High Side Treiber. Direkt austauschen geht leider auch nicht - der Unterschied ist aber nicht so groß. Je nach Treiber muss ggf. die Software angepasst werden (Signal ggf. invertieren). Es hängt aber auch etwas davon ab was für Treiber die Jetzige Platine nutzt.

Ein Möglichkeit wäre noch hinter die jetzigen Treiber Transistoren zu schalten, und dazu dann auch neue Widerstände für die Stromeinstellung. Das siind aber immerhin für etwa einen 4x4x4 Cube schon 16 kleine PNPs + 32 Widerstände und 4 größere NPNs (+4 Widerstände). Das würde etwas mehr Energie verbrauchen als die Originale Schaltung - so ganz groß ist der Unterschied aber nicht, ist ja nur der Basisstrom (etwa 2-5 % des Stromes).

RoboHolIC
14.02.2014, 20:43
Ganz im Ernst: Statt zu pfriemeln, bau lieber einen passenden LED-Würfel für die vorhandene Schaltung und dann noch eine passende Treiberschaltung für den vorhandenen Würfel. Dann haste gleich was für Weihnachten!

Ryoken
16.02.2014, 03:16
Wenn die LEDs andersherum sind, braucht man dann halt genau Treiber mit der anderen Polarität. Also etwa statt ULN2803 an der low side dann UDN2981 als High Side Treiber. Direkt austauschen geht leider auch nicht - der Unterschied ist aber nicht so groß. Je nach Treiber muss ggf. die Software angepasst werden (Signal ggf. invertieren). Es hängt aber auch etwas davon ab was für Treiber die Jetzige Platine nutzt.Soweit ich den Schaltplan der Platine verstehe, verwendet die Schaltung gar keine Treiber - die Pinout-Signale vom µC gehen über Vorwiderstand direkt an die LEDs.


Ganz im Ernst: Statt zu pfriemeln, bau lieber einen passenden LED-Würfel für die vorhandene Schaltung und dann noch eine passende Treiberschaltung für den vorhandenen Würfel. Dann haste gleich was für Weihnachten!Darauf wird es wohl rauslaufen...
Für die angepasste Treiberschaltung muss ich aber ja trotzdem wissen, was ich ändern muss.

RoboHolIC
16.02.2014, 18:24
@Ryoken
Ich habe leider eben erst die von dir verlinkte Schaltung ernsthaft betrachtet. Genau die hast du doch aufgebaut, ja?
Dann ist der Aufwand ja gar nicht so groß:
1) Die Emitter der Transistoren von GND abtrennen (gemeinsame Leiterbahnen? Hab ich nicht geguckt) und mit der positiven Versorgungsschiene verbinden
2) NPN-Transistoren durch PNP-Äquivalenztyp austauschen; die Pinbelegungen sind sehr oft identisch, das geht ohne Layoutänderungen
3) auszugebende Bitleisten (edit .. und Spaltenansteuerung .. ) zuvor invertieren, z.B. durch <bit> XOR 1 , oder eben byteweise
4) fertig!

Ryoken
16.02.2014, 19:50
@Ryoken
Ich habe leider eben erst die von dir verlinkte Schaltung ernsthaft betrachtet. Genau die hast du doch aufgebaut, ja?So ist es


Dann ist der Aufwand ja gar nicht so groß:
1) Die Emitter der Transistoren von GND abtrennen (gemeinsame Leiterbahnen? Hab ich nicht geguckt) und mit der positiven Versorgungsschiene verbinden
2) NPN-Transistoren durch PNP-Äquivalenztyp austauschen; die Pinbelegungen sind sehr oft identisch, das geht ohne Layoutänderungen
3) auszugebende Bitleisten (edit .. und Spaltenansteuerung .. ) zuvor invertieren, z.B. durch <bit> XOR 1 , oder eben byteweise
4) fertig!
Das klingt ja schonmal ganz gut.
Also quasi Hardwaremäßig, über die Transistoren, die Ebenen "umpolen", und die Säulen Softwaremäßig, per Umkehrung der Pinzustände am µC?
Was macht das Kommando XOR 1 dabei? Kann man damit über den "Definitionsbereich" alle vorher programmierten Ausgabewerte umkehren, oder wie? Dürfen die Steuerpins der Transistoren dann auch invertiert werden (-> deshalb Schichtwechsel NPN/PNP?), oder nicht.
Was meinst Du denn mit Spaltensteuerung? Sind das in dem Fall die Ebenen des Cubes?


Gruß Ryoken

PICture
16.02.2014, 20:25
@ Ryoken

Falls alles schon fertig ist, wäre am einfachsten alle Pads von verpolten LEDs von Leiterbahnen abschneiden und gekreutzt verdrahten.

RoboHolIC
16.02.2014, 20:55
Also quasi Hardwaremäßig, über die Transistoren, die Ebenen "umpolen", und die Säulen Softwaremäßig, per Umkehrung der Pinzustände am µC?
Ich häte es nicht besserformulieren können.


Was macht das Kommando XOR 1 dabei? Kann man damit über den "Definitionsbereich" alle vorher programmierten Ausgabewerte umkehren, oder wie? Dürfen die Steuerpins der Transistoren dann auch invertiert werden (-> deshalb Schichtwechsel NPN/PNP?), oder nicht.
Was meinst Du denn mit Spaltensteuerung? Sind das in dem Fall die Ebenen des Cubes?
Die Formulierung als "ein_bit XOR 1", also die Exclusiv-ODER-Verknüpfung mit 1 bewirkt eine Negation (NOT ein_bit). Ich muss das bei den PIC16ern so machen, weil deren Assembler keine Negation kennt; das Ergebnis ist dasselbe. Du kannst entweder das komplette Schauprogramm manuell von H- auf L-aktive Ansteuerung umarbeiten oder eben zentral vor der Ausgabe mit wenigen Programmzeilen. Dabei gewinnst du sogar noch einen (billigen) Showeffekt, wenn die Invertierung schaltbar/unterdrückbar ist.

Spalten und Zeilen bezog ich auf den Schaltplan.
Die Zeilen sollten ursprünglich mit H-Pegeln aus dem Controller befeuert werden; das geht wegen der Lötpanne nur noch mit L-Pegeln, daher die Negation der Ausgabepegel vom Controller für die Matrixzeilen.
Die Spalten-Transistoren sollten ursprünglich ebenfalls mit H-Pegeln gegen GND leitend gemacht werden, was nach meinem Änderungsvorschlag nurmehr mit L-Pegeln und gegen +5V möglich ist; die PNP-Emitter sollen ja zukünftig an +5V hängen.

- - - Aktualisiert - - -


Falls alles schon fertig ist, wäre am einfachsten alle Pads von verpolten LEDs von Leiterbahnen abschneiden und gekreutzt verdrahten.
Da gibt es nichts abzuschneiden: Die LEDs bilden das 3D-Würfelgitter.

Ryoken
16.02.2014, 21:39
Ich häte es nicht besserformulieren können.:cool:



Die Formulierung als "ein_bit XOR 1", also die Exclusiv-ODER-Verknüpfung mit 1 bewirkt eine Negation (NOT ein_bit). Ich muss das bei den PIC16ern so machen, weil deren Assembler keine Negation kennt; das Ergebnis ist dasselbe. Du kannst entweder das komplette Schauprogramm manuell von H- auf L-aktive Ansteuerung umarbeiten oder eben zentral vor der Ausgabe mit wenigen Programmzeilen. Dabei gewinnst du sogar noch einen (billigen) Showeffekt, wenn die Invertierung schaltbar/unterdrückbar ist.Gut, denn versuche ich das mal so.
Aber welchen Showeffekt kann ich denn da erzielen? Ohne invertierung tut sich halt einfach nix, oder?


Spalten und Zeilen bezog ich auf den Schaltplan.
Die Zeilen sollten ursprünglich mit H-Pegeln aus dem Controller befeuert werden; das geht wegen der Lötpanne nur noch mit L-Pegeln, daher die Negation der Ausgabepegel vom Controller für die Matrixzeilen.
Die Spalten-Transistoren sollten ursprünglich ebenfalls mit H-Pegeln gegen GND leitend gemacht werden, was nach meinem Änderungsvorschlag nurmehr mit L-Pegeln und gegen +5V möglich ist; die PNP-Emitter sollen ja zukünftig an +5V hängen.Axo.
Also lässt sich die Invertierung durch XOR-Verknüpfung nicht auf bestimmte Programmbereiche begrenzen, richtig? Die erfasst einfach die gesamte Ausgabe des µC und deshalb müssen die Transistoren "umgeschichtet" werden, damit die Steuerpins (=Kollektor in der Schaltung?) weiter entsprechend durchschalten. Sehe ich das so richtig?

- - - Aktualisiert - - -



Da gibt es nichts abzuschneiden: Die LEDs bilden das 3D-Würfelgitter.
Ich denke PICture meint das Layout der zweiten Platine, auf der der Würfel aufgesetzt und dann per Flachbandkabel mit der ersten verbunden werden soll - die werde ich aber wohl eh nicht verwenden, weil sie nicht in das Gehäuse passt, das ich verwenden will.
Der Würfel ist aber auch noch nicht fertig mit der Platine verlötet - hatte nach dem Zusammenbau mit Batterie und Messleitungen die einzelnen Pins getestet und dabei die Verpolung bemerkt.


Danke für Eure Hilfe
Gruß Ryoken

RoboHolIC
04.11.2014, 10:20
Hallo Ryoken.

Ich bin grad wieder über deinen Thread gestolpert. Bist du zum Erfolg gekommen?

Und dann musste ich noch mit schrecken lesen:

Die Formulierung als "ein_bit XOR 1", also die Exclusiv-ODER-Verknüpfung mit 1 bewirkt eine Negation (NOT ein_bit). Ich muss das bei den PIC16ern so machen, weil deren Assembler keine Negation kennt; das Ergebnis ist dasselbe.

Vorne und hinten stimm'ts, aber die Mitte ist eine Halbwahrheit: Der PIC16er Befehlssatz kennt sehrwohl eine byteweise Negation, obwohl sie verzichtbar wäre. Eigentlich erstaunlich bei einem RISC-Controllerkern, der ansonsten kaum vermeidbare Befehle kennt. Die bitweise Negation geht dort per XOR vonstatten bittoggeln ist nicht vorgesehen.

Jetzt aber genug des Offtopic.

Ryoken
15.01.2015, 09:11
Hallo RoboHolIC,

erstmal noch ein gutes neues Jahr, und sorry für die späte Antwort.
Wie man daran vielleicht schon erkennen kann, bin ich kaum dazu gekommen, mich mit dem Basteln zu beschäftigen.
Wenn doch, habe ich mich erstmal darum gekümmert, die regulären Platinen zum laufen zu bringen, die hatten ja auch noch so ihre Zipperlein.
Der verpolte Cube harrt also bisher noch seiner "Rettung".


Gruß Ryoken