EM2 Microcontroller Project LED cube Door: Dennis Koster Klas: Tc202 Studentnummer: 536496 Docent: Jan Derriks & Ruud Slokker Versie 1.0 (12-1-2009)
Inhoudsopgave Inleiding 3 De onderdelen 4 t/ m 6 Het concept achter de LED kubus in dit verslag 7 De schakelschema s 8 t/m 10 De software 11 Bijlagen 12 - Broncode Demonstratie patroon - Schakelschema s (volledig) - Dataschema Arduino Mega - Dataschema transistoren Blz. 2
Inleiding Wat is een LED kubus? Een LED kubus is een kubus die is opgebouwd uit LED s. Deze LED kunnen oplichten en patronen vormen. De LED s zijn niet direct naast elkaar geplaatst en dus ontstaat er een raster van LED s die zo de kubus vormen. Doordat deze LED s op 3 dimensionale wijze ten opzichte van elkaar geplaatst zijn, kunnen er bijzondere effecten gemaakt worden. Waarom een LED kubus? Een LED kubus heeft geen andere functie dan het doen oplichten en dimmen van LED s. Des al niet te min is een LED kubus een leerzaam project voor het leren en begrijpen van microcontrollers. De aansturing van een LED kubus vraagt het toepassen van algoritmes, en basiskennis van elektronica en schakelschema s. Wat is er nodig voor een LED kubus? De basis van een LED kubus bestaat uit LED s, een microcontroller en software. Afhankelijk van de gebruikte microcontroller kan het nodig zijn om een extra stroom circuit te maken voor het doen oplichten van de LED als de microcontroller niet genoeg stroom kan leveren voor de LED s. Over de LED kubus in dit verslag Het ontwerpen van het schakelschema is gedaan met behulp van 2 breadboards. De kubus en uiteindelijke schakelschema zijn op prototype boards gesoldeerd(dit is niet verplicht). De LED kubus die in dit verslag wordt omschreven heeft de volgende eigenschappen en onderdelen: 4x4x4 LED s (totaal 64) kleur - rood 1 Arduino Mega microcontroller 1 externe voedingsbron (12 Volt adapter) voor Arduino Mega Het versterken van de stroom naar de LED is wenselijk omdat de microcontroller niet voldoende stroom kan leveren. Daarom zijn extra transistors en weerstanden nodig. Een voedingsbron van minimaal 7 Volt is nodig voor het leveren van stroom aan de Arduino. Een USB poort van een computer is niet voldoende. Drukknoppen en schakelaars zijn optioneel en worden in de omschreven kubus niet gebruikt. Het schakelschema voor het aansluiten van een drukknop is wel bijgevoegd. 3
De onderdelen LED s: In een kubus van 4x4x4 zitten 64 LED s. De LED s die zijn gebruikt hebben de volgende eigenschappen: 5 mm (formaat) 2.25 Volt 20 ma Kleur: rood - diffuus Dit type LED is relatief goedkoop. Het gebruiken van fellere (duurdere) LED s zal de licht effecten beter kunnen tonen. Als er andere LED s worden gebruikt houdt dan rekening met het voltage!. a) Symbool schakelschema b) Werkelijk uiterlijk Weerstanden: In de kubus is maar 1 soort vaste weerstand gebruikt: Waarde van weestand: 1kΩ (= 1000 Ohm) Type: Metaalfilm weerstand Tolerantie: 1% Symbool schakelschema Werkelijk uiterlijk 4
Regelbare weestand De regelbare weerstand is nodig om de LED s van stroom te kunnen voorzien. Door de versterker is de geleverde spanning (Volt) hoger dan de LED s kunnen hebben (2.25 V). Deze regelbare weerstand verlaagt de spanning om de LED veilig te kunnen aansturen. De regelbare weerstand maakt het tevens mogelijk om een externe voedingsbron van verschillende waardes te gebruiken. Specificaties regelbare weerstand (potmeter): Belastbaarheid 0.25 W Weerstand 1kΩ Tolerantie 30% a) b) c) a) Schakelschema symbool versie 1 (europa) b) Schakelschema symbool versie 2 (amerika) c) Werkelijke weergave Transistors De transistors worden gebruikt voor het versterken van het signaal (meer stroom leveren voor de LED s) zodat de Arduino minder belast wordt. De specificaties: Type: BC337 / 16 Uitvoering: NPN Ic = 1A Uceo = 45V Behuizing TO 92 Schakelschema symbool Werkelijke weergave 5
Arduino Mega De Arduino Mega is een opensource hardware microcontrolleer gebaseerd op de ATmega 1280. Het aantal aansluiting aan deze microcontroller zijn voldoende om de kubus en knoppen te kunnen aansturen. Houdt er rekening mee indien er een andere microcontroller wordt gebruikt deze moet beschikken over 21 uitgangen waarvan er 1 PWM aansturing heeft, en 20 poorten 5 Volt moeten kunnen uitsturen. Minimaal 1 Analoge ingang of 1 extra digitale ingang is nodig voor de knop. Opsomming van de specificaties van deze microcontroller: Microcontroller ATmega1280 Operating Voltage 5V Input Voltage (recommended) 7-12V Input Voltage (limits) 6-20V Digital I/O Pins 54 (of which 14 provide PWM output) Analog Input Pins 16 DC Current per I/O Pin 40 ma DC Current for 3.3V Pin 50 ma Flash Memory 128 KB of which 4 KB used by bootloader SRAM 8 KB EEPROM 4 KB Clock Speed 16 MHz 6
Het concept achter de LED kubus in dit verslag In de kubus zitten 64 LED s. Het is mogelijk om 1 LED aan of uit te zetten met 1 poort op de Arduino Mega. Maar de Microcontroller bevat niet genoeg uitgangen voor het aansturen van 64 LED s. Daarom is er een techniek genaamd multipliceren nodig om het aantal poorten die nodig zijn te verminderen zonder functionaliteit te verliezen. In de kubus wordt multipliceren alleen toegepast op de LED s. Het is ook mogelijk om de transistoren te multipliceren en zo het aantal benodigde poorten te verminderen. Voorbeeld: Een raster van 4x4 bevat 16 LED s. Dit zou 16 aansluitingen nodig hebben om elke LED individueel aan te sturen. Maar door middel van multipliceren zou dit aantal terug gebracht kunnen worden naar 8. Om dit voor elkaar te krijgen moet er 4 kolommen gemaakt worden van LED s. In elk van deze kolommen zijn de anodes met elkaar verbonden. Horizontaal worden er rijen van 4 gemaakt. In deze rijen zijn de cathodes van de LED s met elkaar verbonden. C1 C2 C3 C4 a1 a2 a3 a4 Op de kruispunten bevinden zich de LED s. Om 1 LED aan te zetten moet een anodepin hoog zijn en een cathodepin laag(verbonden met aarde). Stel we zetten c4 laag en a1 hoog dan zal dit de LED op positie a1,c4 aan zetten. Op deze manier is het mogelijk elke LED aan of uit te zetten met 8 pins. Hoe zit het dan in een kubus: Door in de kubus van elke verdieping alle cathodes met elkaar te verbinden zijn er 4 pinnen nodig voor de 4 verdiepingen. De LED s die een kolom vormen worden met elkaar verbonden via de anodes. 7
De schakelschema s Hieronder vindt u de schakelschema s voor het maken van de LED kubus. De onderdelen die zijn gebruikt zijn in het hoofdstuk De onderdelen nader omschreven. Het schakelschema voor het aansturen van 1 kolom. Voor elke verdieping is 1 transistor nodig die een verbinding maakt tussen de cathode van de LED en ground (GND). Deze transistor wordt aangestuurd door de Arduino en door de transistors van de 4 verdiepingen samen naar 1 PWM gestuurde transistor te leiden, kan de kubus met behulp van 1 PWM pin worden gedimd. De regelbare weerstand (pot) is er om verschillende spanningsbronnen te kunnen gebruiken bij de kubus. De spanningsregulator in de Arduino is niet 100% precies en zal bij een hogere ingangsspanning ook een hogere uitgangsspanning geven. Voor elke kolom is 1 transistor nodig, 16 in totaal voor alle kolommen (4x4 =16). 8
Het schakelschema voor 1 verdieping van de kubus. Zo als u kunt zien zijn op 1 verdieping alle cathodes met elkaar verbonden met bijvoorbeeld de transistor die door pin 50 van de Arduino wordt aangestuurd. Om een kubus van 4x4x4 te maken dient het bovenstaande schema ook 4 keer gemaakt te worden. 1 Manier om de LED s te buigen en met elkaar te verbinden is als volgt: *let op de platte kant van de LED 9
Zorg ervoor (bijvoorbeeld met een paperclip) dat alle cathodes op 1 verdieping met elkaar verbonden zijn. Het handigst om de kolommen aan te sluiten op de Arduino is als volgt: Kolom 1 pin 24 Kolom2 pin 25 Kolom3 pin 26 Kolom4 pin 27 Kolom5 pin 28 Kolom6 pin 29 Kolom7 pin 30 Kolom8 pin 31 Kolom9 pin 32 Kolom10 pin 33 Kolom11 pin 34 Kolom12 pin 35 Kolom13 pin 36 Kolom14 pin 37 Kolom15 pin 38 Kolom16 pin 39 Op deze manier corresponderen de pinnen van de Arduino op een logische wijze met de kolommen van de kubus. 10
De software De Ardiuno Mega wordt geprogrammeerd in de taal c. De ontwikkelaars hebben extra functionaliteit (library s en bootloaders) toegevoegd om het programmeren te versimpelen. Het programmeren van de Arduino kunt u het beste doen met de ontwikkelomgeving die door de ontwikkelaars is gemaakt. Deze is te vinden op de website: http://www.arduino.cc/ Door de kubus met de Arduino te verbinden zoals vermeldt staat in het hoofdstuk schakelschema s, is het mogelijk met relatief simpele/kleine stukken progamma code patronen te maken. Het volgende programma laat stuk voor stuk de kolommen oplichten: byte anodepin = 24, cathodepin = 50, i = 0, PWMPin = 7; void setup(){ for(i = 22; i < 54; i++){ pinmode(i, OUTPUT); } for(i=50, i<54; i++){ digitalwrite(i,high); } analogwrite(pwmpin, 255); //* } void loop(){ for (i = 24, i<40; i++){ digitalwrite(i, HIGH); delay(500); digitalwrite(i, LOW); } } *Het is belangrijk de regel analogwrite(pwmpin, 255); niet te vergeten, anders zal de kubus helemaal niet oplichten. In de bijlage vindt u de gehele broncode voor de kubus. 11
Bijlagen Broncode De Broncode in de bijlage is de code die wordt gebruikt bij het demonstreren van de LED kubus Schakelschema s (volledig) Hier vindt u de schakelschema s waaruit de kubus bestaat inclusief het schema voor het toevoegen van knoppen Datasheet Arduino Mega Deze datasheet bevat informatie met betrekking tot pinfuncties, voltages en formaten. Dataschema transistoren Dit dataschema is toegevoegd indien er andere LED s worden gebruikt om zo de juiste weerstand te kunnen bepalen. CD-ROM met broncode Bevat de broncode in.c en.txt formaat. De eagle files van de schakelschema s, en dit document in.doc,.docx en.pdf formaat. 12