Verdrahtung mit Aderbeschriftung


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


PWM-Show mit ATtiny25


Mit einem Stückpreis von 1,50 Euro (Reichelt, 2024) eignet sich der kleine Mikrocontroller ATtiny25 von Microchip ideal für kleine Projekte, die nicht allzu viel kosten sollen. Der kleine Chip in einem PDIP-Gehäuse verfügt über acht Füße und stellt uns unter anderen drei PWM-Ausgänge zur Verfügung. Diese kommen in dem folgenden Versuch zum Einsatz. Mit ihnen wird eine RGB-Leuchtdiode gesteuert. Diese RGB-Leuchtdiode hat, anders als andere einfache Leuchtdioden vier Anschlüsse. Drei von ihnen betreffen die einzelnen Farbleuchtdioden, die die RGB-Leuchtdiode bilden. Sie sind für Farben Rot, Grün und Blau zuständig. Andere Farbtöne erreicht man, indem diese drei Grundfarben bei unterschiedlicher Lichtintensität miteinander kombiniert werden. Der vierte Anschluss wird mit Masse verbunden. Das Mischen der drei Grundfarbtöne übernimmt der Mikrocontroller ATtiny25. Um die Lichtintensität der einzelnen Leuchtdioden zu beeinflussen kommen drei PWM-Ausgänge des Mikrocontrollers zur Verwendung. In diesem Test überprüfen wir, ob der Hersteller sein Wort hält und die drei Ausgänge tatsächlich ohne weiteres funktionstüchtig sind. Ein PWM-Signal (Pulsweitenmodulation) ermöglicht sozusagen einen Übergang aus der digitalen Welt in die analoge. So kann man mit einem (digitalen) PWM-Signal eine Leuchtdiode dimmen oder die Drehzahl eines Motors steuern. In unserem Beispiel werden drei farbige Leuchtdioden (RGB), die in einem Gehäuse untergebracht sind, unabhängig voneinander gedimmt, wodurch eine breite Farbpalette gebildet werden kann. Wenn man z.B. alle drei LEDs, Rot, Grün und Blau, gleichzeitig mit gleicher Intensität zum Leuchten bringt, bekommt man als Ergebnis weiße Farbe.

ATtiny25

Attiny25

Der stromsparende 8-Bit-Mikrocontroller ATtiny25 stellt uns mit acht Beinchen sechs I/Os zur Verfügung. Zwei Anschlüsse werden der Spannungsversorgung geopfert. Für kleine Anwendungen nahezu die erste Wahl. Der Mikrocontroller kann mit einer Taktrate von 20 MHz arbeiten. Mit einer Spannungsversorgung bis zu 5 VDC und einem DIP-Gehäuse ist er in der Bastlerwelt äußerst willkommen. Dazu kommt, dass er mit Arduino IDE programmiert werden kann. Die Software Arduino IDE steht unter "https://www.arduino.cc/en/software" kostenlos zur Verfügung und kann auch von Anfänger schnell erlernt werden.

Pinbelegung

Pinbelegung

Technische Daten:

1. 8-Bit-Mikrocontroller
2. 2K Byte Programmspeicher
3. 128 Bytes Interner SRAM
4. 6 x I/O Pins
5. 4 x ADC
6. 10-Bit-ADC
7. 1 x SPI
8. 1 x I²C
9. 2 x 8-Bit Timer
10. 1 x analog Komparator
11. CPU-Takt 20MHz
12. Temperaturbereich -40 ... +85 °C
13. Versorgungsspannung +2,7 ... +5,5 VDC
14. Bauform PDIP-8,
15. Im System über SPI-Port programmierbar

Es gibt viele Methoden, wie man ein Programm in ATtiny laden kann. Man kann als Programmer u.a. auch Arduino nutzen. Hier ein Beispiel, wie man das Programm in ATtiny mithilfe von Arduino hochladen kann:

ATtiny mit Arduino programmieren


RGB-Leuchtdiode

RGB-Leuchtdiode

Eine RGB-Leuchtdiode ist eine Zusammensetzung von drei farbigen Leuchtdioden in einem Gehäuse. Die Farben der einzelnen Leuchtdioden sind Rot, Grün und Blau. Sie können in unserem Fall einen Wert von 0 bis 255 einnehmen. Durch Kombinationen der drei Farbkanäle können insgesamt 256³ = 16777216 Farbkombinationen gebildet werden.

Schaltplan

Schaltplan


Programm

// ********************************************************************
// PWM-Show mit RGB-Leuchtdiode und ATtiny25
// Arduino IDE 1.8.19
// ********************************************************************

int Leuchtdiode_ROT = 0;
int Leuchtdiode_GRUEN = 1;
int Leuchtdiode_BLAU = 4;

// ********************************************************************
void setup() {
    pinMode(Leuchtdiode_ROT, OUTPUT);
    pinMode(Leuchtdiode_GRUEN, OUTPUT);
    pinMode(Leuchtdiode_BLAU, OUTPUT);
}

// ********************************************************************
void loop() {
    
    for (int i=0; i<4; i++) {                    // LEDs Ein / Aus
        RGB_LED (255, 0, 0, 1000, 9);            // Rot Ein
        RGB_LED (0, 255, 0, 1000, 9);            // Grün Ein
        RGB_LED (0, 0, 255, 1000, 9);            // Blau Ein
    }

    for (int i=0; i<=255; i++) {                 // ROT dimmen
        RGB_LED (i, 0, 0, 10, i);               
    }    
    for (int i=255; i>=0; i--) {                  
        RGB_LED (i, 0, 0, 10, i);               
    }

    for (int i=0; i<=255; i++) {                 // GRÜN dimmen 
        RGB_LED (0, i, 0, 10, i);               
    }    
    for (int i=255; i>=0; i--) {                 
        RGB_LED (0, i, 0, 10, i);               
    }

    for (int i=0; i<=255; i++) {                 // BLAU dimmen
        RGB_LED (0, 0, i, 10, i);               
    }    
    for (int i=255; i>=0; i--) {                     
        RGB_LED (0, 0, i, 10, i);               
    }
        
    
    for (int i=0; i<=255; i++) {                 // CYAN --> WEISS
        RGB_LED (i, 255, 255, 10, i);               
    }
    for (int i=0; i<=255; i++) {                 // BLAU --> MAGENTA
        RGB_LED (i, 0, 255, 10, i);               
    }
    for (int i=0; i<=255; i++) {                 // GRÜN --> GELB
        RGB_LED (i, 255, 0, 10, i);               
    }
    for (int i=0; i<=255; i++) {                 // ROT --> MAGENTA
        RGB_LED (255, 0, i, 10, i);               
    }    
    for (int i=0; i<=255; i++) {                 // GRÜN --> CYAN
        RGB_LED (0, 255, i, 10, i);               
    }       
    for (int i=255; i>=0; i--) {                 // MAGENTA --> BLAU
        RGB_LED (i, 0, 255, 10, i);               
    }        
    for (int i=255; i>=0; i--) {                 // GELB --> ROT
        RGB_LED (255, i, 0, 10, i);               
    }        
}

// ********************************************************************
void RGB_LED (byte ROT, byte GRUEN, byte BLAU, int Wartezeit, int Zaehler) {
  
    analogWrite (Leuchtdiode_ROT, ROT);
    analogWrite (Leuchtdiode_GRUEN, GRUEN);
    analogWrite (Leuchtdiode_BLAU, BLAU);
    if (Zaehler == 0 or Zaehler == 255) {
      delay (2000);
    }
    delay (Wartezeit);
}
// ********************************************************************       

Das Programm hilft, die Funktionalität von PWM-Signalen zu veranschaulichen. Im ersten Teil werden die einzelnen farbigen Leuchtdioden, die in dem Gehäuse der RGB-Leuchtdiode „versteckt“ sind, einzeln ein- und ausgeschaltet. Jedem PWM-Ausgang kann ein Wert zwischen 0 und 255 zugeordnet werden. Mit einem „0“ wird die Leuchtdiode abgeschaltet, mit „255“ erfolgt volle Ansteuerung. In der ersten Aufgabe wird demnach die betreffende Leuchtdiode mit „255“ eingeschaltet, während die anderen mit „0“ ausgeschaltet bleiben.
Anschließend folgen in dem Programm sechs For()-Schleifen. Mit ihnen werden die einzelnen Leuchtdioden gedimmt. Mit dem steigenden PWM-Wert (Bereich 0-255) werden die Leuchtdioden heller, bei fallenden Werten wieder dunkler. Auf diese Weise kann eindeutig geprüft werden, ob die PWM-Ausgänge richtig ihre Aufgaben erledigen.
Anschließend übernehmen die Initiative sieben For()-Schleifen, die sich damit befassen, die Farben der einzelnen Leuchtdioden zu mischen. So kann man beobachten, welches Farbspektrum erzeugt wird, wenn z.B. bei eingeschalteten blauen und ausgeschalteten grünen Leuchtdiode, die rote Leuchtdiode ihre Helligkeit verändert.

Testschaltung

Testschaltung


Kurzvideo

Kurzvideo


ATtiny

Experimente mit den Mikrocontrollern ATtinys


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz