Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

5x5x5 LED-kubus

Componenten en benodigdheden

Arduino Mega 2560
× 1
Blauwe LED
× 125
NTE85 NPN-transistor
× 5
22 gauge vertind koperdraad
Gebruikt om lagen aan elkaar te binden en laagkathodes naar het moederbord te brengen
× 1
180 ohm weerstand, 1/4 watt
× 25
Prototypingbord van 9 cm x 15 cm
× 1
330 ohm weerstand, 1/4 watt
× 5
Optioneel - 9 volt voeding voor MEGA
USB-kabel zal deze kubus goed van stroom voorzien, maar als je hem wilt aansluiten, hier is een voorraad
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Hot lijmpistool (algemeen)
Blue Tack
Gebruikt om LED's op hun plaats te houden tijdens het solderen

Apps en online services

Arduino IDE

Over dit project

INLEIDING

De meeste mensen houden van LED-kubussen, maar grote, zoals 8x8x8, zijn veel werk, zowel om te bouwen als om te programmeren. Kleine (3x3x3 of 4x4x4) zijn eenvoudig te bouwen, zowel omdat ze geen grote aantallen LED's nodig hebben, maar ook omdat ze geen externe hardware nodig hebben, zoals schuifregisters en high-side drivers om de kubus te beheren. Maar ze zijn echt niet hetzelfde als een grote kubus.

Mijn doel vanaf het begin van dit project was om een ​​eenvoudig te bouwen kubus te maken en vervolgens genoeg coole software te maken om het mogelijk te maken om te genieten van het gevoel van een grote kubus zonder al het gesjouw dat nodig is om een ​​grote te bouwen. Dit is dus een kubus van 5x5x5 die rechtstreeks kan worden gevoed door een Arduino Mega zonder schuifregisters van andere hardware dan 5 transistors (gebruikt om een ​​hele laag - de kathodes van 25 LED's, naar aarde te trekken). Waarom wil ik ploegenregisters vermijden? Omdat ze absoluut verschrikkelijk zijn om draad te gebruiken. (Ik heb het geprobeerd.) Je moet echt een pc-bord ontwerpen en fabriceren als je ze wilt gebruiken.

Ik heb in het verleden heel veel code geschreven voor grote kubussen, dus ik heb een aantal bestaande kubusanimaties aangepast om op deze 5x5x5 kubus te draaien.

Dit is eigenlijk de eerste van drie projecten zoals deze. De 2e is er. Het is een 5x5x5 RGB-kubus, die qua ontwerp erg lijkt op deze kubus, maar moeilijker te bouwen is. De derde is hier - een kubus van 8x8x8 in één kleur, opnieuw met minimale externe hardware.

OPMERKING:Voordat ik hier verder ga, ben ik niet de eerste die een 5x5x5 kubus voorstelt die wordt aangedreven door een MEGA. MEGA DAS publiceerde hier in 2017 een soortgelijk project. De hardware in beide projecten is nagenoeg identiek. Ik had de . niet gezien vroegere totdat ik aan dit schrijven begon, dus mijn pinouts zijn anders, en de weerstand waarden zijn anders, maar verder is de hardware bijna identiek. Ik publiceer dit vooral omdat ik veel ervaring heb met het schrijven van kubussoftware. Ik hoop dat mijn software een paar mensen zal overtuigen om een ​​kubus te bouwen die anders niet zou doen!

De video hierboven is een sinusgolffunctie waarbij de amplitude op de z-as staat en de tijd wordt weergegeven als horizontale afstand vanaf het midden van de kubus. Het is een geweldige klassieker op een grote kubus, maar niet slecht op deze 5x5x5!

Ik voeg twee andere video's toe. Beide zijn van hetzelfde - 14 animaties voor de 5x5x5 kubus. Ik weet niet zeker wat beter is, dus ik heb ze allebei toegevoegd. En voor het geval het niet duidelijk is, zien kubussen er in het echt veel cooler uit dan op video!

HARDWARE

De Mega heeft veel digitale IO-pinnen. We gebruiken 5 om de kathodes voor elke laag laag te trekken, en 25 meer om de anodes hoog te drijven voor elk van de 25 LED's in een laag. Met deze benadering heeft de Mega eigenlijk genoeg IO-pinnen om een ​​kubus van 6x6x6 te bouwen. Maar de andere overweging, als we proberen dit eenvoudig te houden, is macht. De huidige limieten van de Mega zijn 40 ma per pin en 200 ma in totaal op alle pinnen. Blauwe LED's hebben een voorwaartse daling van ongeveer 3 volt, onze gewone kathodetransistors laten nog eens 0,7 volt vallen. Dus met een voeding van 5 volt en een weerstand van 180 ohm trekt elke LED 7,2 ma. 25 LED's/laag trekt 180ma als ze allemaal tegelijk aan zijn. We zetten maar één laag tegelijk aan, dus we voldoen aan alle huidige beperkingen van de Mega, zolang we NPN-transistoren gebruiken om alle kathodes in een laag naar aarde te trekken. De basisstroom naar een van die transistoren voegt nog eens 5 ma toe aan de totale belasting van de Mega, maar we houden het totaal onder de 200 ma. op ongeveer 185 mtr. Dus, om alle bovenstaande redenen, heb ik 180 ohm weerstanden gekozen om te koppelen met onze LED's.

De bovenstaande grafiek laat zien hoe Mega's digitale pinnen verbinding maken met de kubus. De pinnen 22 - 26 zijn de 5 pinnen die de transistors aandrijven die de kathodes van de LED's met aarde verbinden. Pinnen 27-51 gaan via de 180 ohm weerstanden naar de anodes van 25 LED's in een laag.

Je vraagt ​​​​je misschien af ​​​​waarom deze pinout-regeling er enigszins verwarrend uitziet. Mijn software gebruikt directe poorttoegang in plaats van digitalWrites om de anodes te configureren, dat wil zeggen om elk van de 25 LED's in een laag aan of uit te zetten. Dit bespaart veel tijd en betekent dat de LED's langer branden dan wanneer u veel tijd besteedt aan digitalWrites. Dus de pin-outs zijn zo gerangschikt dat ze helpen bij het organiseren van verwijzingen naar deze digitale poorten in plaats van de daadwerkelijke pin-nummers. Daarover meer als we bij de software komen.

KUBUS CONSTRUCTIE

Er zijn veel meningen over het bouwen van een kubus, ongeacht de grootte. De taak is vervelend, ongeacht uw aanpak. En je moet zowel voorzichtigheid als geduld betrachten om een ​​goed resultaat te krijgen. Ik zal je laten zien hoe ik deze heb gebouwd, maar er zijn andere instructies online als je dat liever hebt.

De constructie van deze kubus begint met het vormen van lood en het aan elkaar solderen van LED's in kolommen van 5. Vervolgens worden panelen gevormd door 5 kolommen aan elkaar te solderen en tenslotte wordt de kubus gevormd door 5 panelen aan elkaar te solderen. Mensen die nog nooit een kubus hebben gebouwd, realiseren zich niet hoe moeilijk het is om een ​​perfecte kubus te bouwen. Kleine fouten in aansluithoeken stapelen zich snel op en zelfs kleine verschillen in afstand zijn gemakkelijk zichtbaar. Dus de stap van het vormen van lood is van cruciaal belang. Als je de tijd neemt en het goed doet, krijg je geen perfecte kubus, maar wel een redelijk ogende.

De anodes zijn de langere leiding van de LED en ze gaan naar beneden, maar ze moeten naar de zijkant van de LED worden gebogen, zodat verticale rijen anodes van de LED's aan elkaar kunnen worden gesoldeerd. De anodeoffset en de kathodeleiding moeten 90 graden ten opzichte van elkaar zijn, zoals op deze foto's te zien is.

Persoonlijk vind ik het vormen van lood zowel vervelend als moeilijk voor de handen, dus ik leid van 25 LED's en bouw dan een paneel. Je hebt een soort mal nodig om zowel de kolommen als de panelen te maken. Ik doe dit jiggen met BlueTack, een herbruikbare lijm. LED's kunnen in de BlueTack worden gedrukt en blijven op hun plaats terwijl de kolommen en panelen worden gesoldeerd. Met de inkepingen kunt u deze processen herhalen met exact dezelfde tussenruimten. Het is belangrijk om de eerste keer alles heel goed op te meten. Ik gebruikte een afstand van 0,6 inch tussen LED's in alle drie de richtingen, waardoor mijn voltooide kubus in een bord kon worden gestoken met een standaard gatafstand van 0,1 inch.

Een opmerking over het aan elkaar solderen van LED's :De nachtmerrie van elke kubusmaker is om een ​​kubus te laten bouwen en dan een koude soldeerverbinding aan de binnenkant van de kubus te ontdekken waar je er niet meer bij kunt! Zorg er tijdens het werken voor dat de soldeerverbindingen goed zijn op elke kolom met LED's die u bouwt.

Wanneer u klaar bent met elk paneel, is het tijd om het te testen. Nogmaals, we doen dit omdat het rampzalig zou zijn om te weten te komen over een koude soldeerverbinding of een slechte LED wanneer uw kubus klaar is!

In software heb ik een kleine schets toegevoegd die een paneel test. Om deze test uit te voeren, moet u de 5 verticale anodedraden aansluiten op 5 weerstanden (330 ohm of iets dergelijks) en vervolgens die weerstanden op pinnen 40-44 (de kolom 0 anodepinnen). Verbind vervolgens de 5 kathodepennen met de pennen die normaal worden gebruikt om kathoden aan te drijven, pennen 22-26. Een goed paneel ziet eruit zoals de video hierboven. (Terzijde:we gebruiken nog geen transistors om de kathodes aan te drijven, dus deze kleine testroutine stuurt de kathoden laag om een ​​LED in te schakelen. Zodra de transistors zijn geïnstalleerd, zullen we het tegenovergestelde doen, dwz de kathodes hoog aandrijven om te draaien op de transistors die vervolgens de kathodes laag trekken.)

Wanneer we 5 panelen hebben gebouwd en getest, zijn we klaar om de kubus te monteren, maar eerst moeten we het bord voorbereiden door alle vereiste weerstanden en transistors in te voegen en aan te sluiten.

Ik plaatste de 180 ohm weerstanden direct naast elke anodekolom en de kathodetransistors en hun basisweerstanden in de ruimte tussen de kubus en de Mega. Nogmaals, de afstand tussen de anodekolommen is 0,6 inch in beide richtingen, dus 5 lege gaten in het bord tussen elk gat met een anodekolom.

Dit is een goed moment om de Arduino op het bord te zetten. Het kan op afstandhouders worden gemonteerd als je die hebt. Ik heb eigenlijk gewoon een klein stukje plastic en een beetje lijm gebruikt om mijn Mega ongeveer 1/4 inch boven het bord te bevestigen.

Op dit punt zijn elk panelen aan het moederbord bevestigd. Zorg ervoor dat elke anodekolom echt in het juiste gat zit voordat je gaat solderen, want zelfs een fout met één gat zal merkbaar zijn in je voltooide kubus. En zorg ervoor dat alle panelen op dezelfde manier gericht zijn, d.w.z. alle kathodedraden komen aan dezelfde kant uit.

Vervolgens moeten we de panelen op elke laag met elkaar verbinden, zodat alle kathoden in een bepaalde laag met elkaar verbonden zijn. Dit wordt bereikt met een rechtgebogen stuk vertind koperdraad dat de vijf kathodelijnen in een laag met elkaar verbindt.

Vervolgens zijn we klaar om de kathodes van elke laag op het moederbord aan te sluiten. De cirkels in de afbeelding hierboven laten zien waar de kathodes van elke laag zijn verbonden en naar de collector van een transistor zijn gebracht. Nogmaals, we gebruiken een rechtgebogen stuk vertind koperdraad.

Nadat je alle kabels van de weerstanden op de Mega hebt aangesloten, zijn we eindelijk klaar om de voltooide kubus te testen. In de software heb ik een schets gegeven om de kubus te testen. Het zal elke LED in de kubus in volgorde kort oplichten. Aangezien je elk paneel al hebt getest, zullen alle problemen die je op dit moment ziet waarschijnlijk betrekking hebben op de recente kathodeverbindingen. Het kan dus zijn dat een laag niet werkt of een deel van een laag. Nogmaals, je zult waarschijnlijk een koude soldeerverbinding hebben als er een probleem is.

SOFTWARE

De status van elke LED in de kubus wordt bepaald door een 5x5x5 globale bytearray genaamd kubus[ ][ ][ ]. Een 1 betekent dat de LED aan is, een 0 dat deze uit is. Dus alle animaties van de kubus worden gemaakt door enen en nullen in kubus[ ][ ][ ].

Het hart van elke kubussoftware is de getimede onderbreking die de kubus ververst. Mijn interrupt-routine wordt gestart in setup() en bevindt zich dan helemaal aan het einde van het programma. Het wordt elke 10 msec aangeroepen. en duurt ongeveer 6 msec. om de kubus op te frissen. Dat laat 4 msec. tussen elke verversing voor uitvoering van dingen in de hoofdlus.

Tijdens het vernieuwen wordt elke laag 1,2 msec ingeschakeld. Verversen gebeurt 100 keer per seconde. Dus elke afzonderlijke LED die is ingeschakeld, brandt 120 ms/seconde of een inschakelduur van 12%. De 100 keer per seconde is snel genoeg om het menselijk oog het als continu aan te laten zien, en de inschakelduur van 12% is genoeg om de LED's redelijk helder te laten oplichten, niet zo veel alsof ze continu aan waren, maar verrassend dichtbij dat .

Om de verversingscyclus zo kort mogelijk te houden en om de tijd dat de LED's branden te maximaliseren, vermijden we tijdverspilling met digitalWrite-commando's en gebruiken we directe poorttoegang om de pinnen te configureren. Als je naar de code in de interruptroutine kijkt, zie je 25 afzonderlijke regels waar deze directe poort wordt gebruikt, wat er niet erg mooi uitziet, maar in feite veel, veel sneller is dan de paar regels code die zouden kunnen zijn gebruikt om de pinnen in te stellen met digitalWrite.

De loop() roept eenvoudig elke animatie aan, doorloopt de lijst en begint dan opnieuw. De animaties staan ​​elk in de eigen subroutine. Sommige animatieroutines noemen andere routines. Zie de code zelf voor uitleg van de verschillende animaties. Er zijn ook een paar hulpprogramma-routines die door alle animaties worden gebruikt, zoals clearCube() die alle LED's uitschakelt, of copyDown(); die de inhoud van elke laag verschuift naar de laag eronder en vervolgens de bovenste laag wist.

Er zijn drie verschillende schetsen die u kunt downloaden. De belangrijkste bevat de 15 animaties die je in de video hebt gezien. De paneeltest en kubustestschetsen worden alleen gebruikt om je kubus tijdens de bouw te testen.

Code

  • 5x5x5 Cube-software
5x5x5 Cube-softwareArduino
Bevat 3 schetsen:Paneeltest, Kubustest,
en The Show met alle 15 animaties
Geen voorbeeld (alleen downloaden).

Aangepaste onderdelen en behuizingen

Volledig optioneel, maar als je toegang hebt tot een 3D-printer en de doos wilt die je in mijn video's ziet, hier is het:

Schema's

Een schematisch overzicht van de basis Toont exacte verbindingen tussen kubus en Mega

Productieproces

  1. Strijkplank
  2. Rubik's Cube
  3. Printplaat
  4. Surfboard
  5. Light Emitting Diode (LED)
  6. RaspiRobot Board V2
  7. Eenvoudige Word Clock (Arduino)
  8. Coffin Dance Melody
  9. Smart Touch-schakelbord
  10. Arduino met Bluetooth om een ​​LED te bedienen!
  11. Eenvoudige UNO-rekenmachine