schema
|
Voor mijn tijdstandaard in aanbouw wil ik een grote digitale klok in het frontpaneel opnnemen zodat ik vanuit de hele ruimte de tijd (tot in minuten) goed kan zien. Ik heb vier grote 7-segment display's die hier mooi voor te gebruiken zijn. De aansturing gebeurd vanuit een Arduino controller.
ontwerp overwegingen directe aansturing Vier display's met zeven segmenten zijn 28 uitgangen die benodigd zijn. Dit is inefficiënt omdat dit erg veel benodigde digitale uitgangen zijn. Gelukkig zijn er manieren om de draden te beperken. BCD driver chips De eerstvolgende logische stap is om BCD driver chips te gebruiken om met vier binaire bits één display aan te sturen. dan zijn er nog "maar" 16 digitale uitgangen nodig. Dit bespaart al 12 uitgangen! De HEF4511 en 74HC48 chips (of soortelijk) zijn hiervoor veel toegepast.
multiplexen Het is ook mogelijk om te "multiplexen". Hierbij zijn vier data draden nodig die naar álle displays gaan. En er zijn vier draden nodig waarvan elk draad één display activeert. Net nadeel is dat er altijd maar één van de vier display's aan staat. Door elk van de vier display's snel genoeg te schakelen oogt het alsof de display's tegelijk aan staan. Helaas kan dit toch als knipperend worden ervaren. Vandaar dat het nogal een primiteve oplossing is. Ik ben niet enthousiast over deze oplossing. Wel zijn er "maar" acht draden nodig.
schuifregister Een mooiere oplossing is om een schuifregister (EN: shift register) toe te passen zoals de polulaire 74HC595 of HEF4094. Hier wordt met een data, clock en latch draad het schuifregister serieel gevuld met bits. Afhankelijk van de grootte van het schuifregister kan het aantal bits variëren. Acht bits is redelijk standaard. Tien bit is ook mogelijk, maar deze zijn schaarser en vaak ook duurder. En door schuifregisters achter elkaar te plaatsen, kan de keten (nagenoeg) oneindig lang worden gemaakt. Door elk segment met een uitgang pen van het schuifregister te verbinden zijn er dus 28 pennen nodig, dus vier 8-bit schuifregisters. En er zijn maar drie draden nodig om het totaal aan te sturen. Een nadeel is dat er in de controller behoorlijk gerekent moet worden omdat de segment decodering in de software moet gebeuren. Het voordeel is wel dat je maximale vrijheid hebt om alle segmenten afzonderlijk aan te sturen.
schuifregister met BCD decoder Na puzzelen heb ik besloten om een combinatie te maken van twee 8-bit schuifregisters en vier BCD display drivers. Dan zijn er maar drie draden nodig om het totaal aan te sturen en voor elk display zijn vier BCD bits om het gewenste getal te verkrijgen. Er zijn dan zes chips in totaal nodig en er kan alleen 0...9 per display worden weergegeven en geen afzonderlijke aansturing van segmenten. Het voordeel is dat BCD data overzichtelijk is en eenvoudiger te programmeren in de controller. En dit display ontwerp kan achter elkaar worden geschakeld om meer displays te benutten zoals voor seconden aanduiding waarbij de drie data draden behouden blijven.
schema
Hierboven staat het schetsontwerp van de display module. Vanaf rechts wordt de data aangeboden aan de schuifregisters. Bij elke puls van de klok lijn wordt een 0 of 1 in het register “geschoven” dat aangeboden wordt op de data draad. Als de data pulsen laag blijven en de klokpuls door blijft gaan, “vallen” alle bits uiteindelijk “uit” het schuifregister en zijn er alleen maar nullen in het schuifregister. Door 0010001101011001 in het schuifregister te schuiven is de data voor de tijd 23:59 ingevoerd. Pas als er een puls op de latch lijn wordt gegeven worden de enen en nullen ofwel laag en hoog signalen uit de chips uitgevoerd naar de BCD chips. De laatste vier bits zijn 1001. Decimaal is dat 1*8 + 0*4 + 0*2 + 1*1 = 9. Door op draden D en A 5 Volt te plaatsen, geeft het display het getal 9 weer. Omdat er maar acht bits in de gekozen schuifregisters passen, “vallen de bits er aan de achterkant uit”. Door deze uitgang aan de ingang van een tweede schuif register te plaatsen wordt “het treintje” van bits doorgegeven. Zo kan er een keten ontstaan van meerdere bits met diverse toepassingen. In dit geval is het BCD data voor het display, maar zo kan je bijvoorbeeld ook de twee leds tussen de displays aan en uit schakelen. Om het timen van de data inzichtelijk te maken is hieronder een weergave gegeven van de tijd weergave van 23:59. Dit betekent dat elke minuut nieuwe data aangeboden moet worden om de display weergave te verversen. De weergave op het display blijft behouden totdat er nieuwe data met een latch puls wordt gegeven.
mechanische realisatie Hieronder staat het voorlopige resultaat. Het is met betrekkelijk eenvoudige productiemethoden uitgevoerd à la “engineering on the job”. Dit werkt snel, is goedkoop en geeft veel vrijheid. De print voor de schuifregisters is overigens nog niet geplaatst. Bij elke aansluiting vanaf de print naar de omgeving is een condensator geplaatst om te ontstoren. Ook is er bij elke voedingspen van alle chips een condensator geplaatst om EMC storing te voorkomen. Er zijn drie status leds geplaatst om te kunnen “debuggen”. Zo is er een indicatie voor de aanwezigheid van 5 VDC voedingsspanning, of de displays geactiveerd zijn en of de twee leds van uren/minuten scheiding geactiveerd is. Wordt vervolgd…
|
|