Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

digital speedometer using AT90S2313

Status
Not open for further replies.
Hi

I also build this speedo and i had to use ATtiny2313-20PU controller, because i didn't found that 90S nowhere!

I have some problems with controller.. i think? I set those Fuses like in atmel's PDF and everything works fine on burning (PonyProg2000), no errors or nothing strange.

But.. i didn't get any texts into LCD, pins are correct and backlight works. :p Checked many many times.. LCD panel is Displaytech 162.

How this compiling and burning goes.. i compiled code with AVR Studio 4 / 2313def file (2006). I erased chip before burning and then burned into flash. EEPROM?? Do i need to burn someting in EEPROM also?

Thanks, i'm really stuck with this..
 
Last edited:
First off this is a post from late 2006..

Atmel is probably doing like Microchip and there are a few lines of code you need to disable new chip features (and I hate that). I am shocked, if this is the case, Atmel would do that. They normally make it simple to go forward for us older guys.

Anyway, what do you need as far as the AT90S2313 chips? I have a tube of them around here and could send you the "hard to find" chip; it's probably next to the 16F84's tube;) .

That's if I knew your location I would offer to mail you one! Please fill in your location in your profile.
 
mramos1 said:
First off this is a post from late 2006..

Atmel is probably doing like Microchip and there are a few lines of code you need to disable new chip features (and I hate that). I am shocked, if this is the case, Atmel would do that. They normally make it simple to go forward for us older guys.

Anyway, what do you need as far as the AT90S2313 chips? I have a tube of them around here and could send you the "hard to find" chip; it's probably next to the 16F84's tube;) .

That's if I knew your location I would offer to mail you one! Please fill in your location in your profile.

I live in Finland, between Sweden and Russia. :) But i think that i will found one of those 90S somewhere in here when trying search seriously.

I don't know much about coding, especially assembly, so modifing it for tiny2313 is maybe harder than find 90S :)
 
If you can not find one and willing to wait, let me know.

There is a site avrfreaks.com (think that is the name) and they are Atmel types and will help you make it work.
 
Well..

fever said:
hello all
pls do post ur openion
thanks

well.. if you really want to make a speedometer then folllow the simple rules that are effective also...

if you need the circuit diagram then i can surely send you..

regards,

simran ..:)
 
i make speedo out of AT90S2313 because the ATTiny2313 was not available where i am (Australia), and i don't purchase parts over the net. Fortunatly www.jaycar.com.au had the AT90S2313. i put the everything together using a pcb prototype board, 2-core dc power cable, 9-core computer cable and scraps of 2-core shielded averaging about 1m long each that i picked up when i was train testing. i still need to aquire the crystal which i can get in store. the pcb on the outside is where the crystal will go because i couldn't fit it on the pcb.
 

Attachments

  • page 001.jpg
    page 001.jpg
    767.9 KB · Views: 451
  • page 002.jpg
    page 002.jpg
    780.5 KB · Views: 394
First off this is an old post. And I guess you could not start a new one.

Second, a 1200A has an internal OSC so you would not need the Xtal (same as the old 2313 and no RAM, use the registers for your RAM).

Third, you have blurred picture, no schematic posted and no code. I doubt you will get any help.
 
I don't think you want to write the hex file to the eeprom...

If your using AVR Studio..... you will see above EEPRM, Flash...
This is what you want to use...

Also, you mentioned that you put the crystal on the outside...
It should be as close to the chip as possible...
 
the crystal is on a seperate cut-off of pcb. the was no adequate room on the pcb, all i can do is shorten the length of the wires. this might be the problem, avr freaks said the code look a little bit dodgy
 
You need the xtal on the same board and the two caps that go to ground as well. Can you use a socket and tack it to the bottom of the board? Then plug the chip in?

AVRfreaks are great, but you are back here. Glad you are back, and the pictures are very blurred. People will help if you comply..

And the program goes in flash not the eeprom.
 
yes i've worked that out. avr freaks say that the code is dodgy (this part):

;***********************************************************
;Timer overflow ISR
;***********************************************************

TimerV0:
in status,SREG
inc count_1
cpi count_1,sht
brsh timeff
out SREG,status
reti

timeff:
clr count_1
rcall time00
ret

i have to find a COMPETENT board, and transfer the ic socket, regulator and wires to it. and if someone has got theirs working could the please post a picture of the lcd, when it is turned on?
 
Last edited:
i maked speedo but it not work. On LCD display text SPEED= . Km/hrDIST= . Km. it not number, please help me
 
sometimes (not sure) speedos might do that (depending on type). have you tried putting +5v pulses on pin 6 or the input wire you have connected to pin 6?
try putting quick, short bursts at 1 a second or 2 a second onto the wire or pin 6, whichever is easier.
 
hey guys, i need your help, i want make a anemometer on lcd using
pic16f877a or pic18f458, i dont know how to make the right program using micro c. all i got i s this code, i made this code.....pls help me, i want to get the concept of a bike speedo meter using reed switch.....



//============ INITIALIZATION===============

void Initialization()
{
trisb = 0x03; // initialize PORTB RB0 and RB1 as input the rest is output
portd = 0; // initialize the value of PORTD as 0

Lcd_Init(&PORTB);
Lcd_Cmd(LCD_CURSOR_OFF);
}

//================ STATUS DISPLAY =================
void Initial_Display()
{
delay_ms(200);
Lcd_Chr(1,1,'W');Lcd_Chr_Cp('i');Lcd_Chr_Cp('n');Lcd_Chr_Cp('d');
Lcd_Chr_Cp(' ');Lcd_Chr_Cp('S');Lcd_Chr_Cp('p');Lcd_Chr_Cp('e');
Lcd_Chr_Cp('e');Lcd_Chr_Cp('d');Lcd_Chr_Cp(' ');Lcd_Chr_Cp(':');
Lcd_Chr(1,18,'k');Lcd_Chr_Cp('p');Lcd_Chr_Cp('h');
delay_ms(10);
}



//=======================================================

void Digit1_ws(unsigned short ones)
{
switch(ones)
{
case 1: Lcd_Chr(1,16,'1');
break;
case 2: Lcd_Chr(1,16,'2');

break;
case 3: Lcd_Chr(1,16,'3');

break;
case 4: Lcd_Chr(1,16,'4');

break;
case 5: Lcd_Chr(1,16,'5');

break;
case 6: Lcd_Chr(1,16,'6');

break;
case 7: Lcd_Chr(1,16,'7');

break;
case 8: Lcd_Chr(1,16,'8');

break;
case 9: Lcd_Chr(1,16,'9');

break;
case 0: Lcd_Chr(1,16,'0');

break;

}
}
void Digit2_ws(unsigned short tens)
{
switch(tens)
{
case 1: Lcd_Chr(1,15,'1');

break;
case 2: Lcd_Chr(1,15,'2');

break;
case 3: Lcd_Chr(1,15,'3');

break;
case 4: Lcd_Chr(1,15,'4');

break;
case 5: Lcd_Chr(1,15,'5');

break;
case 6: Lcd_Chr(1,15,'6');

break;
case 7: Lcd_Chr(1,15,'7');

break;
case 8: Lcd_Chr(1,15,'8');

break;
case 9: Lcd_Chr(1,15,'9');

break;
case 0: Lcd_Chr(1,15,'0');

break;
}
}
void Digit3_ws(unsigned short hundreds)
{
switch(hundreds)
{
case 1: Lcd_Chr(1,14,'1');

break;
case 2: Lcd_Chr(1,14,'2');

break;
case 3: Lcd_Chr(1,14,'3');

break;
case 4: Lcd_Chr(1,14,'4');

break;
case 5: Lcd_Chr(1,14,'5');

break;
case 6: Lcd_Chr(1,14,'6');

break;
case 7: Lcd_Chr(1,14,'7');

break;
case 8: Lcd_Chr(1,14,'8');

break;
case 9: Lcd_Chr(1,14,'9');

break;
case 0: Lcd_Chr(1,14,'0');

break;
}
}

//=======================================================
void WindSpeed()
{
int x=0,y=0,z=0;


while(1)
{
Digit1_ws(x);
if(portb.f1==0)
{
while(portb.f1==0)
{
}
x++;
Digit1_ws(x);
if(x==10)
{
x=0;
Digit1_ws(x);
y++;
Digit2_ws(y);
if(y==10)
{
y=0;
Digit2_ws(y);
z++;
Digit3_ws(z);
}
}
}
}
}
//=============== Main Function =======================
void main()
{
Initialization();
Initial_Display();
while(1)
{
WindSpeed();
}
}
 
Status
Not open for further replies.

New Articles From Microcontroller Tips

Back
Top