Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » ven. 6 janv. 2017 14:27

Bonjour à tous,

Je n'arrive pas à lire une tension analogique avec une Vref interne de 2.48 V

Je travaille avec un PIC16F1847 ( comme d'hab) :sifflotte: ). Tout mon montage est alimenté depuis une batterie.
cela signifie que la tension d'alimentation du PIC va varier au rythme de la batterie !. ( de 3.3V à 4.2V)

Pour lire l'état de ma batterie je dois donc utiliser un ref en dessous de ma tension d'alimentation. j'ai donc choisie 2.048V.

Malheureusement je n'ai que de 1016 en réponse ! je pense que mon ADC est mal initialisé .

Pour alimenter mon pont diviseur de tension je me sers de la pin d'un pIc qui sera égal a la tension de la batterie !

J'ai rajouter un petit potar pour simuler une baisse de tension.

Voici le schéma simplifié
test.jpg


Voici mon initialisation :

Code : Tout sélectionner

  ADC_Init();         // Initialisation de l'ADC
  
ADC_Init_Advanced(_ADC_EXTERNAL_VREFL |_ADC_INTERNAL_FVRH2); 


et

voici la fonction de lecture très simplifiée. A terme se sera une moyenne sur 8 valeurs mais quand ça fonctionnera !

Code : Tout sélectionner

void Lecture_T(){
   
   if (
ADC_Read(0)>1000){
         
Orange 1;
     }
     else {
Jaune=1;}
     
delay_ms(1000);
   
Jaune=Orange=0


je vous passe les détails du programme si il vous manque des infos , n’hésitez pas à me demander mais je pense avoir mis l'essentiel .

J'aurais aimé pouvoir réglé le bits du registre ADPREF mais je ne sais pas faire quand il y plusieurs bit pour un registre . :oops:
Il faut donc que je configure tout le registre ADCON1 , et la ben , je sais pas trop quoi mettre comme valeur dans les autres!

Avez vous une idée comment configurer mon ADC pour une ref interne de 2.048V.

Merci !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » ven. 6 janv. 2017 15:30

Est ce que ADC_Read(0) va lire RA1 ou RA0?
Pourquoi alimenter le pont avec une sortie du PIC?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » ven. 6 janv. 2017 15:35

Hello Gérard ,

ADC_Read(0) va lire ANA0 qui correspond à la broche RA0.

Le pont est alimenté par un PIN pour avoir la recopie de la tension de la batterie quand j'en ai besoin seulement . Cela évite d'avoir un pont qui consomme en permanence ! j'ai juste a mettre ma broche à 1 pour avoir la tension de la batterie sur mon diviseur :wink:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
HULK28
Avatar de l’utilisateur
Amateur
Amateur
Messages : 106
Enregistré en : août 2015
Localisation : IdF

#4 Message par HULK28 » ven. 6 janv. 2017 16:56

Bonjour,

si tu utilises MikroC il faut savoir que leur fonction ne sait pas gérer une mesure avec Vref interne.
Il te faut une fonction dédiée, c'est d'ailleurs une très bonne habitude à prendre, les librairies de MikroC ne sont pas terribles, la preuve en est.

C'est une bonne occasion de te frotter avec la datasheet, tu verras que c'est assez simple d'écrire une telle fonction.
Si tu n'y arrives pas je t'aiderai, mais essaye avant et pose des questions si besoin.
@+
"Pour la carotte, le lapin est la parfaite incarnation du mal" -Robert Shecley-

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » ven. 6 janv. 2017 17:17

Hello,

effectivement je suis avec mikroC .

si tu utilises MikroC il faut savoir que leur fonction ne sait pas gérer une mesure avec Vref interne.

Ah !! ben dis donc , c'est nul ca !!

Quand tu dis fonction tu parles de ADC_Read?
Sa risque d'être dur, si le PIC ne sait pas lire une tension par rapport à une tension de ref interne ? non !

C'est une bonne occasion de te frotter avec la datasheet, tu verras que c'est assez simple d'écrire une telle fonction.


En fait je ne vois pas se que je dois faire ? peut etre parle tu de la conversion du chiffre lu en valeur d'une tension ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#6 Message par Jérémy » ven. 6 janv. 2017 18:00

Lecture de la DS .....

Page 140 :
• Port configuration
• Channel selection
• ADC voltage reference selection
• ADC conversion clock source
• Interrupt control
• Result formatting


- Port config : RA0 en entrée analogique et RA1en sortie numérique : Ok
- Channel selection : j'ai choisis le chanel 0 pour la lecture : ok
- ADC voltage reference selection : la ça se complique. d'apres la DS je dois fixé la valeur de ADPREF(A/D positive reference) donc dans mon cas, je dois lui dire VFR en 2.048V . cela se passe dans le registre ADCON1 ; Il faudrait que je mettre ADPREF_bit à la valeur= 11 ; Mais je ne sais pas le mettre car quand on écrit ADPREF_bit, il faut mettre un "1" ou un "0" . comment mettre "11" ? Pour signifié que Vref+ est la VFR de 2.048 ?
Pour le négatif c'est plus facile il n'y a qu'un bit donc ADNREF_bit=0; pour avoir Vref- comme la masse.
==> Ensuite il faut déterminé le VFR ! (P.135) avec le registre FVRCON, et la ça se complique vraiment !
Je pense qu'il faille mettre FVREN à 1 pour activer le FVR et ADFVR à "10" . je tombe ici sur le même probleme je ne sais pas mettre ADFVR_bit à "10" !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#7 Message par paulfjujo » ven. 6 janv. 2017 18:34

bonsoir Jeremy


ADNREF_bit=0;
ADPREF1_bit=1;
ADPREF0_bit=1;

ou ADPREF<1:0>
ADCON1.ADNREF=0;
ADCON1.ADPREF1=1;
ADCON1.ADPREF0=1;

on rajoute le numero du bit
Aide toi, le ciel ou FantasPic t'aidera

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » ven. 6 janv. 2017 18:48

Bonsoir Paul ,

Ah okkk !!! je me coucherais moins ce soir ! Génial, je vais pouvoir essayer mes combinaisons .
Merci !

j'en suis rendu a configurer ainsi mais ca ne fonctionne toujours pas !

Code : Tout sélectionner

  ADC_Init();         // Initialisation de l'ADC
  ADCON1 = 0b10000011;
  FVRCON = 0b11100010;
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#9 Message par Gérard » ven. 6 janv. 2017 21:00

Tel que tu as fait le branchement, RA0 ne lit pas une valeur issue d'un pont diviseur.

Branchement si RA1 alimente le pont :
RA1 = 1
4K7, potentiomètre, 4K7, masse
RA0 branché sur le curseur.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Configuration ADC avec un Vref 2.48 V
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#10 Message par Jérémy » ven. 6 janv. 2017 21:02

Yop Gérard bien vu !!!!

C'est ADC_read(1); que je dois faire !!!

quel boulet je suis
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 56 invités