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
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#11 Message par Gérard » ven. 6 janv. 2017 21:27

Jérémy a écrit :Yop Gérard bien vu !!!!

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

quel boulet je suis


Regarde ta signature, elle est tellement vrai.
Que celui qui n'a jamais fait de boulette, jette le 1er PIC ... exit
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 :

#12 Message par Jérémy » ven. 6 janv. 2017 21:40

jette le 1er PIC ..


EXCELLENT !!!! :bravo:

Mais bon, ça fonctionne toujours pas , ou du moins bizarrement.

Je possède plusieurs leds sur ma plaque de proto, jai donc créer une petite routine pour estimer la valeur lue par l'ADC .
Cela m'evite de devoir m'envoyer un texto pour connaitre la valeur. :wink:

Code : Tout sélectionner

void Lecture_T2(){
   
int Tension 0;

   while(
1){
           
Tension =  ADC_Read(1);
            if (
Tension >= 1000){
                
Rouge 1;
               }
             else if (
Tension >= 950){
                
Orange 1;
               }
              else if (
Tension >= 500){
                
Jaune 1;
               }
             else if (
Tension 500){
                
Vert 1;
               }
             
delay_ms(300);
             
Rouge Orange Jaune Vert 0;
             
delay_ms(50);
      } 


Je remarque que la valeur lue va de 507 à 460 en tournant mon potar !!!! dans différentes configuration ! :mur:
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

#13 Message par Gérard » ven. 6 janv. 2017 21:53

J'ai trouvé ton problème.
Ton pont (schéma)
4K7, pot 1K, 4K7
si pot vers le haut : tu as en haut 4K7 et en bas 5K7
si pot vers le bas : tu as en haut 5K7 et en bas 4K7
Si tu fais le calcul du pont diviseur avec ces valeurs, tu tombes sur les chiffres que tu donnes.
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 :

#14 Message par Jérémy » ven. 6 janv. 2017 22:10

Désolé mais je viens de tester car tu m'as mis le doute !
J'ai certainement fait une erreur dans le schéma

La valeur sur la broche varie de 2.06V à 1.86V quand je tourne mon potar ! Donc c'est bon .

Si la batterie est à 4.2V, je devrais avoir 2.1V quand le potar est à 0K et un peu moins ( 1.89V) quand je le met à 1K .

Tandis que la je me retrouve avec une valeur milieu , c'est à dire autour de 512. Ce qui correspondrait a Vcc/2 en fait . Donc sans prendre en compte la Vref interne.

Le probléme c'est que HULK28 à dit que la routine était mal faites, mais laquelle !
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

#15 Message par Gérard » ven. 6 janv. 2017 22:33

Si tu es sûr de ton pont, qu'il corresponde à la variation de tension que tu souhaites, je pense que c'est la configuration des divers registres qui est en cause.

Est ce que tu utilises des ref de tensions autres que VSS et VDD?

Edit : j'ai relu le post 1, tu utilises 2,048V en ref positive. Tu dois configurer les bit 1 et 0 de ADCON1
11 = VREF+ is connected to internal Fixed Voltage Reference (FVR) module
et il faut configurer FVRCON voir page 136
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
TheTimax
Membre
Membre
Messages : 6
Enregistré en : janvier 2017

#16 Message par TheTimax » ven. 6 janv. 2017 22:39

Bonsoir a vous,

Dans l'aide MikroC concernant la librairie ADC, tu peux lire concernant la fonction ADC_Read() que:

"This function doesn't work with the external voltage reference source, only with the internal voltage reference."

Je ne suis pas trés fort en anglais mais je pense que ton problème vient de la... Tu va devoir récupérer ta valeur ADC par les registres directement...

J'ai pu lire que tu utilise la dernière version (7.0) de MikroC, ce qui n'est pas mon cas alors peut être que depuis ça a changé...

Bonne soirée

PS: J'ai mal lu ton problème, c'est bien une REF interne que tu utilises... Sorry...

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 :

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

Est ce que tu utilises des ref de tensions autres que VSS et VDD?

Oui justement je dois utiliser FVR

Tu dois configurer les bit 1 et 0 de ADCON1
11 = VREF+ is connected to internal Fixed Voltage Reference (FVR) module
et il faut configurer FVRCON voir page 136

Oui j'ai essayer mais ca ne focntionne pas . Ou plutot je dois mal configurer quelques choses car la valeur devrait être proche de 1024 ! ( comme ma batterie est pleine).

Bonsoir TheTimax et bienvenu sur Fantas-Pic ,

"This function doesn't work with the external voltage reference source, only with the internal voltage reference."

Pas de probléme j'utilise une référence interne justement ! le FVR mis à 2.048V

J'ai pu lire que tu utilise la dernière version (7.0) de MikroC, ce qui n'est pas mon cas alors peut être que depuis ça a changé...

Oui il y a la fonction:
void ADC_Init_Advanced(char reference);
Qui permet justement de configurer la Vref interne , mais j'y arrive pas non plus !!!! :furieux:

En tout cas merci de votre intérêt !
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 :

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

J'ai essayé sans utiliser de routine de MikroC en configuration tout manuellement . sans succès .

Voila mon initialisation :

Code : Tout sélectionner

//------------------------------------------------------------------------------
  // Configuration de Vref
   
FVREN_bit 1;  //activation du Vref
   
ADFVR0_bit 0// Mise du Vref à 2.048V avec ADFVR = 0b10 ;
   
ADFVR1_bit 1;
   
  
// Configuration de l'ADCON0
  
ADCON0 0b00000101;  //AN1  est selectionné, ADC enable
  
ADCON1 0b10000011;  // Right jsutified, Fosc/2 ? ,
  // Configuration de l'ADCON1
  
ADNREF_bit=0;       // ref du moins par la masse
  
ADPREF1_bit=1;      // ref du plus par FVR reglé sur 2.048V
  
ADPREF0_bit=1;      // ADPREF = 0b10 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration ADC avec un Vref 2.48 V
TheTimax
Membre
Membre
Messages : 6
Enregistré en : janvier 2017

#19 Message par TheTimax » ven. 6 janv. 2017 23:36

Oui, désolé, j'ai tilté trop tard que ta référence de 2.048v est interne...

Par contre, je ne vois pas ton initialisation de la pin RA1 en entrée ni de ANSEL

-Car lorsque tu sélectionnes RA1 dans ADCON0, ce n'est pas pour sa configuration mais pour l'acquisition sur cette broche.

-C'est dans le(s) registre(s) ANSEL que tu initialise ta pin en analogique (Malgré qu'elle soit souvent en mode analogique par default après le Reset).

-Concernant le TAD (ton interrogation a propos de fosc/2), Tu as un tableau en haut de la page 141 qui t'aide a choisir ce paramétre en fonction de la fréquence de ton µC. Il faut choisir de préférence dans les cases blanches;

En espérant pouvoir t'aider...

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 :

#20 Message par Jérémy » ven. 6 janv. 2017 23:43

Re,

Oui tu m'aides , car tu me fais chercher !!!

Pour l'initialisation des PORT, je l'ai pas mis pour ne pas surchargé les helpeurs !
Voici

Code : Tout sélectionner

  ANSELA 0b00000010;  // RA1 en Analogique
  
ANSELB 0;           // PORTB en Digital
  
TRISB 0b00000010;   // RB1 en entrée
  
TRISA 0b00000010;   // RA1 en entrée le reste en sortie

  
OSCCON =  0b01110110 // Pll disable; Freq=8Mhz; OSC:intern 


Tu as un tableau en haut de la page 139 qui t'aide a choisir ce paramétre en fonction de la fréquence de ton µC

Oui mais je ne sais pas , à quoi sert ce paramètre (une vitesse pour les samples peut-etre) ?
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 51 invités