- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Ansteuerung für RGB-LED-Matrix

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    Anzeige

    Praxistest und DIY Projekte
    Also das mit 32 Ports per Software PWM ansteuern sollte sich hinkriegen lassen.
    Mit 8MHz und 3LED's mit 256 Stufen hab ich sowas kürzlich geproggt.
    Das Programm müsste halt nur auf 30LED's aufgemotzt werden.
    Die PWM Frequenz liegt bei mir bei 125Hz, also hoch genug um nicht zu flackern. Mit 16MHz sollten somit auch 250Hz möglich sein
    Die einzelnen Farben müssten dann halt nacheinander abgearbeitet werden. Man käme dann also auf eine Flackerrate von ca. 83Hz pro Farbe.
    In 2 oder mehr Zeilen Multiplexen würd ich die Geschichte aber dann nicht mehr, sonst kommst Du unter 60Hz- also in den Flacker Bereich.
    Ich bin auch der Meinung das das eigentliche Problem die Datenmenge für mehrere solcher Einheiten sein wird.
    Bei der Portvergabe solltest Du auch an freie Pins für eine Adressierung und die Datenschnittstelle bedenken.
    Ein Controller mit noch mehr Ports (ATMEGA12 wär vermutlich noch besser, aber auch wesentlich teuerer.
    Wie möchtest Du den Datenaustausch machen SPI, I²C oder seriell ?
    Wie willst Du den Datentransfer managen? Adressierung, alle kriegen alles oder was komprimiertes?

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2006
    Beiträge
    19
    Danke für die vielen Antworten, so hab ich mir das vorgestellt
    Also kurz mal zu mir, ich bin 26 und studiere E-Technik. Bisher habe ich mit 8051 etc, PIC und C167 gearbeitet. Den 8051 in Assembler programmiert, den Rest in C.

    Zur Kostenfrage: Die 50 Cent waren nur für die PWM+Treiber gedacht. Platinen kann ich in der FH machen und die restlichen Kleinkram lass ich jetzt mal außen vor. Wenn ich also mit einem µC mit 32 I/O-Pins arbeite, heißt das ca 5€ pro Controller. Ihr habt Recht, wird wahrscheinlich teurer...

    Die Übertragung könnte wirklich ein Problem geben. Wenn ich von einer zeilenweisen Ansteuerung ausgehe wirds vielleicht einfacher. Ein Controller für 10 LEDs und 2 Pins für Datenübertragung. Also müssen pro Refresh max 30 Zeilen a 30bit Farbwerte geschrieben werden:

    30 Zeilen * 30bit * 100Hz = 90kBit/s + Overhead des Protokolls

    Das müsste mit I2C ja möglich sein, was meint ihr?

    edit:
    Gibts einen µC mit 32 (oder mehr) I/O-Pins der I2C oder CAN-Bus an Bord hat und ~5€ kostet?

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Ein PIC16F877 hat 33 I/O-Pins minus 2 für I2C: http://www.domnick-elektronik.de/aktuell.htm
    Der 80C166 hat 4 x 16 = 64 I/O-Pins + 10 Input TTL / analog
    oder mit I/O-Karten dazu noch viiiiiel mehr: http://www.domnick-elektronik.de/projekte.htm
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  4. #14
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    Hi!
    Ich denke ein Mega16 (2,55€) mit 16MHz könnte diese Aufgabe schon schaffen wenn man ordentlich optimiert beim Programmieren.
    Der hat 32 I/O's könnte somit 10 LED's zum laufen bringen. An seriellen Schnittstellen mangelts dem auch nicht...I²C, SPI und USART in Hardware.

    Dazu kommen dann noch 30 Kleinsignaltransistoren (BC547 3ct/St), 30 Vorwiderstände für die Basis (Kohleschicht 3,2ct/10 St) und 30 Vorwiderstände für die LED's (Kohleschicht 3,2ct/10St).
    Mach gesamt:
    Mega16..........2,55€
    Transistoren...0,90€
    Widerstände...1,92€
    ................................
    Gesamt:.........0,537€/LED

    Dann kommen noch einige Kleinteile dazu...je nach Fertigungskosten für die Leiterplatten halte ich 0,75€ bis 1€ / LED für realistisch.

    MfG

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    30 Kleinsignaltransistoren (BC547 3ct/St), 30 Vorwiderstände für die Basis (Kohleschicht 3,2ct/10 St) und 30 Vorwiderstände für die LED's
    Wenn Du dann noch 30 Z Dioden dazunimmst hast Du pro LED auch gleich eine Konstantstromquelle und kannst dadurch am Netzteil etwas sparen.
    Wenn Du die LED's trotzdem Multiplexen willst (könnte mit 3*9 LED's noch gehen) brauchst Du noch 3 PNP Transistoren mehr, kannst aber dann 27LED's
    mit allen Farben ansteuern.

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2006
    Beiträge
    19
    @Basti: Das hört sich doch sehr gut an

    Ich hab zwar leider kein Zugriff auf einen ATMega16-Board, aber auf ein C167-Board @ 20MHz. Da werde ich "einfach" testweise mal 32 Software-PWMs programmieren. Optimierter Code heißt bei dir wahrscheinlich Assembler, oder? Ich bin leider nicht mehr so fit in Assembler (ist schon 6-7 Jahre her, daß ich das letzte Mal Assembler programmiert hab) deswegen hätte ich mein Glück mit C versucht, oder hat das keinen Sinn?

    Gruss

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    Also ich hab meine 3 LED Routine so gebaut:

    Code:
    volatile unsigned char uc_tim0ovf;
    volatile unsigned char uc_red ;           //Helligkeitswert Rot 0...255
    volatile unsigned char uc_green ;         //Helligkeitswert Grün 0...255
    volatile unsigned char uc_blue ;          //Helligkeitswert Blau 0...255
    
    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
        uc_tim0ovf++ ;
        
        if (uc_tim0ovf==0) {
            uc_tim0ovf++;
            }
            if (uc_red>=uc_tim0ovf) {
               # asm ("SBI PORTC,0");        //Die Rote LED Port C,0
                }
            else
               # asm ("CBI PORTC,0");
                
            if (uc_green>=uc_tim0ovf) {
                #asm ("SBI PORTC,1");       //Die Grüne LED Port C,1
                }
            else
                #asm ("CBI PORTC,1");
            
            if (uc_blue>=uc_tim0ovf) {
                #asm ("SBI PORTC,2");      //Die Blaue LED Port C,2
                }
            else
                #asm ("CBI PORTC,2");
            
    }
    
    
    .....
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=OUT Func1=OUT Func0=OUT 
    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x07;
    
    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTD=0x00;
    DDRD=0x00;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 8000 kHz
    TCCR0=0x01;
    TCNT0=0x00;
    .....
    Das Ganze auf 30 Werte erweitern und bei Wunsch noch eine Multiplexroutine einbauen und fertig ist der Hanomag (die PWM).
    Was noch fehlt ist die Datenschnittstelle zum Datenempfang, sowie eine eventuell nötige Adressierung.
    Wie das Timingmässig hinhaut kannst Du ja nochmal mit AVR Studio 4 Austesten.
    Ein paar Zuweisungen fehlen in dem Code noch - ich hab CODEVISION AVR benutzt.

  8. #18
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    @sector:
    Wie heißt es immer so schön: Probieren geht über studieren. Die Hardware muss für einen ersten Software-Versuch ja auch noch nicht stehen...also wenn's nicht funktioniert hat man noch kein Geld ausgegeben!

    Wenn du in C fit bist, dann probiers doch mal in C...wenn's nicht tut kannst du dich immernoch in Asm reindenken.

    MfG

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress