Table des matières:

Multimètre PIC16F877 : 6 étapes
Multimètre PIC16F877 : 6 étapes

Vidéo: Multimètre PIC16F877 : 6 étapes

Vidéo: Multimètre PIC16F877 : 6 étapes
Vidéo: Volt+Amp meter with PIC16F877A 2024, Novembre
Anonim
Multimètre PIC16F877
Multimètre PIC16F877

PICMETRE Présentation

Ce projet PICMETER est devenu un outil utile et fiable pour tout amateur d'électronique.

  • Il fonctionne sur un microcontrôleur PIC16F877/877A.
  • C'est un système de développement PIC
  • C'est un multimètre à 19 fonctions (voltmètre, fréquencemètre, générateur de signal, thermomètre…)
  • C'est un vérificateur de composants (R, L, C, diode…) avec jusqu'à 5 plages sur chaque fonction.
  • Il a une radio ASK à bande 433MHz, qui attend une sorte d'application.
  • Il s'agit d'un système d'acquisition à distance, où un autre ordinateur (PC) peut collecter des données via le port série pour l'affichage graphique. (Il a été utilisé comme frontal du projet ECG).
  • Il dispose d'une fonction d'enregistrement (pour l'enregistrement des données pendant des heures), les résultats sont téléchargés à partir de l'EEPROM.
  • Il produit des signaux de test pour piloter certains moteurs.
  • Il est minutieusement testé, voir les photographies à l'étape 5.
  • Le logiciel est publié en Open Source

Ce Instructable est une version réduite de la documentation complète. Il décrit le matériel et les logiciels suffisants pour que d'autres puissent le construire soit en tant que projet terminé, soit l'utiliser comme système de développement pour apporter d'autres modifications, ou simplement rechercher des idées à utiliser sur d'autres projets.

Fournitures

La seule puce critique à acheter est la Microchip PIC16F877A-I/P

  • A = la révision ultérieure qui diffère de l'originale dans la définition des bits de configuration.
  • I = Plage de température industrielle
  • P= Paquet double en ligne en plastique à 40 broches, 10 MHz, limites VDD normales.

Également l'écran LCD Hitachi LM032LN 20 caractères sur 2 lignes doté d'un contrôleur HD44780 intégré.

Les autres pièces ne sont que des composants électriques génériques, des circuits imprimés à bande, LM340, LM311, LM431, des transistors de faible puissance à usage général, etc.

Étape 1: Description de PICBIOS

Description de PICBIOS
Description de PICBIOS

Description de PICBIOS

Ce logiciel fonctionne sur une carte PIC16F877 et occupe les 4k inférieurs de la mémoire programme. Il fournit l'environnement logiciel pour un programme d'application occupant la moitié supérieure de la mémoire du programme. Son idée est similaire au PC-BIOS avec quelques commandes de type "debug" pour le développement de programmes et comporte 5 composants:

  1. Menu de démarrage
  2. Programme d'installation
  3. Interface de ligne de commande (via le port série)
  4. Pilotes de noyau et de périphérique
  5. Interface de programmation d'applications

Étape 2: Description du PICMÈTRE

PICMETRE Description
PICMETRE Description

PICMETRE Description

introduction

Comme un multimètre (volts, ampères, ohms), il possède de nombreuses fonctions qui sont sélectionnées au moyen d'un système de menus. Mais être une combinaison de matériel et de logiciel le rend très polyvalent, par exemple des fonctionnalités telles que la journalisation sur de longues périodes et l'envoi de données série sont disponibles.

Le menu est le « cœur » où les fonctions sont sélectionnées au moyen des boutons [gauche] et [droite]. Ensuite, pour chaque fonction, différentes plages sont sélectionnées par les boutons [inc] et [dec]. Par exemple, les condensateurs sont mesurés d'environ 0,1 nF à 9 000 uF au moyen de 5 plages distinctes.

2.1 Logiciel PICMETER

Ceci est organisé comme un programme d'application qui occupe les 4 Ko supérieurs de la mémoire du programme et s'appuie sur les fonctions du PICBIOS pour les E/S de l'appareil et la gestion des interruptions. Il se compose de la section de menu qui s'exécute en tâche de fond et interroge les boutons toutes les 20 ms. Lorsqu'un bouton est enfoncé pour changer de fonction ou de plage, la routine appropriée est appelée. Lorsqu'aucun bouton n'est enfoncé, la lecture mesurée est mise à jour à des intervalles d'environ 0,5 seconde. Fondamentalement, le menu est une table de recherche.

2.2 Fonction du compteur - sections

Il existe de nombreuses fonctions, cette partie est donc divisée en sections, chacune traitant de fonctions de nature similaire. Ceci est une brève liste des sections, consultez la documentation complète pour voir comment chaque section fonctionne en détail. En raison des limitations de port, il existe 3 variantes du projet (voir la documentation complète). Les fonctions en police normale sont communes à tous les projets. Les fonctions SOULIGNÉES ne sont incluses que dans le projet PICMETER1. Les fonctions en ITALIQUE ne sont incluses que dans les projets PICMETER2 ou PICMETER3.

Section VoltMeter - Le fichier source est vmeter.asm

Contient des fonctions basées sur la mesure de tension à l'aide de l'ADC.

  • Tension ADC (lit la tension sur l'entrée sélectionnée, AN0 à AN4)
  • AD2 Dual (affiche la tension sur AN0 et AN1 simultanément)
  • Thermomètre TMP -10 à 80 ? degC (transducteur 2N3904 ou double LM334)
  • LOG - définit l'intervalle d'enregistrement
  • OHM – Mesure de résistance (méthode potentiomètre) de 0Ω à 39MΩ dans 4 gammes
  • DIO - Diode, mesure la tension directe (0-2,5 V)
  • CON - Continuité (bips lorsque la résistance est inférieure au seuil de 25, 50 ou 100)

Composant Meter1 - Le fichier source est meter1.asm

Mesure de condensateurs, d'inducteurs et de résistances à l'aide du circuit comparateur LM311. Basé sur la mesure du temps d'un cycle de charge.

  • CAL - étalonnage - mesure 80 nf et 10 F fixes pour l'auto-test et l'ajustement
  • Cx1 – mesure de condensateur de 0,1nF à 9000μF dans 5 gammes
  • Lx1 – mesure de l'inductance de 1mH à ?? mH en 2 plages
  • Rx1 – mesure de résistance de 100Ω à 99MΩ dans 3 gammes

Composant Meter2 Fichier source Meter2.asm

Mesure des composants à l'aide de l'oscillateur de relaxation alternatif LM311 et de l'oscillateur Colpitts. Basé sur la mesure de la période de temps de N cycles. Ceci est légèrement plus précis que la méthode ci-dessus car un temps de N= jusqu'à 1000 cycles est mesuré. Il s'agit davantage d'une solution matérielle et nécessite plus de construction.

  • Cx2 – mesure de condensateur de 10pF à 1000 μF dans 5 gammes.
  • Rx2 – mesure de résistance de 100 ohm à 99M dans 5 gammes.
  • Lx2 - mesure d'inductance de 1mH à 60mH dans 1 plage.
  • osc - mesure inductance (méthode Colpitts) de 70μH à 5000μH ? en 2 gammes.

Fréquencemètre - fichier source Fmeter.asm

Contenant des fonctions qui utilisent des compteurs et des minuteries PIC, et rien d'autre;

  • FREQ - Fréquencemètre de 0Hz à 1000kHz en 3 gammes
  • XTL - mesure la fréquence des cristaux LP (non testé)
  • SIG – générateur de signal de 10Hz à 5KHz en 10 étapes
  • SMR – moteur pas à pas - sens inverse
  • SMF – moteur pas à pas - sens avant.

Communications - Le fichier source est comms.asm

Fonctions pour transmettre/recevoir un signal pour tester les périphériques série et SPI;

  • Test UTX TX série & débit binaire inc et déc de 0,6 à 9,6k
  • Test URX RX série & débit binaire inc et déc de 0,6 à 9,6k
  • SPM - teste SPI en mode maître
  • SPS - teste SPI en mode esclave

Module radio FSK - Le fichier source est Radio.asm

Fonctions utilisant les modules de réception et d'émission radio RM01 et RM02. Ces modules s'interfacent via SPI, qui utilise la plupart des broches du port C.

  • RMB - définir le taux de transmission en BAUD du module radio
  • RMF - régler la fréquence RF du module radio
  • RMC - définit la fréquence d'horloge du module radio
  • XLC - ajuste la charge de capacité du cristal
  • POW - définit la puissance de l'émetteur
  • RM2 - transmettre les données de test (module RM02)
  • RM1 - recevoir les données de test (module RM01)

Module de contrôle - Fichier source control.asm

  • SV1 - Sortie servo (utilisant CCP1) de 1 ms à 2 ms par pas de 0,1 ms
  • SV2 - Sortie servo (utilisant CCP2) de 1 ms à 2 ms par pas de 0,1 ms
  • PW1 - Sortie PWM (utilisant CCP1) de 0 à 100 % par pas de 10 %
  • PW2 - Sortie PWM (utilisant CCP2) de 0 à 100 % par pas de 10 %

Acquisition de données à distance - Le fichier source est remote.asm

Mode à distance (Rem) - un ensemble de commandes permettant au compteur de fonctionner à partir d'un ordinateur via une interface série. Une commande collecte les données enregistrées dans l'EEPROM sur une période de plusieurs heures. Une autre commande lit les tensions à pleine vitesse de l'ADC dans la mémoire tampon, puis transmet la mémoire tampon au PC, où les résultats peuvent être affichés graphiquement. En fait, il s'agit d'un oscilloscope fonctionnant sur une plage de fréquences audio

Heure - Le fichier source est time.asm

Tim – affiche simplement l'heure au format hh:mm:ss et permet la modification à l'aide de 4 boutons

Étape 3: Description du circuit

Description des circuits
Description des circuits
Description des circuits
Description des circuits

Description des circuits

3.1 Carte de développement de base

La figure 1 montre une carte de développement de base pour faire fonctionner PICBIOS. C'est très standard et simple, source d'alimentation régulée 5V et condensateurs de découplage, C1, C2….

L'horloge est un cristal de 4 MHz, de sorte que le TMR1 fonctionne par intervalles de 1us. Les condensateurs 22pF C6, C7 sont recommandés par Microchip, mais ne semblent pas réellement nécessaires. L'en-tête ICSP (in-circuit-serial-programmation) est utilisé pour programmer initialement un PIC vierge avec le PICBIOS.

Le port série (COM1) – notez que TX et RX sont permutés, c'est-à-dire que COM1-TX est connecté au port C-RX et COM1-RX est connecté au port C-TX (communément appelé « modem nul »). De plus, les niveaux de signal requis pour RS232 devraient vraiment être de +12V (espace) et de -12V (marque). Cependant, des niveaux de tension de 5V (espace) et 0V (repère) semblent adéquats pour tous les PC que j'ai utilisés. Ainsi, les niveaux de signal de RX et TX sont simplement inversés par le pilote de ligne (Q3) et le récepteur de ligne (Q2).

L'écran LCD LM032LN (2 rangées 20 caractères) utilise l'interface standard « HD44780 ». Le logiciel utilise le mode quartet 4 bits et l'écriture uniquement, qui utilise 6 broches du port D. Le logiciel peut être configuré pour le quartet bas (Port D bits 0-3) ou le quartet haut (Port D bits 4-7) comme utilisé ici.

Les interrupteurs à bouton-poussoir fournissent quatre entrées pour la sélection de menu. Utilisez push pour effectuer des commutateurs pendant que le logiciel détecte le front descendant. Les résistances pull-up (=25k) sont internes au PORT B. Le port RB6 ne peut pas être utilisé pour les commutateurs, en raison du capuchon 1nF (recommandé pour ICSP). Il n'y a pas besoin d'un interrupteur de réinitialisation ?

bouton0

options de menu à gauche [◄]

bouton1

options de menu à droite [►]

bouton2

incrémenter plage/valeur/sélectionner [▲]

bouton3

décrémenter plage/valeur/sélectionner [▼]

3.2 Entrées analogiques et vérificateur de composants – Carte 1

La figure 2 montre les circuits analogiques pour PICMETER1. Les entrées analogiques AN0 et AN1 sont utilisées pour la mesure de tension à usage général. Sélectionnez les valeurs de résistance pour que les atténuateurs donnent 5V sur les broches d'entrée AN0/AN1.

Pour la plage d'entrée 10V, m = 1 + R1/R2 = 1 + 10k/10k = 2

Pour la plage d'entrée 20 V, m = 1 + (R3+R22)/R4 = 1 + 30k/10k = 4

AN2 est utilisé pour la mesure de la température en utilisant le transistor Q1 comme transducteur de température « brut ». Coefficient de température du transistor NPN à 20 celcuis = -Vbe/ (273+20) = - 0,626/293 = -2,1 mV/K. (voir mesure de température dans la section Analogique). Le LM431 (U1) fournit une référence de tension de 2,5 V sur AN3. Enfin, AN4 est utilisé pour les tests de composants dans la section analogique.

Pour la mesure des composants, le composant de test est connecté entre RE2 (D_OUT) et l'entrée AN4. Les résistances R14 à R18 fournissent cinq valeurs différentes de résistance utilisées pour la mesure de la résistance (méthode du potentiomètre) dans la section Analogique. Les résistances sont « connectées en circuit » en définissant les broches du port C/port E comme entrée ou sortie.

Meter1 effectue la mesure des composants en chargeant diverses combinaisons de condensateur et de résistance connus/inconnus. LM311 (U2) est utilisé pour créer des interruptions CCP1 lorsqu'un condensateur se charge au seuil supérieur (75 % VDD) et se décharge au seuil inférieur (25 % VDD) Ces tensions de seuil sont fixées par R8, R9, R11 et le potentiomètre R10 qui ajustement. Lors du test des condensateurs, le condensateur C13 (=47pF) plus la capacité parasite de la carte fournissent une compensation de 100pF. Cela garantit que, lorsque le composant de test est supprimé, l'intervalle entre les interruptions CCP1 dépasse 100us et ne surcharge pas le PIC. Cette valeur d'ajustement (100pF) est soustraite de la mesure des composants par le logiciel. D3 (1N4148) fournit le chemin de décharge lors du test des inductances et protège D_OUT, empêchant la tension de devenir négative.

??

Étape 4: Guide de construction

Guide de construction
Guide de construction
Guide de construction
Guide de construction

Guide de construction

Une bonne chose est que ce projet est construit et testé par étapes. Planifiez votre projet. Pour ces instructions, je suppose que vous construisez PICMETER1, bien que la procédure soit similaire pour PICMETER2 et 3.

4.1 Carte de développement PCB

Vous devez construire la carte de développement de base (Figure 1) qui doit s'adapter sur un PCB de taille standard de 100 x 160 mm, planifier la disposition pour la garder aussi ordonnée que possible. Nettoyez votre PCB et étamez tout le cuivre, utilisez des composants et des connecteurs fiables, testés dans la mesure du possible. Utilisez une prise 40 broches pour le PIC. Vérifier la continuité de tous les joints soudés. Il peut être utile de regarder mes photos de disposition de tableau ci-dessus.

Vous avez maintenant un PIC vierge et vous devez programmer le PICBIOS dans la mémoire flash. Si vous avez déjà une méthode de programmation, très bien. Sinon, je recommande la méthode suivante que j'ai utilisée avec succès.

4.2 Programmeur AN589

Il s'agit d'un petit circuit d'interface qui permet à un PIC d'être programmé à partir d'un PC en utilisant le port imprimante (LPT1). La conception a été initialement publiée par Microchip dans une note d'application. (référence 3). Obtenez ou créez un programmeur compatible AN589. J'ai utilisé une conception AN589 améliorée décrite ici. C'est ICSP - ce qui signifie que vous insérez le PIC dans la prise 40 broches pour le programmer. Connectez ensuite le câble de l'imprimante à l'entrée AN539 et le câble ICSP de AN589 à la carte de développement. La conception de mon programmeur tire son énergie de la carte de développement via le câble ICSP.

4.3 Paramètres PICPGM

Vous avez maintenant besoin d'un logiciel de programmation pour fonctionner sur PC. PICPGM fonctionne avec divers programmeurs, y compris AN589, et il est téléchargé gratuitement. (Voir les références).

Dans le menu Matériel, sélectionnez Programmeur AN589, sur LPT1

Appareil = PIC16F877 ou 877A ou détection automatique.

Sélectionnez le fichier hexadécimal: PICBIOS1. HEX

Sélectionnez Effacer le PIC, puis Programmer le PIC, puis Vérifier le PIC. Avec un peu de chance, vous obtenez un message de réussite.

Retirez le câble ICSP, Redémarrez le PIC, espérons que vous voyez l'affichage PICBIOS sur l'écran LCD, sinon vérifiez vos connexions. Vérifiez le menu de démarrage en appuyant sur les boutons gauche et droit.

4.4 Connexion série (Hyperterminal ou Putty)

Vérifiez maintenant la connexion série entre le PIC et le PC. Connectez le câble série du PC COM1 à la carte de développement et exécutez un programme de communication, comme l'ancien Hyper-Terminal Win-XP ou PUTTY.

Si vous utilisez Hyperterminal, configurez comme suit. Dans le menu principal, Appeler > Déconnecter. Puis Fichier> Propriétés> Se connecter à l'onglet. Sélectionnez Com1, puis cliquez sur le bouton Configurer. Sélectionnez 9600 bps, pas de parité, 8 bits, 1 stop. Contrôle de flux matériel ». Puis Appeler > Appeler pour se connecter.

Si vous utilisez PuTTY, Connexion> Série> Connexion à COM1, et 9600 bps, pas de parité, 8 bits, 1 arrêt. Sélectionnez « RTS/CTS ». Puis Session> Série> Ouvrir

Dans le menu de démarrage PICBIOS, sélectionnez « Mode de commande », puis appuyez sur [inc] ou [dec]. Le message d'invite « PIC16F877> » devrait apparaître à l'écran (sinon, vérifiez votre interface série). Presse ? pour voir la liste des commandes.

4.5 Programme PICMETRE

Une fois que la connexion série fonctionne, la programmation de la mémoire flash est aussi simple que l'envoi d'un fichier hexadécimal. Entrez la commande "P", qui répond par "Envoyer le fichier hexadécimal…".

A l'aide de l'hyper-terminal, depuis le menu Transfert > Envoyer fichier texte > PICMETER1. HEX > Ouvrir.

La progression est indiquée par le ":." car chaque ligne de code hexadécimal est programmée. Enfin, chargez le succès.

Si vous utilisez PuTTY, vous devrez peut-être utiliser le Bloc-notes et copier/coller tout le contenu de PICMETER1. HEX dans PuTTY.

De même pour vérifier, entrez la commande « V ». En hyper-terminal, depuis le menu Transfert > Envoyer fichier texte > PICMETER1. HEX > OK.

Warning = xx…Si vous programmez une puce 16F877A, vous obtiendrez des messages d'avertissement. Il s'agit des différences entre 877 et 877A, qui programment en 4 blocs de mots. Malheureusement, l'éditeur de liens n'aligne pas le début des sections sur les limites de 4 mots. La solution simple est d'avoir 3 instructions NOP au début de chaque section, donc ignorez simplement les avertissements.

Redémarrez et dans le menu de démarrage du BIOS, sélectionnez « Exécuter l'application ». Vous devriez voir PICMETER1 sur l'écran LCD.

4.6 Exécuter PICMETER1

Maintenant, commencez à construire plus de sections de la carte de développement (Figure 2) pour que les fonctions Voltmètre et Compteur de composants fonctionnent selon les besoins.

Meter1 a besoin d'un étalonnage. Sur la fonction "Cal", ajustez R10 pour donner des lectures de 80,00, 80,0 nF et 10 000 uF environ. Ensuite, lisez un petit 100pF sur la fonction Cx1. Si la lecture est erronée, soit modifiez le capuchon de compensation C13, soit modifiez la valeur de « trimc » dans meter1.asm.

Exécutez maintenant la configuration PICBIOS et modifiez quelques paramètres d'étalonnage dans l'EEPROM. Calibrez la température en ajustant le décalage de 16 bits (format haut, bas). Vous devrez peut-être également modifier la valeur « delayt ».

Si votre intention est de construire le projet tel qu'il est - Félicitations - vous avez terminé ! Parlez-moi de votre succès sur Instructables.

4.7 MPLAB

Mais si vous souhaitez apporter des modifications ou développer davantage le projet, vous devez reconstruire le logiciel à l'aide de MPLAB. Téléchargez MPLAB à partir de Microchip. C'est "l'ancien" qui est simple et direct à utiliser. Je n'ai pas essayé le nouvel outil de développement labx qui a l'air bien plus compliqué.

Détails sur la façon de créer un nouveau projet, puis d'ajouter des fichiers au projet dans la documentation complète.

Étape 5: Photos des tests

Photos des tests
Photos des tests
Photos des tests
Photos des tests
Photos des tests
Photos des tests

Photo ci-dessus du thermomètre, lecture 15 degC

Fréquence de test, lecture = 416k

Inductance de test marquée 440uF, lit 435u

Tester une résistance de 100k, lire 101k, c'est facile.

Test du condensateur 1000pF, la lecture est de 1,021nF

Étape 6: Références et liens

6.1 Fiche technique PIC16F87XA, Microchip Inc.

ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

6.2 Spécification de programmation de la mémoire FLASH PIC16F87XA, puce électronique

ww1.microchip.com/downloads/en/devicedoc/39589b.pdf

6.3 Note d'application AN589, Microchip Inc.

ww1.microchip.com/downloads/en/appnotes/00589a.pdf

6.4 Téléchargement de PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 téléchargement gratuit, Microchip

pic-microcontroller.com/mplab-ide-v8-92-free-download/

6.6 Fiches techniques des modules Hope RFM01-433 et RFM02-433, RF Solutions

www.rfsolutions.co.uk/radio-modules-c10/hope-rf-c238

6.7 LT Spice, appareils analogiques

www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html

6.8 Un circuit de programmation d'images basé sur AN589, Best-Microcontroller-Projects

www.best-microcontroller-projects.com/pic-programmer-circuit.html

6.9 Fichiers Open Source

Open source

Conseillé: