USB RGB-LED Projekt
USB RGB-LED Projekt
So leute jetzt hat mich das Lötfieber gepackt,
zwar ned ganz so schlimm wie die schweinegrippe aber es macht mich nächtelang wach
ich habe folgendes vor und hoffe dass ich von euch ansätze, hilfe und vll nen schaltplan bekomm
ich will eine stehende usb verbindung zu meiner (noch nicht vorhandenen) platine, diese verarbeitet mein protokoll was ich ihr vom pc aus geben würde, und diese steuert dann ca. 16 parallel (und alle in der selben farbe leuchtende) RGB-LEDs.
das ganze soll nur leuchten wenn der PC an ist und sollte falls möglich mit der vom usb gegebenen internen 5 volt spannung laufen.
vielen dank im voraus und das meine lötsucht ned verdampft
zwar ned ganz so schlimm wie die schweinegrippe aber es macht mich nächtelang wach
ich habe folgendes vor und hoffe dass ich von euch ansätze, hilfe und vll nen schaltplan bekomm
ich will eine stehende usb verbindung zu meiner (noch nicht vorhandenen) platine, diese verarbeitet mein protokoll was ich ihr vom pc aus geben würde, und diese steuert dann ca. 16 parallel (und alle in der selben farbe leuchtende) RGB-LEDs.
das ganze soll nur leuchten wenn der PC an ist und sollte falls möglich mit der vom usb gegebenen internen 5 volt spannung laufen.
vielen dank im voraus und das meine lötsucht ned verdampft
Re: USB RGB-LED Projekt
ich hatte vor n Monat oder so, auch Lötfieber und habe mir über das COM-Port ein 8er-Lauflicht gebaut.
Gute Tips dazu gabs bei Google, PB an sich hilft dir ja bei der Platine recht wenig ^^
Stichworte : LED+Cube, Lauflicht
Es ist jedoch meist so das man den Port nur zur Steuerung nutzt und die Stromversorgung von außen kommt.
Vorallem hängt es vom LED Typ ab, ob der, mit der ehr geringen Stromstärke aus dem USB Port, überhaupt leuchtet.
Gute Tips dazu gabs bei Google, PB an sich hilft dir ja bei der Platine recht wenig ^^
Stichworte : LED+Cube, Lauflicht
Es ist jedoch meist so das man den Port nur zur Steuerung nutzt und die Stromversorgung von außen kommt.
Vorallem hängt es vom LED Typ ab, ob der, mit der ehr geringen Stromstärke aus dem USB Port, überhaupt leuchtet.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: USB RGB-LED Projekt
hey stargate danke für deine antwort aber ich will eig. weniger ein lauflicht sondern eher individuell einstellbare farben durch die rgb's
sprich rot(0-255) grün(0-255) blau(0-255)
hoffe dass ich hier trotz dass es wenig mit pb zu tun hat weitere hilfe bekomm
sprich rot(0-255) grün(0-255) blau(0-255)
hoffe dass ich hier trotz dass es wenig mit pb zu tun hat weitere hilfe bekomm
Re: USB RGB-LED Projekt
Das sollte so schwer nicht sein. Man nehme einen netten Mikroprozessor (bspw. einen Tiny von Atmel) und schließe ihn über die serielle Schnittstelle an den PC. Serielle Schnittstelle? Ja! Da kann man ganz wunderbar einen USB-Seriell-Umwandler (gibts bei reichelt.de für 'nen schmalen 5er) anschließen. Aletrnativ kann man das USB-gedöns auch auf den µC packen, im Anfängerforum gibts aktuell einen Thread, in dem ein so beschriebener µC über eine dll angesprochen wird.
Nun zur Programmierung des µC: Weil wir hier in einem Basic-Forum sind, schlage ich mal die kostenlose Version von Bascom vor. Mit der schafft man mühelos eine Software-PWM mit drei Kanälen, nämlich für Rot-, Grün- und Blaukanal. Da der Ausgangspin des µC die LEDs nicht direkt treiben kann, sollte man mittels Transistoren/Mosfets die Ausgänge verstärken. Dann überlegt man sich noch ein Übertragungsprotokoll, beispielsweise überträgt man bei jeder Änderung der Farbe ein "RxxxGxxxBxxx", nach dem der µC die Farbe über das Pulse/Pause-Verhältnis anzeigt.
Das entsprechende PureBasic-programm kümmert sich nur noch um die gewünschte Farbe, beispielsweise kann man mit bestimmten Farben auf Ereignisse wie Maileingang etc. reagieren oder einfach lustige Farbwechselspiele kreieren.
Nun zur Programmierung des µC: Weil wir hier in einem Basic-Forum sind, schlage ich mal die kostenlose Version von Bascom vor. Mit der schafft man mühelos eine Software-PWM mit drei Kanälen, nämlich für Rot-, Grün- und Blaukanal. Da der Ausgangspin des µC die LEDs nicht direkt treiben kann, sollte man mittels Transistoren/Mosfets die Ausgänge verstärken. Dann überlegt man sich noch ein Übertragungsprotokoll, beispielsweise überträgt man bei jeder Änderung der Farbe ein "RxxxGxxxBxxx", nach dem der µC die Farbe über das Pulse/Pause-Verhältnis anzeigt.
Das entsprechende PureBasic-programm kümmert sich nur noch um die gewünschte Farbe, beispielsweise kann man mit bestimmten Farben auf Ereignisse wie Maileingang etc. reagieren oder einfach lustige Farbwechselspiele kreieren.
PB 4.41 | Win7 64bit
Re: USB RGB-LED Projekt
Nun hat mich doch die Lust gepackt, das ganze mal umzusetzen. PC-seitig wird dieser Code zum Testen laufen:
Bei Fragen, Meinungen und Anregungen bitte hier posten!
MfG Crawler
Code: Alles auswählen
Enumeration
#MainWindow
#BTN_Quit
#BTN_Connect
#BTN_Disconnect
#TB_Red
#TB_Green
#TB_Blue
#STR_Output
#Port
#CB_Port
EndEnumeration
Procedure Ausgabe (r, g, b, c)
Output.s = "R"+RSet(Str(r), 3, "0")+"G"+RSet(Str(g), 3, "0")+"B"+RSet(Str(b), 3, "0")+"E"
SetGadgetText (#STR_Output, Output)
If StartDrawing (WindowOutput (#MainWindow))
Box (130, 20, 80, 80, RGB(r, g, b))
StopDrawing ()
EndIf
If c=1
WriteSerialPortString (#Port, Output)
EndIf
EndProcedure
ProgramName.s = "RGB-Control"
OpenWindow (#MainWindow, #PB_Any, PB_Any, 230, 300, ProgramName.s)
ButtonGadget (#BTN_Quit, 120, 270, 100, 20, "Ende")
ButtonGadget (#BTN_Connect, 120, 200, 100, 20, "Verbinden")
ButtonGadget (#BTN_Disconnect, 120, 225, 100, 20, "Trennen")
DisableGadget (#BTN_Disconnect, 1)
TrackBarGadget (#TB_Red, 20, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
TrackBarGadget (#TB_Green, 50, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
TrackBarGadget (#TB_Blue, 80, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
StringGadget (#STR_Output, 10, 270, 100, 20, "")
ComboBoxGadget(#CB_Port, 120, 175, 100, 20)
For i = 1 To 20
If OpenSerialPort (#Port, "COM"+Str(i), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 64, 64)
AddGadgetItem(#CB_Port, -1,"COM" + Str(i))
CloseSerialPort (#Port)
EndIf
Next
SetGadgetState (#CB_Port, 0) ; Voreinstellung für seriellen Port
Repeat
Event = WaitWindowEvent (10)
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case #BTN_Quit
Quit=1
Case #BTN_Connect
If OpenSerialPort (#Port, GetGadgetText (#CB_Port), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 64, 64)
connect = 1
DisableGadget (#BTN_Connect, 1)
DisableGadget (#CB_Port, 1)
DisableGadget (#BTN_Disconnect, 0)
EndIf
Case #BTN_Disconnect
connect = 0
DisableGadget (#BTN_Connect, 0)
DisableGadget (#CB_Port, 0)
DisableGadget (#BTN_Disconnect, 1)
CloseSerialPort (#Port)
Case #TB_Red
ValueRed=GetGadgetState (#TB_Red)
Case #TB_Green
ValueGreen=GetGadgetState (#TB_Green)
Case #TB_Blue
ValueBlue=GetGadgetState (#TB_Blue)
EndSelect
EndIf
Ausgabe (ValueRed, ValueGreen, ValueBlue, Connect)
Until Quit
MfG Crawler
PB 4.41 | Win7 64bit
Re: USB RGB-LED Projekt
Hallo, Razor!
Das ist eine typische Mikrokontrollerschaltung, was Du da willst. Zum Glück bin ich Mikrokontrollersystementwickler und mache das seit Jahren.
1. Bedarfsanalyse: 16 RGB-LEDs per µC in allen Farben und Helligkeiten steuern können, µC-Ansteuerung per USB oder RS232 durch den PC.
2. Analyse: Da RGB-LEDs je nach Typ vier oder sechs Anschlüsse haben und eine oder zwei gemeinsame Anoden oder Kathoden, mußt Du die LEDs mitsamt Vorwiderständen parallelschalten. Da ich jetzt zuwenige Informationen von Dir habe, gehe ich einfach mal von 5V Betriebsspannung und gemeinsamer Kathode der LEDs aus. Diese zusammengefaßten Anoden bestromst Du dann mit einem P-Kanal-MOSFET, dessen Ansteuerung digital per PWM direkt vom µC kommt.
Da drei Farben zu regeln sind, brauchst Du auch drei voneinander unabhängige PWM-Ausgänge. Hier bieten sich die Atmel an, die ich für solche kleinen Sachen gerne verwende. Da Du 256 Stufen jeder Farbe regeln willst und kein Geflacker brauchen kannst, berechnest Du jetzt die Zählerbetaktung: 25Hz unterste Grenze für die Wiederholrate mal 256 Stufen = 6,4kHz. Solche µC schaffen locker das Hunderfache, also warum nicht? Wir wählen eine Zählertaktung von ca. 1MHz, der µC braucht dann 1/2/4/8/16MHz. Da wir keine hochgenaue Taktung brauchen, schenken wir uns den Quarz und nehmen einen internen RC-Oszillator, der auf einer der o.g. Frequenzen arbeitet. Gewählt wird irgendein Mega, z.B. ATmega48-20PU (hier in der DIL-Bauform, da ich einfach mal annehme, daß Du über keine SMD-Löterfahrung verfügst). Der µC muß zu den drei PWM-Ausgängen auch noch einen RS232-Anschluß haben. Das ist bei allen Atmels der Fall.
3. Synthese: Ein ATmega48-20PU auf STK500, drei MOSFETs vom Typ IRF9510, 48 Vorwiderstände (an die If der LEDs angepaßt) und 16 LEDs vom Typ Kingbright LF5WAEMBGMBW o.ä.. Jetzt kommt noch der RS232-USB-Wandler FT232BL (für Dich leider in TQFP-32-Gehäuse) mit entsprechender äußerer Beschaltung, s. Datenblatt. Zum Schluß brauchen wir noch eine Stromversorgung mit 5V und ca. 1A. Die Versorgung kann nicht aus dem USB-Anschluß erfolgen, da dieser bei 500mA abdankt und die ausgegebene Spannung laut USB-Definition ab 3,4V betragen darf - die blauen LEDs würden dann gar nicht mehr leuchten.
4. Firmware: Die gestaltet sich zum Glück recht einfach: Einstellung auf int. Taktung mit 8MHz, alle Anschlüsse auf Eingänge mit Pull-up schalten, die drei Zeitgeber initialisieren auf 1MHz Taktung, Teilung durch 256, negierte Ausgabe. RS232 initialisieren, dann Eintritt in die Hauptschleife. Dort nur noch das zurechtgebastelte Protokoll auswerten und die neuen Daten in die Zeitgeberregister schreiben. Fertig.
5. Anmerkungen: Ich empfehle, einen separaten RS232-USB-Wandler zu verwenden, den Du übrigens auch für die Programmierung des µC im STK500 brauchst. Das spart einiges an Lötarbeit, obwohl Du dann noch einen Pegelkonverter brauchst, etwa einen MAX232. Alternativ kannst Du auch den Datenverkehr parallel abwickeln. Dann brauchst Du nur einen anderen USB-Wandler, FT245BL und hast auch keine Probleme mit der Anpassung des RS232-Taktes. Dafür allerdings benötigst Du 12 Leitungen am µC, die der ATmega48-20PU aber hat. Dies ist der von mir generell verwendete Anschluß von USB an einen ATmega, da ich hauptsächlich mit wesentlich schnelleren Steuerungen zu tun habe.
Noch Fragen, Kienzle?
Grüße - WPo
Das ist eine typische Mikrokontrollerschaltung, was Du da willst. Zum Glück bin ich Mikrokontrollersystementwickler und mache das seit Jahren.
1. Bedarfsanalyse: 16 RGB-LEDs per µC in allen Farben und Helligkeiten steuern können, µC-Ansteuerung per USB oder RS232 durch den PC.
2. Analyse: Da RGB-LEDs je nach Typ vier oder sechs Anschlüsse haben und eine oder zwei gemeinsame Anoden oder Kathoden, mußt Du die LEDs mitsamt Vorwiderständen parallelschalten. Da ich jetzt zuwenige Informationen von Dir habe, gehe ich einfach mal von 5V Betriebsspannung und gemeinsamer Kathode der LEDs aus. Diese zusammengefaßten Anoden bestromst Du dann mit einem P-Kanal-MOSFET, dessen Ansteuerung digital per PWM direkt vom µC kommt.
Da drei Farben zu regeln sind, brauchst Du auch drei voneinander unabhängige PWM-Ausgänge. Hier bieten sich die Atmel an, die ich für solche kleinen Sachen gerne verwende. Da Du 256 Stufen jeder Farbe regeln willst und kein Geflacker brauchen kannst, berechnest Du jetzt die Zählerbetaktung: 25Hz unterste Grenze für die Wiederholrate mal 256 Stufen = 6,4kHz. Solche µC schaffen locker das Hunderfache, also warum nicht? Wir wählen eine Zählertaktung von ca. 1MHz, der µC braucht dann 1/2/4/8/16MHz. Da wir keine hochgenaue Taktung brauchen, schenken wir uns den Quarz und nehmen einen internen RC-Oszillator, der auf einer der o.g. Frequenzen arbeitet. Gewählt wird irgendein Mega, z.B. ATmega48-20PU (hier in der DIL-Bauform, da ich einfach mal annehme, daß Du über keine SMD-Löterfahrung verfügst). Der µC muß zu den drei PWM-Ausgängen auch noch einen RS232-Anschluß haben. Das ist bei allen Atmels der Fall.
3. Synthese: Ein ATmega48-20PU auf STK500, drei MOSFETs vom Typ IRF9510, 48 Vorwiderstände (an die If der LEDs angepaßt) und 16 LEDs vom Typ Kingbright LF5WAEMBGMBW o.ä.. Jetzt kommt noch der RS232-USB-Wandler FT232BL (für Dich leider in TQFP-32-Gehäuse) mit entsprechender äußerer Beschaltung, s. Datenblatt. Zum Schluß brauchen wir noch eine Stromversorgung mit 5V und ca. 1A. Die Versorgung kann nicht aus dem USB-Anschluß erfolgen, da dieser bei 500mA abdankt und die ausgegebene Spannung laut USB-Definition ab 3,4V betragen darf - die blauen LEDs würden dann gar nicht mehr leuchten.
4. Firmware: Die gestaltet sich zum Glück recht einfach: Einstellung auf int. Taktung mit 8MHz, alle Anschlüsse auf Eingänge mit Pull-up schalten, die drei Zeitgeber initialisieren auf 1MHz Taktung, Teilung durch 256, negierte Ausgabe. RS232 initialisieren, dann Eintritt in die Hauptschleife. Dort nur noch das zurechtgebastelte Protokoll auswerten und die neuen Daten in die Zeitgeberregister schreiben. Fertig.
5. Anmerkungen: Ich empfehle, einen separaten RS232-USB-Wandler zu verwenden, den Du übrigens auch für die Programmierung des µC im STK500 brauchst. Das spart einiges an Lötarbeit, obwohl Du dann noch einen Pegelkonverter brauchst, etwa einen MAX232. Alternativ kannst Du auch den Datenverkehr parallel abwickeln. Dann brauchst Du nur einen anderen USB-Wandler, FT245BL und hast auch keine Probleme mit der Anpassung des RS232-Taktes. Dafür allerdings benötigst Du 12 Leitungen am µC, die der ATmega48-20PU aber hat. Dies ist der von mir generell verwendete Anschluß von USB an einen ATmega, da ich hauptsächlich mit wesentlich schnelleren Steuerungen zu tun habe.
Noch Fragen, Kienzle?
Grüße - WPo
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Re: USB RGB-LED Projekt
Sehr ausführlich beschrieben, so hätte ich das auch gemacht. Leider ist dieses Projekt bei mir etwas ins Stocken geraten. Mein Seriell-USB-Adapter verweigert seinen Dienst unter Win7 64bit...
PB 4.41 | Win7 64bit
Re: USB RGB-LED Projekt
Ja, die billigen Dinger leiden an meist sehr schlechter Treiberunterstützung. Sogar mit Linux hat man da öfters Probleme.Crawler hat geschrieben:Mein Seriell-USB-Adapter verweigert seinen Dienst unter Win7 64bit...
Windoof 7 ist recht neu. 64-Bit-Unterstützung ist auch nicht gerade vordringlich für die Billigwandler-Hersteller. Vielleicht auf die Herstellerseite gehen und mal nachsehen/nachfragen, ob es neue Treiber gibt? Sonst noch beim Händler anfragen. Wenn der Kundenbindung und Kundendienst großschreibt, wird er Dir weiterhelfen wollen. Ob er kann, ist wieder ein anderes Paar Stiefel.
Gruß - WPo
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Re: USB RGB-LED Projekt
Ein neuer USB-Seriell-Wandler hat seinen Dienst aufgenommen, ich hoffe, dass es mit dem Projekt bald weitergeht.
Falls es jemanden interessiert: Ein Delock 61460 funktioniert unter Win7 64bit prima, der ist mit einem FT232-Chip ausgestattet. Die verbaute blaue LED nervt zwar etwas, aber darüber werde ich mal hinwegsehen.
Guten Rutsch euch allen!
Falls es jemanden interessiert: Ein Delock 61460 funktioniert unter Win7 64bit prima, der ist mit einem FT232-Chip ausgestattet. Die verbaute blaue LED nervt zwar etwas, aber darüber werde ich mal hinwegsehen.
Guten Rutsch euch allen!
PB 4.41 | Win7 64bit
Re: USB RGB-LED Projekt
Heißen Dank, Crawler!
Mit dem neuen Konverter haste dann auch wieder Zugriff auf ein STK500 oder was auch immer Du benutzt. Die LED nervt? Schwarzes Klebeband nehmen! An meinem Multimedia-PC reichte ein aufgemaltes Gitter mit 'nem CD-Markierer auf der Blende.
Um das Projekt sinnvoll weiterzubearbeiten, sollte sich R4z0r1989 mal wieder melden. Seine Netzpräsenz ist nicht erreichbar. Urlaub?
Die Firmware dazu würde ich entweder in C oder Asm schreiben. Die dürfte so einfach sein, daß Asm nichts ausmacht. Es ist ja auch meine bevorzugte Sprache. Basic ist zwar im Prinzip möglich, aber (aus meiner Sicht) zuviel Aufwand für fast keinen Effekt.
Naja, mal sehen, wie's weitergeht...
Gruß - WPo
Mit dem neuen Konverter haste dann auch wieder Zugriff auf ein STK500 oder was auch immer Du benutzt. Die LED nervt? Schwarzes Klebeband nehmen! An meinem Multimedia-PC reichte ein aufgemaltes Gitter mit 'nem CD-Markierer auf der Blende.
Um das Projekt sinnvoll weiterzubearbeiten, sollte sich R4z0r1989 mal wieder melden. Seine Netzpräsenz ist nicht erreichbar. Urlaub?
Die Firmware dazu würde ich entweder in C oder Asm schreiben. Die dürfte so einfach sein, daß Asm nichts ausmacht. Es ist ja auch meine bevorzugte Sprache. Basic ist zwar im Prinzip möglich, aber (aus meiner Sicht) zuviel Aufwand für fast keinen Effekt.
Naja, mal sehen, wie's weitergeht...
Gruß - WPo
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.