Aviso

Colapsar
Não há avisos ainda.

Acertar velocímetro com alteração de pneumáticos!

Colapsar
X
 
  • Filtrar
  • Time
  • Mostrar
Clear All
new posts

    #91
    Re: Acertar velocímetro com alteração de pneumáticos!

    Esta aqui um suposto codigo, mas nao analisei (e o pouco que sei é de arduino)...

    Code:
    Code:
    #include <hidef.h> // for EnableInterrupts macro
    #include "derivative.h" // include peripheral declarations
    //static variables
    static unsigned int Scount; //counter for calculating speed
    static int Rcounta; //RPM pulse counter
    static byte lowflag; //1 if the speed signal is below 15Hz
    static byte IRQflag; //indicator to calculate RPM
    static float adjust; //speed frequency adjustment
    //temp variables
    float temp; //float number for speed adjustment calculation
    unsigned int speed; //data to load into PWM registers
    byte tempdata; //temporary storage byte
    
    void main(void) {
    EnableInterrupts;
    
    //Clock setup
    
    ICSC1 = 0b10111000; //Ext Ref; RDIV=128; IREFS = 0
    ICSC2 = 0b10110100; //BDIV=1; Hi Range, Hi Gain, Oscillator
    
    //System Options setup
    SOPT1_RSTPE = 0; //PTA5 (pin 1) functions as IRQ pin
    SOPT1_BKGDPE = 1; //PTA4 (pin 2) functions as Background pin
    //
    SOPT2_T1CH0PS = 0; //TPM Ch0 on PTA0 (pin 20)
    
    //IRQ setup
    IRQSC_IRQPDD = 1; //disable internal pullup
    IRQSC_IRQEDG = 1; //rising edge sensitive
    IRQSC_IRQPE = 1; //IRQ pin enabled
    IRQSC_IRQMOD = 0; //edge detect only
    //Port A setup
    PTADD_PTADD2 = 0; //interrupt input PTA2
    
    //Port B setup
    PTBDD = 0x10; //interrupt input PTB0; dip switch inputs PTB1-3; PTB4 = LED output
    PTBPE = 0x0F; //enable pullups on PTB0-3
    
    //Port C setup
    PTCDD = 0x00; //dip switch inputs PTC0-3
    PTCPE = 0x0F; //pullups enabled for PTC0-3
    
    //Port A pin 2 interrupt setup
    PTASC_PTAMOD = 0; //edge detect mode
    PTAPS_PTAPS2 = 1; //PTA2 interrupt enabled
    PTAES_PTAES2 = 1; //rising edge detection
    
    //Port B pin 0 interrupt setup
    PTBSC_PTBMOD = 0; //edge detect mode
    PTBPS_PTBPS0 = 1; //PTB0 interrupt enabled
    PTBES_PTBES0 = 1; //rising edge detection
    
    //PWM CH0 setup
    TPM1SC_TOIE = 0; //disable timer overflow interrupts
    TPM1SC_CPWMS = 0; //output compare mode
    TPM1SC_CLKSA = 1; //clock source = bus clock
    TPM1SC_CLKSB = 0;
    TPM1SC_PS0 = 1; //prescalar of 2 (1MHz output resolution)
    TPM1SC_PS1 = 0;
    TPM1SC_PS2 = 0;
    
    TPM1C0SC_CH0IE = 0; //disables interrupts on CH0
    TPM1C0SC_MS0A = 1; //output compare mode
    TPM1C0SC_MS0B = 0;
    TPM1C0SC_ELS0A = 1; //toggle output on compare
    TPM1C0SC_ELS0B = 0;
    
    
    /*adjust value change - LED lights to indicate change has been made
    value is 0.5% multiplied by 7-bit binary value on switches 1-7
    if SW8 is ON then decrease speed reading, OFF increase speed reading
    adjust value increases to decrease speed and vice versa*/
    tempdata = (~PTCD & 0x07)<<3; //PTC0-2 form upper byte
    tempdata += (~PTBD & 0x0F)>>1; //PTB1-3 form lower byte
    if (PTCD_PTCD3){ //if sw8 OFF
    adjust = 1+(tempdata*0.005); //decrease speed
    }
    else{ //if sw8 ON
    adjust = 1-(tempdata*0.005); //increase speed
    }
    
    
    Rcounta = 0; //counter starts at zero
    
    PTASC_PTAIE = 1; //Port A pin 2 interrupt request enabled
    IRQSC_IRQIE = 1; //IRQ interrupt enabled
    
    
    
    /************************************************** *******************************/
    /*for loop - repeats forever*/
    /************************************************** *******************************/
    for(;;) {
    __RESET_WATCHDOG();
    
    Scount = 0;
    lowflag = 0;
    PTBSC_PTBACK = 1; //clear flag
    while(!PTBSC_PTBIF); //wait for new pulse
    PTBSC_PTBACK = 1; //clear flag
    while(!PTBSC_PTBIF){ //count during this pulse
    Scount++;
    if (Scount > 8390){ // = 65535/7.875 (about a 15Hz speed signal)
    lowflag = 1;
    }//if
    }//while
    PTBSC_PTBACK = 1; //clear flag
    //PWM modulus setting
    if (lowflag == 0){
    speed = Scount;
    }
    else{
    speed = 8320;
    }
    temp = (float)speed;
    temp *= 7.875;
    temp *= adjust;
    speed = (int)temp;
    TPM1MODH = (speed & 0xFF00)>>8; //high byte
    TPM1MODL = (speed & 0X00FF); //low byte
    
    
    /*6th gear indicator LED
    check RPM count once every
    512 pulses of the speedo signal*/
    if (IRQflag ==1){
    if (Rcounta < 64){
    PTBD_PTBD4 = 0; //LED on
    }//if
    else{
    PTBD_PTBD4 = 1; //LED off
    }//else
    IRQflag = 0; //reset flag
    Rcounta = 0; //reset RPM counts
    IRQSC_IRQIE = 1; //re-enable Speed interrupt
    PTASC_PTAIE = 1; //re-enable RPM interrupt
    }//if
    
    
    }//for loop - repeats forever
    }//main
    /* IRQ_ISR - ISR that accompanies the IRQ pin Interrupt
    triggered by the speed signal divided by 256 input*/
    interrupt 2 void IRQ_ISR(void) {
    IRQSC_IRQACK = 1; //clear flag
    IRQflag = 1; //set indicator
    IRQSC_IRQIE = 0; //disable Speed interrupt
    PTASC_PTAIE = 0; //disable RPM interrupt
    }
    /* PTA_ISR - ISR that accompanies the Port A pin 2 Interrupt
    triggered by RPM signal*/
    interrupt 20 void PTA_ISR(void) {
    PTASC_PTAACK = 1; // clear flag
    Rcounta++; //increment RPM count
    }
    Quem puder e souber que de uma vista de olhos []


    EDIT: este codigo é para este micro: http://search.digikey.com/us/en/prod...CPJ-ND/1791371

    Comment


      #92
      Re: Acertar velocímetro com alteração de pneumáticos!

      [quote author=Jose Maria link=topic=928.msg50107#msg50107 date=1334264039]
      Axf
      comforme dice já vistes que existem varias soluções no mercado internacional nacional e artezanal
      desenhos existem varios, já tens ai uma ideia
      mas faltate sempre o melhor, o programa
      como penso que és licenciado toca a programar, se tiveres dificuldade posso ajudar [smile rir-se] [smile rir-se] [smile rir-se]
      [/quote]

      Pá...

      Eu, de programação, não percebo nada! [:-[ Mas nada como um bom desafio para animar os serões... [smile rir-se]
      "Beards are like boobs. The bigger they are, the longer you stare."

      Comment


        #93
        Re: Acertar velocímetro com alteração de pneumáticos!

        [quote author=jorge_rc link=topic=928.msg50099#msg50099 date=1334262408]
        http://www.siliconchip.com.au/cms/A_108157/article.html

        Apenas li por alto, mas confirma se isso nao esta próximo do que tu precisas []


        Abraço
        [/quote]

        Fantástico, Jorge!

        Já comprei o artigo e dei uma leitura séria, agora falta o passo que mais dúvidas me desperta - ir às compras! [chocadoo] Não sei se será fácil arranjar tudo por cá; achas que a dimofel em Lisboa terá tudo? Ou tens outra sugestão para mim?

        Estou a ficar empolgado com o projecto... [smile rir-se]
        "Beards are like boobs. The bigger they are, the longer you stare."

        Comment


          #94
          Re: Acertar velocímetro com alteração de pneumáticos!

          Eu nao tenho acesso a todo o artigo, mas suponho que traga uma lista de todos os componentes, correcto? Se pudesses postar, agradecia!

          Sobre o local a comprar, se for rápido, tenho um conhecido que está a preparar uma compra à Farnell (grande fornecedor electronico internacional) e certamente poderá incluir os componentes.

          E o artigo nao fornece o código de teste?


          Abraço

          Comment


            #95
            Re: Acertar velocímetro com alteração de pneumáticos!

            A lista: (ainda não traduzi mas se quiseres fazer esse favor eu agradeço porque também não sei todos!)

            Parts List
            1 PC board, code 05112061, 105 x 61mm

            1 UB3 plastic utility box, 130 x 68 x 44mm

            2 2-way PC-mount screw terminal blocks

            1 DIP18 IC socket

            3 2-way 2.5mm jumper headers

            1 3-way 2.5mm jumper header

            2 jumper shunts

            1 20MHz crystal (X1)

            1 0-9 BCD rotary switch (S1)

            1 0-F BCD rotary switch (S2)

            Semiconductors

            1 PIC16F628A-I/P microcontroller programmed with speedcor.hex (IC1)

            4 BC337 NPN transistors (Q1,Q2,Q3,Q5)

            2 BC327 PNP transistors (Q4,Q6)

            1 1N4004 1A diode (D1)

            2 16V 1W zener diodes (ZD1,ZD2)

            1 8.2V 1W zener diode (ZD3)

            1 3mm high-intensity red LED (LED1)

            Capacitors

            3 100mF 16V PC electrolytic

            2 10mF 16V PC electrolytic

            1 100nF MKT polyester

            1 10nF MKT polyester

            1 1nF MKT polyester

            Resistors (0.25W 1%)

            11 10kW 1 220W 0.5W

            1 6.8kW 1 150W

            5 1kW 1 10W

            1 470W
            "Beards are like boobs. The bigger they are, the longer you stare."

            Comment


              #96
              Re: Acertar velocímetro com alteração de pneumáticos!

              E sim, o artigo disponibiliza o software mas essa parte eu não domino mesmo! [ahhhhhh]

              Soldar componentes é mais ou menos acessível a um curioso, interpretar esquemas já é um pouco mais avançado mas a programação... esquece... []
              "Beards are like boobs. The bigger they are, the longer you stare."

              Comment


                #97
                Re: Acertar velocímetro com alteração de pneumáticos!

                Já pedi preço []

                e, se eles dao codigo, essa parte ate pode ja estar despachada [smile rir-se] So nao pedi preço para a placa em si, mas vou entrar em testes e esta pode ser base de teste [smile rir-se]


                Abraço

                Comment


                  #98
                  Re: Acertar velocímetro com alteração de pneumáticos!

                  Que seca, o Gmail não me deixa envir-te um mail com o software. Diz que não posso enviar ficheiros executáveis! [:-[ [:-[ [:-[

                  Como é que contorno isso?

                  Vou tentar arranjar maneira de guardar o artigo e enviar-to, nem que tenha de o imprimir e digitalizar novamente. Calculo que não seja possível envir-to directamente porque está on-line e é preciso pagar para ver mas vou ver o que arranjo.


                  Abraço,
                  André
                  "Beards are like boobs. The bigger they are, the longer you stare."

                  Comment


                    #99
                    Re: Acertar velocímetro com alteração de pneumáticos!

                    Envia apenas um ficheiro rar ou zip... Mas o código é um executavel? estranho... De qualquer forma, em PICs sei mesmo muito pouco, mas sempre dou uma vista de olhos... Os restantes componentes nao parecem muito caros, eu apostaria nuns 15€ com tudo, mas ha coisas que nao faço ideia o preço.

                    Se conseguires guardar o artigo (nem que seja página a página) e depois enviar, era porreiro!


                    Abraço

                    Comment


                      Re: Acertar velocímetro com alteração de pneumáticos!

                      Jorge, tens mail
                      "Beards are like boobs. The bigger they are, the longer you stare."

                      Comment

                      A trabalhar...
                      X