Bordsklocka, AVR

Berätta om dina pågående projekt.
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Bordsklocka, AVR

Inlägg av Ranstam »

Hej

Har nästan färdigställt mitt senaste projekt. En Bordsklocka med 2x16 HD44780 display och en AVR Atmega88 på 8Mhz med extern kristall.

Bild 1.

Bild 2.

Uppdateringen av klockan är interupt baserad, och efter 4dagar konstaterades att den saktade sig ungefär 3s per dygn. När detta rättades upp så kunde jag inte märka någon direkt avdrift... kanske i klass med ett armbandsur av billigare modell.

Plåten som allting sitter på är 4mm aluminium, borrat/filat ut för displayen. Eftersom plåten var lite sliten så blästrade jag den, och målade den med svart hammarlack(mycket förlåtande lack).

Strömförsörjningen kommer från 4st AA NIMH 2000mAh batterier(ikea), strömförbrukningen med backlighten tänd hamnade på runt 25mA(underligt lite...) så den klarar sig ungefär 3dagar på batterierna :)

Nu återstår bara att fixa en fin aluminium ram och centrera displayen i luckan!


//Alexander


---------------------
Varför är det så svårt??
Max 700 pixlar i bredd

Nu får du dras med tråkiga länkar istället för fina bilder.
//Jimmy
---------------------
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Såg ju trevligt ut!
Har du lust att dela med dig av koden?


Du hade inga större bilder?? :mrgreen: (max 700 i bredd)
Användarvisningsbild
ElectricMan
Inlägg: 4874
Blev medlem: 21 februari 2007, 20:22:48
Skype: ElectricManSwe
Ort: Luleå
Kontakt:

Inlägg av ElectricMan »

Bilderna funkar utmärkt med en 40" skärm :D
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Inlägg av Ranstam »

Sorry för bilderna... Här kommer koden iaf!

#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"
#include <avr/interrupt.h>

volatile int sekund = 00;
volatile int minut = 24;
volatile int timme = 22;
volatile int display = 1;

char min[3];
char sek[3];
char tim[3];

int main(void)
{

TCCR1B |= (1 << WGM12);
TIMSK |= (1 << OCIE1A);
sei();
OCR1A = 31250;
TCCR1B |= (1 << CS12 );

lcd_init(LCD_DISP_ON);
lcd_clrscr();

while(1)
{

if(display == 1)
{

lcd_init(LCD_DISP_ON);

display = 0;
itoa(sekund,sek, 10);
itoa(minut,min, 10);
itoa(timme,tim, 10);

lcd_gotoxy(11,0);
lcd_puts(":");
lcd_gotoxy(8,0);
lcd_puts(":");
lcd_gotoxy(0,0);
lcd_puts("Time:");

if(sekund <=9)
{
lcd_gotoxy(14,0);
lcd_puts(" ");
lcd_gotoxy(13,0);
lcd_puts(sek);
lcd_gotoxy(12,0);
lcd_puts("0");
}

else
{
lcd_gotoxy(14,0);
lcd_puts(" ");
lcd_gotoxy(12,0);
lcd_puts(sek);
}

if(minut <=9)
{
lcd_gotoxy(10,0);
lcd_puts(min);
lcd_gotoxy(9,0);
lcd_puts("0");
}
else
{
lcd_gotoxy(9,0);
lcd_puts(min);
}
if(timme <=9)
{
lcd_gotoxy(7,0);
lcd_puts(tim);
lcd_gotoxy(6,0);
lcd_puts("0");
}
else
{
lcd_gotoxy(6,0);
lcd_puts(tim);
}
}
}
}

ISR(TIMER1_COMPA_vect)
{
display = 1;
sekund = sekund + 1;
if(sekund >=60)
{
sekund = 0;
minut = minut + 1;
}
if(minut >=60)

{
minut = 0;
timme = timme + 1;
}
if(timme >=24)
{
timme = 0;
}
}
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

Timer driven klocka kanske drar sig mindre?
Schema på klockdelen..?
LED 7-segment borde synas bättre på avstånd i ett mörkt sovrum.
99nvbjed
Inlägg: 70
Blev medlem: 27 maj 2004, 15:40:47

Inlägg av 99nvbjed »

blueint skrev:LED 7-segment borde synas bättre på avstånd i ett mörkt sovrum.
Eller kanske en OLED, de brukar kunne ge ett vackert gönt eller oranget (ful böjning av låneord...) sken i mörkret.

Bra idé i övrigt, ska nog också prova bygga en sån när jag har lite tid över, måste ju vara perfekt för en ATtiny...



OT:
electric_man skrev:Bilderna funkar utmärkt med en 40" skärm :D
Kan avslöja att bilderna funkar bra på min 13" också :P
Dags att öka gränsen till 8-900 kanske?
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

electric_man skrev:Bilderna funkar utmärkt med en 40" skärm :D
Intresseklubben noterar inspirerat......


Tack för koden Ranstam! Alltid kul att se hur andra löser problem.

Edit: Ranstam kör du helt utan indentering eller blev det så när du klistrade in koden?
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31335
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Forumet tar bort alla begynnande mellanslag och tabbar. Det blir bättre om man sätter in koden mellan code-tags. ;)
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Inlägg av Ranstam »

Här kommer en ritning över själva kretsen. Kanske inte den bästa, men hoppas att ni kan se hur det är kopplat.


Bild

Det ska bli intressant att se hur den håller tiden över några veckor. Får nog koppla in en DC adapter isf...


//Alexander
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Har du sett dessa app.notes:

http://atmel.com/dyn/resources/prod_doc ... oc2521.pdf
http://atmel.com/dyn/resources/prod_doc ... oc1619.pdf

Kan rekomenderas!


"Får nog koppla in en DC adapter isf"
Kan vara bra såvida du inte äger en batterifabrik! :wink:
gille
Inlägg: 69
Blev medlem: 28 november 2004, 18:06:09
Ort: Stockholm
Kontakt:

Inlägg av gille »

Nu kan jag ju inte jättemycket om AVR, men kan du inte skicka ner processorn i sleep mode mellan interrupten och bara uppdatera när du behöver det? Det lär ta ner strömförbrukningen.
Användarvisningsbild
Rohan
Inlägg: 1063
Blev medlem: 7 april 2004, 08:24:39
Ort: Eksjö, Småland
Kontakt:

Inlägg av Rohan »

Det går alldeles utmärkt att lägga processorn i sleep-läge medans man väntar på hårdvaruavbrott. Kanske kan ge någon enstaka mA. Den stora boven i dramat är förmodligen displayen och särskilt dess backlight.
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Inlägg av Ranstam »

Jag funderade faktiskt lite på att köra med sleep-läge, men konstaterade också att det nog är backlighten som är den största förbrukaren.

Tack för länkarna till app.notes

Hade en gästföreläsare när jag pluggade, från ett företag som hette Dectron, som pratade om EMC och avstörning. Får se om jag kan använda lite av det i praktiken!

Ang. koden så har jag sett en del smidigare sätt att lösa det så att timmar/min/s och ":" kommer i rätt ordning. Dock lite färsk på C programering ännu.

Blev antagen till distansnöbörjarkurs i ansi-c som går till hösten. Hoppas det bättrar på mina kunskaper lite.


//Alexander
Skriv svar