Kazalo:

PIC16F877 Multimeter: 6 korakov
PIC16F877 Multimeter: 6 korakov

Video: PIC16F877 Multimeter: 6 korakov

Video: PIC16F877 Multimeter: 6 korakov
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Julij
Anonim
PIC16F877 multimeter
PIC16F877 multimeter

PICMETER Uvod

Ta projekt PICMETER je prerasel v uporabno in zanesljivo orodje za vse ljubitelje elektronike.

  • Deluje na mikro krmilniku PIC16F877 / 877A.
  • To je razvojni sistem PIC
  • To je 19-funkcijski večmeter (voltmeter, merilnik frekvence, generator signala, termometer …)
  • Gre za preverjanje komponent (R, L, C, dioda …) z do 5 območji za vsako funkcijo.
  • Ima 433MHz pas ASK radio, ki čaka na nekakšno aplikacijo.
  • Gre za sistem za oddaljeno pridobivanje, kjer lahko drug računalnik (PC) zbira podatke prek serijskih vrat za grafični prikaz. (Uporabljen je bil kot sprednji del projekta EKG).
  • Ima enoto za beleženje (za beleženje podatkov po urah), rezultati se naložijo iz EEPROM -a.
  • Proizvaja preskusne signale za pogon nekaterih motorjev.
  • Temeljito je preizkušen, oglejte si fotografije v 5. koraku.
  • Programska oprema je izdana kot odprtokodna

Ta Instructable je skrajšana različica celotne dokumentacije. Opisuje strojno in programsko opremo, ki jo drugi lahko zgradijo kot dokončan projekt ali jo uporabijo kot razvojni sistem za nadaljnje spremembe ali pa samo poiščejo ideje za uporabo pri drugih projektih.

Zaloge

Edini kritični čip za nakup je Microchip PIC16F877A-I/P

  • A = kasnejša revizija, ki se od originala razlikuje po definiciji konfiguracijskih bitov.
  • I = industrijsko temperaturno območje
  • P = 40-vodični plastični dvojni linijski paket, 10 MHz, normalne meje VDD.

Tudi Hitachi LM032LN 20 znakov po 2 vrstici LCD, ki ima vgrajen krmilnik HD44780.

Drugi deli so le splošne električne komponente, tiskana vezja na ploščah, LM340, LM311, LM431, tranzistorji za nizko porabo itd.

1. korak: Opis PICBIOS -a

PICBIOS Opis
PICBIOS Opis

PICBIOS Opis

Ta programska oprema deluje na plošči PIC16F877 in zavzema spodnjih 4k programskega pomnilnika. Zagotavlja programsko okolje za aplikacijski program, ki zavzema zgornjo polovico programskega pomnilnika. Idejno je podoben PC-BIOS-u z nekaj ukazi za odpravljanje napak za razvoj programa in ima 5 komponent:

  1. Zagonski meni
  2. Namestitveni program
  3. Vmesnik ukazne vrstice (prek serijskih vrat)
  4. Gonilniki jedra in naprav
  5. Vmesnik za programiranje aplikacij

2. korak: Opis PICMETER

PICMETER Opis
PICMETER Opis

PICMETER Opis

Uvod

Tako kot multimeter (volti, amperi, ohmi) ima tudi on številne funkcije, ki jih izbere sistem menija. Ker pa je kombinacija strojne in programske opreme, je zelo vsestranska, na primer so na voljo funkcije, kot so daljše beleženje in pošiljanje serijskih podatkov.

Meni je "srce", kjer so funkcije izbrane s tipkama [levo] in [desno]. Nato za vsako funkcijo z gumboma [inc] in [dec] izberemo različne obsege. Na primer, kondenzatorji se merijo od približno 0,1 nF do 9000uF s pomočjo 5 ločenih razponov.

2.1 Programska oprema PICMETER

Ta je organiziran kot aplikacijski program, ki zaseda zgornjih 4k programskega pomnilnika in se opira na funkcije PICBIOS za V/I naprave in upravljanje prekinitev. Sestavljen je iz razdelka menija, ki deluje kot opravilo v ozadju in raziskuje gumbe vsakih 20 ms. Ko pritisnete gumb za spremembo funkcije ali spreminjanje obsega, se pokliče ustrezna rutina. Ko ne pritisnete nobenega gumba, se izmerjeni odmerek posodobi v približno 0,5 -sekundnih intervalih. V bistvu je meni iskalna tabela.

2.2 Funkcija merilnika - odseki

Obstaja veliko funkcij, zato je ta del razdeljen na odseke, od katerih vsak obravnava funkcije podobne narave. To je kratek seznam razdelkov, poglejte v celotno dokumentacijo, da vidite, kako vsak odsek deluje podrobno. Zaradi omejitev vrat obstajajo 3 različice projekta (glej celotno dokumentacijo). Funkcije z običajno pisavo so skupne vsem projektom. Funkcije UNDERLINED so vključene samo v projekt PICMETER1. Funkcije v ITALICS so vključene samo v projekte PICMETER2 ali PICMETER3.

Odsek VoltMeter - Izvorna datoteka je vmeter.asm

Vsebuje funkcije, ki temeljijo na merjenju napetosti z ADC.

  • Napetost ADC (bere napetost na izbranem vhodu, AN0 do AN4)
  • AD2 Dual (hkrati prikazuje napetost na AN0 in AN1)
  • TMP termometer -10 do 80? degC (2N3904 ali dvojni pretvornik LM334)
  • LOG - nastavi interval beleženja
  • OHM - Merjenje upora (metoda potenciometra) od 0Ω do 39MΩ v 4 območjih
  • DIO-Dioda, meri napetost naprej (0-2,5 V)
  • CON - Kontinuiteta (pisk, ko je upor manjši od praga 25, 50 ali 100)

Komponenta Meter1 - Izvorna datoteka je meter1.asm

Merjenje kondenzatorja, induktorja in upora s primerjalnim vezjem LM311. Na podlagi merjenja časa enega cikla polnjenja.

  • CAL - kalibracija - meri 80nf in 10μF za samopreverjanje in prilagajanje
  • Cx1 - merjenje kondenzatorja od 0,1 nF do 9000μF v 5 območjih
  • Lx1 - merjenje induktorja od 1mH do ?? mH v 2 razponih
  • Rx1 - merjenje upora od 100Ω do 99MΩ v 3 območjih

Merilnik komponent2 Izvorna datoteka Meter2.asm

Merjenje komponent z uporabo alternativnega sprostitvenega oscilatorja LM311 in Colpittsovega oscilatorja. Na podlagi merjenja časovnega obdobja N ciklov. To je nekoliko natančnejše od zgornje metode, saj se meri čas N = do 1000 ciklov. Je bolj strojna rešitev in zahteva več gradnje.

  • Cx2 - merjenje kondenzatorja od 10pF do 1000 μF v 5 območjih.
  • Rx2 - merjenje upora od 100 ohmov do 99 M v 5 območjih.
  • Lx2 - merjenje induktorja od 1mH do 60mH v 1 območju.
  • osc - merjenje induktorja (Colpittsova metoda) od 70μH do 5000μH? v 2 razponih.

Merilnik frekvence - izvorna datoteka Fmeter.asm

Vsebuje funkcije, ki uporabljajo števce in merilnike časa PIC, in malo drugega;

  • FREQ - Frekvenčni števec od 0Hz do 1000kHz v 3 območjih
  • XTL - meri frekvenco kristalov LP (ni preizkušeno)
  • SIG - generator signalov od 10Hz do 5KHz v 10 korakih
  • SMR - koračni motor - obratna smer
  • SMF- koračni motor- smer naprej.

Komunikacije - izvorna datoteka je comms.asm

Funkcije za prenos/sprejem signala za testiranje serijskih in SPI zunanjih naprav;

  • UTX testni serijski TX & inc in zmanjšanje bitne hitrosti od 0,6 do 9,6 k
  • URX testni serijski RX & inc in zmanjšanje bitne hitrosti od 0,6 do 9,6 k
  • SPM - preskusi SPI v glavnem načinu
  • SPS - preskusi SPI v podrejenem načinu

Radijski modul FSK - izvorna datoteka je Radio.asm

Funkcije, ki uporabljajo radijske sprejemne in oddajne module RM01 in RM02. Ti moduli se povezujejo prek SPI, ki uporablja večino zatičev Port C.

  • RMB - nastavite stopnjo BAUD radijskega modula
  • RMF - nastavite radijski modul RF frekvence
  • RMC - nastavi frekvenco ure radijskega modula
  • XLC - prilagodi obremenitev kapacitivnosti kristala
  • POW - nastavi moč oddajnika
  • RM2 - prenesite testne podatke (modul RM02)
  • RM1 - prejemanje testnih podatkov (modul RM01)

Nadzorni modul - izvorna datoteka control.asm

  • SV1 - Servo izhod (z uporabo CCP1) od 1 ms do 2 ms v korakih po 0,1 ms
  • SV2 - Servo izhod (z uporabo CCP2) od 1 ms do 2 ms v korakih po 0,1 ms
  • PW1 - izhod PWM (z uporabo CCP1) od 0 do 100% v korakih po 10%
  • PW2 - izhod PWM (z uporabo CCP2) od 0 do 100% v korakih po 10%

Oddaljeno pridobivanje podatkov - izvorna datoteka je remote.asm

Oddaljeni način (Rem) - niz ukazov, s katerimi lahko merilnik upravljate iz računalnika prek serijskega vmesnika. En ukaz zbira podatke, shranjene v EEPROM -u, v obdobju ur. Drugi ukaz bere napetosti pri polni hitrosti ADC -ja v pomnilniški pomnilnik, nato pa ga posreduje v računalnik, kjer je rezultate mogoče grafično prikazati. Dejansko je to osciloskop, ki deluje v avdio frekvenčnem območju

Čas - izvorna datoteka je time.asm

Tim - samo prikaže čas v formatu hh: mm: ss in omogoča spreminjanje s 4 gumbi

3. korak: Opis vezja

Opis vezja
Opis vezja
Opis vezja
Opis vezja

Opis vezja

3.1 Osnovni razvojni odbor

Slika 1 prikazuje osnovno razvojno ploščo za zagon PICBIOS -a. Je zelo standarden in enostaven, 5V reguliran vir napajanja in ločilni kondenzatorji, C1, C2….

Ura je 4 MHz kristalna, tako da TMR1 teče v intervalih 1us. Kondenzatorje 22pF C6, C7 priporoča Microchip, vendar se zdi, da dejansko niso potrebni. Glava ICSP (serijsko programiranje v vezju) se uporablja za prvo programiranje praznega PIC-a s PICBIOS-om.

Zaporedna vrata (COM1)- opomba TX in RX se zamenjata, to pomeni, da je COM1-TX priključen na vrata C-RX, COM1-RX pa na vrata C-TX (običajno imenovan "ničelni modem"). Ravni signala, potrebne za RS232, morajo biti res +12V (presledek) in -12V (oznaka). Vendar se zdi, da sta napetosti 5V (prostor) in 0V (oznaka) ustrezne za vse računalnike, ki sem jih uporabljal. Tako ravni signala RX in TX le obrneta linijski gonilnik (Q3) in linijski sprejemnik (Q2).

LM032LN (2-vrstni 20-mestni) LCD uporablja standardni »vmesnik HD44780«. Programska oprema uporablja 4-bitni način grizanja in samo pisanje, ki uporablja 6 zatičev vrat D. Programsko opremo je mogoče konfigurirati za nizko grizenje (vrata D bita 0-3) ali visoko za grizljanje (vrata D bita 4-7), kot se uporablja tukaj.

Stikalna stikala nudijo štiri vhode za izbiro menija. Stikala uporabite za potrditev stikala, saj programska oprema zazna padajoči rob. Vlečni upori (= 25k) so notranji na PORT B. Vrata RB6 ni mogoče uporabiti za stikala zaradi pokrova 1nF (kar je priporočljivo za ICSP). Ni potrebe po stikalu za ponastavitev?

gumb0

leve možnosti menija [◄]

gumb1

menijske možnosti desno [►]

gumb 2

obseg prirastka/vrednost/izberite [▲]

gumb 3

območje/vrednost zmanjšanja/izberite [▼]

3.2 Analogni vhodi in preverjanje komponent - plošča 1

Slika 2 prikazuje analogno vezje za PICMETER1. Analogni vhodi AN0 in AN1 se uporabljajo za splošno merjenje napetosti. Izberite vrednosti upora za dušilce, ki bodo dali 5V na vhodnih zatičih AN0/AN1.

Za vhodno območje 10V je m = 1 + R1/R2 = 1 + 10k/10k = 2

Za vhodno območje 20V je m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 se uporablja za merjenje temperature z uporabo tranzistorja Q1 kot "surovega" temperaturnega pretvornika. Temperaturni koeficient tranzistorja NPN pri 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (glejte merjenje temperature v poglavju Analog). LM431 (U1) zagotavlja referenčno napetost 2,5 V na AN3. Končno se AN4 uporablja za preskušanje komponent v razdelku Analogno.

Za merjenje komponent je preskusna komponenta povezana prek vhoda RE2 (D_OUT) in AN4. Upori R14 do R18 ponujajo pet različnih vrednosti upora, ki se uporabljajo za merjenje upora (metoda potenciometra) v analognem odseku. Upori so "povezani v vezje" tako, da za vhod Port C/Port E nastavite vhod ali izhod.

Meter1 izvaja merjenje komponent s polnjenjem različnih kombinacij znanega/neznanega kondenzatorja in upora. LM311 (U2) se uporablja za ustvarjanje prekinitev CCP1, ko se kondenzator napolni na zgornji prag (75% VDD) in se izprazni na spodnji prag (25% VDD). Te mejne napetosti nastavita R8, R9, R11 in potenciometer R10, ki daje rahlo prilagoditev. Pri preskušanju kondenzatorjev kondenzator C13 (= 47pF) skupaj s potepuško kapacitivnostjo plošče zagotavlja obrezovanje 100pF. To zagotavlja, da ob odstranitvi preskusne komponente interval med prekinitvami CCP1 preseže 100us in ne preobremeni PIC. Ta vrednost obrezovanja (100pF) se od programske opreme odšteje od merjenja komponent. D3 (1N4148) zagotavlja pot praznjenja pri preskušanju induktorjev in ščiti D_OUT ter preprečuje negativno napetost.

λΩπμ

4. korak: Vodnik za gradnjo

Gradbeni vodnik
Gradbeni vodnik
Gradbeni vodnik
Gradbeni vodnik

Gradbeni vodnik

Dobra stvar je, da je ta projekt zgrajen in preizkušen v fazah. Načrtujte svoj projekt. Za ta navodila predvidevam, da gradite PICMETER1, čeprav je postopek podoben za PICMETER2 in 3.

4.1 Razvojna plošča PCB

Zgraditi morate osnovno razvojno ploščo (slika 1), ki naj se prilega tiskanemu vezju standardne velikosti 100 x 160 mm, načrtovati postavitev, da bo čim bolj urejena. Očistite tiskano vezje in pokosite ves baker, uporabite zanesljive komponente in priključke, kjer je to mogoče. Za PIC uporabite 40 -polno vtičnico. Preverite neprekinjenost vseh spajkanih spojev. Morda bi bilo koristno pogledati zgornje fotografije postavitve moje plošče.

Zdaj imate prazen PIC in morate programirati PICBIOS v pomnilnik flash. Če že imate način programiranja - v redu. V nasprotnem primeru priporočam naslednjo metodo, ki sem jo uspešno uporabil.

4.2 Programer AN589

To je majhno vmesniško vezje, ki PIC -ju omogoča programiranje iz računalnika prek vrat tiskalnika (LPT1). Oblikovanje je prvotno objavil Microchip v opombi za prijavo. (sklic 3). Pridobite ali naredite programer, združljiv z AN589. Uporabil sem izboljšano zasnovo AN589, opisano tukaj. To je ICSP - kar pomeni, da vstavite PIC v 40 -polno vtičnico, da ga programirate. Nato priključite kabel tiskalnika na vhod AN539 in kabel ICSP iz AN589 na razvojno ploščo. Moja zasnova programerja črpa moč iz razvojne plošče prek kabla ICSP.

4.3 Nastavitve PICPGM

Za zagon računalnika potrebujete programsko opremo. PICPGM deluje z različnimi programerji, vključno z AN589, in ga prenesete brezplačno. (Glej reference).

V meniju Strojna oprema izberite Programer AN589 na LPT1

Naprava = PIC16F877 ali 877A ali samodejno zaznavanje.

Izberite šestnajstiško datoteko: PICBIOS1. HEX

Izberite Erase PIC, nato Program PIC, nato Verify PIC. Z nekaj sreče dobite uspešno sporočilo o zaključku.

Odstranite kabel ICSP, Znova zaženite PIC, upam, da boste na LCD -ju videli zaslon PICBIOS, sicer preverite povezave. Preverite zagonski meni s pritiskom na levi in desni gumb.

4.4 Serijska povezava (hiperterminal ali kit)

Zdaj preverite serijsko povezavo med PIC in računalnikom. Priključite serijski kabel iz računalnika COM1 na razvojno ploščo in zaženite komunikacijski program, na primer stari hiper-terminal Win-XP ali PUTTY.

Če uporabljate Hyperterminal, ga konfigurirajte na naslednji način. V glavnem meniju pokličite> Prekini povezavo. Nato Datoteka> Lastnosti> Poveži se z zavihkom. Izberite Com1, nato kliknite gumb Konfiguriraj. Izberite 9600 b / s, brez parnosti, 8 bitov, 1 stop. Nadzor pretoka strojne opreme ". Nato pokličite> Pokliči za povezavo.

Če uporabljate PuTTY, Connection> Serial> Connect to COM1 in 9600 bps, brez parnosti, 8 bitov, 1 stop. Izberite »RTS/CTS«. Nato Sesija> Serijski> Odpri

V zagonskem meniju PICBIOS izberite “Command Mode”, nato pritisnite [inc] ali [dec]. Na zaslonu bi se moralo prikazati sporočilo »PIC16F877>« (če ne preverite serijskega vmesnika). Pritisnite? za ogled seznama ukazov.

4.5 PICMETER programa

Ko serijska povezava deluje, je programiranje bliskovnega pomnilnika tako preprosto, kot pošiljanje šestnajstiške datoteke. Vnesite ukaz "P", ki se odzove z "Pošlji šestnajsto datoteko …".

Z uporabo hiper-terminala v meniju Prenos> Pošlji besedilno datoteko> PICMETER1. HEX> Odpri.

Napredek je označen z »:«. saj je vsaka vrstica šestnajstiške kode programirana. Končno naložite uspeh.

Če uporabljate PuTTY, boste morda morali uporabiti Beležnico in kopirati/prilepiti celotno vsebino PICMETER1. HEX v PuTTY.

Podobno za preverjanje vnesite ukaz "V". V hiper terminalu v meniju Prenos> Pošlji besedilno datoteko> PICMETER1. HEX> OK.

Opozorilo = xx … Če programirate čip 16F877A, boste dobili nekaj opozorilnih sporočil. To je povezano z razlikami med 877 in 877A, ki programirajo v 4 besednih blokih. Žal povezovalnik ne poravna začetka razdelkov na 4 mejah besed. Preprosta rešitev je, da imate na začetku vsakega razdelka 3 navodila NOP, zato prezrite opozorila.

Znova zaženite in v zagonskem meniju BIOS -a izberite »Zaženi aplikacijo«. Na LCD -prikazovalniku bi morali videti PICMETER1.

4.6 Zaženite PICMETER1

Zdaj začnite graditi več odsekov razvojne plošče (slika 2), da bodo voltmeter in merilnik komponent delovale po potrebi.

Merilnik 1 potrebuje nekaj umerjanja. Pri funkciji "Cal" nastavite R10 tako, da bodo odčitki 80,00, 80,0nF in 10 000uF pribl. Nato preberite majhnih 100 pF na funkciji Cx1. Če je odčitek odsoten, spremenite pokrovček za obrezovanje C13 ali spremenite vrednost "trimc" v meter1.asm.

Zdaj zaženite PICBIOS Setup in spremenite nekaj nastavitev umerjanja v EEPROM -u. Umerite temperaturo s prilagajanjem 16-bitnega odmika (visok, nizek format). Morda boste morali spremeniti tudi vrednost "delayt".

Če je vaš namen graditi projekt takšen, kot je - Čestitamo - končali ste! Povej mi o svojem uspehu na Instructables.

4,7 MPLAB

Če pa želite spremeniti ali projekt še naprej razvijati, morate programsko opremo znova zgraditi z uporabo MPLAB. Prenesite MPLAB iz Microchip. To je "stara", ki je enostavna in enostavna za uporabo. Nisem preizkusil novega razvojnega orodja labx, ki je videti veliko bolj zapleteno.

Podrobnosti o tem, kako ustvariti nov projekt, nato pa projektu dodati datoteke v celotni dokumentaciji.

5. korak: Fotografije testiranja

Fotografije testiranja
Fotografije testiranja
Fotografije testiranja
Fotografije testiranja
Fotografije testiranja
Fotografije testiranja

Zgornja fotografija termometra, odčitavanje 15 degC

Frekvenca testiranja, branje = 416k

Preskusni induktor z oznako 440uF, odčitavanje 435u

Preizkusite 100k upor, bere 101k, to je enostavno.

Testiranje 1000pF kondenzatorja, odčitek 1.021nF

6. korak: Reference in povezave

6.1 Podatkovni list PIC16F87XA, Microchip Inc.

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

6.2 Specifikacija programiranja pomnilnika PIC16F87XA FLASH, mikročip

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

6.3 Opomba k prijavi AN589, Microchip Inc.

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

6.4 Prenos PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 brezplačen prenos, Microchip

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

6.6 Tehnični listi za module Hope RFM01-433 in RFM02-433, RF rešitve

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

6.7 LT Spice, analogne naprave

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

6.8 Vezje programerja za slike, ki temelji na AN589, Best-Microcontroller-Projects

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

6.9 Odprtokodne datoteke

odprtokodno

Priporočena: