Compteur vitesse pic16f88
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Compteur vitesse pic16f88



  1. #1
    inviteef905e6d

    Compteur vitesse pic16f88


    ------

    Bonjour j ai un souci avec mon compteur vitesse car tableau de bord hs . Le principe marche bien mais je n arrive pas a faire la conversion Volt KMH

    Merci de m aider je suis nouveau dans la programmation de PIC

    Code:
     /*Header******************************************************/
    
    // LCD module connections
    sbit LCD_RS at RB4_bit;
    sbit LCD_EN at RB5_bit;
    sbit LCD_D4 at RB0_bit;
    sbit LCD_D5 at RB1_bit;
    sbit LCD_D6 at RB2_bit;
    sbit LCD_D7 at RB3_bit;
    sbit LCD_RS_Direction at TRISB4_bit;
    sbit LCD_EN_Direction at TRISB5_bit;
    sbit LCD_D4_Direction at TRISB0_bit;
    sbit LCD_D5_Direction at TRISB1_bit;
    sbit LCD_D6_Direction at TRISB2_bit;
    sbit LCD_D7_Direction at TRISB3_bit;
    // End LCD module connections
    
    unsigned char ch;                    //
    unsigned int adc_rd;                 // Declare variables
    char *text;                          //
    long tlong;                          //
    
    void main() {
        INTCON = 0;                      // All interrupts disabled
        ANSEL = 0x04;                    // Pin RA2 is configured as an analog input
        TRISA = 0x04;
        ANSEL = 0;                      // Rest of pins are configured as digital
    
        Lcd_Init();                      // LCD display initialization
        Lcd_Cmd(_LCD_CURSOR_OFF);        // LCD command (cursor off)
        Lcd_Cmd(_LCD_CLEAR);             // LCD command (clear LCD)
    
        text = "Peugeot ";       // Define the first message
        Lcd_Out(1,1,text);               // Write the first message in the first line
        text = "";            // Define the second message
        Lcd_Out(2,1,text);               // Define the first message
    
        ADCON1 = 0x82;                   // A/D voltage reference is VCC
        TRISA = 0xFF;                    // All port A pins are configured as inputs
        Delay_ms(30);
         
        Lcd_Cmd(_LCD_CLEAR);             // LCD command (clear LCD)
        
        while (1) {
            text = "KMH:";               // Define the third message
            Lcd_Out(1,4,text);
            adc_rd = ADC_Read(2) / 3,5;        // A/D conversion. Pin RA2 is an input.
            Lcd_Out(2,4,text);           // Write result in the second line
    
            Delay_us(3);
        }
    }

    -----
    Dernière modification par Antoane ; 28/10/2015 à 17h30. Motif: Insertion du programme dans le corps du message

  2. #2
    antek

    Re : Compteur vitesse pic16f88

    Il faudrait connaitre la relation entre vitesse et tension.

  3. #3
    paulfjujo

    Re : Compteur vitesse pic16f88

    bonjour,



    ou est l'init de l'ADC ?

    il faut convertir ADC la mesure en string, pour resultat en points
    definir un Coeff de mise à l'echelle ne unites physiques , ici kmh.

    exemple (non testé)
    Code:
    char txt[17];
    float kmh;
    
    #define Coeff  3.14116;
    
    ... main progr ..
    .. all init
     Adc_Init(); 
      while (1)
      {
            strcpy(txt, "Pts :          ");               // Define the first message
            Lcd_Out(1,4,text);
            adc_rd = ADC_Read(2) / 3,5;        // A/D conversion. Pin RA2 is an input.
           WordToStr(adc_rd,txt);
            Lcd_Out(1,6,text);           //  result in points 
    // calcul pour conversion à inserer 
    // coeff à determiner 
            kmh=(float)adc_rd * Coeff;
             strcpy(txt, "kmh :          ");               // Define the 2nd message
            Lcd_Out(2,1,text);
           floatToStr(kmh,txt);
           Lcd_Out(2,1,text);     
            Delay_ms(100);
        }

  4. #4
    inviteef905e6d

    Re : Compteur vitesse pic16f88

    MERCI pour m aider je vais essayer ça je vous dis sa plus tard .

  5. A voir en vidéo sur Futura
  6. #5
    inviteef905e6d

    Re : Compteur vitesse pic16f88

    Encore moi ça marche pas je comprends pas CONFIG MCLR ON INTRICIO 4MHZ

  7. #6
    paulfjujo

    Re : Compteur vitesse pic16f88

    Citation Envoyé par JEJE89000 Voir le message
    Encore moi ça marche pas je comprends pas CONFIG MCLR ON INTRICIO 4MHZ
    As-tu un quartz comme oscillateur ou pas ?
    post ton fichier *.cfg ( configuration de sbits )
    ou capture l'ecran Project -> edit Project -> project

    Qu'est-ce qui ne marche pas ?
    Ton programme tourne ?
    essai d'abord avec une simple led ON /OFF

  8. #7
    inviteef905e6d

    Re : Compteur vitesse pic16f88

    Bonjour ma confit est mclre sur on oscillateur interne a 4mhz
    Le compteur tourne en volt mais pas assez vite a mon gout
    Et je n arrive pas a faire la convention en kmh

  9. #8
    paulfjujo

    Re : Compteur vitesse pic16f88

    j'avais pas fait gaffe à ceci
    Code:
    adc_rd = ADC_Read(2)/3.5;
    on ne divise pas un entier par un flottant!
    enleve la division par 3.5




    Code:
    //si 3.5 est ton coefficient d emise à l'echelle en Kmh
    #define Coeff 0.28571429      //  soit 1/3.50
    .....
       Adc_Init(); 
      while (1)
      {
            strcpy(txt, "Pts :          ");               // Define the first message
            Lcd_Out(1,4,text);
            adc_rd = ADC_Read(2) ;        // A/D conversion. Pin RA2 is an input.
           WordToStr(adc_rd,txt);
            Lcd_Out(1,6,text);           //  result in points 
    // calcul pour conversion à inserer 
    // coeff à determiner 
            kmh=(float)adc_rd * Coeff;
             strcpy(txt, "kmh :          ");               // Define the 2nd message
            Lcd_Out(2,1,text);
           floatToStr(kmh,txt);
           Lcd_Out(2,1,text);     
            Delay_ms(100);   // <- à reduire si besoin est
        }

    ou si tu ne veux pas verifier /exploiter la valeur brute de l'ADC

    Code:
       Adc_Init(); 
      while (1)
      {
           adc_rd= ADC_Read(2);
           kmh= (float) adc_rd / 3.5;
           strcpy(txt, "kmh :          ");               // Define the 2nd message
            Lcd_Out(2,1,text);
           floatToStr(kmh,txt);
           Lcd_Out(2,1,text);     
            Delay_ms(5); 
      }

  10. #9
    inviteef905e6d

    Re : Compteur vitesse pic16f88

    Merci ça marche juste je trouve le temp un peut lent pour remettre l adc a jour sur LCD pourtant j ai diminuer le temps a 1 ms

  11. #10
    paulfjujo

    Re : Compteur vitesse pic16f88

    Enleve carrement la tempo .. mais bon 1mS , c'est peanuts
    mais l'affichage LCD peut ralentir le tout ,
    d'autant qu'à 4MHz => 4/4=> 1Mhz 1µS par instruction... mais quand meme !
    l'ADC ne devrait pas necessiter plus de 130µS pour faire son acquisition..

    Mais quid de ta mesure analogique .. filtrée ?

  12. #11
    inviteef905e6d

    Re : Compteur vitesse pic16f88

    Merci en faite ça vas le faire comme ça j installe ça demain dans la voiture

Discussions similaires

  1. Quelle vitesse affiche mon compteur de vitesse?
    Par Zefram Cochrane dans le forum Physique
    Réponses: 17
    Dernier message: 03/02/2014, 20h46
  2. [Divers] Compteur vitesse + compteur kilométrique 206 en panne
    Par invite0dd00880 dans le forum Dépannage
    Réponses: 7
    Dernier message: 25/10/2009, 08h00
  3. PPE compteur vitesse
    Par inviteed5cf7ab dans le forum Électronique
    Réponses: 2
    Dernier message: 02/02/2009, 09h36
  4. Compteur de vitesse
    Par invite624274eb dans le forum Électronique
    Réponses: 9
    Dernier message: 10/01/2009, 18h41
  5. Pic16F88 pour Compteur
    Par invite68e72f91 dans le forum Électronique
    Réponses: 1
    Dernier message: 27/02/2007, 00h16
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...