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 ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

échec de lecture d'une entrée analogique PIC MikroC
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#11 Message par paulfjujo » jeu. 3 juin 2021 18:43 lien vers la Data-Sheet : Cliquez ici

bonsoir,

le modele de capteur correspond bien au modele unibody ?

Table 2.Pin descriptions — Unibody package
Symbol Pin Description
VOUT 1 Output voltage
GND 2 Ground
VCC 3 Voltage supply
DNC 4 Do not connect to external circuitry or ground
DNC 5 Do not connect to external circuitry or ground
DNC 6 Do not connect to external circuitry or ground

car l'autre modele a sa sortie sur pin 4

Table 3.Pin descriptions — Small outline package
Symbol Pin Description
DNC 1 Do no connect to external circuitry or ground
VCC 2 Voltage supply
GND 3 Ground
VOUT 4 Output voltage
DNC 5 Do not connect to external circuitry or ground
DNC 6 Do not connect to external circuitry or ground
DNC 7 Do not connect to external circuitry or ground

sinon

faire un essai avec RA0 connectée au +VCC (5V) via
Rx (potar monté en rhéostat) variant de 0 à 50K
et relever les valeurs données par ADC
lorsque la mesure affichée correspond à la moitié ,soit 2,5V
on a alors l'impédance d'entre de l'ADC ( en regime DC)

je pense qu'elle est de l'ordre de 10K, à verifie rpar la manip ci-dessus..
meme si celle-ci trop basse , le capteur devrait pouvoir délivrer une tension ..
essayer avec le nominal 250KPa.

:+1: tout à fait d'accord avec Venom .... c'est pourquoi je pratique uniquement dans le monde réel ..
Aide toi, le ciel ou FantasPic t'aidera

échec de lecture d'une entrée analogique PIC MikroC
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#12 Message par Gérard » jeu. 3 juin 2021 21:23 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Peux-tu faire un essai en réel, as-tu ce qu'il faut?
La simulation reste de la simulation.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

échec de lecture d'une entrée analogique PIC MikroC
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#13 Message par paulfjujo » ven. 4 juin 2021 10:44 lien vers la Data-Sheet : Cliquez ici

je viens de tester (en reel) l'impedance d'entree ADC RA0 sur un 18F26K22
injection tension issue du curseur potar 4.7K entre +Vcc 5V et Gnd 0V

en direct ... curseur potar -> Entree EA0
minima potar 24 points
Duree Conv. ADC_Read(0) = 68 µS j= 17 EA0= 00024 soit 117.1 mV
maxima potar 1012 points
Duree Conv. ADC_Read(0) = 68 µS j= 226 EA0= 01012 soit 4938.6 mV

avec curseur ......R=100K --- Entree EA0
minima potar 24 points
Duree Conv. ADC_Read(0) = 68 µS j= 17 EA0= 00024 soit 117.1 mV
maxima potar 1011 points
Duree Conv. ADC_Read(0) = 68 µS j= 79 EA0= 01011 soit 4933.7 mV

Code : Tout sélectionner




  PORTA 
= 0;
  ANSELA=0;
  ANSELA.ANSA0=1;  
   ADC_Init
();  // par defaut gamme 0V  ..VCC
     
  
// boucle principale 
    L1=0;L2=0;
    Start_Timer3();  // init timer3   clock= 2µS  avec FOSC=16MHz
    EA0=ADC_Read(0);
    TMR3ON_bit=0;
    L2= TMR3L;
    L1= (long)TMR3H <<8;
    L1=L1+L2;
    if (TMR3IF_bit==1)L1=L1 +65536L; // si debordement Timer3
    L1=L1<<1;  //  multiplie par 2 ,   car  1 count timer3 => 2µS  
    CPrint (" Duree Conv. ADC_Read(0) = ");
    LongWordToStr(L1,CRam1);
    Print(CRam1);
    CPrint( " µS  ");
    f1=(float)EA0 * 4.88 ;    // si usage de +VREF  4,096V => EA0<<2
    txt=&TEXTE[0];
    sprintf(txt,"j= %5d  EA0= %05d  soit %5.1f mV ",j,EA0,f1);
    Print(txt);
    CRLF1();
  Delay_ms(1000);
 


conclusion :
Impedance entree ADC (en DC) > 100Kohms, dans ces conditions de mesure ( FOSC=16MHz cycle de 0.25µS ,TAD TACQ déja definis dans MikroC ADC lib )
(et au rytme de 1 mesure par seconde)
==> l'ADC ne devrait pas ecrouler la tension de sortie du capteur .

Nota : Attention à laisser un temps minimum entre 2 mesures ADC successives !
dans cet exemple avec usage lib mikroC , duree acquisition ~68µS !

mais sans l'usage de la lib MikroC... 8µS
avec code ci-dessous

Code : Tout sélectionner



void My_Init_ADC
()
 {
 //config lecture ADC 10 bits 18F26K22  DS41412F-page 304
 ADCON0=0;          // clean register
 ADCON0.ADON=1;     // ADC enabled
 //bit 6-2 CHS<4:0>: Analog Channel Select bits
 // select RA0 = analog input
 ADCON0.CHS4=0;
  ADCON0.CHS3=0;
   ADCON0.CHS2=0;
    ADCON0.CHS1=0;
     ADCON0.CHS0=0;   // 0= RA0 selectionné   1 =RA1 selectionné
 ADCON1.TRIGSEL=; // trigger from CCP5
 ADCON1.PVCFG1=0;   // +Vref = +5V AVdd
 ADCON1.PVCFG0=0;
 // bit 1-0 NVCFG<1:0>: Negative Voltage Reference Configuration bits
  ADCON1.NVCFG0=0;
  ADCON1.NVCFG1=0;     // -Vref = Gnd AVss
 //  ADCON1.NVCFG0=1;  //-Vref = RA2 input
  //bit 7 ADFM: A/D Conversion Result Format Select bit
 ADCON2.ADFM=1;     // right justified
 // ADC Clock period (TAD)  = 2µS at 16Mhz
 //bit 2-0 ADCS<2:0>: A/D Conversion Clock Select bits   see 17.3 page 306
 //  ADCS<2:0>  010=Fosc/32      101=FOSC/16
 ADCON2.ADCS1=0;
  ADCON2.ADCS2=1;
   ADCON2.ADCS0=0;
 //  bit 5-3 ACQT<2:0>: A/D Acquisition time select bits.
 // Acquisition time is the duration that the A/D charge
 // holding capacitor remains connected to A/D channel from the instant the GO/DONE bit is set
 // until conversions begins.
  // TACQT Cycles  ACQT<2:0>
  // TACQ=  8 xTAD = 16µS at 16Mhz
 ADCON2.ACQT2=1;
  ADCON2.ACQT1=0;
   ADCON2.ACQT0=0;    // 8 TAD
 }


// ADC_Init();
//  EA0=ADC_Read(0);


     ADCON0= 0x01;
     ADCON0.GO=1;
     _asm nop
     _asm nop
      while
( ADCON0.GO==1);
      _asm nop;
      EA0=ADRESH<<8;
      EA0=EA0 + ADRESL;


idem avec ou sans R serie de 100K ohms
duree acquisition 8µS
pot au minima :
Duree Conv.simili ASM = 8 µS j= 2 EA0= 00026 soit 126.9 mV
pot au maxima
Duree Conv.simili ASM = 8 µS j= 27 EA0= 01011 soit 4933.7 mV
Aide toi, le ciel ou FantasPic t'aidera

échec de lecture d'une entrée analogique PIC MikroC
EmnaBz
Membre
Membre
Messages : 12
Enregistré en : juin 2021

#14 Message par EmnaBz » dim. 6 juin 2021 18:15 lien vers la Data-Sheet : Cliquez ici

Merci tout le monde pour vos réponses et merci infiniment Mr Paul pour vos efforts Merci !
Je m'excuse pour ma réponse tardive j'ai pas fais attention aux notifications.
Oui le modèle de capteur correspond bien au modele unibody.
Sinon j'ai pas le nécessaire pour pouvoir essayer en réel pour le moment...
C'est noté en tout cas je vais me référer sur vos essais et j'espère que ça donnera du résultat.
Merci encore une fois


Retourner vers « Généralités sur les PICs »

Qui est en ligne

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