Inhoudsopgave:

Een 8x8x8 LED-kubus bouwen en besturen met een Arduino - Ajarnpa
Een 8x8x8 LED-kubus bouwen en besturen met een Arduino - Ajarnpa

Video: Een 8x8x8 LED-kubus bouwen en besturen met een Arduino - Ajarnpa

Video: Een 8x8x8 LED-kubus bouwen en besturen met een Arduino - Ajarnpa
Video: Arduino opdracht 7 - LED besturen met de LDR 2024, Juli-
Anonim
Een 8x8x8 LED-kubus bouwen en besturen met een Arduino
Een 8x8x8 LED-kubus bouwen en besturen met een Arduino
Een 8x8x8 LED-kubus bouwen en besturen met een Arduino
Een 8x8x8 LED-kubus bouwen en besturen met een Arduino

jan 2020 bewerken:

Ik laat dit achterwege voor het geval iemand het wil gebruiken om ideeën te genereren, maar het heeft geen zin meer om een kubus te bouwen op basis van deze instructies. De LED-stuurprogramma-IC's worden niet meer gemaakt en beide schetsen zijn geschreven in oude versies van Arduino en Processing en worden niet meer uitgevoerd. Ik weet niet wat er moet veranderen om ze te laten werken. Ook resulteerde mijn bouwmethode in een wankele scheve puinhoop. Mijn suggestie is om de instructies op een andere instructable te volgen of een kit te kopen. Deze kubus kostte in 2011 ongeveer $ 50, je kunt nu een kit van ebay kopen voor ongeveer $ 20.

Originele introductie:

Er zijn veel LED-kubussen op Instructables, dus waarom nog een? De meeste zijn voor kleine kubussen bestaande uit 27 of 64 LED's, zelden groter omdat ze beperkt zijn tot het aantal beschikbare uitgangen op de microcontroller. Deze kubus zal 512 LED's zijn en heeft slechts 11 uitgangsdraden van de Arduino nodig. Hoe is dit mogelijk? Door gebruik te maken van de Allegro Microsystems A6276EA LED-driver.

Ik zal je laten zien hoe ik de kubus zelf heb gemaakt, het controllerbord en tot slot de code om het te laten schijnen.

Stap 1: Materialen

Materialen
Materialen

Alle onderdelen die je nodig hebt om de kubus te bouwen: 1 Arduino/Freeduino met Atmega168 of hogere chip 512 LED's, grootte en kleur zijn aan jou, ik gebruikte 3 mm rood 4 A6276EA LED-driverchips van Allegro 8 NPN-transistoren om de spanningsstroom te regelen, Ik gebruikte de BDX53B Darlington-transistor 4 1000 ohm weerstanden, 1/4 watt of hoger 12 560 ohm weerstanden, 1/4 watt of hoger 1 330uF elektrolytische condensator 4 24-pins IC-aansluiting 9 16-pins IC-aansluitingen 4 "x4" (of groter) stuk perfboard om alle onderdelen op te bergen, Een oude computerventilator Een oude floppycontrollerkabel Een oude computervoeding Veel aansluitdraad, soldeer, soldeerbout, vloeimiddel, al het andere om uw leven gemakkelijker te maken terwijl u dit maakt. 7 "x7" (of groter) stuk hout dat gebruikt is om de LED-soldeermal te maken Een mooie behuizing om je voltooide kubus te laten zien Mijn Arduino/Freeduino naar keuze is het Bare Bones Board (BBB) van www.moderndevice.com. De LED's zijn gekocht van eBay en kosten $ 23 voor 1000 LED's die vanuit China worden verzonden. De overige elektronica is gekocht bij Newark Electronics (www.newark.com) en zou slechts ongeveer $ 25 kosten. Als je alles moet kopen, kost dit project slechts ongeveer $ 100. Ik heb veel oude computerapparatuur, dus die onderdelen kwamen van de schroothoop.

Stap 2: Monteer de lagen

Stel de lagen samen
Stel de lagen samen
Stel de lagen samen
Stel de lagen samen
Stel de lagen samen
Stel de lagen samen
Stel de lagen samen
Stel de lagen samen

Hoe maak je 1 laag (64 LED's) van deze 512 LED-kubus: De LED's die ik kocht hadden een diameter van 3 mm. Ik besloot om kleine LED's te gebruiken om de kosten te verlagen en om de uiteindelijke grootte van de kubus klein genoeg te maken om op mijn bureau of plank te zitten zonder het bureau of de plank volledig over te nemen. Ik tekende een 8x8-raster met ongeveer 0,6 inch tussen de lijnen. Dit gaf me een kubusgrootte van ongeveer 4,25 inch per zijde. Boor gaten van 3 mm waar de lijnen samenkomen om een mal te maken die de LED's vasthoudt terwijl u elke laag soldeert. De A6276EA is een stroomafvoerapparaat. Dit betekent dat het een pad naar aarde biedt in plaats van een pad naar de bronspanning. U moet de kubus in een gemeenschappelijke anodeconfiguratie bouwen. De meeste kubussen zijn gebouwd als gewone kathode. De lange zijde van de LED is over het algemeen de anode, controleer die van jou om zeker te zijn. Het eerste wat ik deed was elke LED testen. Ja, het is een lang en saai proces en je kunt het overslaan als je wilt. Ik zou liever de tijd besteden om de LED's te testen dan een dode plek in mijn kubus te vinden nadat deze is gemonteerd. Ik vond 1 dode LED van de 1000. Niet slecht. Knip 11 stukken solide, niet-geïsoleerde aansluitdraad af tot 5 inch. Plaats 1 LED in elk uiteinde van een rij in uw mal en soldeer vervolgens de draad aan elke anode. Plaats nu de resterende 6 LED's in de rij en soldeer die anodes aan de draad. Dit kan verticaal of horizontaal zijn, het maakt niet uit zolang je alle lagen op dezelfde manier doet. Als u klaar bent met elke rij, knipt u het overtollige lood van de anodes af. Ik liet ongeveer 1/8 . Herhaal totdat je alle 8 rijen hebt voltooid. Soldeer nu 3 stukjes aansluitdraad over de rijen die je zojuist hebt gemaakt om ze allemaal in één stuk te verbinden. Ik heb vervolgens de laag getest door 5 volt aan te sluiten om het draadrooster aan te sluiten via een weerstand en de aardedraad naar elke kathode aan te raken. Vervang alle leds die niet branden. Verwijder voorzichtig de laag van de mal en leg deze opzij. Als u de draden buigt, hoeft u zich geen zorgen te maken, maak ze zo goed mogelijk recht. Het is heel gemakkelijk te buigen. Zoals je op mijn foto's kunt zien, had ik veel gebogen draden. Gefeliciteerd, je bent 1/8 klaar. Maak nog 7 lagen. OPTIONEEL: om te solderen de lagen samen (stap 3) gemakkelijker, terwijl elke volgende laag zich nog in de mal bevindt, buig de bovenste kwart inch van de kathode 45 tot 90 graden naar voren. Hierdoor kan de draad rond de LED komen waarmee hij is verbonden en wordt het solderen veel Doe dit niet met je eerste laag, we verklaren dat één de onderste laag is en de leads moeten s rechtdoor.

Stap 3: Monteer de kubus

Monteer de kubus
Monteer de kubus
Monteer de kubus
Monteer de kubus

Hoe alle lagen aan elkaar te solderen om een kubus te maken: Het harde deel is bijna voorbij. Plaats nu voorzichtig een laag terug in de mal, maar oefen niet te veel druk uit, we willen hem kunnen verwijderen zonder hem te buigen. Deze eerste laag is het bovenvlak van de kubus. Plaats nog een laag bovenop de eerste, lijn de draden uit en begin met solderen. Ik vond het het gemakkelijkst om eerst hoeken te maken, dan buitenrand en dan binnenrijen. Blijf lagen toevoegen totdat je klaar bent. Als je de draden voorgebogen hebt, zorg er dan voor dat je de laag met rechte draden voor het laatst bewaart. Het is de onderkant. Ik had iets te veel ruimte tussen elke laag, dus ik kreeg niet echt een kubusvorm. Niet erg, ik kan er mee leven.

Stap 4: De controllerkaart bouwen

De controllerkaart bouwen
De controllerkaart bouwen
De controllerkaart bouwen
De controllerkaart bouwen
De controllerkaart bouwen
De controllerkaart bouwen

Hoe de controllerkaart te bouwen en aan uw Arduino te bevestigen: Volg het schema en bouw de kaart zoals u wilt. Ik plaatste de controllerchips in het midden van het bord en gebruik de linkerkant om de transistors vast te houden die de stroom naar elke laag van de kubus regelen, en gebruikte de rechterkant om de connectoren vast te houden die van de controllerchips naar de kathodes van de LED-kolommen. Ik vond een oude computerventilator van 40 mm met een vrouwelijke molex-connector om hem op een computervoeding aan te sluiten. Dit was ideaal. Een kleine hoeveelheid luchtstroom over de chip is handig en ik heb nu een gemakkelijke manier om 5 volt te leveren aan de controller-chips en de Arduino zelf. In het schema is RC de stroombeperkende weerstand voor alle LED's die op elke A6276EA zijn aangesloten. Ik gebruikte 1000 ohm omdat het 5 milliampère aan de LED levert, genoeg om het te verlichten. Ik gebruik High Brightness, geen Super Brite LED's, dus het stroomverbruik is lager. Als alle 8 LED's in een kolom tegelijk branden, is het slechts 40 milliampère. Elke uitgang van de A6276EA kan 90 milliampère aan, dus ik ben ruim binnen bereik. RL is de weerstand die is aangesloten op de logica- of signaalkabels. De werkelijke waarde is niet erg belangrijk zolang deze bestaat en niet te groot is. Ik gebruik 560 ohm omdat ik er een heleboel beschikbaar had. Ik gebruikte een vermogenstransistor die tot 6 ampère aankan om de stroom naar elke laag van de kubus te regelen. Dit is overdreven voor dit project, omdat elke laag van de kubus slechts 320 milliampère zal trekken als alle LED's branden. Ik wilde ruimte om te groeien en zou het controllerbord later voor iets groters kunnen gebruiken. Gebruik de transistor van het formaat die bij uw behoeften past. De condensator van 330 uF over de spanningsbron is er om kleine spanningsschommelingen weg te werken. Aangezien ik een oude computervoeding gebruik, is dit niet nodig, maar ik liet het in voor het geval iemand een 5 volt-muuradapter wil gebruiken om hun kubus van stroom te voorzien. Elke A6276EA-controllerchip heeft 16 uitgangen. Ik had geen andere geschikte connector, dus soldeerde ik draden aan een aantal 16-pins IC-sockets en die zal ik gebruiken om de controllerkaart op de kubus aan te sluiten. Ik sneed ook een IC-socket doormidden en gebruikte het om de 8 draden te verbinden die de transistors verbinden met de lagen van de kubus. Ik knipte ongeveer 5 inch van het uiteinde van een oude floppy-kabel om te gebruiken als de connector voor de Arduino. De floppy kabel is 2 rijen van 20 pinnen, het kale Bones Board heeft 18 pinnen. Dit is een zeer goedkope manier (gratis) om de Arduino op het bord aan te sluiten. Ik trok de lintkabel uit elkaar in groepen van 2 draden, stripte de uiteinden en soldeerde ze aan elkaar. Hiermee kunt u de Arduino in beide rijen van de connector aansluiten. Volg het schema en soldeer de connector op zijn plaats. Vergeet niet om de 5 volt- en aardedraden voor de connector te solderen om de Arduino van stroom te voorzien. Ik ben van plan dit controllerbord voor andere projecten te gebruiken, dus het modulaire ontwerp werkt goed voor mij. Als je de verbindingen hard wilt maken, is dat prima.

Stap 5: Bouw de vitrine

Bouw de vitrine
Bouw de vitrine
Bouw de vitrine
Bouw de vitrine
Bouw de vitrine
Bouw de vitrine
Bouw de vitrine
Bouw de vitrine

Laat je eindproduct er mooi uitzien: ik vond deze houten kist bij Hobby Lobby voor $ 4 en dacht dat het perfect zou zijn, omdat het binnen ruimte heeft om alle draad vast te houden en het ziet er ook mooi uit. Ik heb deze rood gekleurd, dezelfde vlek die ik op mijn computerbureau heb gebruikt, zodat ze bij elkaar passen. Teken een raster van dezelfde grootte als het raster dat wordt gebruikt voor de soldeermal (0,6 inch tussen de lijnen). Boor gaten om de draden door de bovenkant te laten en boor een ander gat achter het rooster voor de laag/vlakdraden (van de transistors in stap 4). Ik heb op de harde manier geleerd dat het erg moeilijk is om 64 leads op een rij te zetten om door kleine gaatjes te gaan. Ik heb uiteindelijk besloten om alle gaten een beetje groter te boren om het proces sneller te laten verlopen. Ik heb uiteindelijk een.2-boor gebruikt. Nu de kubus bovenop het scherm zit, buig je de hoekgeleiders zodat de kubus op zijn plaats blijft terwijl je de draden bevestigt. Zorg ervoor dat u alle draden in de juiste volgorde bevestigt. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64En sluit de draden aan tussen de lagen (aangeduid met 'vlakken' op het schema) en de transistors. De transistor op Arduino pin 6 is de bovenste laag van de kubus. Als je de draden verkeerd hebt, is het enigszins corrigeerbaar binnen de code, maar het kan veel werk vergen, dus probeer ze in de juiste volgorde te krijgen. Oké, alles is gebouwd en klaar voor gebruik, laten we wat code halen en het uitproberen.

Stap 6: Coderen

Code
Code

De code voor deze kubus is anders gedaan dan de meeste, ik zal uitleggen hoe je deze kunt aanpassen. De meeste kubuscode maakt gebruik van directe schrijfacties naar de kolommen. De code zegt dat Kolom X moet worden aangestoken, dus geef het wat sap en we zijn klaar. Dat werkt niet bij het gebruik van controllerchips. De controllerchips gebruiken 4 draden om met de Arduino te praten: SPI-in, Clock, Latch en Enable. Ik heb de Enable-pin (pin 21) via een weerstand (RL) geaard, zodat de output altijd is ingeschakeld. Ik heb de Enable nooit gebruikt, dus ik heb het uit de code gehaald. SPI-in is de data die binnenkomt van de Arduino, Clock is een timingsignaal tussen de twee terwijl ze praten, en Latch vertelt de controller dat het tijd is om nieuwe data te accepteren. Elke output voor elke chip wordt bestuurd door een 16-bits binair getal. Bijvoorbeeld; het verzenden van 1010101010010010 naar de controller zou ervoor zorgen dat elke andere LED op de controller oplicht. Je code moet alles doorlopen wat nodig is voor een display en dat binaire getal bouwen en het vervolgens naar de chip sturen. Het is makkelijker dan het klinkt. Technisch gezien is het een heleboel bitsgewijze optelling, maar ik ben slecht in bitsgewijze wiskunde, dus ik doe alles in decimalen. Decimaal voor de eerste 16 bits zijn als volgt: 1 << 0 == 1 1 << 1 == 2 1 << 2 == 4 1 << 3 == 8 1 << 4 == 16 1 << 5 == 32 1 << 6 == 64 1 << 7 == 128 1 << 8 == 256 1 << 9 == 512 1 << 10 == 1024 1 << 11 == 2048 1 << 12 == 4096 1 << 13 == 8192 1 << 14 == 16384 1 << 15 == 32768 licht uitgangen 2 en 10 op, je telt de decimalen (2 en 512) bij elkaar op om 514 te krijgen. Stuur 514 naar de controller en uitgangen 2 en 10 gaan branden. Maar we hebben meer dan 16 LED's, dus het wordt iets moeilijker. We moeten display-informatie bouwen voor 4 chips. Dat is net zo eenvoudig als het bouwen voor 1, doe het gewoon nog 3 keer. Ik gebruik een globale variabele array om de controlecodes vast te houden. Op die manier is het gewoon makkelijker. Zodra u alle 4 de displaycodes gereed heeft om te verzenden, laat u de vergrendeling vallen (zet deze op LAAG) en begint u met het verzenden van de codes. De laatste dien je eerst op te sturen. Verzend de codes voor chip 4, dan 3, dan 2, dan 1, zet dan de Latch weer op HOOG. Omdat de Enable-pin altijd met aarde is verbonden, wordt de weergave onmiddellijk gewijzigd. De meeste kubuscode die ik op Instructables heb gezien, en het web in het algemeen, bestaat uit een gigantisch blok codeset om een vooraf ingestelde animatie uit te voeren. Dat werkt prima voor kleinere kubussen, maar het kost veel geheugen om 512 bits binair op te slaan, te lezen en te verzenden elke keer dat u de weergave wilt wijzigen. De Arduino kon niet meer dan een paar frames aan. Dus schreef ik een aantal eenvoudige functies om de kubus in actie te laten zien die gebaseerd zijn op berekeningen in plaats van vooraf ingestelde animaties. Ik heb een kleine animatie toegevoegd om te laten zien hoe het wordt gedaan, maar ik laat het aan jou over om je eigen displays te bouwen.cube8x8x8.pde is de Arduino-code. Ik ben van plan door te gaan met het toevoegen van functies aan de code en zal het programma regelmatig bijwerken.matrix8x8.pde is een programma in Processing om je eigen displays te bouwen. Het eerste gegeven nummer gaat in patroon1, het tweede in patroon2, enz. De datasheet voor de A6276EA is beschikbaar op:https://www.allegromicro.com/en/Products/Part_Numbers/6276/6276.pdf

Stap 7: laat je handwerk zien

Laat je handwerk zien
Laat je handwerk zien

Je bent klaar, nu is het tijd om van je kubus te genieten. Zoals je kunt zien, kwam mijn kubus er een beetje scheef uit. Ik ben echter niet zo happig om er nog een te bouwen, dus ik zal ermee leven dat het krom is. Ik heb een paar dode hoeken waar ik naar moet kijken. Het kan een slechte verbinding zijn, of ik heb misschien een nieuwe controller-chip nodig. Ik hoop dat deze Instructable je inspireert om je eigen kubus of een ander LED-project te bouwen met behulp van de A6276AE. Plaats een link in de reacties als je er een bouwt. Ik heb geprobeerd te beslissen waar ik vanaf hier heen zou gaan. Het controllerbord zal ook een 4x4x4 RGB-kubus aansturen, dus dat is een mogelijkheid. Ik denk dat het leuk zou zijn om een bol te maken en zoals ik de code heb geschreven, zou het niet al te moeilijk zijn om te doen.

Aanbevolen: