CAN pic 18F448
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

CAN pic 18F448



  1. #1
    invite48b58dac

    CAN pic 18F448


    ------

    lBonjour a tous
    Je rencontre un petit problème de programmation.
    Je programme sous MPLABC18 un pic 18F448
    J'utilise dans mon projet 5 capteurs.(CNY70)
    Le but est d'allumer les leds quand mon composent passe devant les capteurs
    J'aimerais par le biais du CAN réaliser ce programme
    Si la tension analogique au borne de mon premier capteur est supérieur à ma tension de référence traduite par 25000 dans le programme alors la led1 s'allume au sinon elle s'éteind
    Si la tension analogique au borne de mon deuxième capteur est supérieur à ma tension de référence traduite par 25000 dans le programme alors la led2 s'allume au sinon elle s'éteind
    .
    .
    Si la tension analogique au borne de mon cinquième capteur est supérieur à ma tension de référence traduite par 25000 dans le programme alors la led5 s'allume au sinon elle s'éteind
    Voici le programme :
    void main(void)
    {
    TRISA=255;
    TRISC=0;
    ADCON1=0;
    while(1)
    {
    ADCON0=1;
    resultat1=mesVDD2();
    if(resultat1>25000)
    {

    PORTCbits.RC0=1;

    }
    else
    {
    PORTCbits.RC0=1;
    }
    ADCON0=9;
    resultat2=mesVDD2();
    if(resultat2>25000)
    {

    PORTCbits.RC1=1;

    }
    else
    {
    PORTCbits.RC1=1;
    }
    ADCON0=17;
    resultat3=mesVDD2();
    if(resultat3>25000)
    {

    PORTCbits.RC2=1;

    }
    else
    {
    PORTCbits.RC2=1;
    }
    ADCON0=25;
    resultat4=mesVDD2();
    if(resultat4>25000)
    {

    PORTCbits.RC3=1;

    }
    else
    {
    PORTCbits.RC3=1;
    }
    ADCON0=33;
    resultat5=mesVDD2();
    if(resultat5>25000)
    {

    PORTCbits.RC4=1;

    }
    else
    {
    PORTCbits.RC4=1;
    }
    }
    }

    Le problème est le suivant : Quand mon composent passe devant un capteur les 5 Leds s'allument comme bon leur semble 2 en meme temps, 3 en meme temps...
    Je pense qu'il y'à un problème au niveau de la selection des voix de conversion car quand j'essaie avec un seul capteur la led s'allume et s'éteind correctement
    Merci de bien vouloir m'aider à résoudre ce problème

    -----

  2. #2
    Jack
    Modérateur

    Re : CAN pic 18F448

    Il serait bon de lire les règles participatives du forum info programmation avant de poster !

    Pour les PICs, c'est donc en électronique. De plus, on doit présenter du code entre les balises "code" pour en faciliter la lecture.

  3. #3
    paulfjujo

    Re : CAN pic 18F448

    bonjour,

    Comment obtiens-tu des valeurs de 25000 points ?
    Mesure sur les CNY70 via les ADC sur 1024 points ?

    les details sur mesVDD2() ?? et sur le hardware sont necessaires pour obtenir de l'aide.

  4. #4
    invite48b58dac

    Re : CAN pic 18F448

    25000 représente la valeur de référence que j'ai obtenu après avoir fait des tests sur mon capteur
    En fait si ma pièce est noir la valeur renvoyée par le capteur est inférieure à 25000 mais si ma pièce est blanche la valeur renvoyée par mon capteur est supérieure à 25000 donc la led associée s'allume
    Merci d'avance.

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

    Re : CAN pic 18F448

    voila pour messVDD2
    unsigned int mesVDD2(void)
    {
    ADCON0bits.GO_DONE=1; // SOC sur AN0
    while(ADCON0bits.GO_DONE); // attend EOC
    return (ADRES);
    }

  7. #6
    RISC

    Re : CAN pic 18F448

    Salut,

    1/ Je comprends pas bien dans ton programme tes if et else qui font la même chose....allumer la même LED...
    2/ Ou sont les bits de configuration ???? il FAUT les mettre dans le programme
    #pragma config ......

    a+

  8. #7
    invitefa96bd8f

    Re : CAN pic 18F448

    comment est branché ton capteur sur le PIC ?
    que contient ta fonction mesVVD2() ?
    Utilise les registres LAT plutot que PORT quand tu veux changer l'état d'une sortie.

  9. #8
    invite48b58dac

    Re : CAN pic 18F448

    exacte il y'a une erreur tous les else des ports sont égaux à 0 j'ai mal copier mon programme
    .Quelle est la différence entre les port et les lat?Pour mes CNY70 j'utilise une résistance pour la diode ir et une resistance pour le phototransistor .J'envoie la tension entre mon phototransistor et ma résistance sur une entrée du port A. Cela pour les 5 capteurs. Le petit montage est alimenté en 5V voici les déclarations pour mon pic
    #include <p18F448.h>
    #include <delays.h>
    #pragma config OSC = HS
    #pragma config PWRT = OFF
    #pragma config BOR = OFF
    #pragma config LVP = OFF
    #pragma config WDT = OFF
    #pragma config CP1 = OFF
    Merci d'avance

  10. #9
    paulfjujo

    Re : CAN pic 18F448

    bonjour,

    C'est loin d'etre clair
    25000 représente la valeur de référence que j'ai obtenu après avoir fait des tests sur mon capteur
    mon capteur = CNY70 ?
    => ( tension aux bornes de la resistance qui est dans le circuit du photocoupleur ?
    les 25000 de reference sont mesurés avec quoi ?
    Avec l'ADC du PIC tu ne peux avoir que 0 à 1023 points dans le meilleur des cas ?
    la reference ne peut donc pas etre ces 25000 ..quelquechose

  11. #10
    RISC

    Re : CAN pic 18F448

    Salut,

    Effectivement il vaut mieux toujours utiliser LATx plutot que PORTx pour les SORTIES uniquement :
    LATCbits.LATC0 = 1 ; ...

    Fais les changements mais le PB ne vient pas de là.

    Peux-tu faire voir ton schéma ?
    Quel programmateur utilises-tu ?
    Quelle valeur a ton quartz ?

    a+

  12. #11
    invitefa96bd8f

    Re : CAN pic 18F448

    Citation Envoyé par bilet38 Voir le message
    Quelle est la différence entre les port et les lat?
    Quand tu vas écrire sur PORT, le PIC va d'abord lire la tension (si 0 ou 1 binaire) de chaque PIN, modifier le PORT concerné (par exemple port 1 du PORT C : PORTCbits.RC1), ensuite écrire la nouvelle valeur sur l'intégralité du PORTC.

    Si maintenant tu fais ceci :
    PORTCbits.RC1 = 1; <= Ok pas de problème
    PORTCbits.RC2 = 1; <= Si RC1 n'a pas eu le temps d'etre a 1 (capacité sur la PIN par exemple qui affect le slew rate), le PIC va lire 0 sur RC1, et donc écrire 0 sur RC1, par contre RC2 aura la bonne valeur.

    Il y a encore d'autre cas où le RMW effect peut faire bugger ton appli.

    En écrivant
    LATCbits.LATC1 = 1;
    LATCbits.LATC2 = 1;
    tu n'auras pas de problème

    même si effectivement cette histoire de PORT n'est pas la source du pb, c'est toujours bon de coder avec les bons outils

  13. #12
    invite48b58dac

    Re : CAN pic 18F448

    J'utilise mikroprogsuite comme programmateur
    Le quartz est un 20 MHZ
    voici le branchement des capteurs dsl pour le shéma j'en est pas un complet.
    Mais dans mon montage j'ai 5 capteurs branchés comme sur l'image .La 1ere sortie est reliée à AN0
    la deuxième à AN1
    la 3 eme à AN2
    4eme à AN3
    5 eme à AN4
    Images attachées Images attachées  

  14. #13
    invitefa96bd8f

    Re : CAN pic 18F448

    eh bien fait un schéma complet, que veux tu que l'on te dise...

  15. #14
    invite48b58dac

    Re : CAN pic 18F448

    Voici le shema du montage pour les capteurs.Merci de votre aide
    Images attachées Images attachées  

  16. #15
    paulfjujo

    Re : CAN pic 18F448

    bonjour


    J'ai cru comprendre que tu utilisais le resultat ADC centre à gauche d'ou les valeurs possible de 25000
    par contre le resultat du test : met a 1 ou met à 1 ????

    Code:
    if(resultat1>25000)
    {
    
    PORTCbits.RC0=1;
    
    }
    else
    {
    PORTCbits.RC0=1;
    }
    et suite remarque sur post #11
    nouveau test :

    Code:
    if(resultat1>25000)
    {
    
    LATCbits.LATC0=1;
    
    }
    else
    {
    LATCbits.LATC0=0;
    }
    ca devrait aller mieux

Discussions similaires

  1. [PIC] Détécter l'état logique d'une entrée sur pic 16f690
    Par invitece85d109 dans le forum Électronique
    Réponses: 12
    Dernier message: 31/12/2009, 18h53
  2. Réponses: 0
    Dernier message: 18/03/2007, 16h43
  3. Programmation ICSP sur 18F448 ??
    Par invite0e36b18a dans le forum Électronique
    Réponses: 5
    Dernier message: 11/06/2006, 19h22
  4. Qui connais logi pic & et question à propos des pic
    Par invitec913303f dans le forum Électronique
    Réponses: 10
    Dernier message: 29/05/2006, 23h40
  5. Programmation des PICs 18F448
    Par invite0e36b18a dans le forum Électronique
    Réponses: 0
    Dernier message: 02/01/2006, 14h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...