Sommario:

PIC16F877 Multimetro: 6 passi
PIC16F877 Multimetro: 6 passi

Video: PIC16F877 Multimetro: 6 passi

Video: PIC16F877 Multimetro: 6 passi
Video: Ultrasonic sensor with Microchip's PIC - Part 14 Microcontroller Basics (PIC10F200) 2024, Luglio
Anonim
PIC16F877 Multimetro
PIC16F877 Multimetro

PICMETER Introduzione

Questo progetto PICMETER è diventato uno strumento utile e affidabile per qualsiasi appassionato di elettronica.

  • Funziona su un microcontrollore PIC16F877 / 877A.
  • È un sistema di sviluppo PIC
  • È un multimetro a 19 funzioni (voltmetro, frequenzimetro, generatore di segnale, termometro…)
  • È un verificatore di componenti (R, L, C, diodo …) con un massimo di 5 intervalli su ciascuna funzione.
  • Ha una radio ASK a banda 433MHz, che attende un qualche tipo di applicazione.
  • È un sistema di acquisizione remota, dove un altro computer (PC) può raccogliere dati tramite la porta seriale per la visualizzazione grafica. (È stato utilizzato come front-end del progetto ECG).
  • Ha una funzione di registrazione (per la registrazione dei dati nell'arco delle ore), i risultati vengono caricati da EEPROM.
  • Produce segnali di prova per pilotare alcuni motori.
  • È stato accuratamente testato, vedere le fotografie nel passaggio 5.

  • Il software è rilasciato come Open Source

Questo Instructable è una versione ridotta della documentazione completa. Descrive l'hardware e il software sufficienti per consentire ad altri di costruirlo come progetto completato o utilizzarlo come sistema di sviluppo per apportare ulteriori modifiche o semplicemente cercare idee da utilizzare su altri progetti.

Forniture

L'unico chip critico da acquistare è il Microchip PIC16F877A-I/P

  • A = la revisione successiva che differisce dall'originale nella definizione dei bit di configurazione.
  • I = Intervallo di temperatura industriale
  • P= Doppio pacchetto in linea di plastica a 40 derivazioni, 10 MHz, limiti VDD normali.

Anche l'Hitachi LM032LN 20 caratteri per 2 righe LCD che ha integrato il controller HD44780.

Le altre parti sono solo componenti elettrici generici, PCB strip-board, LM340, LM311, LM431, transistor a bassa potenza per uso generale ecc.

Passaggio 1: descrizione di PICBIOS

PICBIOS Descrizione
PICBIOS Descrizione

PICBIOS Descrizione

Questo software funziona su una scheda PIC16F877 e occupa i 4k inferiori della memoria del programma. Fornisce l'ambiente software per un programma applicativo che occupa la metà superiore della memoria del programma. È simile nell'idea al BIOS del PC con alcuni comandi simili a "debug" per lo sviluppo del programma e ha 5 componenti:

  1. Menu di avvio
  2. Programma di installazione
  3. Interfaccia a riga di comando (tramite porta seriale)
  4. Kernel e driver di dispositivo
  5. Interfaccia di programmazione applicazioni

Fase 2: Descrizione PICMETER

PICMETER Descrizione
PICMETER Descrizione

PICMETER Descrizione

introduzione

Come un multimetro (volt, ampere, ohm) questo ha molte funzioni che vengono selezionate tramite un sistema di menu. Ma essendo una combinazione di hardware e software lo rende molto versatile, ad esempio sono disponibili funzionalità come la registrazione per lunghi periodi e l'invio di dati seriali.

Il menu è il “cuore” dove le funzioni vengono selezionate tramite i pulsanti [sinistra] e [destra]. Quindi, per ciascuna funzione, vengono selezionati intervalli diversi mediante i pulsanti [inc] e [dec]. Ad esempio, i condensatori vengono misurati da circa 0,1 nF a 9000 uF mediante 5 intervalli separati.

2.1 Software PICMETER

Questo è organizzato come un programma applicativo che occupa i 4k superiori di memoria del programma e si basa sulle funzioni del PICBIOS per l'I/O del dispositivo e la gestione degli interrupt. Consiste nella sezione del menu che viene eseguita come attività in background e interroga i pulsanti ogni 20 ms. Quando si preme un pulsante per cambiare funzione o cambiare intervallo, viene chiamata la routine appropriata. Quando non viene premuto alcun pulsante, la lettura misurata viene aggiornata a intervalli di circa 0,5 secondi. Fondamentalmente il menu è una tabella di ricerca.

2.2 Funzione contatore - sezioni

Ci sono molte funzioni, quindi questa parte è divisa in sezioni, ognuna delle quali tratta funzioni di natura simile. Questo è un breve elenco delle sezioni, vedere la documentazione completa per vedere in dettaglio come funziona ciascuna sezione. A causa delle limitazioni delle porte, ci sono 3 varianti del progetto (vedi documentazione completa). Le funzioni in carattere normale sono comuni a tutti i progetti. Le funzioni UNDERLINED sono incluse solo nel progetto PICMETER1. Le funzioni in ITALICS sono incluse solo nei progetti PICMETER2 o PICMETER3.

Sezione VoltMeter - Il file sorgente è vmeter.asm

Contenente funzioni basate sulla misurazione della tensione mediante l'ADC.

  • Tensione ADC (legge la tensione sull'ingresso selezionato, da AN0 a AN4)
  • AD2 Dual (visualizza la tensione su AN0 e AN1 contemporaneamente)
  • Termometro TMP da -10 a 80? degC (2N3904 o doppio trasduttore LM334)
  • LOG – imposta l'intervallo di registrazione
  • OHM – Misura della resistenza (metodo del potenziometro) da 0Ω a 39MΩ in 4 range
  • DIO – Diodo, misura la tensione diretta (0-2,5V)
  • CON – Continuità (suona quando la resistenza è inferiore alla soglia di 25, 50 o 100)

Componente Meter1 - Il file di origine è meter1.asm

Misura di condensatori, induttori e resistori utilizzando il circuito comparatore LM311. Basato sulla misurazione del tempo di un ciclo di carica.

  • CAL – calibrazione – misure fisse 80nf e 10μF per autotest e regolazione
  • Cx1 – misura del condensatore da 0.1nF a 9000μF in 5 range
  • Lx1 – misura dell'induttore da 1mH a ?? mH in 2 gamme
  • Rx1 – misura della resistenza da 100Ω a 99MΩ in 3 range

Componente Meter2 File sorgente Meter2.asm

Misura dei componenti utilizzando un oscillatore di rilassamento LM311 alternativo e un oscillatore Colpitts. Basato sulla misurazione del periodo di tempo di N cicli. Questo è leggermente più accurato del metodo precedente poiché viene misurato il tempo di N= fino a 1000 cicli. È più una soluzione hardware e richiede più costruzione.

  • Cx2 – misura del condensatore da 10pF a 1000 μF in 5 range.
  • Rx2 – misura della resistenza da 100 ohm a 99M in 5 range.
  • Lx2 - misurazione dell'induttore da 1 mH a 60 mH in 1 intervallo.
  • osc - misurazione dell'induttore (metodo Colpitts) da 70μH a 5000μH ? in 2 gamme.

Frequenzimetro - file sorgente Fmeter.asm

Contenente funzioni che utilizzano contatori e timer PIC e poco altro;

  • FREQ - Frequenzimetro da 0Hz a 1000kHz in 3 range
  • XTL - misura la frequenza dei cristalli LP (non testato)
  • SIG – generatore di segnale da 10Hz a 5KHz in 10 step
  • SMR - motore passo-passo - direzione inversa
  • SMF – motore passo-passo in avanti.

Comunicazioni: il file di origine è coms.asm

Funzioni di trasmissione/ricezione segnale per testare periferiche seriali e SPI;

  • Test UTX TX seriale e bit rate inc e dec da 0,6 a 9,6 k
  • Test URX RX seriale e bit rate inc e dec da 0,6 a 9,6 k
  • SPM - verifica SPI in modalità master
  • SPS - verifica SPI in modalità slave

Modulo radio FSK - Il file sorgente è Radio.asm

Funzioni che utilizzano moduli di ricezione e trasmissione radio RM01 e RM02. Questi moduli si interfacciano tramite SPI, che utilizza la maggior parte dei pin della porta C.

  • RMB – imposta la velocità BAUD del modulo radio
  • RMF – imposta la frequenza RF del modulo radio
  • RMC - imposta la frequenza di clock del modulo radio
  • XLC – regola il carico di capacità del cristallo
  • POW - imposta la potenza del trasmettitore
  • RM2 - trasmissione dati di prova (modulo RM02)
  • RM1 – ricezione dati di prova (modulo RM01)

Modulo di controllo - File sorgente control.asm

  • SV1 - Uscita servo (usando CCP1) da 1ms a 2ms in passi di 0.1ms
  • SV2 - Uscita servo (usando CCP2) da 1ms a 2ms in passi di 0.1ms
  • PW1 - Uscita PWM (usando CCP1) da 0 a 100% in passi del 10%
  • PW2 - Uscita PWM (usando CCP2) da 0 a 100% in passi del 10%

Acquisizione dati remota: il file sorgente è remote.asm

Modalità remota (Rem) - un insieme di comandi in modo che lo strumento possa essere azionato da un computer tramite un'interfaccia seriale. Un comando raccoglie i dati registrati in EEPROM per un periodo di ore. Un altro comando legge le tensioni a piena velocità dell'ADC nel buffer di memoria, quindi trasmette il buffer al PC, dove i risultati possono essere visualizzati graficamente. In effetti questo è un oscilloscopio, che lavora sulla gamma di frequenze audio

Ora: il file di origine è time.asm

Tim – visualizza solo l'ora in formato hh:mm:ss e consente la modifica utilizzando 4 pulsanti

Passaggio 3: descrizione del circuito

Descrizione del circuito
Descrizione del circuito
Descrizione del circuito
Descrizione del circuito

Descrizione del circuito

3.1 Scheda di sviluppo di base

La Figura 1 mostra una scheda di sviluppo di base per far funzionare PICBIOS. È molto standard e semplice, fonte di alimentazione regolata a 5 V e condensatori di disaccoppiamento, C1, C2 ….

L'orologio è al quarzo da 4 MHz, in modo che TMR1 ticchetta a intervalli di 1us. I condensatori 22pF C6, C7 sono consigliati da Microchip, ma non sembrano essere effettivamente necessari. L'intestazione ICSP (programmazione seriale in-circuit) viene utilizzata per programmare inizialmente un PIC vuoto con il PICBIOS.

La porta seriale (COM1) – nota TX e RX sono scambiati, cioè COM1-TX è collegato alla porta C-RX e COM1-RX è collegato alla porta C-TX (comunemente indicato come "null modem"). Anche i livelli di segnale richiesti per RS232 dovrebbero essere +12V (spazio) e -12V (segno). Tuttavia, i livelli di tensione di 5 V (spazio) e 0 V (segno) sembrano adeguati per tutti i PC che ho usato. Quindi i livelli di segnale di RX e TX sono solo invertiti dal driver di linea (Q3) e dal ricevitore di linea (Q2).

Il display LCD LM032LN (2 righe da 20 caratteri) utilizza l'interfaccia standard "HD44780". Il software utilizza la modalità nibble a 4 bit e solo scrittura, che utilizza 6 pin della porta D. Il software può essere configurato per nibble basso (bit porta D 0-3) o nibble alto (bit porta D 4-7) come usato qui.

Gli interruttori a pulsante forniscono quattro ingressi per la selezione del menu. Utilizzare la pressione per effettuare gli interruttori mentre il software rileva il fronte di discesa. I resistori di pull-up (=25k) sono interni alla PORTA B. La porta RB6 non può essere utilizzata per gli interruttori, a causa del cappuccio 1nF (consigliato per ICSP). Non c'è bisogno di un interruttore di reset?

pulsante0

opzioni di menu a sinistra [◄]

pulsante1

opzioni di menu a destra [►]

pulsante2

incremento range/valore/seleziona [▲]

pulsante3

decrementa intervallo/valore/seleziona [▼]

3.2 Ingressi Analogici e Component Checker – Scheda 1

La Figura 2 mostra il circuito analogico per PICMETER1. Gli ingressi analogici AN0 e AN1 vengono utilizzati per la misurazione della tensione per scopi generici. Selezionare i valori dei resistori affinché gli attenuatori diano 5 V sui pin di ingresso AN0/AN1.

Per range di ingresso 10V, m = 1 + R1/R2 = 1 + 10k/10k = 2

Per range di ingresso 20V, m = 1 + (R3+R22)/R4 = 1 + 30k/10k = 4

AN2 viene utilizzato per la misurazione della temperatura utilizzando il transistor Q1 come trasduttore di temperatura "grezzo". Coefficiente di temperatura del transistor NPN a 20 celcuis = -Vbe/ (273+20) = - 0,626/293 = -2,1 mV/K. (vedi misura della temperatura nella sezione Analogico). L'LM431 (U1) fornisce un riferimento di tensione di 2,5 V su AN3. Infine AN4 è utilizzato per o per il test dei componenti nella sezione Analogica.

Per la misurazione dei componenti, il componente di prova è collegato tra RE2 (D_OUT) e AN4 Input. I resistori da R14 a R18 forniscono cinque diversi valori di resistenza utilizzati per la misurazione della resistenza (metodo del potenziometro) nella sezione Analogica. I resistori sono "collegati nel circuito" impostando i pin della porta C/porta E come ingresso o uscita.

Meter1 esegue la misurazione dei componenti caricando varie combinazioni di condensatore e resistore noti/sconosciuti. LM311 (U2) viene utilizzato per creare interrupt CCP1 quando un condensatore si carica alla soglia superiore (75% VDD) e si scarica alla soglia inferiore (25% VDD) Queste tensioni di soglia sono impostate da R8, R9, R11 e dal potenziometro R10 che fornisce un leggero regolazione. Quando si testano i condensatori, il condensatore C13 (=47pF) più la capacità parassita della scheda forniscono un trim di 100pF. Ciò garantisce che, quando il componente di test viene rimosso, l'intervallo tra gli interrupt del CCP1 superi i 100us e non sovraccarichi il PIC. Questo valore di trim (100pF) viene sottratto dalla misurazione del componente tramite software. D3(1N4148) fornisce il percorso di scarica durante il test degli induttori e protegge D_OUT, impedendo che la tensione diventi negativa.

μ

Passaggio 4: guida alla costruzione

Guida alla costruzione
Guida alla costruzione
Guida alla costruzione
Guida alla costruzione

Guida alla costruzione

Una cosa buona è che questo progetto è costruito e testato in più fasi. Pianifica il tuo progetto. Per queste istruzioni presumo che tu stia costruendo PICMETER1, sebbene la procedura sia simile per PICMETER2 e 3.

4.1 Scheda di sviluppo PCB

È necessario costruire la scheda di sviluppo di base (Figura 1) che dovrebbe adattarsi a un PCB di dimensioni standard da 100 per 160 mm, pianificare il layout per mantenerlo il più ordinato possibile. Pulisci il tuo PCB e stagna tutto il rame, usa componenti e connettori affidabili, testati ove possibile. Utilizzare una presa a 40 pin per il PIC. Controllare la continuità di tutti i giunti saldati. Potrebbe essere utile guardare le foto del layout della mia scheda sopra.

Ora hai un PIC vuoto e devi programmare PICBIOS nella memoria flash. Se hai già un metodo di programmazione, va bene. In caso contrario, consiglio il seguente metodo che ho utilizzato con successo.

4.2 Programmatore AN589

Questo è un piccolo circuito di interfaccia che consente a un PIC di programmare da un PC utilizzando la porta della stampante (LPT1). Il progetto è stato originariamente pubblicato da Microchip in una nota applicativa. (riferimento 3). Ottieni o crea un programmatore compatibile con AN589. Ho usato un design AN589 migliorato descritto qui. Questo è ICSP, il che significa che inserisci il PIC nella presa a 40 pin per programmarlo. Quindi collegare il cavo della stampante all'ingresso AN539 e il cavo ICSP dall'AN589 alla scheda di sviluppo. Il progetto del mio programmatore prende la sua potenza dalla scheda di sviluppo tramite il cavo ICSP.

4.3 Impostazioni PICPGM

Ora hai bisogno di un software di programmazione per l'esecuzione su PC. PICPGM funziona con vari programmatori incluso AN589 e viene scaricato gratuitamente. (Vedi riferimenti).

Dal menu Hardware, selezionare Programmer AN589, su LPT1

Dispositivo = PIC16F877 o 877A o rilevamento automatico.

Seleziona file esadecimale: PICBIOS1. HEX

Selezionare Cancella PIC, quindi Programma PIC, quindi Verifica PIC. Con un po' di fortuna ottieni un messaggio di completamento riuscito.

Rimuovere il cavo ICSP, Riavvia il PIC, si spera che tu veda il display PICBIOS sull'LCD, altrimenti controlla le tue connessioni. Controlla il menu di avvio premendo i pulsanti sinistro e destro.

4.4 Connessione seriale (Hyperterminal o Putty)

Ora controlla la connessione seriale tra PIC e PC. Collega il cavo seriale dal PC COM1 alla scheda di sviluppo ed esegui un programma di comunicazione, come il vecchio Win-XP Hyper-Terminal, o PUTTY.

Se si utilizza Hyperterminal, configurare come segue. Dal menu principale, Chiama > Disconnetti. Quindi File> Proprietà> Connetti a scheda. Selezionare Com1, quindi fare clic sul pulsante Configura. Seleziona 9600 bps, nessuna parità, 8 bit, 1 stop. Controllo del flusso hardware”. Quindi Chiama > Chiama per connetterti.

Se si utilizza PuTTY, Connessione> Seriale> Connetti a COM1 e 9600 bps, nessuna parità, 8 bit, 1 stop. Seleziona “RTS/CTS”. Quindi Sessione> Seriale> Apri

Nel menu di avvio di PICBIOS, selezionare "Modalità comandi", quindi premere [inc] o [dec]. Il messaggio di richiesta "PIC16F877>" dovrebbe apparire sullo schermo (in caso contrario controllare l'interfaccia seriale). Premere ? per vedere l'elenco dei comandi.

4.5 Programma PICMETER

Una volta che la connessione seriale è funzionante, programmare la memoria flash è semplice come inviare un file esadecimale. Immettere il comando "P", che risponde con "Invia file esadecimale…".

Utilizzando hyper-terminal, dal menu Trasferisci > Invia file di testo > PICMETER1. HEX > Apri.

Il progresso è indicato da ":." poiché ogni riga di codice esadecimale è programmata. Finalmente caricamento riuscito.

Se stai utilizzando PuTTY, potrebbe essere necessario utilizzare Blocco note e copiare/incollare l'intero contenuto di PICMETER1. HEX in PuTTY.

Allo stesso modo per verificare, inserisci il comando "V". In hyper-terminal, dal menu Trasferisci > Invia file di testo > PICMETER1. HEX > OK.

Warning = xx…Se si programma un chip 16F877A, verranno visualizzati alcuni messaggi di avviso. Questo ha a che fare con le differenze tra 877 e 877A, che programma in blocchi di 4 parole. Sfortunatamente il linker non allinea l'inizio delle sezioni sui limiti di 4 parole. La soluzione semplice è avere 3 istruzioni NOP all'inizio di ogni sezione, quindi ignora gli avvertimenti.

Riavvia e nel menu di avvio del BIOS, seleziona "Esegui applicazione". Dovresti vedere PICMETER1 sul display LCD.

4.6 Esegui PICMETER1

Ora inizia a costruire più sezioni della scheda di sviluppo (Figura 2) per far funzionare le funzioni Voltmeter e Component Meter come richiesto.

Meter1 necessita di una calibrazione. Sulla funzione "Cal", regolare R10 per fornire letture di 80.00, 80.0nF e 10.000uF circa. Quindi leggi un piccolo 100pF sulla funzione Cx1. Se la lettura è fuori, cambiare il cappuccio del trim C13 o cambiare il valore di “trimc” in meter1.asm.

Ora esegui PICBIOS Setup e modifica alcune impostazioni di calibrazione in EEPROM. Calibrare la temperatura regolando l'offset a 16 bit (formato alto, basso). Potrebbe anche essere necessario modificare il valore "delayt".

Se la tua intenzione è di costruire il progetto così com'è - Congratulazioni - hai finito! Parlami del tuo successo su Instructables.

4.7 MPLAB

Ma se desideri apportare modifiche o sviluppare ulteriormente il progetto, devi ricostruire il software utilizzando MPLAB. Scarica MPLAB da Microchip. Questo è quello "vecchio" che è semplice e diretto da usare. Non ho provato il nuovo strumento di sviluppo labx che sembra molto più complicato.

Dettagli su come creare un nuovo progetto e quindi aggiungere file al progetto in Documentazione completa.

Passaggio 5: foto del test

Foto di test
Foto di test
Foto di test
Foto di test
Foto di test
Foto di test

Foto sopra del termometro, che legge 15 gradi C

Frequenza di prova, lettura = 416k

Induttore di prova contrassegnato 440uF, legge 435u

Testare il resistore da 100k, legge 101k, è facile.

Test del condensatore 1000pF, la lettura è 1.021nF

Passaggio 6: riferimenti e collegamenti

6.1 Scheda tecnica PIC16F87XA, Microchip Inc.

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

6.2 Specifiche di programmazione della memoria FLASH PIC16F87XA, Microchip

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

6.3 Nota applicativa AN589, Microchip Inc.

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

6.4 Scarica PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 download gratuito, Microchip

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

6.6 Schede tecniche per i moduli Hope RFM01-433 e RFM02-433, soluzioni RF

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

6,7 litri di spezie, dispositivi analogici

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

6.8 Un circuito programmatore di immagini basato su AN589, Best-Microcontroller-Projects

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

6.9 File Open Source

open_source

Consigliato: