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
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
A voir également:
- Convertisseur analogique/numerique
- Convertisseur mp3 - Télécharger - Conversion & Extraction
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
- Convertisseur récupération de texte - Guide
- Comment savoir si antenne analogique ou numérique - Forum TNT / Satellite / Réception
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
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
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.
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.
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
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 ???
Tu veux savoir comment convertir de l'analogique en numérique ou savoir comment récupéré la température de ton four ???
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!
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!
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
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
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!!!
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!!!
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
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
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
19 mars 2008 à 22:14
bonsoir,
comment enregistrer les données en 2octets?Et comparer les poids forts?
merci d'avance.
comment enregistrer les données en 2octets?Et comparer les poids forts?
merci d'avance.
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
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
j'ai besoin d'un programme en c pour convertir un signale analogique en signale numerique à l'aide d'un pic 16f877
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?)
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?)
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
-capteur de temperatur soit cts ou ctn
-connecteur DB9
-multiplixeur analogique 4051
-miltiplixeur digital 74157
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
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!
17 mars 2008 à 01:08
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