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.
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
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:
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
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.