LoveBox - rutan av kärlek (3 / 6 steg)
Steg 3: Scheman & programvara
Scheman för detta projekt är ganska enkel.
Det finns mikrokontroller, siffran "driver" och displayen och några motstånd att begränsa nuvarande mellan mikrokontroller och displayen.
Det finns 14 anoder (positiv) på displayen, en för varje segment på en siffra och 8 katoder (negativ), en för varje siffra.
Anoderna är anslutna till 14 tillgängliga portar på mikrokontroller via 330 ohm motstånd att minska strömmen till en nivå som displayen inte drabbas av. U/R = I, det är spänningen dividerat med motstånd ger ström. Strömförsörjningen är 6 volt och visa sig det släppa som av 1.8 volt så motståndet av 330 ohm kommer 4,2 volt kvar att ta hand om. 4.8/330=0.012 (12 mA).
Databladet för bildskärmar säger 2 mA per segment, och jag väljer att tolka det som som snittet. Eftersom endast en siffra lyser samtidigt varje siffra tänds endast för 1/8 av den totala tiden. Så för att få 2 mA av genomsnittet nuvarande är kan drivas av 16 mA (2 mA gånger 8).
Även om detta inte är enligt specifikationer finns både säkerhetsmarginaler och displayen används endast periodvis och det om borde bryta - som verkligen bryr sig? ;-)
Den 74HTC138 som driver anoderna är verkligen missbrukas. Om alla segment på en siffra lyser alla 14 segmentet vill tvinga 12 mA ner genom de fattiga "138. Detta skulle vara en total ström 168 mA och det är långt långt långt bortom vad det kan hantera sjunka.
Beroende på exakt modell av chip angivna diskbänken nuvarande är mer som 5-10 mA. Om jag kort krets utdata och mäta det den kan sjunka ca 40 mA med en ökad spänning.
Nu, alla segmenten brukar tändas på samma gång, men 40 mA gräns kommer att nås ganska ofta. Lyckligtvis nog ljusstyrkan på displayen är ganska konstant oavsett om det blir 4 mA eller 15 mA, så det spelar ingen roll så mycket.
Det fungerar, men det är en riktigt slarvig och oprofessionellt design. Det kan vara mycket bättre, men eftersom jag inte hade någon bättre delar till hands jag använde bara whats arbetade.
Programvara
Programvaran är också väldigt enkel.
När den microcontroller startar är läses ett frö för slumptalsgeneratorn från den beständiga eeprom minne som det är, generera ett nytt slumptal och sedan skriva tillbaka nya fröet till eeprom. Utan att hålla reda på fröet skulle att slumpgenerator generera samma siffra för varje start. Knappast inte någon slumpmässighet i som ;-)
Därefter tar den genererade slumptal och använder det för att välja en av flera meddelanden och rullar som förbi displayen.
När hela meddelandet visas stänger mikrokontroller sig ner till lågenergiläge för att rädda batterierna från dränering för snabbt om locket oavsiktligt lämnas öppen.