Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Pb programmation PIC 16F877 et CNA



  1. #1
    Gaon

    Pb programmation PIC 16F877 et CNA

    Bonjour à tous,

    Tout d'abord, merci à tous ceux qui font vivre ce forum! Il m'a déjà beaucoup aidé...mais, là, malheureusement, je n'ai pas trouvé de réponse au problème que je rencontre!

    Je souhaite réaliser un télémètre ultrason. Pour cela, j'ai récupérer certaines parties de projet sur le net, notamment une programmation de PIC pour 16F877A.Cela consiste à générer un signal à 40kHz, le recevoir, et compter le temps entre l'envoi et la reception pour en déduire la distance.

    Le tout fonctionne correctement, mais j'ai besoin d'un peu plus: je voudrais faire sortir du PIC la valeur du timer1 sur lequel je compte la différence de temps entre l'envoi et la reception.
    Le gros ennui étant que ce compteur est sur 16bit (avec 2x8bits:TMR1H et TMR1L, respectivement les bits de poids fort et de poids faible). Du coup, je n'arrive pas à comprendre comment sortir cette valeur de 16 bits pour ensuite la convertir en analogique.
    J'ai cru comprendre que cette valeur ''sortait'' en réalité à tour de rôle : une fois les TMR1H, puis au front d'horloge suivant, les TMR1L. Cela ne prendrait que 8 pattes..

    Est-ce que quelqu'un aurait déjà rencontré ce genre de problème? ou mieux, quelqu'un qui l'aurait résolu?

    N'hésitez pas à me demander plus d'infos, si je n'ai pas été assez clair!
    Merci d'avance!

    -----


  2. Publicité
  3. #2
    Seb.26

    Re : Pb programmation PIC 16F877 et CNA

    Quand tu dis "sortir", tu veux dire communiquer le résultat à l'exterieur du PIC, genre à un PC ?

    Dans ce cas, l'UART est pas mal simple ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #3
    Gaon

    Re : Pb programmation PIC 16F877 et CNA

    Citation Envoyé par Seb.26 Voir le message
    Quand tu dis "sortir", tu veux dire communiquer le résultat à l'exterieur du PIC, genre à un PC ?

    Dans ce cas, l'UART est pas mal simple ...
    Oui, oui, c'est pour transmettre la valeur (tension) en analogique, proportionnelle à la distance vers un convertisseur tension-fréquence (LM331), et ensuite générer un son (une fréquence en fonction de la position de la main), comme un instrument de musique.

    J'ai trouvé l'USART dans la datasheet du 16F877A, et en effet, ça a l'air pas mal, mais comment faire pour transmettre le résultat de mon compteur (16 bits) vers un CNA à partir de 8 pattes (car l'USART est sur 8 bits)??

    Ou alors je devrai me contenter des bits de poids fort?

  5. #4
    Gaon

    Re : Pb programmation PIC 16F877 et CNA

    Ah d'accord, L'UART permet des opérations d'envoi/reception non synchrones... Mais, j'ai pas l'impression qu'on puisse le bloquer en mode envoi...Parce qu'au final, je veux juste envoyer des données vers un CNA!

  6. #5
    Seb.26

    Re : Pb programmation PIC 16F877 et CNA

    Je pense qu'il faudrait que tu explique un poil ton système, car maintenant tu parle de CNA 8b ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. A voir en vidéo sur Futura
  8. #6
    Gaon

    Re : Pb programmation PIC 16F877 et CNA

    Citation Envoyé par Seb.26 Voir le message
    Je pense qu'il faudrait que tu explique un poil ton système, car maintenant tu parle de CNA 8b ...
    Très bien:
    Mon projet est de réaliser un télémètre ultrason qui génère un fréquence sonore en fonction de la position d'un obstacle, en l'occurence la main, puisque l'utilisation serait ''musicale''. NB j'ai réduit le champ du telemetre US pour obtenir une détection de distance presque sur une colonne d'air (au dessus des emetteur/recepteur)

    Pour cela, j'ai réalisé le télémètre à US à partir d'un PIC 16F877A cadencé à 8MHz, qui génère un signal à 40kHz et l'envoi sur un transducteur US. Je reçois l'écho sur le recepteur lorsqu'il y a obstacle. Le PIC détecte celui-ci et chronomètre (à l'aide du timer1 sur 16 bits, décomposé apparement en TMR1H et TMR1L) la différence entre l'émission et la reception de l'écho. On obtient donc un temps, que le PIC convertit en distance (avec vitesse du son=330m/s).
    J'obtient donc une variable contenant la valeur de la distance appareil/obstacle sur 16bits. MAIS, cette valeur est, d'après la datasheet du PIC, décomposé en 2 variables TMR1H (bits de poids fort) et TMR1L (bits de poids faible), d'où une variable en 2x8bits. Et si j'affecte un port du PIC à cette variable, j'obtiens TMR1L et TMR1H à tour de rôle.

    Je cherche donc un moyen d'obtenir, soit une variable en 1x16bits (pour ensuite la convertir en tension analogique), soit un moyen pour convertir ma variable en 2x8bits en tension analogique proportionnelle à la distance.

    C'est pour ça que je parle de CNA 8bits....Mais peut-être que je me trompe pour les TMR1L et TMR1H...

    Tout cela, en sachant que je souhaite convertir ma tension (proportionnelle a la distance) en signal dont la fréquence varie en fonction de la distance.

    Voila, j'espère que j'ai été assez clair.

  9. Publicité
  10. #7
    Gaon

    Re : Pb programmation PIC 16F877 et CNA

    En réalité, je vais certainement essayer de sortir directement un signal dont la fréquence dépend de la distance, par le PWM channel (puisqu'il y en a deux ds le 16F877)...si le PWM accepte une fréquence variable...

Sur le même thème :

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/05/2009, 09h33
  2. Réponses: 0
    Dernier message: 18/03/2007, 15h43
  3. programmation en C pic 16F877
    Par Manu_67 dans le forum Électronique
    Réponses: 2
    Dernier message: 08/03/2007, 19h51
  4. Pic 16f877 Pic basic pro conseil
    Par ledinblue dans le forum Électronique
    Réponses: 10
    Dernier message: 04/01/2007, 17h26
  5. Aide pour programme PIC18F (PIC-->CNA)
    Par strat666 dans le forum Électronique
    Réponses: 1
    Dernier message: 12/06/2006, 21h54