Étape 4: Courte introduction sur PIC et son module ADC
Jetez un oeil sur le schéma fonctionnel de l’ADC. Il montre exactement ce qui est décrit plus loin avec les registres, mais peut-être un peu plus facile à comprendre. Quatre entrées sont les broches PICs, CS choisit celui qui sera relié à l’ADC d’entrée. L’un d’eux peut également être utilisé comme une référence de tension, nous avons désactivé cette fonctionnalité en disant VCFG = 0. Nous allumer le module avec le bit d’ADON sur le fond de l’ADC et de laisser aller d’une conversion en activant/désactivant le bit GO/nDONE. Une fois la conversion terminée, l’ADC place le résultat dans les registres de ADRESH:ADRESL tel qu’indiqué par l’ADFM bit. Nous avons ajusté le résultat à l’extrême droite de dix champs de bits.
Pour mesurer la tension dans l’ensemble de la batterie, j’ai dû configurer le convertisseur analogique-numérique de PIC12F683 interne 10 bits. Les modules internes peuvent être configurés par le biais de leurs registres de configuration, dans ce cas ADCON0 et ANSEL. Il y a deux autres, qui contient le résultat de conversion 10 bits : ADRESH:ADRESL.
Avant de sauter à la configuration, assurez-vous qu’il n’y a aucun moyen pour vous d’endommager le PIC en appliquant des tensions plues de 5V à ses entrées. Pour être capable de mesurer la tension de la batterie 12V +, j’ai dû ajouter un diviseur de tension avec 1:4 facteur de division. Cela signifie, que depuis le 0V-tension de la batterie 14V le PIC est seulement voir un 0V – 3.5V habitat – qui est en toute sécurité sous 5V. J’ai utilisé une résistance de 15Kohm et 5 pour le diviseur de tension. Nous allons vérifier les registres de configuration.
Configurations de Registre ADCON0
La 7-ème bit de ADCON0 Registre est ADFM, qui définit la façon dont ces 10 bits sont organiser dans les deux, résultat de huit bits ADC enregistre. Je m’y suis habitué avec réglage à droite, donc j’ai qui choisira : ADCON0. ADFM = 1.
Le 6-ème bit est VCFG, ce qui a trait à l’entrée de référence de tension positive du module interne de conversion analogique-numérique. La tension d’entrée que nous voulons mesurer maintenant varie de 0V à 5V, cela signifie que nous pouvons sélectionner le motif d’entrée et l’alimentation d’entrée de 5V pour servir notre référence de tension inférieures et supérieures. Sachant cela, nous devons définir ADCON0. VCFG bit à la logique « 0 ».
Bits 5 et 4 ne sont pas mises en œuvre, j’ai mis des zéros dedans pour plus de simplicité.
Bits 3 et 2 de ce registre sélectionnent le canal (pin d’entrée) sur lequel se mesurera le niveau de tension. À la fin de la conversion, le contenu du Registre ADC résultat tiendra un nombre correspondant au niveau de la tension de la chaîne sélectionnée. Je n’ai pas à changer le canal d’entrée dans ce projet, alors la sélection se fait lors de l’initialisation de matériel ADCON0. CHS1:CHS0 = 00.
Bit 1, nommé GO/nDONE est effacée au début, j’ai mis dans l’état de la mesure à l’un et attendre qu’il se réinitialise automatiquement. Ce bit est défini par le matériel et peut être utilisé pour vérifier si une nouvelle mesure de publicité est disponible ou non. Nous allons le mettre à 0.
Bit 0 allume le module ADC et éteint. Bien sûr, nous avons besoin de l’allumer, donc nous devons définir à 1, ADCON0. ADON = 1.
Cela signifie, que le 0b10000001 numéro hexadécimal = 0 x 81 doit être mis en ADCON0 pour le module de travailler de la manière attendue.
Configuration de Registre ANSEL
Ce registre configure l’horloge de l’acquisition et définit quels canaux analogiques est utilisés pour mesurer la tension analogique et qui se fermera à utiliser les broches respectives comme entrées/sorties numériques.
La 7-ème bit n’est pas implémenté, je l’ai mis à 0 pour plus de simplicité.
Les trois suivantes, sélectionnez la source de l’horloge : J’ai tendance à sélectionner FRC par défaut et le changer que si quelque chose ne fonctionne pas : ANSEL. CONVERTISSEURS A/N = 111.
Le grignotement inférieur du Registre affecte les broches analogiques, ceux dont vous avez besoin comme entrées ou sorties doivent être configurées en conséquence. J’ai utilisé uniquement canaux analogiques 0 cette fois, donc je dois mettre un « 1 » à cette position. ANSEL. ANS = 0001.
Avec ces connues, registre ANSEL doit avoir la valeur 0b01110001 = 0x71.
En bref, c’est la façon dont on devrait procéder pour configurer le module ADC de ce processeur. Il n’y a que deux registres à remplir, après que la conversion des résultats peuvent être souscrite de ADRESH:ADRESL périodiquement.