LED-klocka, ej 7-segment eller LCD

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

OK!
SPI blir nästa steg då.

PWM är som sagt till för "mellanlägen" per diod.

Avseende valet av kort: Nu var det ju inga jättekostnader för kortet. Fastnar jag för det kan jag ju köpa lite mer långsiktiga grejer.
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

Så där, nu har jag fått hem grejerna. kortet från thepirateboy kom dagen efter, medan posten la på 8 extra dagar på electrokit, så det hämtade jag ut igår.

Kom också igång med experimenterandet med dioderna. Byggde på upp till typ 1,2kOhm innan LED-arna kom ner på en vettig nivå, så de verkar vara rejält effektiva.

Återkommer när jag får problem.
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

Tveksamt om någon är intresserad? Ska man kanske posta detta i projekt-forumet istället ändå?

Hann inte så mycket igår, och är ju lite rostig, men började testa uC-n, och fixade ett litet rinnade ljus på tre dioder. Lite förvånad över att den inbyggda dioden på kortet verkar vara på när man sätter den låg och vice versa. Hann också koppla ihop det med en sån där 74HC595, var inga större problem.

Nästa steg blir att testa att göra en sekundvisare (för fem sekunder kanske) med alla grejer, men med en snygg PWM-övergång mellan varje sekund.


En fråga: Jag har sett att man sätter ett motstånd per diod. Borde det inte gå med 10 dioder, med var sin input (l/h) på långa pinnen, men sammankopplade med den korta pinnen, och sen samma motstånd efter det till jord?

Eller är det för att Uf kan skilja lite mellan dem, och att det alltid blir den lägsta?
Användarvisningsbild
90kar08
Inlägg: 1602
Blev medlem: 3 september 2009, 15:27:45
Ort: Staffanstorp

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av 90kar08 »

Om bara en ska vara tänd åt gången så funkar det, annars ett motstånd per LED.

Klart du ska slänga upp en projekttråd! Med bilder! :D
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av sneaky »

Att lysdioden är kopplad "bak o fram" beror på att många kretsar har lättare för att sänka en ström än tvärt om.
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

Nu när jag tänker efter är det väl iofs. självklart, det är ju inte konstigare än att kirchoffs lagar gäller, hur fan kunde jag få för mig något annat.

Jag kanske startar en projekttråd då, även om elektroniken kanske är lite lam för proffsen.

Sneaky: Betyder detta att det är lämpligt att designa resten så också?
jah
Inlägg: 659
Blev medlem: 16 januari 2009, 13:00:08
Ort: Eslöv

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av jah »

Oftast är det bäst att sänka ström, men kolla i databladet för den aktuella kretsen och kolla vad den klara i "source" resp "sink" på utgången.

OBS! du måste använda exakt rätt datablad eftersom det är skillnad på logikfamiljer, även om kretsen rent logiskt är samma.

/J
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

Nu är jag rädd att det blev lite grekiska för mig.

Följande är datasheetet:

http://www.electrokit.se/download/74HC_HCT595_4.pdf

Och det jag kan se är:

IIK input diode current VI < -0.5 V to VI > VCC + 0.5 V - ±20 mA
IOK output diode current VO < -0.5 V to VO > VCC + 0.5 V - ±20 mA
IO output source or sink current VO = -0.5 V to VCC + 0.5 V
Q7’ standard output - ±25 mA
Qn bus driver outputs - ±35 mA
ICC, IGND VCC or GND current - ±70 mA


Jag vet inte riktigt vad det är jag ska titta på. Spontant ser ju allt symmetriskt ut runt 0A iaf?
jah
Inlägg: 659
Blev medlem: 16 januari 2009, 13:00:08
Ort: Eslöv

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av jah »

Om vi tar det lite förenklat så kan vi titta "Limited values" där det står +/-35mA. Detta är en övre gräns och man ska inte utnyttja max av detta värde. Vidare står det Icc/Ignd +/-70mA vilket är sammanlagda max för alla utgångar.

Eftersom det står +/- betyder det att det är samma för både soure och sink, så inkopplingen av LED:arna kan göras som du vill. Som riktvärde för ström per LED kan du sätta säg 20-25mA, men beakta då att du inte bör tända mer än tre åt gången (per krets).
3x20mA=60mA vilket är nära maxgränsen

/J
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller lcd

Inlägg av niklas_j »

Yes, då var det ungefär som jag trodde. Jag har ju just nu lagt på en 1,2 kOhm, någonting, så det är nog rätt mycket mindre ström än 20 mA.
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller LCD

Inlägg av niklas_j »

Liten update.

Har bara hunnit labba med detta vid några få tillfällen, men har fixat följande:
1. Först litet rinnande ljus där varje outputpinne motsvarar en diod. 3 dioder
2. Sen testat att koppla på en 74HC595 och göra det sekundvis. 3 dioder
3. Sedermera dragit på pwm-styrning, för att få en mjuk och fin övergång mellan sekunderna. 3 dioder
4. Utökat till 8 dioder.
5. Lagt på minut- och timvisare, också de med pwm-styrning (och om t ex minut- och sekundvisaren är på varandra blir det ljusare än om bara ena är på).
6. Utökat till ett andra 74HC595 och utökat till 9 dioder.

Hittills har allt funkat bra. Problemet nu är att jag testade att utöka till 60 dioder, och då blir naturligtvis pwm-en för långsam och dioderna blinkar synligt istället. Letar därför råd.

Första tanken är att optimera koden. Lite småkrafs kan man ju spara in, men jag misstänker att man snarare ska ha ett annat upplägg. Har därför kollat på SPI, och undrar om det kommer hjälpa. Så här är det idag:

1. Ta fram tiden.
2. Utifrån tiden, räkna ut nivån för varje diod, placera det i en unsigned char-array (60 lång), kallad "pattern".
3.
for(i=0; i<60; i++){
Räkna ut om varje diod ska vara tänd eller inte (sannolikheten ges av pattern, dvs 0-255).
Om dioden är tänd, skicka ut 1, annars 0 på PB0. Slå sen på och av PB1 (klockan)
}
4. Slå på och av PB2 (storage clock).
5. Börja från 1.

För att lösa detta med SPI tänker jag mig då att man byter ut andra halvan av steg 3. Lösningen blir väl då att man får bygga upp en unsigned char från varje enskild bit, som man sen skickar iväg. Frågan är då om ni tror att man skulle tjäna på det?
För det är ju i sig en rätt komplicerad grej (i princip en seriell->parallell-grej i kod).



Den andra lösningen vore kanske att skita i det och istället kasta på en kondensator runt varje diod för att mjuka upp dipparna, skulle det funka tror ni?
Mindmapper
Inlägg: 7083
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: LED-klocka, ej 7-segment eller LCD

Inlägg av Mindmapper »

Att skifta ut 60 positioner till skiftregistret ska inte behöva ta så lång tid. Låt säga att du skiftar ut det med en ganska långsam hastighet av 10us/bit så tar det 600us för alla 60 bitar att bli utskiftade. Du kan köra mycket snabbare om du vill. Sedan ska du läsa ut det på utgångarna med att sätta en utgång hög/låg. Det tar runt 1us, sedan har du mycket tid för PWM på en annan utgång, innan du ska skifta ut nästa LED.

Är det en sekund-LED så har du ca 999,4ms eller ca 999400us innan den ska ut.

Egentligen behöver du inte heller skifta ut 60 bitar åt gången. Det räcker att du tänder första LED och sedan skickar den vidare ett steg varje sekund. Om det inte är när du ska ställa klockan förstås.

Kondingar för att få det att lysa stabilare kan du spara in. Det är ingen bra lösning heller om du ska ställa klockan t.ex.
niklas_j
Inlägg: 52
Blev medlem: 29 juni 2011, 09:52:31

Re: LED-klocka, ej 7-segment eller LCD

Inlägg av niklas_j »

Tack för svar, men nu kanske jag var otydlig i hur det fungerar?

Det är alltså mjuka övergångar sekund till sekund. Diod 1 är helt tänd, och släcks gradvis ner, medan diod 2 är helt släckt och tänds gradvis upp. Så fort diod 1 är släckt så börjar diod 3 tändas och diod 2 släckas, osv.

Och sen samma princip med minut och tim-visarna (alltså totalt upp till 6 dioder tända samtidigt). Ditt andra förslag ser jag därför inte riktigt hur det skulle funka. (Däremot fick jag en annan ide om hur det skulle kunna lösas snabbare...)


Sen förstod jag nog inte skillnad på utskiftning resp utläsning? "tömma" och "visa"? Det gör jag i ett svep nu.
Mindmapper
Inlägg: 7083
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: LED-klocka, ej 7-segment eller LCD

Inlägg av Mindmapper »

Jag börjar bakifrån.

Shift,
gör du med att lägga ut data på skiftregistrets data ingång (den bit/bitar som du vill ska tända LED) och sedan skifta ut den/dom med shiftpulsen det antal steg de ska ut.

Läsa ut.
När du har bitarna på plats, överför du dom till utgångsregistret. Den ingången på kretsen som gör det påverkar du bara en gång. Du läser över till utgångsregistret först när bitarna är i rätt position i skiftregistret.

När detta är gjort tänder du utgångarna med output enable. (du kan även ha den till hela tiden och bara ge pwm info till den ingången)

Timmar och minuter går ju på egna shiftregister som du kan shifta synkront med sekunderna när det behövs. Vill du ha samma typ av fading eller något liknande så kan det bli intressant.

Det andra förslaget går inte med fading av ljuset till snygga övergångar.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: LED-klocka, ej 7-segment eller LCD

Inlägg av jesse »

om klockan står på t.ex. 10 sekunder och ska gå över till 11 sekunder ska alltså 10 lysdioder lysa med fast sken, och den elfte lysdioden ska långsamt bli ljusare under en sekunds tid, tills även den lyser fast. Omedelbart efter ska lysdiod nr 12 börja tändas osv...

Jag kom på att om det finns shiftregister som kan backa så kan man göra en pwm-signal till den sista lysdioden genom att köra shiftregistren snabbt fram-och tillbaks. Då kommer de lysdioder där det finns en övergång att pwm:as. Det skulle vara enkelt och bekvämt.

Mindmapper: om man pwm:ar enable-ingången på shiftregistrena så kommer ju ALLA tända lysdioder att PWM:as. Men bara EN lysdiod ska ju dimmas!

hmm.. finns det sådana shiftregister? :humm:
Skriv svar