calcul de distance/vitesse pic 16F876
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

calcul de distance/vitesse pic 16F876



  1. #1
    invite47939b42

    calcul de distance/vitesse pic 16F876


    ------

    bonjour

    je travail sur un projet intitulé: afficheur de vitesse/distance a base d'un PIC 16F876,
    le problème c'est que j n'arrive a comprendre comment calculer la distance a partir de la vitesse en utilisant les interruptions venant de la broche RBO.
    a chaque interruption (avec une fréquence précis) on accumule la vitesse en (m/s) déjà mesuré, dans une variable appelé DISTANCE

    pour koi on utiliserait l'interruption RB0 dans le calcul de distance??

    -----

  2. #2
    invite7fef78c4

    Re : calcul de distance/vitesse pic 16F876

    a mon avis l'interruption permet de mesurer un temps qui te permettra de déterminer la distance et donc la vitesse.
    Tu emets une onde et tu regard combien de temps elle met à revenir.

  3. #3
    vincent66

    Re : calcul de distance/vitesse pic 16F876

    La vitesse et la distance d'une choucroute garnie ou d'un véhicule à roues..?

  4. #4
    invite47939b42

    Re : calcul de distance/vitesse pic 16F876

    voila
    le projet est un afficheur de vitesse/distance de voitures, pour mesure la vitesse on utilise un capteur a effet hall, cela se fait en acumulant les interruptions venant du capteur chaque seconde, comme ça on a le nombre de tour/S( chaque impulsion correspond à un tour de roue), maintenant cette vitesse une fois converti en m/s, est utilisé dans le calcule de distance, à chaque interruption de RB0 (avec une frequence précis) on accumule le contenu de la variable contenant les m/s (l'unité de temps 1s et faite pas timer 1) dans la variable DISTANCE.
    (en mesure la vitesse puis en deduit la distance)
    j' espère que j'ai suffisament expliquer
    pour koi RB????????

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

    Cool Re : calcul de distance/vitesse pic 16F876

    Bonjour,

    parce que RB0 est configurable en entrée numérique interruptible...
    ci-dessous une exemple fonctionnel de compte tours en "pseudo-code", à traduire dans ton langage... puis à "personnaliser" (affichage, conversion en km/h...)...exemple adapté à un PIC tournant (Quartz) à 20Mhz... mais
    adaptable à toutes vitesses (1Mhz et +)...
    Code:
    word fronts, tours
    byte compteur_t1
    
    interruptions 
    ( 
       si INTCON.INTF = 1 // si INT RB0
       (
         inc(fronts)
         INTCON.INTF = 0  // re-active INT RB0
       )   
       si PIR1.TMR1IF = 1 // si INT TMR1
       (
         inc(compteur_t1)
         if compteur_t1>9
         (
           tours = fronts
           fronts = 0
           compteur_t1 = 0
         )
         TMR1L = 220     // période de 100ms(x10) @ 20Mhz
         TMR1H = 11      // période de 100ms(x10) @ 20Mhz     
         PIR1.TMR1IF = 0 // re-active INT TMR1
       )
    )
    
    main 
    (
     ADCON0 = %00000000  // ADC OFF
     ADCON1 = %00000111  // ADC OFF
     TrisB  = %00000001  // port RB0 en entrée
     T1CON  =   %110001  // activation du TMR1, avec PreScaler=8
     INTCON = %11010000  // activation INT RB0 + Périphs
     PIE1   = %00000001  // activation INT TMR1
    // LE PROGRAMME PRINCIPAL
     while true
     (   
       affiche(tours + " tours par seconde")
     )
    )
    vede
    ;O]
    ___________________
    ...

    pour ce que tu comprends pas référes toi à la datasheet de ton PIC...
    car tous y est détaillé (ADCON, TRISB, T1CON, INTCON, PIE1, PIR1...)...

  7. #6
    invite47939b42

    Re : calcul de distance/vitesse pic 16F876

    INTERRUPTION RB0/INT

    intrb0

    movlw vitessel
    addwf distance0,f
    btfss STATUS,C
    goto calvit
    movlw 0x1
    addwf distance1,f
    btfss STATUS,C
    goto calvit
    addwf distance2,f
    btfss STATUS,C
    goto calvit
    addwf distance3,f
    return
    calvit

    movlw 0X64 ;recharger 100 dans temps(100*30000instructions=50 0ms)
    movwf temps
    movlw 0xFF-0x75 ;(recharger TMR1H avec 0x75 :0x7530=30000)
    movwf TMR1H ; :
    movlw 0xFF-0x30 ;recharger TMR1L avec 0x30 :
    movwf TMR1L ;
    clrf TMR0
    BANK1
    bsf PIE1,0 ; autoriser l'interruption TMR1
    return ; fin d'interruption RB0/INT
    ;***************************** **********************
    ; INTERRUPTION TIMER 1 *
    ;***************************** ********************
    inttmr1

    decfsz temps,f ;décrémenter temps(dont le contenu est 100:100*30000=3000000 instructions soit 1s)
    goto recharg ;si temps n'est pas nul aller à recharg pour recharger le timer avec 30000
    movf TMR0,W ;si temps nul lire le contenu de TMR0
    movwf vitesse ;et le stocker dans vitesse(vitesse en tours/s)/2
    BANK1
    bcf PIE1,TMR1IE ;bloquer l'interruption TMR1
    return ;fin taitement interruption
    recharg
    movlw 0xFF-0x75 ;recharger TMR1H avec 0x75 :0x7530=30000
    movwf TMR1H ; :
    movlw 0xFF-0x1C ;recharger TMR1L avec 0x30 :
    movwf TMR1L ; :
    goto inttmr1 ;fin taitement interruption


    c'est un bout de programme d'interuption RBO et timer 1 ce dernier on le charge avec la valeur 30000 , à chaque interruption de ce timers ya une valeur de 100 qui se decrémente,une fois arrivé à 0 donc ya une seconde qui s'écoulé( unité de temps)
    maintemant, est'il necessére d'utilisé l'interruption RB0, pour calculé la distance, et quelle fréquence doit on utilisé (RB0)

    je sais que la l'entrée RB0 est numerique, mais y aura t'il un probléme si on l'utilise pas, et se cotenté de ajouté directement la vitesse m/s (nombre de tours convertient en mettre) dans la variable DIstance

  8. #7
    vincent66

    Re : calcul de distance/vitesse pic 16F876

    Dans ce cas il est impératif d'utiliser une interruption générée par le capteur, et il se trouve que RB0 est très simple et pratique à utiliser... mais il me semble qu'une mesure nettement plus précise serait obtenue en mesurant le temps nécessaire à une rotation plutôt que le nombre de rotations par seconde...
    Courage !
    Vincent

  9. #8
    invite47939b42

    Re : calcul de distance/vitesse pic 16F876

    vous m'avez pas dit QUELLE EST LA VALEUR AJOUTé si on utilise cette interruption( RB0 )
    sachant qu'on peut l'accumuler directement la vitesse (nombre d'impulsion * circenfléx)/s

    MERCI

  10. #9
    invite7a49d0d5

    Cool Re : calcul de distance/vitesse pic 16F876

    Citation Envoyé par XARINO Voir le message
    vous m'avez pas dit QUELLE EST LA VALEUR AJOUTé si on utilise cette interruption( RB0 )
    sachant qu'on peut l'accumuler directement la vitesse (nombre d'impulsion * circenfléx)/s

    MERCI
    Bonjour,

    la valeur ajoutée est que RB0 est une entrée interruptible...

    sinon tu peux utiliser n'importe quelle entrée (RB1,RB2...RA0,...) pour
    "acquérir" les impulsions venant du capteur à effet Hall...
    donc sans interruption, mais cela nécessitera de coder une
    "detection" des impulsions, ce qui peut fausser les mesures de temps...
    et en plus c'est moins pratique...

    >sachant qu'on peut l'accumuler directement la vitesse (nombre d'impulsion * circenfléx)/s
    sans une entrée (RB0, RB1... RA0,...) c'est impossible de "saisir" les impulsions...
    RB0 ne sert pas à compter les impulsions, mais à les "acquérir"...

    après dans ton code je vois Timer0 et Timer1...???
    et les calculs de temps (30000???) me paraissent hasardeux...
    quelle est la vitesse de l'horloge principale (Quartz)???? 12Mhz???
    relis mon code exemple dans mon précédent post ... il fonctionne...

    pour finir je vois que tu codes en "asm", donc je te conseille
    vivement les Cours de Monsieur BigOnOff :
    http://www.abcelectronique.com/bigonoff/index.php
    pour commencer...

    @vincent66 : c'est probablement possible... faudrait voir la
    circonférence de la roue, la position du capteur, les vitesses min/max,
    la précision voulue, les calculs engendrés, etc... pour définir la meilleur
    solution (compter les impulsions pendant une "fenêtre", ou bien mesurer
    le temps que met la roue pour faire un tour)...

    vede
    ;O]
    ___________________
    ...

  11. #10
    invite7a49d0d5

    Cool Re : calcul de distance/vitesse pic 16F876

    re ;O]

    je me rends compte que je suis allé trop vite avec mes exemples...
    pour assilimer les principes (timer, int...), il faut commencer par
    un programme simple afin de les maîtriser... avant d'aller plus loin...

    donc le "hello world" électronique, c'est de faire clignoter une led...
    à différentes fréquences...et ici en utilisant timer et interruptions...
    c'est comme ça que je fais pour comprendre...

    un de mes récents exemples dans le post #18 de ce fil:
    http://forums.futura-sciences.com/el...pic16f690.html

  12. #11
    vincent66

    Re : calcul de distance/vitesse pic 16F876

    A chaque tour (chaque interruption RB0) on incrémente la variable "distance" de la circonférence de la roue et connaissant la distance parcourue en un certain laps de temps on peut en déduire la vitesse...
    Amitiés !
    Vincent

Discussions similaires

  1. comptage de pic 16f876
    Par invitecc7d26cf dans le forum Électronique
    Réponses: 1
    Dernier message: 05/03/2009, 22h14
  2. Calcul - vitesse, temps, distance ...
    Par inviteb75cfe19 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 17/01/2009, 15h24
  3. Différence entre PIC 16F876 et PIC 16F876A
    Par invite3c59dc04 dans le forum Électronique
    Réponses: 2
    Dernier message: 09/03/2008, 15h32
  4. pic 16f876
    Par invite6568e6cf dans le forum Électronique
    Réponses: 2
    Dernier message: 21/05/2006, 19h19
  5. Pic 16f876
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 22/04/2006, 14h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...