1. 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.
    Dismiss Notice

digital speedometer using AT90S2313

Discussion in 'Microcontrollers' started by fever, May 24, 2006.

  1. perkele

    perkele New Member

    Joined:
    Dec 26, 2006
    Messages:
    2
    Likes:
    0
    Location:
    Finland
    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: Aug 25, 2007
  2. mramos1

    mramos1 Active Member

    Joined:
    Sep 15, 2005
    Messages:
    2,403
    Likes:
    9
    Location:
    Boynton Beach, Florida USA
    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.
     
  3. perkele

    perkele New Member

    Joined:
    Dec 26, 2006
    Messages:
    2
    Likes:
    0
    Location:
    Finland
    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 :)
     
  4. dave

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    -
    Likes:
    0


     
  5. mramos1

    mramos1 Active Member

    Joined:
    Sep 15, 2005
    Messages:
    2,403
    Likes:
    9
    Location:
    Boynton Beach, Florida USA

    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.
     
  6. simrantogether

    simrantogether New Member

    Joined:
    May 22, 2006
    Messages:
    433
    Likes:
    4
    Location:
    Bangalore
    Well..

    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 ..:)
     
  7. tahirmaqsood20

    tahirmaqsood20 New Member

    Joined:
    Nov 19, 2007
    Messages:
    3
    Likes:
    0
  8. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    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.
     

    Attached Files:

  9. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    It Not Work!!! Why???
     
  10. mramos1

    mramos1 Active Member

    Joined:
    Sep 15, 2005
    Messages:
    2,403
    Likes:
    9
    Location:
    Boynton Beach, Florida USA
    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.
     
  11. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    i went on avrfreaks.com, they tell me everything now. so you forget about me
     
  12. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    but now message on programmer say eeprom to small for hex file.
     
  13. krazatchu

    krazatchu New Member

    Joined:
    Oct 10, 2007
    Messages:
    80
    Likes:
    0
    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...
     
  14. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    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
     
  15. mramos1

    mramos1 Active Member

    Joined:
    Sep 15, 2005
    Messages:
    2,403
    Likes:
    9
    Location:
    Boynton Beach, Florida USA
    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.
     
  16. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    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: Jan 20, 2008
  17. trung3t

    trung3t New Member

    Joined:
    Jan 11, 2008
    Messages:
    1
    Likes:
    0
    i maked speedo but it not work. On LCD display text SPEED= . Km/hrDIST= . Km. it not number, please help me
     
  18. bunghole

    bunghole New Member

    Joined:
    Jun 23, 2006
    Messages:
    104
    Likes:
    1
    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.
     
  19. jay_f1983

    jay_f1983 New Member

    Joined:
    Oct 31, 2007
    Messages:
    4
    Likes:
    0
    Location:
    Philippines
    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();
    }
    }
     

Share This Page