Convertisseur analogique/numerique

Fermé
soniaaa - 16 mars 2008 à 14:21
leslie45 Messages postés 61 Date d'inscription vendredi 19 avril 2013 Statut Membre Dernière intervention 10 juin 2016 - 11 mai 2014 à 18:21
Bonjour,
je vais programmer un pic 16f876 avec le logiciel ISIS, j'ai une idee mais j pa compris comment faire la partie programmation d'un convertisseur analogique/numerique. l'entree est dans le port RA0/AN0 d'une temperature qui ne depasse pas 900degré, le probleme c'est comment comparer la temperature figé dans l'EEPROM et celle trouver dans le four a qui je vais faire mon projet. et merçi d'avance
A voir également:

10 réponses

Bonjour

Pour utiliser le CAN du PIC 16F876, il faut :

(je ne parle pas des interruptions ici)

1 - lire la datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf
2 - Configurer le convertisseur grâce au registre en fonction des E/S analogiques / digitales dont tu as besoin
Selectionner l'horloge (bits ADCS1:ADCS0 de ADCON0) : selon l'horloge du PIC
Mettre en marche le convertisseur (bit ADON de ADCON0)

3 - lire la datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf

4 - Selectionner ton entrée analogique (bits CHS2:CHS0 de ADCON0) et attendre "un peu" (2 TAD, voir datasheet)

5 - lire la datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf

6 - lancer une conversion en mettant à 1 le bit GO/DONE de ADCON0
attendre la fin de la conversion en attendant que GO/DONE retombe à 0
lire le résultat dans (ADRESH:ADRESL)

7 - lire la datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf

8 - si tu lis toujours la même voie, recommence en 6 ; si tu changes de voie, recommence en 4

les étapes 1,3,5, et 7 sont de loin les plus importantes
2
merçi pere!
mais je ve savoir apres la conversion de la temperature en une tension avec ces instructions ke vous m'avez donné,comment je lis la temperature figé dans EEPROM DU PIC et la COMPARER surtout avec celle trouver dans le four,car en cas de chute de temperature du four çava activer une sirene.
et merçi encore d'avance
0
ekhtique
2
Bonjour

Pour lire une donnée dans l'EEPROM, il n'y a pas grand chose à faire et tout est expliqué dans la datasheet (tu veux que je répète l'adresse ?) avec un exemple de programme (6 instructions !).
Pour comparer la température lue sur la capteur avec celle lue en EPROM, tu as l'instruction SUBWF dont le fonctionnement est détaillé dans la même datasheet.
Le seul point qui peut être un peu délicat est éventuellement de traduire la tension mesurée en degrés celsius, si tu en as réellement besoin mais pour ça il faut connaître la relation température - tension et toi seule la connais. Du moins, tu devrais la connaître.
1
balou01 Messages postés 83 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 3 décembre 2014 2
16 mars 2008 à 15:03
Je comprend pas toutes la question...

Tu veux savoir comment convertir de l'analogique en numérique ou savoir comment récupéré la température de ton four ???
0
BONJOUR
bon je veux savoir comment convertir de l'analogique en numerique, c'est a dire convertir de la temperature trouvé par le four en une tension, et si ilya une chute de temperature( moins de 900 degré) ça va sonner dans une sirene qui est activé par le pic 16f876.
et merçi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salut !!!
svp en utilisant le CAN du pic 16f876 et en comparant avec l'instruction 'subwf', je veux savoir la valeur recue par le capteur dans kel registre se trouve(c a dire dans kel regstre sera reçue) pour faire ma comparaison.

et merçi encore!
0
je veux savoir la valeur recue par le capteur dans kel registre se trouve
Je veux bien t'aider, mais de là à te dire à quelle page il faut ouvrir la doc (qui est très claire) et quelle ligne il faut lire... Je ne crois pas que ce soit un service à te rendre
0
movlw 900
subwf toto,f ; toto = toto-900, C=1 si toto >=900
btfsc STATUS,C
goto toto_superieur_egal_900; ici toto < 900
toto est normalement la valeur reçue par le capteur c ça?
qui est normalent le registre ADRESL ou ADRESH?
si c faux donnez moi la page de datasheet a qui j'aurai la reponse...
et toujours merçi!!!
0
Bonjour

Effectivement, ça ressemble à ça, mais il y a quelques problèmes :

1- Le convertisseur mesure une tension. Le résultat de la conversion n'est certainement pas directement des degrés celsius, tu ne peux pas le comparer directement avec 900 ! Tu dois connaître la relation entre la température et la tension mesurée pour pouvoir interprêter le résultat de la mesure.
Ensuite, deux possibilités :
Si ton 900 doit toujours rester 900, tu calcules une fois à la main la tension correspondant et donc le résultat de conversion correspondant. C'est ce nombre là que tu mets dans ton EEPROM et c'est avec celui-là que tu fais ta comparaison. C'est le plus facile, mais c'est probablement trop figé
Si le 900 doit être réglable, il faut programmer dans le PIC la loi de conversion température / mesure CAN pour pouvoir refaire ce calcul à chaque changement du seuil ou à chaque mesure, selon le sens de la conversion. De plus, si tu fais la conversion dans le bon sens, ça te permet d'afficher la température (en as-tu besoin) ?

2- pour l'utilisation du SUBWF, léger malaise : l'instruction ne travaille que sur un octet, pas question de faire une comparaison avec 900 en une seule instruction. D'ailleurs le MOVLW 900 sera rejeté par l'assembleur, il ne peut pas faire 'tenir' 900 dans un octet !
Il faut enregistrer les données sur 2 octets. tu compares d'abord les poids forts, s'ils sont différents le résultat de la comparaison est dans C ; s'ils sont égaux tu compares les poids faibles

3- résultat dans ADRESL ou ADRESH ?
ça dépend... de comment tu as configuré le convertisseur. Si tu n'as pas besoin de beaucoup de précision, une conversion sur 8 bits peut suffire et tu n'as à te soucier que d'un seul des deux registres
0
slt tout le monde Messages postés 5 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 19 mars 2008
19 mars 2008 à 22:14
bonsoir,
comment enregistrer les données en 2octets?Et comparer les poids forts?
merci d'avance.
0
chabbeh Messages postés 5 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 4 avril 2009 > slt tout le monde Messages postés 5 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 19 mars 2008
20 mars 2009 à 22:30
salut
j'ai besoin d'un programme en c pour convertir un signale analogique en signale numerique à l'aide d'un pic 16f877
0
bonjour et merçi pere!

Pere, j'ai utilisé la methode de figeage de 900 (qui correspond à 32.5714mV exactement) parce que je ne connais pas la methode d'affichage de temperature sur un lcd et utiliser le clavier mais j vraiment besoin, mais aparement la methode de figeage de seulement 32.571 (900degré)n'est pas bien faisable..

Donc pour programmer du clavier une temperature qui doit se convertir a chaque fois en une tension je dois utiliser kel instructions? (j'en ai 150degré correspond à10mV et j'en ai aussi 1050degré correspond à 38mV) et l'alarme doit se declencher dans le plage de 898degré a peu pres jusqu'à 902 degré presk...........Est ce ke je dois des le debut programmer mon clavier et apres je programme la loi de conversion température / mesure CAN ou comment? POUR cette LOI est ce ke vous pouvez m'aider un peu sur les instructions!!!!
je crois donc lors d'utiliser cette loi,la temperature envoyé par le clavier doit etre systematiquement etre enregistrer dans EEPROM donc j'utilise a cet instant SUBWF mais cette fois avec la tension convertie(ne depasse pas normalement les 8 bits car max 38mv) et qui va faire la conparaison entre celle enregistré et celle reçue par la sonde du four ki est reçu dans le registre ADRESH( c'est lui de 8 bits non?)
0
bonjour!

pére j vraiment besoin de vous envoyer le shema ke j fait en ISIS mais comment? est ce que vous pouvez me donner votre e_mail? si vous acceptez vous pouvez me repondre sur mon e_mail et merçiiiiii en tous cas:)
mon e_mail: sonia_1408@hotmail.fr

et merçii d'avance!!
0
slt 5 jour je leui donner la solution
0
pour une conversion analogique(temperature) en un signal numerique vous avez besoin:
-capteur de temperatur soit cts ou ctn
-connecteur DB9
-multiplixeur analogique 4051
-miltiplixeur digital 74157
0
leslie45 Messages postés 61 Date d'inscription vendredi 19 avril 2013 Statut Membre Dernière intervention 10 juin 2016
Modifié par leslie45 le 11/05/2014 à 18:25
Slt! quelqu'un peut me répondre stp! ca fait une semaine que je poirote dans ce site sans une réponse! pourquoi à chaque fois que je compile un programme C éditer avec le logiciel microC, ça m'affiche une erreur du genre: can't include file <16f877.h>. J'essaye d'afficher les résultats de la conversion analogique numérique à travers des Leds et j'utilise lePIC 16f877 et à chaque fois que je compile, j'obtiens cette erreur!
0