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

Conversion A/D PIC24FJ (résolu)
pucpood
Débutant
Débutant
Messages : 36
Âge : 53
Enregistré en : septembre 2023
Localisation : 01960

#1 Message par pucpood » jeu. 8 janv. 2026 10:42 lien vers la Data-Sheet : Cliquez ici

Bonjour,

Il était une fois...

Je découvre la conversion analogique-numérique. Mon but est de faire un suivi de la décharge d'une batterie à l'aide d'une tension proportionnelle à celle de la batterie en question appliquée à la patte AN4 du PIC (qu'on nommera Ubatt) et d'afficher un % restant à l'utilisateur.
Le système est basique mais devrait être suffisant.

Je déclenche et j'arrête l'échantillonnage manuellement (bit SAMP) (durée d'échantillonnage environ 1 seconde) et j'ai réglé la vitesse d'échantillonnage au plus lent (Tad=Tcy*256). Vu qu'il s'agit d'un phénomène très lent ça doit être laaaargement suffisant.
J'utilise les interruptions et j'ai bien une interruption qui se produit suite à cette séquence.
Dans la routine d'INT, après avoir aussi contrôlé le bit DONE, je récupère le contenu de ADC1BUFx (explications sur le 'x' plus bas).

Quelques détails supplémentaires (voir captures jointes) :
Ref positive = AVdd (3.3V)
Ref négative = AVss (GND)
Ubatt max = environ 1.5V (d'après notre électronicien)
Conversion sur 10 bits

Encore des précisions :

Code : Tout sélectionner

// Qu'est-ce qu'on veut convertir (registre AD1CHS) ?
// C'est SAMPLE 'A' qu'on va exploiter, pour AN4 :
AD1CHSbits.CH0NA = 0b000;   // AVss est la ref négative (la même que celle indiquée dans AD1CON2[13](NVCFG0 qui est sur AVss par défaut))
AD1CHSbits.CH0SA = 0b00100; // pour AN4
// rien à faire pour SAMPLE B car pour en tenir compte il faudrait mettre AD1CON2[0](ALTS) à 1, ce qui n'est pas le cas.

puis :

Code : Tout sélectionner

AD1CON2bits.BUFREGEN = 1; // Pour dire qu'on veut ANx dans ADC1BUFx :

Pour ce dernier point j'ai essayé en laissant BUFREGEN à 0 pour lire la conversion dans ADC1BUF0, mais le résultat est le même.

1.5 étant à peu près 45% de 3.3, je m'attendais à 45% de 0b1111111111(1023), soit environ 460.
Dans les faits, la valeur renvoyée par le module A/D est invariable pendant toute la durée de la décharge : 70. D'une part 70 ne correspond à aucune réalité, d'autre part, elle devrait varier pendant la décharge. Je pense qu'il y a quelque-chose que je n'ai pas compris dans le fonctionnement de ce module.

Les captures jointes
Génération de Ubatt:
suivi Ubatt PIC24FJ.jpg

Branchement de AVdd/AVss :
suivi Ubatt PIC24FJ - AVdd AVss.jpg

Branchement de Ubatt sur le AN4 du PIC :
suivi Ubatt PIC24FJ - AN4.jpg


Merci d'avance de votre avis.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par pucpood le lun. 12 janv. 2026 11:44, modifié 1 fois.

Conversion A/D PIC24FJ
pucpood
Débutant
Débutant
Messages : 36
Âge : 53
Enregistré en : septembre 2023
Localisation : 01960

#2 Message par pucpood » lun. 12 janv. 2026 11:43 lien vers la Data-Sheet : Cliquez ici

:mur: j'ai trouvé où était mon problème : j'avais mis la pin en sortie !! Une fois en TRIS à 1 ça fonctionne nickel, le module me fournit bien les valeurs attendues (dans ADC1BUF4 pour AN4).

Ce sujet aura au moins peut-être le mérite de servir à d'autres...

À très bientôt (j'ai un nouveau sujet MLA FILEIO à poster)


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

Qui est en ligne

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