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 ---
- 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 ---
Modérateur : Jérémy
Configuration ADC avec un Vref 2.48 V
L'exemple que je te donne est avec une référence externe, il faut que tu regardes la doc de ton PIC pour déclarer la ref interne.
Quand j'aurai un peu de temps je me pencherai sur la question, mais tu as le principe que tu peux rapprocher de la DS pour affiner.
@+
Quand j'aurai un peu de temps je me pencherai sur la question, mais tu as le principe que tu peux rapprocher de la DS pour affiner.
@+
Configuration ADC avec un Vref 2.48 V
Configuration ADC avec un Vref 2.48 V
Tu ne veux pas faire un essai avec ca. Sans multiplication et addition
passé sous XC8
sinon c'est pas grave encore
A+
passé sous XC8
Code : Tout sélectionner
void Lecture_T2(){
int Tension = 0;
while(1){
ADCON0.B1 = 1; // On démarre la conversion
while (ADCON0.B1); // J'attends que le bit soit effacer à la fin de la conversion
// Tension = (ADRESH<<8) + ADRESL; // j'enregistre les registres en valeur
#asm
MOVF ADRESL,W
MOVWF _Tension
MOVF ADRESH,W
MOVWF _Tension+1
#endasm
if (Tension >= 1010){
Rouge = 1;
}
else if (Tension >= 990){
Orange = 1;
}
else if (Tension >= 970){
Jaune = 1;
}
else if (Tension < 970){
Vert = 1;
}
delay_ms(300);
Rouge = Orange = Jaune = Vert = 0;
delay_ms(100);
}
}
sinon c'est pas grave encore
A+
Configuration ADC avec un Vref 2.48 V
Nous avons entamé, il y a un petit moment, une discussion (CAN) sur comment sortie du décimal à partir d'un pas quantitatif précis et d'un rapport d'un pont diviseur.
C’était avec une VREF de 5.12V pas de 0,005, ou en sortie du CAN j'avais par EXEMPLE 475, ce qui correspondait en entrée du pont a 4.75VOLTS . tu es dans la même configuration, mais avec un pas de 0.002 à toi de bien positionner le rapport de ton pont diviseur pour ne pas utiliser de FLOTTANT c'est toujours cela de gagné, ne pas oublier que tu es avec un 16F
A+
C’était avec une VREF de 5.12V pas de 0,005, ou en sortie du CAN j'avais par EXEMPLE 475, ce qui correspondait en entrée du pont a 4.75VOLTS . tu es dans la même configuration, mais avec un pas de 0.002 à toi de bien positionner le rapport de ton pont diviseur pour ne pas utiliser de FLOTTANT c'est toujours cela de gagné, ne pas oublier que tu es avec un 16F
A+
Configuration ADC avec un Vref 2.48 V
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour maï et tout le monde ,
Désolé je te réponds un peu tard, car j'étais en train d'ecrire un petit Tuto sur l’utilité et le réglage d'une tension Fixe de référence (FVR).
Je viens d'essayer ton code après modification pour MikroC .
Il a fallu que je mettre la variable int Tension = 0; en variable global , car il ne la reconnaissait pas en locale
La led verte reste allumé en permanence ?? . ça ne fonctionne pas !
Tu as complétement raison, c'est pourquoi je ne vais pas utiliser de Flottant. P
car je ne suis pas très à l'aise avec !
Par ce que l'estimation de la lecture analogique reste une estimation et je n'ai nullement besoin d'une précision ;
Je vais seulement faire un tableau avec 10 valeurs qui correspondront au pourcentage de la batterie !
Désolé je te réponds un peu tard, car j'étais en train d'ecrire un petit Tuto sur l’utilité et le réglage d'une tension Fixe de référence (FVR).
Je viens d'essayer ton code après modification pour MikroC .
Il a fallu que je mettre la variable int Tension = 0; en variable global , car il ne la reconnaissait pas en locale
Code : Tout sélectionner
asm {
MOVF ADRESL,W
MOVWF _Tension
MOVF ADRESH,W
MOVWF _Tension+1
}
La led verte reste allumé en permanence ?? . ça ne fonctionne pas !
tu es dans la même configuration, mais avec un pas de 0.002 à toi de bien positionner le rapport de ton pont diviseur pour ne pas utiliser de FLOTTANT c'est toujours cela de gagné, ne pas oublier que tu es avec un 16F
Tu as complétement raison, c'est pourquoi je ne vais pas utiliser de Flottant. P
car je ne suis pas très à l'aise avec !
Par ce que l'estimation de la lecture analogique reste une estimation et je n'ai nullement besoin d'une précision ;
Je vais seulement faire un tableau avec 10 valeurs qui correspondront au pourcentage de la batterie !
Configuration ADC avec un Vref 2.48 V
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
@HULK28:
Est-ce que ceci est une pause entre deux mesures ? Si oui existe-t-il une valeur "préconisée" ? Peut etre dépendante so on a mis une capa ou autre ?
je ne comprends pas cette ligne
Comment fait tu le total ?
Code : Tout sélectionner
for (i = 0; i < 30; i++) // Sample & Hold acquisition time
Nop();
Est-ce que ceci est une pause entre deux mesures ? Si oui existe-t-il une valeur "préconisée" ? Peut etre dépendante so on a mis une capa ou autre ?
je ne comprends pas cette ligne
Code : Tout sélectionner
adc_value = res.Tr; // résultat total
Comment fait tu le total ?
Configuration ADC avec un Vref 2.48 V
bonjour
un bout de code de PAUL
il faut mettre un tiret devant ASM pour ton compil
ici viewtopic.php?f=10&t=346
A+
PS :
-Pour la precision, TU AS de la precision. Je ne vois pas tres bien pourquoi tu dis cela ????
- De même si c'est juste une estimation, pourquoi faire une moyenne. Prévoir un temps échantillonnage régulier AMHA doit suffire
un bout de code de PAUL
Code : Tout sélectionner
_asm {
CLRF _Get_RsByte,1
//special pour routine d'attente bit 9600 Bauds =>1000000/9600=104µS
// 3+ 67*3*3=207cycles at 8Mhz => 203* 0.5µS => 103.5 µS
// en fait on se retouve ensuit bien à l'interieur d'un bit , vu qu'on depasse le delai global Start Bit
// avec le traitement sauvegarde contexte et d'entree interruption front descendant RB0
// --- delai Start Bit -----------------
MOVLW 67 ; .67 pour 9600 bauds et 4Mhz ou 9600bds at 8Mhz
MOVWF _Count1 ; 1000000/9600=104µS
delay10:
DECFSZ _Count1,F ; 1 cycle si pas de saut
GOTO delay10 ; // $-1 =>2cycles
NOP
NOP
// --------
MOVLW 8
MOVWF _Count2
PAS0: ; on pousse le bit adequate à droite dans le registre
BCF STATUS,C ; RAZ Carry
BTFSC RB0_bit,0
BSF STATUS,C ;Set Carry
il faut mettre un tiret devant ASM pour ton compil
ici viewtopic.php?f=10&t=346
A+
PS :
-Pour la precision, TU AS de la precision. Je ne vois pas tres bien pourquoi tu dis cela ????
- De même si c'est juste une estimation, pourquoi faire une moyenne. Prévoir un temps échantillonnage régulier AMHA doit suffire
Configuration ADC avec un Vref 2.48 V
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Sorry maï , mais toujours pas . La LED verte clignote en permanence !
Code : Tout sélectionner
//------------------------------------------------------------------------
void Lecture_T2(){
Envoi_tension = 1; // Alumage du pont diviseur
delay_ms(100); // Stabilisation de la Tension sur la PIN
while(1){
Tension = 0;
ADCON0.B1 = 1; // On démarre la conversion
while (ADCON0.B1); // J'attends que le bit soit effacer à la fin de la conversion
_asm {
MOVF ADRESL,W
MOVWF _Tension
MOVF ADRESH,W
MOVWF _Tension+1
}
if (Tension >= 1010){
Rouge = 1;
}
else if (Tension >= 990){
Orange = 1;
}
else if (Tension >= 970){
Jaune = 1;
}
else if (Tension < 970){
Vert = 1;
}
delay_ms(300);
Rouge = Orange = Jaune = Vert = 0;
delay_ms(100);
}
}
Configuration ADC avec un Vref 2.48 V
Configuration ADC avec un Vref 2.48 V
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Voici ma fonction lecture de tension.
- "j'allume" le pont diviseur
- Je récupère 8 valeurs de lecture .
- Je fais la moyenne .
- Je fais une mise à l’échelle pour avoir un %
Je stock la valeur dans un tableau pour envoi par SMS.
Pour la mise à l’échelle je suis partis sur ce principe !
batterie pleine 4.2V
batterie vide 3.3V
référence de tension interne à 2.048
Ceci me fait un pas de 0.002V ( 2.048/1024=0.002).
Je ferais un pont diviseur par 2 avec les deux mêmes résistances ( lots).
3.3 / 2 = 1.65V sur la pin de lecture . 1.65/0.002 = 825 valeur minimun lue , je prends 8330 par sécurité et la valeur max ben c'est 1023.
J'ai donc 1023-830 = 193 de delta.
Et avec un petit produits en crois j'obtiens mon % ???
C'est plus sur la courbe de d&charge de la batterie et son taux de décharge que je dis cela ,avec la T°, le moement de la prise etc ...
- "j'allume" le pont diviseur
- Je récupère 8 valeurs de lecture .
- Je fais la moyenne .
- Je fais une mise à l’échelle pour avoir un %
Je stock la valeur dans un tableau pour envoi par SMS.
Pour la mise à l’échelle je suis partis sur ce principe !
batterie pleine 4.2V
batterie vide 3.3V
référence de tension interne à 2.048
Ceci me fait un pas de 0.002V ( 2.048/1024=0.002).
Je ferais un pont diviseur par 2 avec les deux mêmes résistances ( lots).
3.3 / 2 = 1.65V sur la pin de lecture . 1.65/0.002 = 825 valeur minimun lue , je prends 8330 par sécurité et la valeur max ben c'est 1023.
J'ai donc 1023-830 = 193 de delta.
Et avec un petit produits en crois j'obtiens mon % ???
Pour la precision, TU AS de la precision. Je ne vois pas tres bien pourquoi tu dis cela ????
C'est plus sur la courbe de d&charge de la batterie et son taux de décharge que je dis cela ,avec la T°, le moement de la prise etc ...
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 37 invités