Forum Électro-Bidouilleur

Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
Recherche avancée  

Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=register Les demandes d'inscription sont révisées quotidiennement.

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Sujets - olibou

Pages: [1]
1
Bonjour,

J'essaie de mesurer une température à  partir d'une sonde PT100 (2 fils) avec un PIC 6F877A.
Comme la sonde varie en résistance en fonction de la température, j'ai pensé faire un pont diviseur de tension pour mesurer la variation de tension avec le convertisseur analogique/numérique. Mon problème, c'est que mes cours de math sont un peu loin et je ne sais pas comment extraire la valeur de ma résistance (R1) à  partir de la mesure de tension faite par le convertisseur A/N sur le pont diviseur.
Pour être concret, ma sonde (R1) varie entre 100 et 200 ohm environ, je pense mettre une résistance (R2) dans les mêmes valeurs (disons 100 ohm) sur mon pont diviseur. La tension obtenue (Vs) sera donc Vs=(R1/(R1+R2)*Vin
je connais Vs car lu sur le convertisseur A/N, je connais R2(100 ohm) et Vin (5v)... Est-il possible d'en déduire R1?

Amicalement,

Olivier

2
Bonjour,

Je débute en électronique et j'essaie de comprendre le fonctionnement des microcontrôleurs PIC, mais je bloque depuis plusieurs semaines sur la conversion analogique/numérique. Pouvez-vous me mettre sur la voie?
Je travaille avec un PIC 16F676 (data sheet : http://ww1.microchip.com/downloads/en/DeviceDoc/40039F.pdf) sous MPLAB (en C).
Pour tester la conversion de signaux analogique en numérique, je voudrais simplement allumer deux LED en fonction de la valeur lue par le convertisseur... mais rien ne se passe : apparemment la conversion n'a pas lieu, mais je ne comprend pas pourquoi.
Voici mon code, pouvez-vous m'aider s'il vous plaît?



#include <xc.h>
#define _XTAL_FREQ 4000000


void main(void) {
//Selection canal Analog.  : AN0
ADCON0bits.CHS0=0;
ADCON0bits.CHS1=0;
ADCON0bits.CHS2=0;

// Fréq opération= OSC/16
ADCON1bits.ADCS0=1;
ADCON1bits.ADCS1=0;
ADCON1bits.ADCS2=1;


ADCON0bits.VCFG=0;//Vref = VDD

//Format Resultat Convetion
ADCON0bits.ADFM=1;//justif. droite

//Selection A/D pins
ANSELbits.ANS0=1;//PIN 0 analog.
ANSELbits.ANS1=0;//PIN 1 digital

// selction I/O pins
TRISAbits.TRISA0=1;//PIN 0 entée
TRISAbits.TRISA1=0;//PIN 1 sortie
TRISAbits.TRISA2=0;//PIN 2 sortie


PORTAbits.RA1=0;//LED pin 1 eteinte
PORTAbits.RA2=0;//LED pin 2 eteinte


unsigned int result=0;



while(1){
    ADCON0bits.ADON=1;//initialiser Conv Analog-Num.
    if (ADCON0bits.GO_DONE==0){
        ADCON0bits.GO_DONE=1;//démarrer la conversion
    }
   
    while(ADCON0bits.GO_DONE=1){}// attendre que la conversion soit terminée
    result=ADRESL; //resultat sur 8 bits
       
   
   //Allumer LED 1 ou 2 en fonction du resultat
        if (result>100){
            PORTAbits.RA1=1;
            PORTAbits.RA2=0;
        }
        else if (result<100){
            PORTAbits.RA2=1;
            PORTAbits.RA1=0;
        }
   
}

    return;
}



Pages: [1]