INHOUDSOPGAWE:

PIC16F877 Multimeter: 6 stappe
PIC16F877 Multimeter: 6 stappe

Video: PIC16F877 Multimeter: 6 stappe

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

PICMETER Inleiding

Hierdie PICMETER -projek het gegroei tot 'n nuttige en betroubare hulpmiddel vir enige elektronika -entoesias.

  • Dit werk op 'n PIC16F877 / 877A mikrobeheerder.
  • Dit is 'n PIC -ontwikkelingstelsel
  • Dit is 'n multifunksiemeter van 19 funksies (voltmeter, frekwensiemeter, seingenerator, termometer …)
  • Dit is 'n komponentkontroleerder (R, L, C, diode …) met tot 5 reekse op elke funksie.
  • Dit het 'n 433MHz band -ASK -radio, wat op 'n soort toepassing wag.
  • Dit is 'n afstandverkrygingstelsel waar 'n ander rekenaar (rekenaar) data kan versamel via die seriële poort vir grafiese vertoning. (Dit is gebruik as die voorkant van die EKG -projek).
  • Dit het 'n aanmeldfunksie (vir data -aanmelding oor ure), die resultate word vanaf EEPROM opgelaai.
  • Dit lewer toetsseine om sommige motors aan te dryf.
  • Dit is deeglik getoets, sien foto's in stap 5.
  • Die sagteware word vrygestel as Open Source

Hierdie instruksie is 'n afgesnyde weergawe van die volledige dokumentasie. Dit beskryf die hardeware en sagteware wat voldoende is vir ander om dit te bou, óf as 'n voltooide projek, óf as 'n ontwikkelingsstelsel om verdere veranderinge aan te bring, of soek net na idees om op ander projekte te gebruik.

Voorrade

Die enigste kritieke chip om te koop is die Microchip PIC16F877A-I/P

  • A = die latere hersiening wat verskil van die oorspronklike in definisie van konfigurasie -bisse.
  • I = Industriële temperatuurbereik
  • P = 40-lood plastiek dubbele in-lyn pakket, 10 MHz, normale VDD limiete.

Ook die Hitachi LM032LN 20 karakter by 2 reëls LCD wat ingeboude HD44780 kontroleerder het.

Die ander onderdele is slegs algemene elektriese komponente, printplaat, LM340, LM311, LM431, transistors vir algemene doeleindes, ens.

Stap 1: PICBIOS -beskrywing

PICBIOS Beskrywing
PICBIOS Beskrywing

PICBIOS Beskrywing

Hierdie sagteware werk op 'n PIC16F877 -bord en beslaan die onderste 4k programgeheue. Dit bied die sagteware -omgewing vir 'n toepassingsprogram wat die boonste helfte van die programgeheue beslaan. Die idee is soortgelyk aan die PC-BIOS met 'n paar "ontfouting" -opdragte vir programontwikkeling en het 5 komponente:

  1. Selflaaikieslys
  2. Opstelprogram
  3. Command Line Interface (via seriële poort)
  4. Kern- en toestelbestuurders
  5. Programmeerkoppelvlak vir toepassings

Stap 2: PICMETER Beskrywing

PICMETER Beskrywing
PICMETER Beskrywing

PICMETER Beskrywing

Inleiding

Soos 'n multimeter (volt, ampère, ohm), het dit baie funksies wat gekies word deur middel van 'n spyskaartstelsel. Maar omdat dit 'n kombinasie van hardeware en sagteware is, is dit baie veelsydig, byvoorbeeld funksies soos aanmelding oor lang periodes en die stuur van reeksdata is beskikbaar.

Die spyskaart is die "hart" waar funksies gekies word deur middel van [links] en [regs] knoppies. Dan word vir elke funksie verskillende reekse gekies met die [inc] en [dec] knoppies. Kondensators word byvoorbeeld gemeet van ongeveer 0.1nF tot 9000uF deur middel van 5 afsonderlike reekse.

2.1 PICMETER sagteware

Dit is georganiseer as 'n toepassingsprogram wat die boonste 4k van programgeheue beslaan en staatmaak op funksies van die PICBIOS vir apparaat -I/O en hantering onderbreek. Dit bestaan uit die spyskaartgedeelte wat as die agtergrondtaak werk en elke 20 ms die knoppies sien. As 'n knoppie ingedruk word om funksie te verander of omvang te verander, word die toepaslike roetine gebel. As geen knoppies ingedruk word nie, word die gemete lesing met ongeveer 0,5 sekonde tussenposes opgedateer. Die spyskaart is basies 'n soektafel.

2.2 Meterfunksie - afdelings

Daar is baie funksies, so hierdie deel is verdeel in afdelings, elk met funksies van soortgelyke aard. Dit is 'n kort lys van die afdelings; sien die volledige dokumentasie om te sien hoe elke afdeling in detail werk. As gevolg van hawe -beperkings, is daar drie variasies van die projek (sien volledige dokumentasie). Funksies met 'n normale lettertipe is algemeen vir alle projekte. ONDERSTREKTE funksies is slegs ingesluit in die PICMETER1 -projek. Funksies in ITALICS is slegs ingesluit in PICMETER2- of PICMETER3 -projekte.

VoltMeter -afdeling - Bronlêer is vmeter.asm

Bevat funksies wat gebaseer is op spanningsmeting met behulp van die ADC.

  • ADC -spanning (lees spanning op geselekteerde ingang, AN0 tot AN4)
  • AD2 Dual (toon spanning op AN0 en AN1 gelyktydig)
  • TMP -termometer -10 tot 80? degC (2N3904 of dubbele LM334 -omvormer)
  • LOG - stel die aanmeldinterval in
  • OHM - Weerstandsmeting (potensiometermetode) van 0Ω tot 39MΩ in 4 reekse
  • DIO-Diode, meet voorspanning (0-2,5V)
  • CON - Kontinuïteit (piep wanneer weerstand minder as drempel van 25, 50 of 100 is)

Komponent Meter1 - Bronlêer is meter1.asm

Kondensator-, induktor- en weerstandmeting met behulp van die LM311 -vergelykingskring. Gebaseer op die meting van die tyd van een laaisiklus.

  • CAL - kalibrasie - meet 80nf en 10μF vir selftoets en aanpassing
  • Cx1 - kapasitormeting van 0.1nF tot 9000μF in 5 reekse
  • Lx1 - induktormeting van 1mH tot ?? mH in 2 reekse
  • Rx1 - weerstandsmeting van 100Ω tot 99MΩ in 3 omvang

Komponent Meter2 Bronlêer Meter2.asm

Komponentmeting met behulp van alternatiewe LM311 ontspannings ossillator en Colpitts ossillator. Gebaseer op die meting van die tydperk van N siklusse. Dit is effens meer akkuraat as die metode hierbo, aangesien die tyd van N = tot 1000 siklusse gemeet word. Dit is meer 'n hardeware -oplossing en verg meer konstruksie.

  • Cx2 - kapasitormeting van 10pF tot 1000 μF in 5 reekse.
  • Rx2 - weerstandsmeting van 100 ohm tot 99M in 5 reekse.
  • Lx2 - induktormeting van 1mH tot 60mH in 1 reeks.
  • osc - induktormeting (Colpitts -metode) van 70μH tot 5000μH? in 2 reekse.

Frekwensie Meter - bronlêer Fmeter.asm

Bevat funksies wat PIC -tellers en -tellers gebruik, en weinig anders;

  • FREQ - Frekwensie meter van 0Hz tot 1000kHz in 3 reekse
  • XTL - meet die frekwensie van LP -kristalle (nie getoets nie)
  • SIG - seinopwekker van 10Hz tot 5KHz in 10 stappe
  • SMR - stapmotor - omgekeerde rigting
  • SMF- stapmotor- vorentoe rigting.

Kommunikasie - Bronlêer is comms.asm

Funksies om sein oor te dra/te ontvang om seriële en SPI -randapparatuur te toets;

  • UTX toets reeks TX & inc en dec bit rate van 0.6 tot 9.6k
  • URX toets reeks RX & inc en dec bit rate van 0.6 tot 9.6k
  • SPM - toets SPI in die meestermodus
  • SPS - toets SPI in slawemodus

FSK Radio Module - Bron lêer is Radio.asm

Funksies met behulp van RM01 en RM02 radio ontvang en stuur modules. Hierdie modules koppel via SPI, wat die meeste Port C -penne gebruik.

  • RMB - stel radiomodule BAUD -tarief in
  • RMF - stel radiomodule RF -frekwensie in
  • RMC - stel die frekwensie van die radiomodule in
  • XLC - pas die kristal kapasitansie las aan
  • POW - stel die sender se krag in
  • RM2 - stuur toetsdata (RM02 -module)
  • RM1 - ontvang toetsdata (RM01 -module)

Beheermodule - Bronlêer control.asm

  • SV1 - Servo -uitvoer (met behulp van CCP1) van 1ms tot 2ms in stappe van 0.1ms
  • SV2 - Servo -uitvoer (met behulp van CCP2) van 1ms tot 2ms in stappe van 0.1ms
  • PW1 - PWM -uitset (met behulp van CCP1) van 0 tot 100% in 10% -stappe
  • PW2 - PWM -uitset (met behulp van CCP2) van 0 tot 100% in 10% -stappe

Dataverwerwing op afstand - Bronlêer is remote.asm

Afstandmodus (rem) - 'n stel opdragte sodat die meter vanaf 'n rekenaar via 'n seriële koppelvlak bedien kan word. Een opdrag versamel data wat oor 'n tydperk by EEPROM aangemeld is. 'N Ander opdrag lees spannings teen die volle snelheid van die ADC in die geheue buffer, en stuur die buffer dan na 'n rekenaar, waar die resultate grafies vertoon kan word. Dit is effektief 'n ossilloskoop wat werk oor die klankfrekwensiebereik

Tyd - Bronlêer is time.asm

Tim - vertoon net tyd in hh: mm: ss -formaat en laat verandering toe met behulp van 4 knoppies

Stap 3: Kringbeskrywing

Kringbeskrywing
Kringbeskrywing
Kringbeskrywing
Kringbeskrywing

Kringbeskrywing

3.1 Basiese Ontwikkelingsraad

Figuur 1 toon 'n basiese ontwikkelingsbord om PICBIOS aan die gang te kry. Dit is baie standaard en eenvoudig, 5V gereguleerde kragbron en ontkoppelingskondenseerders, C1, C2 ….

Die klok is 'n kristal van 4 MHz, sodat TMR1 met 'n tussenpose van 1us afmerk. Die 22pF -kapasitors C6, C7 word deur Microchip aanbeveel, maar dit lyk nie asof dit werklik nodig is nie. Die ICSP-kop (in-kring-seriële programmering) word gebruik om aanvanklik 'n leë PIC met die PICBIOS te programmeer.

Die seriële poort (COM1)- let op TX en RX word omgeruil, d.w.s. COM1- TX is gekoppel aan poort C-RX, en COM1- RX is gekoppel aan poort C-TX (gewoonlik 'n 'nulmodem' genoem). Die seinvlakke wat benodig word vir RS232 moet ook +12V (spasie) en -12V (punt) wees. Die spanningsvlakke van 5V (spasie) en 0V (merk) lyk egter voldoende vir alle rekenaars wat ek gebruik het. Dus word seinvlakke van RX en TX net omgekeer deur lynbestuurder (Q3) en lynontvanger (Q2).

Die LM032LN (2-ry 20-karakter) LCD gebruik die standaard "HD44780 koppelvlak". Die sagteware gebruik 4-bis knibbelmodus en skryf slegs, wat gebruik maak van 6 penne van poort D. Die sagteware kan gekonfigureer word vir nibble low (Port D bits 0-3) of nibble high (Port D bits 4-7) soos hier gebruik.

Die drukknopskakelaars bied vier insette vir kieslys. Gebruik druk om skakelaars te maak, aangesien sagteware die valrand opspoor. Die optrekweerstands (= 25k) is intern in PORT B. Poort RB6 kan nie vir skakelaars gebruik word nie, as gevolg van die 1nF-kap (wat aanbeveel word vir ICSP). Is daar geen behoefte aan 'n reset -skakelaar nie?

knoppie 0

spyskaartopsies links [◄]

knoppie 1

spyskaartopsies regs [►]

knoppie 2

toename bereik/waarde/kies [▲]

knoppie 3

verminder omvang/waarde/kies [▼]

3.2 Analoog insette en komponentkontrole - bord 1

Figuur 2 toon die analoogbane vir PICMETER1. Analoog insette AN0 en AN1 word gebruik vir die meting van algemene spanning. Kies weerstandswaardes vir verswakkers om 5V op insetpenne AN0/AN1 te gee.

Vir 10V insetbereik, m = 1 + R1/R2 = 1 + 10k/10k = 2

Vir 20V insetbereik, m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 word gebruik vir die meting van temperatuur met behulp van transistor Q1 as 'n "ru" temperatuuromvormer. Temperatuurkoëffisiënt van NPN -transistor by 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (sien temperatuurmeting in analoog afdeling). Die LM431 (U1) bied 'n 2.5V spanningsverwysing op AN3. Uiteindelik word AN4 gebruik vir of toets van komponente in die analoog afdeling.

Vir komponentmeting is die toetskomponent verbind oor RE2 (D_OUT) en AN4 -invoer. Weerstande R14 tot R18 bied vyf verskillende weerstandswaardes wat gebruik word vir weerstandsmeting (potensiometermetode) in die analoog -afdeling. Die weerstande word 'in kring gekoppel' deur poort C/poort E -penne as invoer of uitset in te stel.

Meter1 voer komponentmeting uit deur verskillende kombinasies van bekende/onbekende kapasitor en weerstand te laai. LM311 (U2) word gebruik om CCP1 -onderbrekings te skep wanneer 'n kapasitor na die boonste drumpel (75% VDD) laai en na die laer drumpel (25% VDD) laai. Hierdie drumpelspannings word bepaal deur R8, R9, R11 en potensiometer R10 aanpassing. By die toets van kapasitors bied kapasitor C13 (= 47pF) plus die verdwaalde kapasitansie van die bord 100pF -afwerking. Dit verseker dat, as die toetskomponent verwyder word, die interval tussen CCP1 -onderbrekings meer as 100 us is en die PIC nie oorlaai word nie. Hierdie afwerkingswaarde (100pF) word afgetrek van komponentmeting deur sagteware. D3 (1N4148) bied die ontladingspad by die toets van induktors en beskerm D_OUT, en voorkom dat spanning negatief word.

λΩπμ

Stap 4: Konstruksiegids

Konstruksie gids
Konstruksie gids
Konstruksie gids
Konstruksie gids

Konstruksie gids

'N Goeie ding is dat hierdie projek in fases gebou en getoets word. Beplan jou projek. Vir hierdie instruksies neem ek aan dat u PICMETER1 bou, alhoewel die prosedure dieselfde is vir PICMETER2 en 3.

4.1 Ontwikkelingsraad PCB

U moet die basiese ontwikkelingsbord (figuur 1) bou wat op 'n standaard met 'n grootte van 100 by 160 mm moet pas, en die uitleg so beplan dat dit so netjies moontlik is. Maak u PCB skoon en maak koper skoon, gebruik betroubare komponente en verbindings, waar moontlik getoets. Gebruik 'n 40 -pins -aansluiting vir die PIC. Kontinuïteit kontroleer alle gesoldeerde verbindings. Dit kan nuttig wees om na die boorduitlegfoto's hierbo te kyk.

U het nou 'n leë PIC en u moet PICBIOS in die flash -geheue programmeer. As u reeds 'n programmeermetode het - goed. Indien nie, beveel ek die volgende metode aan wat ek suksesvol gebruik het.

4.2 AN589 programmeerder

Dit is 'n klein koppelvlakkringloop waarmee 'n PIC vanaf 'n rekenaar met die drukker (LPT1) poort kan programmeer. Die ontwerp is oorspronklik gepubliseer deur Microchip in 'n Application Note. (verwysing 3). Kry of maak 'n AN589 -versoenbare programmeerder. Ek het 'n verbeterde AN589 -ontwerp gebruik wat hier beskryf word. Dit is ICSP - wat beteken dat u die PIC in die 40 -pen -aansluiting steek om dit te programmeer. Koppel dan die drukkabel aan die AN539 -invoer en die ICSP -kabel van die AN589 na die ontwikkelbord. My ontwerpersontwerp trek die krag van die ontwikkelingsbord via die ICSP -kabel.

4.3 PICPGM -instellings

U benodig nou 'n paar programmeersagteware om op 'n rekenaar te werk. PICPGM werk saam met verskillende programmeerders, waaronder AN589, en dit word gratis afgelaai. (Sien verwysings).

Kies programmeerder AN589 op LPT1 in die hardeware -kieslys

Toestel = PIC16F877 of 877A of outomaties opspoor.

Kies Hex -lêer: PICBIOS1. HEX

Kies Erase PIC, dan Program PIC, en verifieer PIC. Met 'n bietjie geluk kry u 'n suksesvolle voltooiingsboodskap.

Verwyder ICSP -kabel, Herlaai die PIC, hopelik sien u die PICBIOS -skerm op die LCD, anders kyk na u verbindings. Gaan die opstartkieslys na deur op die linker- en regterknoppies te druk.

4.4 Seriële verbinding (hyperterminaal of stopverf)

Kontroleer nou die seriële verbinding tussen PIC en rekenaar. Koppel die seriële kabel van PC COM1 aan die ontwikkelbord en voer 'n kommunikasieprogram uit, soos die ou Win-XP Hyper-Terminal, of PUTTY.

Konfigureer as volg as u Hyperterminal gebruik. Bel in die hoofkieslys> Ontkoppel. Dan lêer> Eienskappe> Koppel aan oortjie. Kies Com1 en klik dan op Configuration -knoppie. Kies 9600 bps, geen pariteit, 8 bisse, 1 stop. Beheer van hardeware vloei”. Bel dan> Bel om aan te sluit.

As u PuTTY gebruik, verbinding> reeks> Koppel aan COM1 en 9600 bps, geen pariteit, 8 bisse, 1 stop. Kies "RTS/CTS". Dan Sessie> Reeks> Oop

Kies "Command Mode" in die PICBIOS -opstartmenu en druk dan op [inc] of [dec]. Die prompt "PIC16F877>" moet op die skerm verskyn (indien nie, kyk na u seriële koppelvlak). Druk? om 'n lys met opdragte te sien.

4.5 Program PICMETER

Sodra die seriële verbinding werk, is die programmering van flitsgeheue so eenvoudig soos om 'n hex -lêer te stuur. Voer die opdrag "P" in, wat reageer met "Stuur hex -lêer …".

Gebruik die hyperterminale via die oordragkieslys> Stuur tekslêer> PICMETER1. HEX> Maak oop.

Vordering word aangedui deur die ":." soos elke reël hex-kode geprogrammeer word. Laai uiteindelik sukses.

As u PuTTY gebruik, moet u moontlik Notepad gebruik en die hele inhoud van PICMETER1. HEX in PuTTY kopieer/plak.

Om op dieselfde manier te verifieer, voer die opdrag “V” in. In die hyperterminale, vanaf die oordragkieslys> Stuur tekslêer> PICMETER1. HEX> OK.

Waarskuwing = xx … As u 'n 16F877A -chip programmeer, kry u 'n paar waarskuwingsboodskappe. Dit het te doen met die verskille tussen 877 en 877A, wat in 4 woordblokke geprogrammeer word. Ongelukkig pas die skakelaar nie die begin van gedeeltes in lyn met vier woordgrense nie. Die eenvoudige oplossing is om 3 NOP -instruksies aan die begin van elke afdeling te hê, dus ignoreer net die waarskuwings.

Herbegin en in die BIOS -opstartkieslys kies u "Begin program". U behoort PICMETER1 op die LCD te sien.

4.6 Begin PICMETER1

Begin nou met die bou van meer dele van die ontwikkelingsbord (Figuur 2) om die voltmeter-, komponentmetervunksies te laat werk soos benodig.

Meter1 benodig 'n bietjie kalibrasie. Stel op die "Cal" -funksie R10 aan om lesings van ongeveer 80.00, 80.0nF en 10.000uF te gee. Lees dan 'n klein 100pF op Cx1 -funksie. As die lesing uit is, verander die afdekkap C13 of verander die waarde van "trimc" in meter1.asm.

Begin nou PICBIOS Setup en verander 'n paar kalibrasie -instellings in EEPROM. Kalibreer temperatuur deur die 16-bis-offset aan te pas (hoë, lae formaat). Miskien moet u ook die waarde "delayt" verander.

As u voorneme is om die projek te bou soos dit is - baie geluk - u het klaar! Vertel my van u sukses op Instructables.

4.7 MPLAB

Maar as u veranderinge wil aanbring of die projek verder wil ontwikkel, moet u die sagteware met MPLAB herbou. Laai MPLAB af van Microchip. Dit is die 'ou' wat eenvoudig en eenvoudig is om te gebruik. Ek het nie die nuwe labx -ontwikkelingsinstrument probeer wat baie ingewikkelder lyk nie.

Besonderhede oor hoe om 'n nuwe projek te skep en lêers in die volledige dokumentasie by die projek te voeg.

Stap 5: Foto's van toetsing

Foto's van toetsing
Foto's van toetsing
Foto's van toetsing
Foto's van toetsing
Foto's van toetsing
Foto's van toetsing

Foto hierbo van termometer, lees 15 grade

Toetsfrekwensie, lees = 416k

Toets spoel gemerk 440uF, lees 435u

Die toets van 100k weerstand, lees 101k, dit is maklik.

Die toets van 1000pF kapasitor, lesing is 1.021nF

Stap 6: Verwysings en skakels

6.1 PIC16F87XA Gegevensblad, Microchip Inc.

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

6.2 PIC16F87XA FLASH -geheueprogrammeringspesifikasie, mikroskyfie

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

6.3 Aansoeknota AN589, Microchip Inc.

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

6.4 PICPGM aflaai

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 gratis aflaai, mikroskyfie

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

6.6 Gegewensblaaie vir Hope RFM01-433 en RFM02-433 modules, RF Solutions

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

6.7 LT Spice, analoog toestelle

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

6.8 'n Foto-programmeerkring wat gebaseer is op AN589, Best-Microcontroller-Projects

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

6.9 Oopbronlêers

oop bron

Aanbeveel: