Comparateur PIC18f4520
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Comparateur PIC18f4520



  1. #1
    inviteceb35e31

    Comparateur PIC18f4520


    ------

    Bonjour,

    Je travaille actuellement sur un projet d'école ou je dois gérer un moteur, un LCD et plusieurs paramètres qui ne servent à rien de savoir pour ma question...

    Je programme sur un PIC18f4520 et j'aurais besoin de contrôler qu'une tension ne dépasse pas un certain seuil (la tension d'une résistance de shunt en sortie du moteur).

    J'ai quelques connaissances en programmation sur PIC comme les timers, les PWM, ect... Mais alors pour les comparateurs, aucunes.

    Ma tension doit être comparée avec une tension produite par le PIC (par un convertisseur DA je crois ...).

    Si quelqu'un pourrait m'aider en m'indiquant comment faire (registre, ect...) avec un petit bout de code ça serait génial !

    -----

  2. #2
    invite831b139b

    Re : Comparateur PIC18f4520

    Bonjour,
    Je débute un peu en programmation mais je vais quand même essayer de t'aider
    d'abord est-ce que tu es obligé d'utiliser le comparateur ou tu es libre d'utliser l'ADC? Je n'ai jamais utilisé le comparateur mais avec l'ADC c'est surement faisable:

    Je viens de faire un petit bout de programme avec l'ADC et une simulation sous ISIS.

    voici le code (très simple):
    Code PHP:
    #include <ADCTEST.h>
    long tension;
    long limite;

    void main()
    {

       
    setup_adc_ports(ALL_ANALOG|VSS_VDD);
       
    setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_2);
       
    setup_psp(PSP_DISABLED);
       
    setup_spi(SPI_SS_DISABLED);
       
    setup_wdt(WDT_OFF);
       
    setup_timer_0(RTCC_INTERNAL);
       
    setup_timer_1(T1_DISABLED);
       
    setup_timer_2(T2_DISABLED,0,1);
       
    setup_comparator(NC_NC_NC_NC);
       
    setup_vref(FALSE);

    limite 512;

    while (
    true)
       {
          
    set_adc_channel(0);
          
    delay_us(10);
          
    tension=read_adc();

       if (
    tension <= limite)
          {
          
    output_high (PIN_B1);
          
    output_low (PIN_B0);
          }
       if (
    tension limite)
          {
          
    output_high (PIN_B0);
          
    output_low (PIN_B1);
          }
       }

    l'ADC est en 10 bits (0 à 1023).
    En gros j'ai fixé la limite à VCC/2, pas besoin de tension de référence, elle est enregistrée dans le code.

    Dans l'exemple la tension peut varier entre 0 et 5V, c'est à dire de 0 à 1023.
    Dans le schéma elle est représentée par le potentiomètre.
    Lorsque la tension se situe en dessous de VCC/2, la led est verte, sinon elle est rouge.

    Voila, j'espère que ça aura pu t'aider

    PS: en pièce jointe une archive avec le schéma et le fichier DSN si desfois tu as proteus, et le code fait sous CCS.
    Fichiers attachés Fichiers attachés

  3. #3
    invite831b139b

    Re : Comparateur PIC18f4520

    Ah oui... j'oubliais que la balise php supprimait les espaces...
    utilise le bloc note pour ouvrir le .c et .h

  4. #4
    RISC

    Re : Comparateur PIC18f4520

    Salut,

    Pourquoi t'embeter avec le convertisseur A/N alors que la fonction dont tu as besoin est un simple comparateur ;=)
    Le PIC18F4520 intègre 2 comparateurs dont tu peux programmer la référence (interne ou externe). Dès que le seuil est dépassé, cela provoque une interruption et il te suffit de couper ton moteur ou ton pont de puissance.

    Tu trouveras des tutoriels sur le PIC18F4520 ici : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm
    et des exemples de code ici.

    a+

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

    Re : Comparateur PIC18f4520

    Hello,

    Désolé de vous répondre seulement maintenant... J'ai eu des ENORMES problèmes informatiques...

    Merci mica25000, mais le but d'utiliser un comparateur est justement de pouvoir libérer mon PIC d'une routine à exécuter toutes les 10ms par exemple...

    Je vais aller regarder tes liens RISC

    Merci énormément !!!

  7. #6
    inviteceb35e31

    Re : Comparateur PIC18f4520

    Encore une question RISC
    Tu m'as l'air de bien connaître ce thème et tu parles d'une interruption quand le seuil de tension est dépassé sur mon entrée. Mais dans les codes exemples que j'ai trouvés, ils ne font que regarder en permanence dans une boucle infinie si la tension n'est pas dépassée. (Si je ne me trompe pas bien sûr ...) :

    config = COMP_OP_INV_NONE | COMP_1_2_INDP | COMP_INT_EN ;
    Open_ancomp(config);

    while(1)
    {
    if( (CMCON&0x40) ) //check for the comparator output status or comparartor interrupt flag status
    CMPResult=1; //flag the logic 1 status of comparartor output
    else
    CMPResult=0; // flag the logic 0 status ofcomparator output
    }

    Or, moi j'ai besoin d'une interruption qui se déclenche comme une simple interruption externe...

    En sais-tu d'avantage ?

    Merci encore et bonne soirée !

Discussions similaires

  1. affichage lcd pic18f4520
    Par invite6e41a347 dans le forum Électronique
    Réponses: 6
    Dernier message: 28/04/2010, 12h05
  2. Pb de PORTB sur PIC18F4520 et PICDEM2 plus
    Par invite3d87268c dans le forum Électronique
    Réponses: 5
    Dernier message: 02/03/2010, 18h03
  3. Pb programation pic18f4520
    Par invitef3cad303 dans le forum Électronique
    Réponses: 2
    Dernier message: 28/04/2009, 08h10
  4. pic18F4520
    Par bird12358 dans le forum Électronique
    Réponses: 0
    Dernier message: 04/01/2009, 17h48
  5. liaison série entre un PC et un PIC18F4520
    Par inviteadb2df5e dans le forum Électronique
    Réponses: 11
    Dernier message: 21/05/2008, 13h12
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...