Klocka med LED

Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Klocka med LED

Inlägg av Icecap »

På jobbet samlade jag ihop 3 st 32*16 RGB LED-moduler for ett bra tag sedan. De var delvist trasiga men jag fick dom att fungera så att jag nu har en yta på 32 * 48 pixlar. Pga. de fel som modulerna har kan den yta inte utökas.

Avståndet pixel till pixel är 10 mm, alltså P10.

Jag har tagit det styrkort som jag har ritat för att styra detta och jag har fyllt på med alla funktioner jag har förberedd för.
detta innebär 2 st RS232 kanaler (3-ledare), 1 st RS485 kanal, 433MHz radio, RTC med super-cap backup och 256kB EEPROM.

Styrkortet har ljussensor så att displayen automatisk kan reglera intensiteten på displayen, det finns en 1-Wire® bus, 8 st ingångar med opto-isolering samt 8 st utgångar med SSR.

Jag har dragit en DS18B20 utomhus och kopplat den till klockan, jag har en likadan sensor inne i kontoret och rent minnesmässigt har jag gjort plats för 16 st sensorer.

På kretskortet finns en 12V -> 5V omvandlare, den klarar 70W och driver displayen. Den kan bara jobba inom ett visst inspänningsområde varför AD-omvandlaren (12 bit) övervakar inkommande spänning och stänger av om spänningen går utanför det tillåtna området.

Bland mina problem med mitt handikapp är en obefintlig tidkänsla, därför visat klockan tid (TT:MM), datum ("3 Dec"), Veckodag ("Tor") och veckodagen byts ut lite då och då med veckonumret då chefen insisterar på att ha en tavla där vi skriver upp jobb - men den har veckonummer, inte datum!

Att ha sekunder med känns för "hetsigt" - men samtidig hatar jag digitala klockor som bara byter varje minut, jag kan inte låta bli att undra om de har "fastnad". Alltså har jag sekunderna i binär form, räknade ner från 60 till 0(1) framför tiden, då ser jag att "det rör på sig" och jag kan synkronisera andra klockor efter den då jag ser när noll sker.

Inne och utetemperaturerna skrivs, är de under 0,0°C visas de med blå färg, annars är de röda. Jag har även en växlande visning längst upp, den växlar mellan tiden for soluppgång, tiden för solnedgång & dygnsmedeltemperaturen.

Varje 5'te minut sparas utetemperaturen i EEPROM med en timestamp, dessa värden kan jag sedan tanka ner. EEPROM-storleken ger plats för 43648 av dessa datablock, alltså drygt 151 dygns data.

Jag har samtidig använd den ganska mycket för att testa olika funktioner och utveckla dom så att de fungerar bra, detta gäller t.ex. den automatiska intensitetsreglering, 1-Wire® grejen med att hitta alla enheter automatisk osv.

Men jag har märkt att jag trivs väldigt bra med den! Detta med veckodag är kanon, jag är ofta dagvild, tiden är bra att ha och temperaturerna är roliga att kunde se.

Men jag har ingen sådan klocka hemma! Och jag har märkt att det ville vara kul att ha - så jag funderade lite.
Vi har ingen andra lämpliga skrotmoduler jag kan använda - men av en slump upptäckte jag att Clas Ohlson hade några 32*32 P5 RGB LED-moduler (87043).

Då jag vet att långt de flesta LED-moduler är uppbyggda på samma sätt köpte jag två! Men se på fan: de hade bara 1 st i butiken jag var i. Men i den andra butiken i stan hade de också 1 modul - så jag for iväg o handlade det också.

Väl på kontoret upptäckte jag att de två moduler var likadan funktion men hade olika utseende på LED'na så jag kunde inte montera dom ihop utan att skämmas. En kontakt med CO's kundservice skakade fram en modul och jag bytte, perfekt!

Tog ytterligare ett styrkort, klappade ihop det hela och gjorde en specialkabel för att utnyttja µC'n bäst möjligt med de moduler. Modulerna är med 6 färgbit in, R, G & B för övre halvan och det samma för undre halvan. Sedan är den multiplexad 1:16 vilket betyder att man ritar två rader, låter dom vara tänd ett tag, sedan skickas nästa raders data och rad-väljer data skickas ut och den växlar till nästa rad.

För att inte få flimmer ska en total uppdatering inte ske långsammare än 70Hz, alltså minst 16*70 = 1120Hz utskrivning av rader. Detta kräver en del kraft från µC'n - men det finns och jag kör faktisk 80Hz uppdatering.

Så nu har jag en RGB grafisk yta på 64*32 punkter, jag har RTC, 1-Wire, RS232, minne, ljussensor osv. Men vad ska den visa?

För att visa något måste man ju ha ett bildminne, detta används för den timer-interrupt-styrda utskanningen av raderna.
Men för att det inte ska flimra som en tok måste man ha två bildminnen! Ett att rita i och ett att visa, sedan ska man ha ett kommando för att växla mellan dessa två.

På det vis är det ingen flimmer eller annat.

Men hur ritar man då i bildminnet? Jo, den viktigaste funktion där är:
void Set_Pixel(void* Picture, int X, int Y, unsigned char Color);

Denna funktion kallas av alla funktioner som ska skriva något, det kan vara font-programmet, linjeritningen eller annat, that is the shit! Min funktion har lite fler parameter men det är en bisak.

En vanlig 5*7 punkters teckentabell har jag sedan ett bra tag och med en pixel tom mellan tecken är det plats för 10,67 tecken per rad. Jag tillämpar proportionell teckenbredd, alltså att smala tecken tar mindre plats, så jag kan skriva antingen 10 st fullbreda tecken eller upp till 16 st "1" per rad.

Jag har roat mig med att rita en analog klocka på det ena modul, storleken är 31*31 pixlar och jag kan växla mellan 2 eller 3 "visare" - som alltså ritas med linje-funktionen. Den är trevlig att se på, snabb att läsa av osv. så det blir nog en standard grej när jag har bestämt mig för vad som ska visas och hur det ska visas.

Senast kom jag över en SHT11 temperatur och fukt-sensor, den satt tillsamman med en trasig ljussensor i en skylt.

Efter lite pillande och programmerande har jag numera temperatur med 2 decimaler och relativ luftfuktighet (RH) med 2 decimaler från den sensor.

Det som kvarstår är att jag ska göra en fin låda åt klockan, just nu är modulerna bara knåpat ihop på lite plåtrester.

Den nya klockan fungerar numera även som en simulator för upp till 16 st SunSpec-kompatible solpanel-invertrar via RS485 MODBUS-RTU, mest bara för att kunde testa och förfina programmet som ska läsa av dessa.

Jag fick även för mig att öka antalet av färger från 8 (inkl. svart) till 64 (inkl. svart), det är en ren mjukvara-grej men uppdateringshastigheten ökade med 3 gg. Totalt tar display-uppdateringen numera runt 23% av den totala µC-kraft och det är ändå en 50MHz 32 bit µC - så det är en del.

Fick för mig att om jag nöjde mig med 8 färger (inkl. svart) och 1 modul kunde jag ganska enkelt styra LED-modulen med en PIC - men CO säljer inte dessa moduler mer och då känns det ju lite lönlöst.

Jag hade planerat att låta CO få schema, källkod, mönsterkortsritning och rubbet mot att få ett par byggsatser av dessa. Jag har dock inte kollat med CO om de var intresserat.

Jag kan självklart ta hem moduler från Kina men jag ids inte, jag har det bara som en kul grej och mitt behov är uppfyllt.

Jag har dock mjukvara till en del funktioner:
* Uträkning av soluppgång och solnedgång, baserat på datum och position. Idag gick solen i Kiruna upp 10:17 och ner 12:39.
* 1-Wire funktion, kan läsa alla 1-Wire temperatursensorer samt hitta alla 1-Wire enheter på bussen.
* Automatisk korrigering av Sommar- och Vinter-tid.
* Uträkning av veckodag & veckonummer.
* Ritning av analog klocka.
* Läsning av SHT11 for temperatur & RH.
Och lite annat.

Intensiteten kan regleras ner till 0,1% och jag lovar: det är INTE starkt! Har funderat på att lägga in att den vänder till vit bakgrund och svart text när det är dags att vakna, då har men en wake-up light.

EDIT: Ett crappy mobilbild:
20151203_224629.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Icecap 3 december 2015, 22:49:04, redigerad totalt 1 gång.
Zkronk
Inlägg: 1423
Blev medlem: 23 augusti 2005, 16:44:36
Ort: Uppsala

Re: Klocka med LED

Inlägg av Zkronk »

Bilder? :)
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Klocka med LED

Inlägg av Lennart Aspenryd »

Intressant! :bravo:
nifelheim
Den första
Inlägg: 2329
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Klocka med LED

Inlägg av nifelheim »

snyggt :tumupp:

Nu blev man ju lite sugen på något liknande :)
Användarvisningsbild
Ronny
Inlägg: 335
Blev medlem: 2 juni 2008, 23:10:22
Ort: Göteborg

Re: Klocka med LED

Inlägg av Ronny »

:tumupp:

Temperaturhistorik i form av stapeldiagram för de senaste 24 timmarna skulle vara snyggt att se.
Stapeldiagram med mätvärden tagna var 30:e minut kanske.

En rullande graf (ung. "horizontal side scroller") med temperaturvariationer över längre tidsrymder
skulle också vara skoj att se.

Det blir möjligen för mycket blinkande om man inför för många olika visningsmoder...
Skriv svar