Toujours Pb avec PIC 16F884 Analog.
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

Toujours Pb avec PIC 16F884 Analog.



  1. #1
    invitea7daddeb

    Toujours Pb avec PIC 16F884 Analog.


    ------

    Bonjour !

    Je reviens avec un problème que je n'ai pas réussi à résoudre:
    Calibrer une entrée analogique en PicBasicPro.
    L'entrée relièe à la masse 0V me donne une valeur fixe jusqu'à 1V5 environ, ensuite, j'obtiens une progressivité avec la tension qui évolue jusqu'a 5V. Mais même relièe à la masse directement, avec une tension nulle 0V, j'ai une valeur numérique fixe 8Fh et celà jusqu'a 1v5 environ ou j'obtient brusquement la première conversion à 44h autour des 1,5V
    Je suis en conversion 8 bit.
    Si quelqu'un à des idées sur la question, merci d'avance....

    -----

  2. #2
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    En fait, je découvre que l'entrée PORTA.0 a une incidence sur la deuxième entrée analogique que j'utilise PORTA.1
    En dessous de 1V1 sur PORTA.1(mon voltmètre n'était pas très précis) je mesure la tension présente sur PORTA.0 alors que je m'adresse à l'entrée PORTA.1
    et en dessus de 1V1, je mesure bien la tension présente sur PORTA.1
    C'est à n'y rien comprendre ????

  3. #3
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    Je te recommande de lire le chapitre 3.1 page 39 de la datasheet du PIC16F884.

    Tu y trouveras une note en gris qui indique que les broches ANx/Rxx sont par défaut en analogique au RESET et qu'il faut les programmer en digital (registres ANSEL et ANSELH).

    a+

  4. #4
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    J'ajoute encore que je configure le paramètre ANSEL=%00000001 en PicBasicPro pour que l'entrée PORTA.0 fonctionne correctement, mais si je configure ANSEL=%00000011 pour utiliser les deux ports analogiques PORTA.0 et PORTA.1, alors là aucun des deux ne fonctionne.

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

    Re : Toujours Pb avec PIC 16F884 Analog.

    Merci RISC pour ta réponse.
    Si j'ai bien compris le DataSheet, ANSEL (c'est surtout lui qui m'intéresse pour PORTA) devrait représenter dans l'ordre des bits 0 à 8, les utilisations des PORTA de .0 à .8 en analogiques. Mais dès que je passe au PORTA.1 (bit 1 de ANSEL) ça ne fonctionne plus.
    Il y a quelque chose que je ne vois pas.

  7. #6
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    Pour utiliser le PORTA en digital, il faut initialiser les registres ANSEL/ANSELH ET TRISA. Seulement ensuite le PORTA pourra être utilisé en E/S
    Suit la recommendation de la datasheet et code en PicBasicPro l'équivalent de ce qui est recommandé (la séquence est donnée en ASM).

    a+

  8. #7
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Non, RISC, c'est le contraire. J'utilise les entrées PORTA. et PORTA.1 en Analogique et non en digital, Et si je fais comme le DataSheet le mentionne, ça ne fonctionne qu'avec PORTA.0, mais pas avec PORTA.1

  9. #8
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Je résume:
    J'essaye d'utiliser deux ports Analogiques PORTA.0 et PORTA.1 sur un PIC16F884.
    Pour ce faire j'ai configuré TRISA=%11111111
    Valeur VAR BYTE
    ANSEL=%00000001
    ADCON1=%00000000

    Et j'utilise la commande: adcin PORTA.0,Valeur
    Pour ce PORTA.0, ça marche !

    Mais si j'essaye d'utiliser le PORTA.1, là ça ne va plus:
    ANSEL=%00000011 ou ANSEL=%00000010 (c'est pareil pour PORTA.1)
    adcin PORTA.1,Valeur
    Valeur reste toujours à la même valeur en fonction de la tension présente sur PORTA.0. Et c'est là que je ne comprend plus !!

  10. #9
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    Ok, donc tu veux utiliser AN0 et AN1.
    Pour AN1, il existe 3 signaux : RA1/AN1/C12IN1-

    As-tu bien initialisé (même si tu les utilises en analogique) :
    TRISA = 0bxxxxxx11 ; (RA0 et RA1) en mode entrée
    (voir exemple 9.1 page 103).

    Peux-tu me confirmer que tu n'utilises PAS les comparateurs du PIC16F884 car les signaux se retrouvent multiplexés sur les même broches.

    Je te recommande de laisser un temps d'acquisition suffisamment long et aussi de choisir une période Tad qui respecte la spécification. Si ma mémoire est bonne les PIC16 peut échantillonner à 30ksps max.

    a+

  11. #10
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Oui, comme je te l'ai mis en #8, j'utilise toutes les entrées du portA et seulement PORTA.0 et PORTA.1 en analogique, d'ou mon TRISA=%11111111
    je n'utilise aucun comparateur.
    J'ai aussi utilisé un Tad de 10 fois ce qu'il faut pour être sûr, mais c'est toujours le même résultat.
    Effectivement, je pense à une interférence du comparateur, mais là, je ne sais pas quoi y faire ?... pas vu encore...
    Je te rappelle que j'arrive à mesurer quelque-chose sur PORTA.1 si je met le bit correspondant de ANSEL.1 à "0", (normalement correspondant à une I/O et non pas une Analogique.) mais seulement si la tension d'entrée sur PORTA.1 est suppérieure à 1V,1. en dessous, je mesure la tension qui se trouve sur l'autre port, le PORTA.0

  12. #11
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    Le problème ne vient a priori pas des comparateurs si tu ne les utilises pas (au reset ils sont désactivés).
    A ce stade il faut que tu montres ton code et ton schéma...

    Il y a obligatoirement un problème HW ou SW car la mise en oeuvre du CAN est normalement sans PB après avoir initialisé correctement les TRIS/ANSEL/PORT.
    Réalises un tout petit programme qui ne fait que mettre les 2 broches AN0 et AN1 en analogique et qui lance une conversion.

    a+
    Dernière modification par RISC ; 05/09/2009 à 20h13. Motif: correction

  13. #12
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Oui, je vais faire un petit Pgr pour le montrer et un schéma correspondant.
    Merci, a+

  14. #13
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Voici pour le Schéma...
    Images attachées Images attachées  

  15. #14
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Et voici le programme....



    @ device pic16F884 , WDT_OFF, PWRT_ON, PROTECT_off, INTRC_OSC_NOCLKOUT
    @ device2 FCMEN_OFF, IESO_OFF
    define OSC 20
    DEFINE NO_CLRWDT 1
    WHILE OSCCON.2=0 : WEND
    WDTCON.0=0
    OPTION_REG=%10000110
    OSCCON=%01110000




    TRISA=%11111111 '1= entrée
    TRISB=%00000001 '0= sortie
    TRISC=%00001111
    TRISD=%00000011
    TRISE=%00001111

    INTCON = %10110000
    ANSEL = %00000011
    ANSELH = %00000000
    ADCON1 = %00000000


    Potar1 var PORTA.0 'Entrée Analogique réglage
    Potar2 var PORTA.1
    Bp1 var PORTC.0
    Hauteur VAR byte
    Pass var bit

    DEFINE ADC_BITS 8
    DEFINE ADC_SAMPLEUS 50


    pass=1
    Deb 'début du programme
    if bp1 and pass then
    Pass=0
    adcin Potar1,hauteur
    write 0,hauteur
    adcin potar2,hauteur
    write 0,hauteur
    endif
    if not bp1 pass=1
    goto deb

    end

  16. #15
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    D'après ton programme, le résultat de la conversion est justifié à gauche. Est-ce bien le mode que tu veux utiliser ?

    Je ne vois pas l'initialisation de ADCON0 ? Il faut initialiser au moins les champs ADCS et ADON (voir page 104).

    Regarde la méthodologie de conversion décrite dans la datasheet section 9.2.6 page 103 et essaye de retranscire cela en Basic.

    a+

  17. #16
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Oui, justifié à gauche me donne les bits les plus significatifs, et cela me suffit. En ce qui concerne ADCON0, ADCS me parait converti en basic par ADC_SAMPLEUS 50 en basic ... mais j'ai peu d'info sur cette commande. toute les valeurs au dessus de 50 n'ont rien donné pour l'instant...
    Quand à ADON, je ne l'ai vu dans aucun exemple de conversion proposé par le fournisseur du Basic ???
    Et je vais faire quelques essais dans ce domaine.
    A plus, et merci .

  18. #17
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    ADON est vital...Il met sous tension le convertisseur A/N ....
    Pour être sûr qu'il soit activé, mets le dans la Watch window (mode debug de MPLAB), lance ton programme, arrête le et vérifie que ADON est à 1 dans ADCON0.

    Peux-tu me dire la valeur que tu vois dans MPLAB ?

    a+
    Dernière modification par RISC ; 09/09/2009 à 22h25. Motif: correction

  19. #18
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Hélas, je n'utilise pas MPLAB, car il n'utilise pas les mêmes syntaxes , et j'obtiens des erreurs que je n'ai pas eu le temps de comprendre. J'ai gardé l'assembleur par défaut du PicBasicPro. Je le regrette un peu, car j'avais commencé quelques petits prg. assembleur avec MPLAB....
    Bref ! je travaille en "Aveugle" sans debug, mais je commence à comprendre l'importance de ADON, et je vais essayer de creuser dans ce sens. Il y a cependant un détail que je ne comprend pas du tout, c'est que la conversion sur PORTA.0 AN0, fonctionne correctement sans se soucier de ADON ?????
    Merci pour l'info.

  20. #19
    RISC

    Re : Toujours Pb avec PIC 16F884 Analog.

    Salut,

    Que veux-tu dire par cela fonctionne ?
    Arrives tu à lire des résultats de conversions de 0x00 à 0x3FF quand ton entrée analogique varie de 0 à 5V ?

    Si c'est le cas tu peux être sur que tes macros initialise ADON à 1 ;=)

    Si tu travailles sans debug tu vas souffrir et avancer à la vitesse de l'escargot ;=).
    Commence par installer l'IDE gratuit MicroCode Studio qui est apparemment prévu pour PciBaic Pro : http://www.melabs.com/resources/win_ide.htm

    Pourquoi as-tu choisi PicBasicPro plutôt que le compilateur C gratuit Hitech Pro mode lite pour les PIC10/12/16 et MPLAB (gratuit également) ?

    a+
    Dernière modification par RISC ; 10/09/2009 à 14h11. Motif: addition

  21. #20
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Tout d'abord, MERCI. car en suivant ton conseil sur ADCON0, j'ai enfin fait le tour, et ça fonctionne !!!
    Et oui, il faut gérer ADCON0 totalement.
    Les exemples donnés avec le PicBasicPro sont un peu null, il ne parle pas de ce registre. Sans doute parce que la commande ADCIN du PicBasicPro "essaye" de le gérer, et y arrive sur l'entrée "0", mais rien à faire sur les autres !!!! En tout ca, Grand merci pour ton aide. ça marche bien maintenant, et je n'utilise plus cette commande restrictive du Basic.
    Je voulais gagner du temps avec le basic, et effectivement on va plus vite pour les choses simples, mais cela devient tellement plus restrictif dès que l'on veut compliquer un peu, que c'est finalement assez nul.
    Je vais me remettre à l'assembleur, c'est plus lourd, mais si on suit bien le dataSheet, au moins on a pas de surprises, tandis qu'avec le basic ??? on ne sait pas ce qu'il fait ....
    Merci encore.

  22. #21
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Pour répondre à ta question, oui j'obtenais 0x00 à 0x3FF de 0 à 5V avec la commande Basic "ADCIN" sur PORTA.0, sans gérer ADCON0, mais n'importe quoi comme valeur, dès que je mesurais PORTA.1

  23. #22
    invitea7daddeb

    Re : Toujours Pb avec PIC 16F884 Analog.

    Voici le petit sous programme qui fonctionne, mais faut-il remettre ADCON0.0 à "0" ? est-ce nécessaire entre chaque mesure ?

    mesure 'Sous programme de mesure analogique
    SELECT CASE Chs 'Chs contient le N° du port An à mesurer
    case 0
    ADCON0.2 =0 'Sélection de l'entrée analogique
    ADCON0.3 =0
    ADCON0.4 =0
    ADCON0.5 =0
    case 1
    ADCON0.2 =1
    ADCON0.3 =0
    ADCON0.4 =0
    ADCON0.5 =0
    end select
    ADCON0.0=1 ' mise sous tension du convertisseur ANa
    ADCON0.1=1 'début de la conversion
    WHILE ADCON0.1=1 : WEND 'attente de fin de conversion
    hauteur = ADRESH ' valeur haute dans variable "Hauteur" justifié à gauche
    return

Discussions similaires

  1. Sortie analog 0-10V avec PWM d'un PIC...!!!
    Par chminds dans le forum Électronique
    Réponses: 1
    Dernier message: 18/02/2009, 13h34
  2. Allumer une LED avec un pic 16F884 (langage c)
    Par invitea9087f3b dans le forum Électronique
    Réponses: 4
    Dernier message: 17/02/2008, 20h41
  3. Analog switch, analog MUX.petite question d'alim
    Par Flastick dans le forum Électronique
    Réponses: 9
    Dernier message: 03/04/2007, 08h36
  4. Toujours Du Pic
    Par invite436dc8ee dans le forum Électronique
    Réponses: 5
    Dernier message: 03/06/2006, 17h31
  5. PIC encore et toujours
    Par inviteab233b68 dans le forum Électronique
    Réponses: 12
    Dernier message: 27/05/2003, 18h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.