Cuprins:

Multimetru PIC16F877: 6 pași
Multimetru PIC16F877: 6 pași
Anonim
Multimetru PIC16F877
Multimetru PIC16F877

PICMETER Introducere

Acest proiect PICMETER a devenit un instrument util și fiabil pentru orice pasionat de electronice.

  • Funcționează pe un microcontroler PIC16F877 / 877A.
  • Este un sistem de dezvoltare PIC
  • Este multimetru cu 19 funcții (voltmetru, contor de frecvență, generator de semnal, termometru …)
  • Este un verificator de componente (R, L, C, diodă …) cu până la 5 intervale pe fiecare funcție.
  • Are un radio ASK cu bandă de 433 MHz, care așteaptă un fel de aplicație.
  • Este un sistem de achiziție la distanță, unde un alt computer (PC) poate colecta date prin portul serial pentru afișare grafică. (A fost folosit ca front-end al proiectului ECG).
  • Are o facilitate de înregistrare (pentru înregistrarea datelor peste ore), rezultatele sunt încărcate din EEPROM.
  • Produce semnale de test pentru a acționa unele motoare.
  • Este testat temeinic, vezi fotografiile de la Pasul 5.
  • Software-ul este lansat ca Open Source

Acest instructabil este o versiune redusă a documentației complete. Acesta descrie hardware-ul și software-ul suficient pentru ca alții să îl construiască fie ca un proiect finalizat, fie să îl folosească ca sistem de dezvoltare pentru a face modificări ulterioare, sau doar să caute idei pe care să le folosească în alte proiecte.

Provizii

Singurul cip critic de cumpărat este Microchip PIC16F877A-I / P

  • A = versiunea ulterioară care diferă de cea originală în definiția biților de configurare.
  • I = Intervalul de temperatură industrială
  • P = pachet dublu din plastic cu 40 de plumb, 10 MHz, limite normale de VDD.

De asemenea, Hitachi LM032LN 20 caractere pe 2 linii LCD care are incorporat controlerul HD44780.

Celelalte părți sunt doar componente electrice generice, PCB cu bandă, LM340, LM311, LM431, tranzistoare de uz general de mică putere etc.

Pasul 1: Descriere PICBIOS

PICBIOS Descriere
PICBIOS Descriere

PICBIOS Descriere

Acest software rulează pe o placă PIC16F877 și ocupă 4k de memorie de jos a programului. Acesta oferă mediul software pentru un program de aplicație care ocupă jumătatea superioară a memoriei programului. Are o idee similară cu PC-BIOS-ul, cu câteva comenzi de „depanare” precum dezvoltarea programului și are 5 componente:

  1. Meniu Boot
  2. Program de configurare
  3. Interfață linie de comandă (prin port serial)
  4. Kernel și drivere de dispozitiv
  5. Interfața de programare a aplicației

Pasul 2: Descriere PICMETER

PICMETER Descriere
PICMETER Descriere

PICMETER Descriere

Introducere

La fel ca un multimetru (volți, amperi, ohmi), acesta are multe funcții care sunt selectate prin intermediul unui sistem de meniu. Dar fiind o combinație de hardware și software îl face foarte versatil, de exemplu sunt disponibile caracteristici precum înregistrarea pe perioade lungi și trimiterea de date seriale.

Meniul este „inima” unde funcțiile sunt selectate prin intermediul butoanelor [stânga] și [dreapta]. Apoi pentru fiecare funcție sunt selectate intervale diferite prin butoanele [inc] și [dec]. De exemplu, condensatorii sunt măsurați de la aproximativ 0,1nF la 9000uF prin intermediul a 5 intervale separate.

2.1 Software PICMETER

Acesta este organizat ca un program de aplicație care ocupă 4k superioare de memorie de program și se bazează pe funcțiile PICBIOS pentru I / O dispozitiv și gestionarea întreruperilor. Se compune din secțiunea de meniu care rulează ca sarcină de fundal și sondează butoanele la fiecare 20 ms. Când este apăsat un buton pentru a schimba funcția sau a schimba intervalul, se apelează rutina corespunzătoare. Când nu sunt apăsate butoane, citirea măsurată este actualizată la intervale de aproximativ 0,5 sec. Practic meniul este un tabel de căutare.

2.2 Funcția contorului - secțiuni

Există multe funcții, astfel încât această parte este împărțită în secțiuni, fiecare tratând funcții de natură similară. Aceasta este o scurtă listă a secțiunilor, consultați documentația completă pentru a vedea cum funcționează fiecare secțiune în detaliu. Datorită limitărilor portului, există 3 variante ale proiectului (consultați Documentația completă). Funcțiile în font normal sunt comune tuturor proiectelor. Funcțiile UNDERLINED sunt incluse numai în proiectul PICMETER1. Funcțiile în ITALICS sunt incluse numai în proiectele PICMETER2 sau PICMETER3.

Secțiunea VoltMeter - Fișierul sursă este vmeter.asm

Conținând funcții care se bazează pe măsurarea tensiunii folosind ADC.

  • Tensiune ADC (citește tensiunea la intrarea selectată, AN0 la AN4)
  • AD2 Dual (afișează tensiunea pe AN0 și AN1 simultan)
  • Termometru TMP -10 până la 80? degC (traductor 2N3904 sau dual LM334)
  • LOG - setează intervalul de înregistrare
  • OHM - Măsurarea rezistenței (metoda potențiometrului) de la 0Ω la 39MΩ în 4 intervale
  • DIO - Diodă, măsoară tensiunea înainte (0-2,5V)
  • CON - Continuitate (emite semnale sonore atunci când rezistența este mai mică decât pragul de 25, 50 sau 100)

Component Meter1 - Fișierul sursă este meter1.asm

Măsurarea condensatorului, inductorului și rezistorului utilizând circuitul comparator LM311. Pe baza măsurării timpului unui ciclu de încărcare.

  • CAL - calibrare - măsoară 80nf și 10μF fixe pentru autotestare și reglare
  • Cx1 - măsurarea condensatorului de la 0,1nF la 9000μF în 5 intervale
  • Lx1 - măsurarea inductorului de la 1mH la ?? mH în 2 intervale
  • Rx1 - măsurare rezistență de la 100Ω la 99MΩ în 3 domenii

Component Meter2 Fișier sursă Meter2.asm

Măsurarea componentelor utilizând oscilatorul de relaxare LM311 alternativ și oscilatorul Colpitts. Pe baza măsurării perioadei de timp de N cicluri. Acest lucru este puțin mai precis decât metoda de mai sus, deoarece se măsoară timpul de N = până la 1000 de cicluri. Este mai mult o soluție hardware și necesită mai multă construcție.

  • Cx2 - măsurarea condensatorului de la 10pF la 1000 μF în 5 intervale.
  • Rx2 - măsurare rezistență de la 100 ohmi la 99M în 5 intervale.
  • Lx2 - măsurare inductor de la 1mH la 60mH într-un interval 1.
  • osc - măsurarea inductorului (metoda Colpitts) de la 70μH la 5000μH? în 2 game.

Frequency Meter - fișier sursă Fmeter.asm

Conținând funcții care utilizează contoare și cronometre PIC și puțin altceva;

  • FREQ - Frecvență de la 0Hz la 1000kHz în 3 intervale
  • XTL - măsoară frecvența cristalelor LP (nu este testată)
  • SIG - generator de semnal de la 10Hz la 5KHz în 10 pași
  • SMR - motor pas cu pas - direcție inversă
  • SMF - motor pas cu pas - direcție înainte.

Comunicări - Fișierul sursă este comms.asm

Funcții de transmitere / recepție a semnalului pentru testarea perifericelor seriale și SPI;

  • UTX testează serial TX & inc și rata de biți dec de la 0,6 la 9,6k
  • URX testează seria RX & inc și rata de biți dec de la 0,6 la 9,6k
  • SPM - testează SPI în modul master
  • SPS - testează SPI în modul slave

Modul radio FSK - Fișierul sursă este Radio.asm

Funcții care utilizează module de recepție și transmisie radio RM01 și RM02. Aceste module se interfață prin SPI, care folosește majoritatea pinilor Port C.

  • RMB - setează rata BAUD a modulului radio
  • RMF - setați frecvența RF a modulului radio
  • RMC - setează frecvența ceasului modulului radio
  • XLC - reglează sarcina de capacitate a cristalului
  • POW - setează puterea emițătorului
  • RM2 - transmite date de testare (modul RM02)
  • RM1 - primiți date de testare (modul RM01)

Modul de control - Fișier sursă control.asm

  • SV1 - Servo Output (folosind CCP1) de la 1 ms la 2 ms în pași de 0,1 ms
  • SV2 - Servo Output (folosind CCP2) de la 1 ms la 2 ms în pași de 0,1 ms
  • PW1 - ieșire PWM (folosind CCP1) de la 0 la 100% în pași de 10%
  • PW2 - ieșire PWM (folosind CCP2) de la 0 la 100% în pași de 10%

Achiziție de date la distanță - Fișierul sursă este remote.asm

Mod la distanță (Rem) - un set de comenzi, astfel încât contorul să poată fi acționat de la un computer printr-o interfață serială. O comandă colectează datele înregistrate în EEPROM pe o perioadă de ore. O altă comandă citește tensiunile la viteza maximă a ADC în memoria tampon, apoi transmite memoria tampon către PC, unde rezultatele pot fi afișate grafic. Acesta este efectiv un osciloscop, care funcționează pe o gamă de frecvențe audio

Time - Fișierul sursă este time.asm

Tim - afișează doar ora în format hh: mm: ss și permite schimbarea utilizând 4 butoane

Pasul 3: Descrierea circuitului

Descrierea circuitului
Descrierea circuitului
Descrierea circuitului
Descrierea circuitului

Descrierea circuitului

3.1 Consiliul de dezvoltare de bază

Figura 1 prezintă o placă de dezvoltare de bază pentru a pune PICBIOS în funcțiune. Este o sursă de alimentare reglementată de 5V și condensatori de decuplare foarte standard și simplă, C1, C2….

Ceasul este de cristal de 4 MHz, astfel încât TMR1 bifează la intervale de 1us. Condensatoarele 22pF C6, C7 sunt recomandate de Microchip, dar nu par a fi de fapt necesare. Antetul ICSP (in-circuit-serial-programming) este utilizat pentru a programa inițial un PIC gol cu PICBIOS.

Portul serial (COM1) - nota TX și RX sunt schimbate, adică COM1- TX este conectat la portul C-RX, iar COM1- RX este conectat la portul C-TX (denumit în mod obișnuit „modem nul”). De asemenea, nivelurile de semnal necesare pentru RS232 ar trebui să fie într-adevăr + 12V (spațiu) și -12V (marcaj). Cu toate acestea, nivelurile de tensiune de 5V (spațiu) și 0V (marca) par adecvate pentru toate computerele pe care le-am folosit. Deci, nivelurile de semnal ale RX și TX sunt inversate doar de driverul de linie (Q3) și receptorul de linie (Q2).

LCD-ul LM032LN (2 rânduri cu 20 de caractere) utilizează „interfața HD44780” standard. Software-ul folosește modul de scriere și scriere pe 4 biți, care folosește 6 pini de port D. Software-ul poate fi configurat pentru nibble low (Port D bits 0-3) sau nibble high (Port D bits 4-7) așa cum este utilizat aici.

Comutatoarele butonului oferă patru intrări pentru selectarea meniului. Utilizați apăsarea pentru a face comutatoare, deoarece software-ul detectează marginea de cădere. Rezistențele de tragere (= 25k) sunt interne PORT B. Portul RB6 nu poate fi utilizat pentru comutatoare, din cauza capacului 1nF (care este recomandat pentru ICSP). Nu este nevoie de un comutator de resetare?

buton0

opțiuni de meniu la stânga [◄]

buton1

opțiuni meniu dreapta [►]

butonul2

crește intervalul / valoarea / selectează [▲]

buton3

decrement range / value / select [▼]

3.2 Intrări analogice și verificarea componentelor - placa 1

Figura 2 prezintă circuitele analogice pentru PICMETER1. Intrările analogice AN0 și AN1 sunt utilizate pentru măsurarea tensiunii de uz general. Selectați valorile rezistenței pentru atenuatoare pentru a da 5V pe pinii de intrare AN0 / AN1.

Pentru intervalul de intrare 10V, m = 1 + R1 / R2 = 1 + 10k / 10k = 2

Pentru domeniul de intrare 20V, m = 1 + (R3 + R22) / R4 = 1 + 30k / 10k = 4

AN2 este utilizat pentru măsurarea temperaturii folosind tranzistorul Q1 ca traductor de temperatură „brut”. Coeficientul de temperatură al tranzistorului NPN la 20 celcuis = -Vbe / (273 + 20) = - 0,626 / 293 = -2,1 mV / K. (a se vedea măsurarea temperaturii în secțiunea analogică). LM431 (U1) oferă o referință de tensiune de 2,5V pe AN3. În cele din urmă, AN4 este utilizat pentru testarea componentelor în secțiunea analogică.

Pentru măsurarea componentelor, componenta de testare este conectată la intrarea RE2 (D_OUT) și la intrarea AN4. Rezistențele R14 până la R18 furnizează cinci valori diferite ale rezistenței utilizate pentru măsurarea rezistenței (metoda potențiometrului) în secțiunea analogică. Rezistențele sunt „conectate în circuit” prin setarea pinilor Port C / Port E ca intrare sau ieșire.

Meter1 efectuează măsurarea componentelor prin încărcarea diferitelor combinații de condensator și rezistor cunoscut / necunoscut. LM311 (U2) este folosit pentru a crea întreruperi CCP1 atunci când un condensator se încarcă la pragul superior (75% VDD) și se descarcă la pragul inferior (25% VDD) Aceste tensiuni de prag sunt setate de R8, R9, R11 și potențiometrul R10, ceea ce oferă o ușoară ajustare. La testarea condensatoarelor, condensatorul C13 (= 47pF) plus capacitatea rătăcită a plăcii asigură o tăiere de 100pF. Acest lucru asigură că, atunci când componenta de testare este eliminată, intervalul dintre întreruperile CCP1 depășește 100us și nu suprasolicită PIC. Această valoare de trim (100pF) este scăzută din măsurarea componentelor prin software. D3 (1N4148) asigură calea de descărcare la testarea inductoarelor și protejează D_OUT, împiedicând tensiunea să devină negativă.

λΩπμ

Pasul 4: Ghid de construcție

Ghid de construcție
Ghid de construcție
Ghid de construcție
Ghid de construcție

Ghid de construcție

Un lucru bun este că acest proiect este construit și testat în etape. Planificați-vă proiectul. Pentru aceste instrucțiuni presupun că construiți PICMETER1, deși procedura este similară pentru PICMETER2 și 3.

4.1 PCB placa de dezvoltare

Trebuie să construiți placa de dezvoltare de bază (Figura 1) care ar trebui să se potrivească pe un PCB de dimensiuni standard de 100 x 160 mm, planificați aspectul pentru a rămâne cât mai ordonat posibil. Curățați PCB-ul și stanjați tot cuprul, utilizați componente și conectori fiabili, testați acolo unde este posibil. Utilizați o priză cu 40 de pini pentru PIC. Verificați continuitatea tuturor îmbinărilor lipite. Poate fi util să vă uitați la fotografiile de mai sus.

Acum aveți un PIC gol și trebuie să programați PICBIOS în memoria flash. Dacă aveți deja o metodă de programare - bine. Dacă nu, recomand următoarea metodă pe care am folosit-o cu succes.

4.2 Programator AN589

Acesta este un mic circuit de interfață care permite programarea unui PIC de pe un computer utilizând portul imprimantei (LPT1). Designul a fost publicat inițial de Microchip într-o Notă de aplicație. (referința 3). Obțineți sau creați un programator compatibil AN589. Am folosit un design îmbunătățit AN589 descris aici. Acesta este ICSP - ceea ce înseamnă că introduceți PIC în soclul cu 40 de pini pentru al programa. Apoi conectați cablul imprimantei la intrarea AN539 și cablul ICSP de la AN589 la placa de dezvoltare. Proiectarea mea de programator își ia puterea de pe placa de dezvoltare prin cablul ICSP.

4.3 Setări PICPGM

Acum aveți nevoie de câteva programe software pentru a rula pe computer. PICPGM funcționează cu diverși programatori, inclusiv AN589, și este descărcat gratuit. (Vezi Referințe).

Din meniul Hardware, selectați Programator AN589, pe LPT1

Dispozitiv = PIC16F877 sau 877A sau detectare automată.

Selectați Fișier hexagonal: PICBIOS1. HEX

Selectați Ștergeți PIC, apoi Programați PIC, apoi Verificați PIC. Cu ceva noroc veți primi un mesaj de finalizare cu succes.

Scoateți cablul ICSP, Reporniți PIC, sperăm să vedeți afișajul PICBIOS pe LCD, altfel verificați conexiunile. Verificați meniul de pornire apăsând butoanele stânga și dreapta.

4.4 Conexiune serial (hiperterminal sau chit)

Acum verificați conexiunea serială între PIC și PC. Conectați cablul serial de pe PC COM1 la placa de dezvoltare și rulați un program de comunicații, cum ar fi vechiul Win-XP Hyper-Terminal sau PUTTY.

Dacă utilizați Hyperterminal, configurați după cum urmează. Din meniul principal, Apelați> Deconectați. Apoi Fișier> Proprietăți> Conectare la fila. Selectați Com1, apoi faceți clic pe butonul Configurare. Selectați 9600 bps, fără paritate, 8 biți, 1 oprire. Controlul fluxului hardware”. Apoi Apelați> Apelați pentru a vă conecta.

Dacă utilizați PuTTY, Conexiune> Serial> Conectare la COM1 și 9600 bps, fără paritate, 8 biți, 1 oprire. Selectați „RTS / CTS”. Apoi Sesiune> Serial> Deschidere

În meniul PICBIOS Boot, selectați „Command Mode”, apoi apăsați [inc] sau [dec]. Mesajul de solicitare „PIC16F877>“ar trebui să apară pe ecran (dacă nu verificați interfața serială). Presa ? pentru a vedea lista de comenzi.

4.5 Program PICMETER

Odată ce conexiunea serială funcționează, programarea memoriei flash este la fel de simplă ca trimiterea unui fișier hexagonal. Introduceți comanda „P”, care răspunde cu „Trimiteți fișier hex …”.

Folosind hyper-terminal, din meniul Transfer> Trimiteți fișier text> PICMETER1. HEX> Deschideți.

Progresul este indicat de „:.” deoarece fiecare linie de cod hex este programată. În cele din urmă, încărcați succesul.

Dacă utilizați PuTTY, poate fi necesar să utilizați Notepad și să copiați / lipiți întregul conținut al PICMETER1. HEX în PuTTY.

În mod similar pentru a verifica, introduceți comanda „V”. În hyper-terminal, din meniul Transfer> Trimiteți fișier text> PICMETER1. HEX> OK.

Avertisment = xx … Dacă programați un cip 16F877A, veți primi câteva mesaje de avertizare. Acest lucru este legat de diferențele dintre 877 și 877A, care programează în blocuri de 4 cuvinte. Din păcate, linkerul nu aliniază începutul secțiunilor pe limitele a 4 cuvinte. Soluția simplă este să aveți 3 instrucțiuni NOP la începutul fiecărei secțiuni, deci ignorați avertismentele.

Reporniți și în meniul de pornire BIOS, selectați „Rulați aplicația”. Ar trebui să vedeți PICMETER1 pe ecranul LCD.

4.6 Rulați PICMETER1

Acum începeți să construiți mai multe secțiuni ale plăcii de dezvoltare (Figura 2) pentru ca funcțiile Voltmeter, Component Meter să funcționeze după cum este necesar.

Meter1 are nevoie de o anumită calibrare. În funcția „Cal”, reglați R10 pentru a da citiri de 80.00, 80.0nF și 10.000uF aprox. Apoi citiți un mic 100pF pe funcția Cx1. Dacă citirea este oprită, fie schimbați capacul de tăiere C13, fie modificați valoarea „trimc” în meter1.asm.

Acum rulați PICBIOS Setup și modificați câteva setări de calibrare în EEPROM. Calibrați temperatura reglând decalajul de 16 biți (format înalt, scăzut). Este posibil să fie necesar să modificați valoarea „delayt”.

Dacă intenția dvs. este să construiți proiectul așa cum este - Felicitări - ați terminat! Povestește-mi despre succesul tău pe Instructables.

4,7 MPLAB

Dar dacă doriți să faceți modificări sau să dezvoltați proiectul în continuare, trebuie să reconstruiți software-ul folosind MPLAB. Descărcați MPLAB de la Microchip. Acesta este cel „vechi”, simplu și simplu de utilizat. Nu am încercat noul instrument de dezvoltare labx care pare mult mai complicat.

Detalii despre cum să creați un proiect nou și apoi să adăugați fișiere în proiect în Documentație completă.

Pasul 5: Fotografii de testare

Fotografii de testare
Fotografii de testare
Fotografii de testare
Fotografii de testare
Fotografii de testare
Fotografii de testare

Fotografia de deasupra termometrului, citind 15 grade Celsius

Frecvența de testare, citire = 416k

Inductorul de testare marcat 440uF, citește 435u

Testarea rezistenței de 100k, citește 101k, este una ușoară.

Testarea condensatorului 1000pF, citirea este 1.021nF

Pasul 6: Referințe și linkuri

6.1 Fișa tehnică PIC16F87XA, Microchip Inc.

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

6.2 Specificații de programare a memoriei PIC16F87XA FLASH, microcip

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

6.3 Notă de aplicare AN589, Microchip Inc.

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

6.4 Descărcare PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 descărcare gratuită, Microchip

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

6.6 Fișe tehnice pentru module RFM01-433 și RFM02-433 Hope, soluții RF

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

6.7 LT Spice, dispozitive analogice

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

6.8 Un circuit de programare pic bazat pe AN589, Best-Microcontroller-Projects

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

6.9 Fișiere Open Source

sursa deschisa

Recomandat: