Sommario:
- Forniture
- Passaggio 1: descrizione di PICBIOS
- Fase 2: Descrizione PICMETER
- Passaggio 3: descrizione del circuito
- Passaggio 4: guida alla costruzione
- Passaggio 5: foto del test
- Passaggio 6: riferimenti e collegamenti
Video: PIC16F877 Multimetro: 6 passi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
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:
- Menu di avvio
- Programma di installazione
- Interfaccia a riga di comando (tramite porta seriale)
- Kernel e driver di dispositivo
- Interfaccia di programmazione applicazioni
Fase 2: Descrizione PICMETER
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
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
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 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:
Ripristino di un multimetro dell'era della seconda guerra mondiale in ordine: 3 passaggi
Ripristino di un multimetro dell'era della seconda guerra mondiale in ordine.: Alcuni anni fa ho acquistato questo primo multimetro Simpson Electric per la mia collezione. È arrivato in una custodia in similpelle nera che era in ottime condizioni considerando l'età. La data del brevetto dell'Ufficio Brevetti degli Stati Uniti per il movimento del contatore è 1936 a
Multimetro USB ricaricabile al litio DT830 con Polyfuse: 5 passaggi
Multimetro USB ricaricabile al litio DT830 con Polyfuse: ■ Cosa mi piace di questo misuratore Questo multimetro digitale (DMM) DT830LN offre ▪ Dimensioni compatte ▪ Campo di misurazione della corrente 10 A ▪ Display retroilluminato ▪ Basso costoIl modello DT830D è identico e più comunemente disponibile, ma non ha il display retroilluminato.■ Che
Multimetro alimentato da Arduino: 8 passaggi (con immagini)
Arduino Powered Multimeter: In questo progetto, costruirai un voltmetro e un ohmmetro usando la funzione digitalRead di un Arduino. Sarai in grado di ottenere una lettura quasi ogni millisecondo, molto più precisa di un normale multimetro. Infine, è possibile accedere ai dati o
Come usare il multimetro in Tamil - Guida per principianti - Multimetro per principianti: 8 passaggi
Come usare il multimetro in Tamil | Guida per principianti | Multimetro per principianti: Ciao amici, in questo tutorial, ho spiegato come utilizzare il multimetro in tutti i tipi di circuiti elettronici in 7 passaggi diversi come1) test di continuità per la risoluzione dei problemi hardware2) misurazione della corrente continua 3) test diodi e LED 4) misurazione Resi
IL MODO PI SEMPLICE PER FARE UNA LUCE COMPATTA!! 3 SEMPLICI PASSI!!: 3 Passi
IL MODO PI SEMPLICE PER FARE UNA LUCE COMPATTA!! 3 SEMPLICI PASSI!!: Cosa ti servirà - foglio di stagnola 1 batteria AA (alcune batterie AAA funzioneranno) 1 mini lampadina (lampadine utilizzate per la maggior parte delle torce elettriche; fare riferimento all'immagine) Righello (se necessario)