Convertir une entrée analogique sur un pic 16f818?
Bonjour
Pour mon TPE j'ai un potentiomètre en entrée analogique sur mon PIC 16F818, et la tension varie entre 0 et 5V, mais comment faire pour attribuer une valeur numérique (qui sera comprise entre 0 et 255) à cette tension? En fait j'ai déjà réussi à comparer la valeur de deux potars dont l'un joue le rôle de consiqne. J'ai utilisé ReadHigh (j'utilise MPLab). Mais ce que je ne comprends pas, c'est comment le PIC peut "savoir" que par exemple 5V sera la valeur maximale? Car pour convertir il faut bien qu'il ait une "échelle"...?
Merci d'avance, et dites si je me suis mal exprimé...
Re : Convertir une entrée analogique sur un pic 16f818?
Bonjour,
Dans la config du CAN, tu dois déclarer l'échelle.
Il exixte aussi des broches qui permettent de déclarer VRef+ et VRef-.
Il faut lire la doc.
Voir ADCON et ADCON1.
Ces 2 registres existent sur le 16F877, je ne connais le PIC dont tu parles.
Gérard.
21/02/2008 - 09h07
alainav1
Date d'inscription
janvier 2005
Localisation
calais
Âge
62
Messages
3 318
Re : Convertir une entrée analogique sur un pic 16f818?
bonjour,
Personnellement je fais la conversion sur 10 bits (entrer 0 et 1023) et par defaut entre 0 et la tension d'alimentation soit 5v).
je programme en basic donc je defini une variable integer pour lire la valeur analogique .
mais si tu lis avec une variable sur 8 bits tu auras surement la tension d'alimentation.entre 0 et 255
tu peux jeter un cop d'oeil sur mon site ou j'ai quelques programmes d'utilisations avec l'entree analogique.
j'espere t'avoir proposé quelques pistes .
comme dit dans le poste different la datasheet de permettra de savoit coment definir des gammes de tensions differente (mais toujours inferieur a la tension d'alimentation)
cordialement
Alain
22/02/2008 - 12h30
Zanzan08
Date d'inscription
février 2007
Âge
21
Messages
42
Re : Convertir une entrée analogique sur un pic 16f818?
OK
Merci à vous deux, je vais regarder la datasheet...
28/10/2010 - 12h36
alainav1
Date d'inscription
janvier 2005
Localisation
calais
Âge
62
Messages
3 318
Re : Convertir une entrée analogique sur un pic 16f818?
bonjour,
suite à un message privé je déterre ce post car cette explication peut etre utilisé par d'autre ?
voici un exemple de lecture d'une valeur analogique pour un pic 16F88 (ecrit en basic ) c'est pareil sur un 16F818
l
'configuration du port pour lire l'entrée analogique
ADCON1 = %00001110 'configuration en I/O et ra0 en analogique
ANSEL = %00000001 'A/D en ra0
dim a as word 'v est une variable qui prendra une valeur entre 0 et 1024 pour une tension entre 0 et 5V
'autres variables utiles pour les calculs
dim b as word
dim r as word
'lecture de la valeur
ADCON0.ADON = 1
Adcin 0, a 'la valeur de l'entrée est dans a
'exemple de mesure
a=0 si l'entrée a.0 est à 0V
a=1024 si l'entrée a.0 à 5V (tension d'alim du pic)
a=512 si l'entrée est à 2,5V
exemple de calcul pour afficher la tension lue sur un LCD
soit 3,5v la valeur mesurée a=717
a= 717
b = a / 43 ' b=16
v = a - b 'v=717-16=701
a = v / 2 'a=350
b = a / 100 'b=3
r= a - (b * 100) 'r=350-(3*100)=50
Lcdout #b 'affichage de 3
Lcdout ","'affichage de ,
Lcdout #r ' affichage de 50
Lcdout " Volt "
soit affichage de " 3,50 Volt"
cordialement
Alain
Décider de faire c'est bien décider quand c'est mieux !
28/10/2010 - 16h23
nhenri
Date d'inscription
octobre 2010
Messages
60
Re : Convertir une entrée analogique sur un pic 16f818?
Bonjour,
A suposer que tu soit sur un alim 5v et bien configure le PCFG<3:0> (page 82 et FIGURE 11-1 page 83) correctement afin d'avoir par exemple Vref+ = AVdd (ton alim) et VREF- = AVSS (ton gnd).
Ensuite pour avoir une valeur entre 0-255, place ADFM a 0 et lit ADRESH qui sont les 8 bits MSB du resultat (voir page 86).
Re : Convertir une entrée analogique sur un pic 16f818?
Bonsoir,
j'ai un soucis avec la détection des entrées analogiques .
Plusieurs questions me viennent à l'esprit :
- doit-on simplement utiliser ADCIN channel , variable ?
Dans ce cas , doit-on forcément utiliser ADCON0 ?
- doit-on forcément utiliser ADRESH:ADRESL puis faire la transfo adresh+adresl*256 ?
- les deux méthodes sont-elles dépendantes l'une de l'autre ?
j'ai vu les deux sur le net dans des forums , mais quels sont vraiment les lignes à compiler.
La méthode adcin ne fonctionne pas.
bmf_comm1 VAR PORTB.0
bmf_comm2 VAR PORTB.1
bmfs VAR WORD
bmfs1 VAR WORD
Output bmf_comm1
Output bmf_comm2
Low bmf_comm1
Low bmf_comm2
TRISA = $FF
ADCON1 = $81
lecture_bmf:
'Mesure en sortie de bmf
Adcin 0,bmfs
Adcin 1,bmfs1
if (bmfs > 1000) or (bmfs1 > 1000) Then Goto boucle2_fin
if (bmfs > 750) or (bmfs1 > 750) Then Goto boucle_fin
if (bmfs > 500) or (bmfs1 > 500) Then Goto boucle_fin2
if (bmfs > 250) or (bmfs1 > 250) Then Goto boucle_fin
boucle_fin:
High bmf_comm1
High bmf_comm2
goto boucle_fin3
boucle_fin2
High bmf_comm2
boucle_fin3
pause 2000
boucle2_fin
low bmf_comm1
low bmf_comm2
Goto lecture_bmf
Ne pas regarder les boucles , fais à la va vite....
Mais donc ça ne fonctionne pas comme ça.
J'ai essayé de rajouté le ADCON0.2 = 1 et le ADON mais ça passe pas non plus.
Merci d'avance.
23/08/2011 - 00h07
Franck-026
Date d'inscription
mars 2011
Âge
44
Messages
2 780
Re : Convertir une entrée analogique sur un pic 16f818?
Si tu as Vref+ = 5,12V et 10 bits de profondeur, en prenant la valeur ADRESH et ADRESL sur 10 bits, tu recupere tes 9 bits forts (division par 2) et tu auras la comparaison directe 5.11V = 511 soit quantum de 10mV cela sans tableau de conversion.
23/08/2011 - 00h18
mazoul72
Date d'inscription
août 2011
Messages
6
Re : Convertir une entrée analogique sur un pic 16f818?
donc je dois bien prendre adresh et adresl .
J'ai 4.98V .
Quand tu parles de division , je comprends pas le terme de quantum.
Pourquoi ne pas prendre les 10 bits et faire adresl*256+adresh ?
Pourtant , sur ce site , pas d'adresh ni adresl ... comprends pas...
23/08/2011 - 00h45
mazoul72
Date d'inscription
août 2011
Messages
6
Re : Convertir une entrée analogique sur un pic 16f818?
bon je viens de reregarder le manuel du picbasic pro , pas besoin de transfo et directement lecture adcin donc je ne sais pas ou ca bloque.
Re : Convertir une entrée analogique sur un pic 16f818?
c'est sur qu'avec ton langage exotique... Les assembleux que nous sommes ne pouvaient comprendre le pourquoi... Et puis au fait, pourquoi un transfo?
23/08/2011 - 01h08
mazoul72
Date d'inscription
août 2011
Messages
6
Re : Convertir une entrée analogique sur un pic 16f818?
transformation
tu sais , à l'époque du basic sur amstrad , j'adorais ça.
j'ai aucun soucis avec l'assembleur...
mais c'est trop loin pour moi maintenant pour me rappeler..ce langage .
Ca demande plus de remue méninge , à mon age , ....lol
23/08/2011 - 01h23
Franck-026
Date d'inscription
mars 2011
Âge
44
Messages
2 780
Re : Convertir une entrée analogique sur un pic 16f818?
Pourtant l'assembleur est vachement mieux approprié pour programmer les µC car ce n'est pas un langage interpreté... Donc plus rapide et plus synchro...
24/08/2011 - 21h55
Gérard
Date d'inscription
janvier 2003
Localisation
Haut-Rhin
Âge
53
Messages
6 259
Re : Convertir une entrée analogique sur un pic 16f818?
Re : Convertir une entrée analogique sur un pic 16f818?
ca m'aide pas vous savez de savoir que l'assembleur est mieux pour programmer.
Que ce soit le basic ou l'assembleur , le résultat sera le même au final...
Mais je voudrais avoir une réponse à ma question.