Taula de continguts:

Multímetre PIC16F877: 6 passos
Multímetre PIC16F877: 6 passos

Vídeo: Multímetre PIC16F877: 6 passos

Vídeo: Multímetre PIC16F877: 6 passos
Vídeo: 5 УДИВИТЕЛЬНЫХ ЖИЗНЕННЫХ ХАКОВ # 2 2024, Juliol
Anonim
Multímetre PIC16F877
Multímetre PIC16F877

Introducció PICMETER

Aquest projecte PICMETER s’ha convertit en una eina útil i fiable per a qualsevol entusiasta de l’electrònica.

  • Funciona amb un microcontrolador PIC16F877 / 877A.
  • És un sistema de desenvolupament PIC
  • És multímetre de 19 funcions (voltímetre, mesurador de freqüència, generador de senyal, termòmetre …)
  • És un corrector de components (R, L, C, díode …) amb fins a 5 intervals en cada funció.
  • Té una ràdio ASK de banda de 433 MHz, que espera algun tipus d’aplicació.
  • Es tracta d’un sistema d’adquisició remota, on un altre ordinador (PC) pot recollir dades a través del port sèrie per a la visualització gràfica. (S'ha utilitzat com a frontal del projecte ECG).
  • Té una instal·lació de registre (per al registre de dades durant hores), els resultats es carreguen des de EEPROM.
  • Produeix senyals de prova per accionar alguns motors.
  • Està provat a fons; vegeu les fotografies al pas 5.
  • El programari es publica com a codi obert

Aquest instructable és una versió reduïda de la documentació completa. Descriu el maquinari i el programari suficients perquè els altres puguin construir-lo com un projecte completat, o bé utilitzar-lo com a sistema de desenvolupament per fer canvis addicionals, o simplement buscar idees per utilitzar en altres projectes.

Subministraments

L’únic xip crític que es compra és el Microchip PIC16F877A-I / P

  • A = la revisió posterior que difereix de l'original en la definició de bits de configuració.
  • I = rang de temperatura industrial
  • P = Paquet de doble plàstic de 40 derivacions, 10 MHz, límits normals de VDD.

També el Hitachi LM032LN 20 caràcters per 2 línies LCD que té incorporat un controlador HD44780.

Les altres parts només són components elèctrics genèrics, PCB de tires, LM340, LM311, LM431, transistors de baixa potència per a usos generals, etc.

Pas 1: descripció de PICBIOS

Descripció de PICBIOS
Descripció de PICBIOS

Descripció de PICBIOS

Aquest programari s’executa en una placa PIC16F877 i ocupa els 4k inferiors de memòria del programa. Proporciona l'entorn de programari per a un programa d'aplicació que ocupa la meitat superior de la memòria del programa. Té una idea similar al PC-BIOS amb algunes ordres de "depuració" com a desenvolupament per al programa i té 5 components:

  1. Menú d'inici
  2. Programa de configuració
  3. Interfície de línia d'ordres (a través del port sèrie)
  4. Nuclis i controladors de dispositiu
  5. Interfície de programació d'aplicacions

Pas 2: descripció del PICMETER

PICMETER Descripció
PICMETER Descripció

PICMETER Descripció

Introducció

Com un multímetre (volts, amplificadors, ohms), té moltes funcions que es seleccionen mitjançant un sistema de menús. Però ser una combinació de maquinari i programari fa que sigui molt versàtil, per exemple, hi ha disponibles funcions com el registre durant llargs períodes i l’enviament de dades de sèrie.

El menú és el "cor" on les funcions es seleccionen mitjançant els botons [esquerra] i [dreta]. A continuació, per a cada funció es seleccionen diferents intervals mitjançant els botons [inc] i [dec]. Per exemple, els condensadors es mesuren des de 0,1nF fins a 9000uF mitjançant 5 intervals separats.

2.1 Programari PICMETER

Això s’organitza com un programa d’aplicacions que ocupa la part superior de 4 k de memòria del programa i depèn de les funcions del PICBIOS per a la I / O del dispositiu i la manipulació d’interrupcions. Consisteix en la secció de menú que s'executa com a tasca de fons i que sondeja els botons cada 20 ms. Quan es prem un botó per canviar de funció o canviar d'abast, es crida a la rutina adequada. Quan no es premen cap botó, la lectura mesurada s'actualitza a intervals d'aproximadament 0,5 segons. Bàsicament, el menú és una taula de cerca.

2.2 Funció del comptador - seccions

Hi ha moltes funcions, de manera que aquesta part es divideix en seccions, cadascuna de les quals tracta de funcions de naturalesa similar. Aquesta és una breu llista de les seccions. Consulteu la documentació completa per veure com funciona cada secció en detall. A causa de les limitacions de port, hi ha 3 variacions del projecte (vegeu la documentació completa). Les funcions en tipus de lletra normal són comunes a tots els projectes. Les funcions SUBRILINADES només s’inclouen al projecte PICMETER1. Les funcions en ITALICS només s’inclouen als projectes PICMETER2 o PICMETER3.

Secció VoltMeter: el fitxer font és vmeter.asm

Conté funcions basades en la mesura de tensió mitjançant l'ADC.

  • Voltatge ADC (llegeix el voltatge en l'entrada seleccionada, AN0 a AN4)
  • AD2 Dual (mostra tensió a AN0 i AN1 simultàniament)
  • Termòmetre TMP -10 a 80? degC (transductor 2N3904 o dual LM334)
  • LOG: estableix l'interval de registre
  • OHM: mesura de resistència (mètode potenciòmetre) de 0Ω a 39MΩ en 4 rangs
  • DIO: díode, mesura la tensió directa (0-2,5 V)
  • CON - Continuïtat (emet un so quan la resistència és inferior al llindar de 25, 50 o 100)

Component Meter1: el fitxer font és meter1.asm

Mesurament de condensadors, inductors i resistències mitjançant circuit comparador LM311. Basat en mesurar el temps d’un cicle de càrrega.

  • CAL: calibratge: mesura 80nf i 10μF fixes per a autotest i ajust
  • Cx1: mesura del condensador de 0,1nF a 9000μF en 5 rangs
  • Lx1: mesura d’inductors d’1mH a ?? mH en 2 intervals
  • Rx1: mesura de resistència de 100Ω a 99MΩ en un rang de 3

Component Meter2 Fitxer font Meter2.asm

Mesura de components mitjançant l'oscil·lador de relaxació LM311 alternatiu i l'oscil·lador Colpitts. Basat en la mesura del període de temps de N cicles. Això és una mica més precís que el mètode anterior, ja que es mesura el temps de N = fins a 1000 cicles. És més una solució de maquinari i requereix més construcció.

  • Cx2: mesura del condensador de 10pF a 1000 μF en 5 rangs.
  • Rx2: mesura de resistència de 100 ohm a 99M en 5 rangs.
  • Lx2: mesurament d’inductors d’1mH a 60mH en un rang.
  • mesurament d'inductors osc (mètode Colpitts) de 70μH a 5000μH? en 2 rangs.

Mesurador de freqüència: fitxer font Fmeter.asm

Conté funcions que utilitzen comptadors i temporitzadors PIC, i poca cosa més;

  • FREQ: mesurador de freqüència de 0Hz a 1000kHz en 3 rangs
  • XTL: mesura la freqüència dels cristalls LP (no provats)
  • SIG: generador de senyals de 10Hz a 5KHz en 10 passos
  • SMR - motor pas a pas - sentit invers
  • SMF - motor pas a pas - direcció cap endavant.

Comunicacions: el fitxer font és comms.asm

Funcions per transmetre / rebre senyals per provar perifèrics de sèrie i SPI;

  • Prova UTX de sèrie TX i inc i taxa de bits dec de 0,6 a 9,6 k
  • URX prova RX de sèrie i inc i velocitat de bits dec de 0,6 a 9,6 k
  • SPM: prova SPI en mode mestre
  • SPS: prova l'SPI en mode esclau

Mòdul de ràdio FSK: el fitxer font és Radio.asm

Funcions que utilitzen mòduls de recepció i transmissió de ràdio RM01 i RM02. Aquests mòduls s’interfacen mitjançant SPI, que utilitza la majoria dels pins del port C.

  • RMB: fixa la velocitat BAUD del mòdul de ràdio
  • RMF: fixa la freqüència de RF del mòdul de ràdio
  • RMC: estableix la freqüència de rellotge del mòdul de ràdio
  • XLC: ajusta la càrrega de la capacitat del cristall
  • POW: estableix la potència del transmissor
  • RM2: transmetre dades de prova (mòdul RM02)
  • RM1: rebre dades de prova (mòdul RM01)

Mòdul de control: fitxer font control.asm

  • SV1: sortida de servo (mitjançant CCP1) d'1 ms a 2 ms en passos de 0,1 ms
  • SV2: sortida de servo (mitjançant CCP2) d'1 ms a 2 ms en passos de 0,1 ms
  • PW1: sortida PWM (mitjançant CCP1) del 0 al 100% en passos del 10%
  • PW2: sortida PWM (mitjançant CCP2) del 0 al 100% en passos del 10%

Adquisició remota de dades: el fitxer font és remote.asm

Mode remot (Rem): conjunt d'ordres perquè el comptador es pugui operar des d'un ordinador mitjançant una interfície sèrie. Una ordre recopila dades registrades a EEPROM durant un període d’hores. Una altra ordre llegeix les tensions a tota velocitat de l'ADC a la memòria intermèdia de memòria i, a continuació, transmet la memòria intermèdia al PC, on es poden visualitzar gràficament els resultats. Es tracta, efectivament, d’un oscil·loscopi que funciona en un rang de freqüències d’àudio

Temps: el fitxer font és time.asm

Tim: només mostra l'hora en format hh: mm: ss i permet canviar mitjançant 4 botons

Pas 3: Descripció del circuit

Descripció del circuit
Descripció del circuit
Descripció del circuit
Descripció del circuit

Descripció del circuit

3.1 Junta bàsica de desenvolupament

La figura 1 mostra un tauler de desenvolupament bàsic per fer funcionar PICBIOS. És una font d’energia regulada de 5V i condensadors de desacoblament molt estàndard i senzilla, C1, C2 ….

El rellotge és de cristall de 4 MHz, de manera que TMR1 marca en intervals d’1us. Els condensadors C6 i C7 de 22pF són recomanats per Microchip, però no semblen ser realment necessaris. La capçalera ICSP (in-circuit-serial-programming) s’utilitza per programar inicialment un PIC en blanc amb el PICBIOS.

El port sèrie (COM1): nota TX i RX es canvien, és a dir, COM1- TX està connectat al port C-RX i COM1- RX està connectat al port C-TX (conegut habitualment com a "mòdem nul"). També els nivells de senyal requerits per RS232 haurien de ser realment + 12V (espai) i -12V (marca). No obstant això, els nivells de voltatge de 5V (espai) i 0V (marca) semblen adequats per a tots els ordinadors que he utilitzat. Així, els nivells de senyal de RX i TX només s’inverteixen pel controlador de línia (Q3) i el receptor de línia (Q2).

La pantalla LCD LM032LN (2 files de 20 caràcters) utilitza la “interfície HD44780” estàndard. El programari utilitza només mode d’escriptura i mode nibble de 4 bits, que utilitza 6 pins del port D. El programari es pot configurar per nibble low (ports D bits 0-3) o nibble high (ports D bits 4-7) tal com s’utilitza aquí.

Els interruptors de polsador proporcionen quatre entrades per a la selecció de menú. Utilitzeu push per fer commutadors mentre el programari detecta la caiguda. Les resistències de tracció (= 25k) són internes a PORT B. El port RB6 no es pot utilitzar per als commutadors, a causa del tap 1nF (que es recomana per ICSP). No cal un commutador de reinici?

botó0

opcions de menú a l'esquerra [◄]

botó1

opcions del menú a la dreta [►]

botó2

increment / valor / selecció [▲]

botó3

decrementa l'interval / el valor / selecciona [▼]

3.2 Entrades analògiques i comprovador de components: placa 1

La figura 2 mostra els circuits analògics de PICMETER1. Les entrades analògiques AN0 i AN1 s’utilitzen per a la mesura de voltatge d’ús general. Seleccioneu els valors de resistència dels atenuadors per donar 5V als pins d'entrada AN0 / AN1.

Per al rang d'entrada de 10V, m = 1 + R1 / R2 = 1 + 10k / 10k = 2

Per al rang d'entrada de 20V, m = 1 + (R3 + R22) / R4 = 1 + 30k / 10k = 4

L’AN2 s’utilitza per mesurar la temperatura mitjançant el transistor Q1 com a transductor de temperatura “cru”. Coeficient de temperatura del transistor NPN a 20 celcuis = -Vbe / (273 + 20) = - 0,626 / 293 = -2,1 mV / K. (veure mesurament de temperatura a la secció Analògica). El LM431 (U1) proporciona una referència de voltatge de 2,5 V a AN3. Finalment, s'utilitza AN4 per a proves de components o seccions analògiques.

Per a la mesura de components, el component de prova està connectat entre les entrades RE2 (D_OUT) i AN4. Les resistències R14 a R18 proporcionen cinc valors diferents de resistència utilitzats per a la mesura de resistència (mètode potenciòmetre) a la secció analògica. Les resistències es "connecten en circuit" configurant els pins C / Port E com a entrada o sortida.

Meter1 realitza la mesura de components carregant diverses combinacions de condensador i resistència coneguts / desconeguts. LM311 (U2) s’utilitza per crear interrupcions CCP1 quan un condensador es carrega al llindar superior (75% VDD) i es descarrega al llindar inferior (25% VDD). ajust. En provar condensadors, el condensador C13 (= 47pF) més la capacitat perduda de la placa proporcionen un ajust de 100pF. Això garanteix que, quan s’elimina el component de prova, l’interval entre les interrupcions CCP1 supera els 100us i no sobrecarrega el PIC. Aquest valor de retall (100pF) es resta del mesurament de components mitjançant el programari. D3 (1N4148) proporciona el camí de descàrrega en provar els inductors i protegeix D_OUT, evitant que el voltatge sigui negatiu.

λΩπμ

Pas 4: Guia de construcció

Guia de construcció
Guia de construcció
Guia de construcció
Guia de construcció

Guia de construcció

Una cosa bona és que aquest projecte està construït i provat per etapes. Planifica el teu projecte. Per a aquestes instruccions suposo que esteu construint PICMETER1, tot i que el procediment és similar per a PICMETER2 i 3.

4.1 PCB de la placa de desenvolupament

Heu de construir el tauler de desenvolupament bàsic (Figura 1) que hauria d’adaptar-se a un PCB de mida estàndard de 100 per 160 mm, planejar el disseny per mantenir-lo el més ordenat possible. Netegeu el PCB i esteneu tot el coure, utilitzeu components i connectors fiables, provats quan sigui possible. Utilitzeu un sòcol de 40 pins per al PIC. Comprovació de continuïtat de totes les juntes soldades. Pot ser útil mirar les fotos del meu tauler de dalt.

Ara teniu un PIC en blanc i heu de programar PICBIOS a la memòria flash. Si ja teniu un mètode de programació, està bé. Si no, recomano el següent mètode que he utilitzat amb èxit.

4.2 Programador AN589

Es tracta d’un petit circuit d’interfície que permet programar un PIC des d’un PC mitjançant el port de la impressora (LPT1). El disseny va ser publicat originalment per Microchip en una nota d'aplicació. (referència 3). Obteniu o feu un programador compatible AN589. He utilitzat un disseny AN589 millorat que es descriu aquí. Això és ICSP, és a dir, inseriu el PIC al sòcol de 40 pins per programar-lo. A continuació, connecteu el cable de la impressora a l'entrada AN539 i el cable ICSP de l'AN589 a la placa de desenvolupament. El meu disseny de programador pren el seu poder de la placa de desenvolupament mitjançant el cable ICSP.

4.3 Configuració de PICPGM

Ara necessiteu un programari de programació per executar-vos al PC. PICPGM funciona amb diversos programadors, inclòs AN589, i es descarrega gratuïtament. (Veure referències).

Al menú de maquinari, seleccioneu Programador AN589, a LPT1

Dispositiu = PIC16F877 o 877A o detecció automàtica.

Seleccioneu Fitxer hexadecimal: PICBIOS1. HEX

Seleccioneu Esborra PIC, després Programa PIC i, a continuació, Verifiqueu PIC. Amb una mica de sort, rebreu un missatge de finalització satisfactori.

Traieu el cable ICSP, Reinicieu el PIC, espero que vegeu la pantalla PICBIOS a la pantalla LCD; en cas contrari, comproveu les connexions. Comproveu el menú d'arrencada prement els botons esquerre i dret.

4.4 Connexió en sèrie (hiperterminal o massilla)

Ara comproveu la connexió sèrie entre PIC i PC. Connecteu el cable sèrie del PC COM1 a la placa de desenvolupament i executeu un programa de comunicació, com l'antic terminal hiper-Win-XP o PUTTY.

Si utilitzeu Hyperterminal, configureu-ho de la manera següent. Al menú principal, Truca> Desconnecta. A continuació, Fitxer> Propietats> Connecta a la pestanya. Seleccioneu Com1 i feu clic al botó Configura. Seleccioneu 9600 bps, sense paritat, 8 bits, 1 parada. Control de flux de maquinari”. A continuació, Truca> Truca per connectar-te.

Si utilitzeu PuTTY, Connection> Serial> Connect to COM1 i 9600 bps, sense paritat, 8 bits, 1 parada. Seleccioneu "RTS / CTS". A continuació, Sessió> Sèrie> Obre

Al menú d’arrencada de PICBIOS, seleccioneu “Mode d’ordres” i, a continuació, premeu [inc] o [dec]. El missatge de sol·licitud "PIC16F877>" hauria d'aparèixer a la pantalla (si no comproveu la vostra interfície sèrie). Premeu? per veure la llista d'ordres.

4.5 Programa PICMETER

Un cop la connexió sèrie funciona, la memòria flash de programació és tan senzilla com enviar un fitxer hexadecimal. Introduïu l'ordre "P", que respon amb "Enviar fitxer hexadecimal …".

Utilitzant hiper-terminal, des del menú Transferència> Enviar fitxer de text> PICMETER1. HEX> Obre.

El progrés s’indica amb el signe “:”. a mesura que es programa cada línia de codi hexadecimal. Finalment carrega l'èxit.

Si utilitzeu PuTTY, és possible que hàgiu d’utilitzar el Bloc de notes i copiar / enganxar tot el contingut de PICMETER1. HEX a PuTTY.

De manera similar per verificar, introduïu l'ordre "V". A la terminal terminal, des del menú Transferència> Enviar fitxer de text> PICMETER1. HEX> D'acord.

Advertència = xx … Si programa un xip 16F877A, rebrà alguns missatges d'advertència. Això té a veure amb les diferències entre 877 i 877A, que es programen en blocs de 4 paraules. Malauradament, l'enllaçador no alinea l'inici de les seccions en límits de 4 paraules. La solució senzilla és tenir 3 instruccions NOP al començament de cada secció, així que només cal ignorar les advertències.

Reinicieu i al menú d'arrencada de la BIOS, seleccioneu "Executa l'aplicació". Hauríeu de veure PICMETER1 a la pantalla LCD.

4.6 Executeu PICMETER1

Ara comenceu a construir més seccions de la placa de desenvolupament (Figura 2) per aconseguir que les funcions Voltmeter, Component Meter funcionin com calgui.

El metre1 necessita una certa calibració. A la funció "Cal", ajusteu R10 per obtenir lectures de 80.00, 80.0nF i 10.000uF aprox. A continuació, llegiu una petita funció de 100pF en Cx1. Si la lectura està fora, canvieu la tapa de retall C13 o canvieu el valor de "trimc" a meter1.asm.

Ara executeu la configuració de PICBIOS i canvieu alguns paràmetres de calibratge a EEPROM. Calibreu la temperatura ajustant el desplaçament de 16 bits (format alt, baix). És possible que també hàgiu de canviar el valor "delayt".

Si la vostra intenció és construir el projecte tal com és - Enhorabona, ja heu acabat! Expliqueu-me el vostre èxit a Instructables.

4,7 MPLAB

Però si voleu fer modificacions o desenvolupar el projecte més endavant, heu de tornar a construir el programari mitjançant MPLAB. Descarregueu MPLAB des de Microchip. Aquest és el "vell" que és senzill i senzill d'utilitzar. No he provat la nova eina de desenvolupament de labx, que sembla molt més complicada.

Detalls de com crear un projecte nou i, a continuació, afegir fitxers al projecte a Documentació completa.

Pas 5: fotos de proves

Fotos de proves
Fotos de proves
Fotos de proves
Fotos de proves
Fotos de proves
Fotos de proves

Foto superior del termòmetre, que llegeix 15 ° C

Freqüència de prova, lectura = 416k

L’inductor de prova marcat amb 440uF, es llegeix 435u

Proveu una resistència de 100 k, es llegeix 101 k, és fàcil.

Prova del condensador de 1000pF, la lectura és de 1.021nF

Pas 6: referències i enllaços

6.1 Full de dades PIC16F87XA, Microchip Inc.

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

6.2 Especificació de programació de memòria PIC16F87XA FLASH, microxip

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

6.3 Nota d'aplicació AN589, Microchip Inc.

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

6.4 Descàrrega PICPGM

picpgm.picprojects.net/

Descàrrega gratuïta 6.5 MPE IDE v8.92, Microchip

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

6.6 Fitxes tècniques per als mòduls Hope RFM01-433 i RFM02-433, solucions RF

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

6.7 LT Spice, dispositius analògics

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

6.8 Un circuit de programador de fotos basat en AN589, Best-Microcontroller-Projects

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

6.9 Fitxers de codi obert

codi obert

Recomanat: