Innholdsfortegnelse:

PIC16F877 Multimeter: 6 trinn
PIC16F877 Multimeter: 6 trinn

Video: PIC16F877 Multimeter: 6 trinn

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

PICMETER Introduksjon

Dette PICMETER -prosjektet har vokst til et nyttig og pålitelig verktøy for enhver elektronikkentusiast.

  • Den kjører på en PIC16F877 / 877A mikrokontroller.
  • Det er et PIC -utviklingssystem
  • Det er 19-funksjoners multimeter (voltmeter, frekvensmåler, signalgenerator, termometer …)
  • Det er en komponentkontroll (R, L, C, diode …) med opptil 5 områder på hver funksjon.
  • Den har en 433MHz band ASK -radio, som venter på en slags applikasjon.
  • Det er et eksternt oppkjøpssystem, der en annen datamaskin (PC) kan samle inn data via serieporten for grafisk visning. (Det har blitt brukt som frontend på EKG -prosjektet).
  • Den har et loggingsanlegg (for datalogging over timer), resultatene lastes opp fra EEPROM.
  • Den produserer testsignaler for å drive noen motorer.
  • Den er grundig testet, se fotografier i trinn 5.
  • Programvaren er utgitt som åpen kildekode

Denne instruksjonsboken er en nedskåret versjon av hele dokumentasjonen. Den beskriver maskinvaren og programvaren som er tilstrekkelig til at andre kan bygge den enten som et fullført prosjekt, eller bruke det som et utviklingssystem for å gjøre ytterligere endringer, eller bare lete etter ideer som kan brukes på andre prosjekter.

Rekvisita

Den eneste kritiske brikken å kjøpe er Microchip PIC16F877A-I/P

  • A = den senere revisjonen som skiller seg fra originalen i definisjonen av konfigurasjonsbiter.
  • I = Industrielt temperaturområde
  • P = 40-bly plast to-linje-pakke, 10 MHz, normale VDD-grenser.

Også Hitachi LM032LN 20 tegn med 2 linjer LCD som har innebygd HD44780 kontroller.

De andre delene er bare generiske elektriske komponenter, PCB-kort, LM340, LM311, LM431, generelle laveffekttransistorer etc.

Trinn 1: PICBIOS Beskrivelse

PICBIOS Beskrivelse
PICBIOS Beskrivelse

PICBIOS Beskrivelse

Denne programvaren kjører på et PIC16F877 -kort og opptar de nederste 4k av programminnet. Det gir programvaremiljøet for et applikasjonsprogram som opptar den øverste halvdelen av programminnet. Den ligner ideen på PC-BIOS med noen få "feilsøkings" kommandoer for programutvikling og har 5 komponenter:

  1. Oppstartsmeny
  2. Oppsettsprogram
  3. Kommandolinjegrensesnitt (via seriell port)
  4. Kjerne- og enhetsdrivere
  5. Applikasjonsprogrammeringsgrensesnitt

Trinn 2: PICMETER Beskrivelse

PICMETER Beskrivelse
PICMETER Beskrivelse

PICMETER Beskrivelse

Introduksjon

Som et multimeter (volt, ampere, ohm) har dette mange funksjoner som velges ved hjelp av et menysystem. Men det å være en kombinasjon av maskinvare og programvare gjør det veldig allsidig, for eksempel funksjoner som logging over lange perioder og sending av serielle data er tilgjengelige.

Menyen er “hjertet” der funksjonene velges ved hjelp av [venstre] og [høyre] knappene. Deretter velges forskjellige områder for hver funksjon med [inc] og [dec] -knappene. For eksempel måles kondensatorer fra omtrent 0,1nF til 9000uF ved hjelp av 5 separate områder.

2.1 PICMETER -programvare

Dette er organisert som et applikasjonsprogram som opptar de øvre 4k av programminnet og er avhengig av funksjonene til PICBIOS for enhetens I/O og avbruddshåndtering. Den består av menyseksjonen som kjører som bakgrunnsoppgave og avstemmer knappene hver 20. ms. Når du trykker på en knapp for å endre funksjon eller endre område, kalles riktig rutine. Når du ikke trykker på noen knapper, oppdateres den målte avlesningen med omtrent 0,5 sek intervaller. I utgangspunktet er menyen et oppslagstabell.

2.2 Meterfunksjon - seksjoner

Det er mange funksjoner, så denne delen er delt inn i seksjoner, som hver omhandler funksjoner av lignende art. Dette er en kort liste over seksjonene, se hele dokumentasjonen for å se hvordan hver seksjon fungerer i detalj. På grunn av havnebegrensninger er det tre varianter av prosjektet (se full dokumentasjon). Funksjoner i normal skrift er felles for alle prosjekter. Funksjoner UNDERLINED er bare inkludert i PICMETER1 -prosjektet. Funksjoner i ITALICS er bare inkludert i PICMETER2- eller PICMETER3 -prosjekter.

VoltMeter Section - Kildefilen er vmeter.asm

Inneholder funksjoner som er basert på spenningsmåling ved bruk av ADC.

  • ADC spenning (leser spenning på valgt inngang, AN0 til AN4)
  • AD2 Dual (viser spenning på AN0 og AN1 samtidig)
  • TMP -termometer -10 til 80? degC (2N3904 eller dobbel LM334 transduser)
  • LOG - angir loggintervall
  • OHM - Motstandsmåling (potensiometermetode) fra 0Ω til 39MΩ i 4 områder
  • DIO-Diode, måler spenning fremover (0-2,5V)
  • CON - Kontinuitet (pip når motstanden er mindre enn terskelen på 25, 50 eller 100)

Komponent Meter1 - Kildefilen er meter1.asm

Kondensator-, induktor- og motstandsmåling ved bruk av LM311 -komparatorkrets. Basert på måling av tiden til en ladesyklus.

  • CAL - kalibrering - måler 80nf og 10μF for selvtest og justering
  • Cx1 - kondensatormåling fra 0,1nF til 9000μF i 5 områder
  • Lx1 - induktormåling fra 1mH til ?? mH i 2 områder
  • Rx1 - motstandsmåling fra 100Ω til 99MΩ i 3 områder

Komponent Meter2 Kildefil Meter2.asm

Komponentmåling ved hjelp av alternativ LM311 avslapningsoscillator og Colpitts oscillator. Basert på måling av tidsperioden for N -sykluser. Dette er litt mer nøyaktig enn metoden ovenfor, ettersom tiden N = opptil 1000 sykluser måles. Det er mer en maskinvareløsning og krever mer konstruksjon.

  • Cx2 - kondensatormåling fra 10pF til 1000 μF i 5 områder.
  • Rx2 - motstandsmåling fra 100 ohm til 99M i 5 områder.
  • Lx2 - induktormåling fra 1mH til 60mH i 1 område.
  • osc - induktormåling (Colpitts -metoden) fra 70μH til 5000μH? i 2 områder.

Frekvensmåler - kildefil Fmeter.asm

Inneholder funksjoner som bruker PIC -tellere og tidtakere, og lite annet;

  • FREQ - Frekvensmåler fra 0Hz til 1000kHz i 3 områder
  • XTL - måler frekvensen av LP -krystaller (ikke testet)
  • SIG - signalgenerator fra 10Hz til 5KHz i 10 trinn
  • SMR - trinnmotor - motsatt retning
  • SMF- trinnmotor- fremoverretning.

Kommunikasjon - Kildefilen er comms.asm

Funksjoner for å overføre/motta signal for å teste serielle og SPI -eksterne enheter;

  • UTX test seriell TX & inc og dec bit rate fra 0,6 til 9,6k
  • URX tester seriell RX & inc og nedbithastighet fra 0,6 til 9,6k
  • SPM - tester SPI i hovedmodus
  • SPS - tester SPI i slavemodus

FSK Radio Module - Kildefil er Radio.asm

Funksjoner som bruker RM01 og RM02 radiomottak og overføringsmoduler. Disse modulene grensesnitt via SPI, som bruker de fleste Port C -pinner.

  • RMB - sett radiomodul BAUD -hastighet
  • RMF - sett radiomodul RF -frekvens
  • RMC - angir radiomodulens klokkefrekvens
  • XLC - justerer krystallkapasitansbelastningen
  • POW - angir senderens effekt
  • RM2 - overfør testdata (RM02 -modul)
  • RM1 - motta testdata (RM01 -modul)

Kontrollmodul - Kildefilkontroll.asm

  • SV1 - Servo -utgang (ved bruk av CCP1) fra 1 ms til 2 ms i trinn på 0,1 ms
  • SV2 - Servo -utgang (ved bruk av CCP2) fra 1 ms til 2 ms i trinn på 0,1 ms
  • PW1 - PWM -utgang (ved bruk av CCP1) fra 0 til 100% i 10% trinn
  • PW2 - PWM -utgang (ved bruk av CCP2) fra 0 til 100% i 10% trinn

Ekstern datainnsamling - kildefilen er remote.asm

Ekstern modus (Rem) - et sett med kommandoer slik at måleren kan betjenes fra en datamaskin via et serielt grensesnitt. En kommando samler inn data som er logget på EEPROM over en periode på timer. En annen kommando leser spenninger med full hastighet på ADC til minnebuffer, og overfør deretter bufferen til PC, hvor resultatene kan vises grafisk. Dette er effektivt et oscilloskop som arbeider over lydfrekvensområdet

Tid - kildefilen er time.asm

Tim - viser bare tiden i hh: mm: ss -format og tillater endring med 4 knapper

Trinn 3: Kretsbeskrivelse

Kretsbeskrivelse
Kretsbeskrivelse
Kretsbeskrivelse
Kretsbeskrivelse

Kretsbeskrivelse

3.1 Grunnleggende utviklingsstyre

Figur 1 viser et grunnleggende utviklingstavle for å få PICBIOS i gang. Det er veldig standard og grei, 5V regulert strømkilde og frakoblingskondensatorer, C1, C2….

Klokken er 4 MHz krystall, slik at TMR1 tikker i 1us intervaller. 22pF kondensatorene C6, C7 anbefales av Microchip, men ser ikke ut til å være nødvendig. ICSP-hodet (in-circuit-serial-programmering) brukes til å begynne med å programmere en tom PIC med PICBIOS.

Seriell port (COM1)- merk TX og RX byttes over, dvs. COM1- TX er koblet til Port C-RX, og COM1-RX er koblet til Port C-TX (ofte referert til som et "nullmodem"). Også signalnivåene som kreves for RS232 bør virkelig være +12V (mellomrom) og -12V (mark). Imidlertid virker spenningsnivåene på 5V (mellomrom) og 0V (merket) tilstrekkelig for alle PC -er jeg har brukt. Så signalnivåene til RX og TX blir bare invertert av linjedriver (Q3) og linjemottaker (Q2).

LM032LN (2-raders 20 tegn) LCD bruker standard "HD44780 grensesnitt". Programvaren bruker 4-bits nibble-modus og skrive bare, som bruker 6 pinner av port D. Programvaren kan konfigureres for nibble low (Port D bits 0-3) eller nibble high (Port D bits 4-7) som brukt her.

Trykknappbryterne gir fire innganger for menyvalg. Bruk trykk for å gjøre brytere ettersom programvare oppdager fallende kant. Trekkmotstandene (= 25k) er interne i PORT B. Port RB6 kan ikke brukes til brytere, på grunn av 1nF-hetten (som anbefales for ICSP). Er det ikke behov for en tilbakestillingsbryter?

knapp 0

menyalternativer igjen [◄]

knapp 1

menyalternativer høyre [►]

knapp 2

økningsområde/verdi/velg [▲]

knapp 3

reduser område/verdi/velg [▼]

3.2 Analoge innganger og komponentkontroll - brett 1

Figur 2 viser den analoge kretsen for PICMETER1. Analoge innganger AN0 og AN1 brukes til generelle spenningsmålinger. Velg motstandsverdier for dempere for å gi 5V på inngangspinner AN0/AN1.

For 10V inngangsområde, m = 1 + R1/R2 = 1 + 10k/10k = 2

For 20V inngangsområde, m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 brukes til temperaturmåling ved bruk av transistor Q1 som en "rå" temperaturomformer. Temperaturkoeffisient for NPN -transistor ved 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (se temperaturmåling i analog seksjon). LM431 (U1) gir en 2,5V spenningsreferanse på AN3. Til slutt brukes AN4 for eller komponenttesting i analog seksjon.

For komponentmåling er testkomponenten koblet til RE2 (D_OUT) og AN4 inngang. Motstandene R14 til R18 gir fem forskjellige motstandsverdier som brukes for motstandsmåling (potensiometermetode) i analog seksjon. Motstandene er "koblet i krets" ved å sette port C/Port E -pinner som enten inngang eller utgang.

Meter1 utfører komponentmåling ved å lade forskjellige kombinasjoner av kjent/ukjent kondensator og motstand. LM311 (U2) brukes til å lage CCP1 -avbrudd når en kondensator lades til den øvre terskelen (75% VDD) og tømmes til den nedre terskelen (25% VDD) Disse terskelspenningene settes med R8, R9, R11 og potensiometer R10 som gir svake justering. Når du tester kondensatorer, gir kondensator C13 (= 47pF) pluss den forsvinnende kapasitansen til kortet 100pF trim. Dette sikrer at intervallet mellom CCP1 -avbrudd når testkomponenten er fjernet overstiger 100us, og ikke overbelaster PIC. Denne trimverdien (100pF) trekkes fra komponentmåling med programvare. D3 (1N4148) gir utladningsbanen når du tester induktorer og beskytter D_OUT, og forhindrer at spenningen blir negativ.

λΩπμ

Trinn 4: Konstruksjonsguide

Konstruksjonsguide
Konstruksjonsguide
Konstruksjonsguide
Konstruksjonsguide

Konstruksjonsguide

En god ting er at dette prosjektet er bygget og testet i etapper. Planlegg prosjektet ditt. For disse instruksjonene antar jeg at du bygger PICMETER1, selv om prosedyren er lik for PICMETER2 og 3.

4.1 Utviklingsstyrets PCB

Du må bygge det grunnleggende utviklingsbordet (figur 1) som skal passe på en 100 x 160 mm PCB i standardstørrelse, planlegg oppsettet for å holde det så ryddig som mulig. Rengjør kretskortet og tinn alt kobber, bruk pålitelige komponenter og kontakter, testet der det er mulig. Bruk 40 -pinners kontakt for PIC. Kontinuitetskontroll av alle loddede skjøter. Det kan være nyttig å se på bildene mine på bordet ovenfor.

Du har nå en tom PIC, og du må programmere PICBIOS i flash -minne. Hvis du allerede har en programmeringsmetode - greit. Hvis ikke anbefaler jeg følgende metode som jeg har brukt vellykket.

4.2 AN589 programmerer

Dette er en liten grensesnittkrets som gjør at en PIC kan programmeres fra en PC ved hjelp av skriverporten (LPT1). Designet ble opprinnelig utgitt av Microchip i en Application Note. (referanse 3). Skaff eller lag en AN589 -kompatibel programmerer. Jeg har brukt en forbedret AN589 -design beskrevet her. Dette er ICSP - det vil si at du setter PIC -en inn i 40 -pinners kontakten for å programmere den. Koble deretter skriverkabelen til AN539 -inngangen og ICSP -kabelen fra AN589 til utviklingskortet. Min programmeringsdesign tar sin kraft fra utviklingskortet via ICSP -kabelen.

4.3 PICPGM -innstillinger

Du trenger nå litt programmeringsprogramvare for å kjøre på PC. PICPGM fungerer med forskjellige programmerere, inkludert AN589, og den lastes ned gratis. (Se referanser).

Fra maskinvaremenyen, velg Programmer AN589, på LPT1

Enhet = PIC16F877 eller 877A eller autodetekter.

Velg Hex File: PICBIOS1. HEX

Velg Slett PIC, deretter Program PIC, deretter Verify PIC. Med litt flaks får du en vellykket fullføringsmelding.

Fjern ICSP -kabelen, Start PIC -en på nytt, forhåpentligvis ser du PICBIOS -skjermen på LCD -skjermen, ellers sjekk tilkoblingene. Kontroller oppstartsmenyen ved å trykke på venstre og høyre knapp.

4.4 Seriell tilkobling (hyperterminal eller kitt)

Sjekk nå den serielle forbindelsen mellom PIC og PC. Koble seriekabelen fra PC COM1 til utviklingskortet og kjør et kommunikasjonsprogram, som den gamle Win-XP Hyper-Terminal eller PUTTY.

Hvis du bruker Hyperterminal, konfigurerer du som følger. Fra hovedmenyen, ring> Koble fra. Deretter Fil> Egenskaper> Koble til kategorien. Velg Com1, og klikk deretter på Konfigureringsknapp. Velg 9600 bps, ingen paritet, 8 bits, 1 stopp. Maskinvareflytkontroll”. Deretter Ring> Ring for å koble til.

Hvis du bruker PuTTY, Tilkobling> Seriell> Koble til COM1 og 9600 bps, ingen paritet, 8 bits, 1 stopp. Velg "RTS/CTS". Deretter sesjon> Seriell> Åpen

Velg “Command Mode” på PICBIOS Boot -menyen, og trykk deretter på [inc] eller [dec]. "PIC16F877>" -meldingen skal vises på skjermen (hvis ikke sjekk det serielle grensesnittet). Trykk ? for å se listen over kommandoer.

4.5 Program PICMETER

Når den serielle tilkoblingen fungerer, er programmering av flash -minne like enkelt som å sende en hex -fil. Skriv inn kommandoen "P", som svarer med "Send hex -fil …".

Ved hjelp av hyperterminal, fra menyen Overfør> Send tekstfil> PICMETER1. HEX> Åpne.

Fremgang er indikert med ":." som hver linje med hex-kode er programmert. Endelig Last suksess.

Hvis du bruker PuTTY, må du kanskje bruke Notisblokk og kopiere/lime inn hele innholdet i PICMETER1. HEX i PuTTY.

På samme måte for å bekrefte, skriv inn kommando “V”. I hyperterminal, fra menyen Overfør> Send tekstfil> PICMETER1. HEX> OK.

Advarsel = xx … Hvis du programmerer en 16F877A -brikke, får du noen advarselsmeldinger. Dette har å gjøre med forskjeller mellom 877 og 877A, som programmeres i 4 ordblokker. Dessverre justerer linkeren ikke starten på seksjoner på 4 ordgrenser. Den enkle løsningen er å ha 3 NOP -instruksjoner i starten av hver seksjon, så ignorer advarslene.

Start på nytt, og velg "Kjør applikasjon" på BIOS -oppstartsmenyen. Du bør se PICMETER1 på LCD -skjermen.

4.6 Kjør PICMETER1

Begynn nå å bygge flere deler av utviklingsbordet (figur 2) for å få Voltmeter, Component Meter -funksjoner til å fungere etter behov.

Meter1 trenger litt kalibrering. På “Cal” -funksjonen, juster R10 for å gi avlesninger på 80,00, 80,0nF og 10.000uF ca. Les deretter en liten 100pF på Cx1 -funksjon. Hvis avlesningen er ute, endrer du enten trimhetten C13, eller endrer verdien på “trimc” i meter1.asm.

Kjør nå PICBIOS Setup, og endre noen kalibreringsinnstillinger i EEPROM. Kalibrer temperaturen ved å justere 16-biters forskyvning (høyt, lavt format). Du må kanskje også endre verdien "delayt".

Hvis din intensjon er å bygge prosjektet som det er - Gratulerer - du er ferdig! Fortell meg om suksessen din på Instructables.

4,7 MPLAB

Men hvis du ønsker å gjøre endringer eller utvikle prosjektet videre, må du bygge om programvaren ved hjelp av MPLAB. Last ned MPLAB fra Microchip. Dette er den "gamle" som er enkel og grei å bruke. Jeg har ikke prøvd det nye labx utviklingsverktøyet som ser langt mer komplisert ut.

Detaljer om hvordan du oppretter et nytt prosjekt, og deretter legger du til filer i prosjektet i full dokumentasjon.

Trinn 5: Bilder av testing

Bilder av testing
Bilder av testing
Bilder av testing
Bilder av testing
Bilder av testing
Bilder av testing

Foto ovenfor av termometer, avlesning 15 grader

Testfrekvens, lesing = 416k

Testing av induktor merket 440uF, leser 435u

Testing av 100k motstand, leser 101k, det er enkelt.

Testing av 1000pF kondensator, lesing er 1.021nF

Trinn 6: Referanser og lenker

6.1 PIC16F87XA Dataark, Microchip Inc.

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

6.2 PIC16F87XA FLASH Memory Programming Specification, Microchip

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

6.3 Søknadsnotat AN589, Microchip Inc.

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

6.4 PICPGM -nedlasting

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 gratis nedlasting, Microchip

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

6.6 Dataark for Hope RFM01-433 og RFM02-433 moduler, RF Solutions

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

6.7 LT Spice, analoge enheter

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

6.8 En pic programmerer-krets basert på AN589, Best-Microcontroller-Projects

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

6.9 Filer med åpen kildekode

åpen kilde

Anbefalt: