Indholdsfortegnelse:

PIC16F877 Multimeter: 6 trin
PIC16F877 Multimeter: 6 trin

Video: PIC16F877 Multimeter: 6 trin

Video: PIC16F877 Multimeter: 6 trin
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
PIC16F877 Multimeter
PIC16F877 Multimeter

BILLEDER Introduktion

Dette PICMETER -projekt er vokset til et nyttigt og pålideligt værktøj for enhver elektronikentusiast.

  • Den kører på en PIC16F877 / 877A mikrokontroller.
  • Det er et PIC -udviklingssystem
  • Det er 19-funktioners multimeter (voltmeter, frekvensmåler, signalgenerator, termometer …)
  • Det er en komponentkontrol (R, L, C, diode …) med op til 5 intervaller på hver funktion.
  • Den har en 433MHz bånd ASK -radio, som venter på en slags applikation.
  • Det er et fjernopkøbssystem, hvor en anden computer (pc) kan indsamle data via den serielle port til grafisk visning. (Det er blevet brugt som frontend på EKG -projekt).
  • Det har en logfunktion (til datalogning over timer), resultater uploades fra EEPROM.
  • Det producerer testsignaler for at drive nogle motorer.
  • Det er grundigt testet, se fotografier i trin 5.
  • Softwaren frigives som Open Source

Denne instruks er en nedskåret version af den fulde dokumentation. Det beskriver hardware og software, der er tilstrækkelig til, at andre kan bygge det enten som et afsluttet projekt eller bruge det som et udviklingssystem til at foretage yderligere ændringer, eller bare søge efter ideer til brug på andre projekter.

Forbrugsvarer

Den eneste kritiske chip at købe er Microchip PIC16F877A-I/P

  • A = den senere revision, der adskiller sig fra originalen i definitionen af konfigurationsbit.
  • I = Industrielt temperaturområde
  • P = 40-bly plast dobbelt in-line pakke, 10 MHz, normale VDD grænser.

Også Hitachi LM032LN 20 tegn med 2 linjer LCD, der har indbygget HD44780 controller.

De andre dele er bare generiske elektriske komponenter, printkort, LM340, LM311, LM431, generelle laveffekttransistorer osv.

Trin 1: PICBIOS Beskrivelse

PICBIOS Beskrivelse
PICBIOS Beskrivelse

PICBIOS Beskrivelse

Denne software kører på et PIC16F877 -kort og optager de nederste 4k programhukommelse. Det giver softwaremiljøet til et applikationsprogram, der optager den øverste halvdel af programhukommelsen. Det ligner ideen til PC-BIOS med et par "fejlfinding" som kommandoer til programudvikling og har 5 komponenter:

  1. Opstartsmenu
  2. Opsætningsprogram
  3. Kommandolinjegrænseflade (via seriel port)
  4. Kerne- og enhedsdrivere
  5. Applikationsprogrammeringsgrænseflade

Trin 2: PICMETER Beskrivelse

PICMETER Beskrivelse
PICMETER Beskrivelse

PICMETER Beskrivelse

Introduktion

Ligesom et multimeter (volt, ampere, ohm) har dette mange funktioner, der vælges ved hjælp af et menusystem. Men at være en kombination af hardware og software gør det meget alsidigt, for eksempel er funktioner såsom logning over lange perioder og afsendelse af serielle data tilgængelige.

Menuen er “hjertet”, hvor funktioner vælges ved hjælp af [venstre] og [højre] knapper. Derefter vælges forskellige intervaller for hver funktion med knapperne [inc] og [dec]. For eksempel måles kondensatorer fra ca. 0,1 nF til 9000uF ved hjælp af 5 separate intervaller.

2.1 PICMETER -software

Dette er organiseret som et applikationsprogram, der optager de øverste 4 k programhukommelse og er afhængig af funktioner i PICBIOS til enheds -I/O og afbrydelse af håndtering. Den består af menusektionen, der kører som baggrundsopgave og undersøger knapperne hver 20. ms. Når der trykkes på en knap for at ændre funktion eller ændre område, kaldes den relevante rutine. Når der ikke trykkes på nogen knapper, opdateres den målte aflæsning med ca. 0,5 sek intervaller. Grundlæggende er menuen en opslagstabel.

2.2 Meterfunktion - sektioner

Der er mange funktioner, så denne del er opdelt i sektioner, der hver især omhandler funktioner af lignende art. Dette er en kort liste over sektionerne, se den fulde dokumentation for at se, hvordan hvert afsnit fungerer i detaljer. På grund af havnebegrænsninger er der 3 variationer af projektet (se fuld dokumentation). Funktioner i normal skrifttype er fælles for alle projekter. Funktioner UNDERLINED er kun inkluderet i PICMETER1 -projektet. Funktioner i ITALICS er kun inkluderet i PICMETER2- eller PICMETER3 -projekter.

VoltMeter Section - Kildefil er vmeter.asm

Indeholder funktioner, der er baseret på spændingsmåling ved hjælp af ADC.

  • ADC -spænding (læser spænding på valgt indgang, AN0 til AN4)
  • AD2 Dual (viser spænding på AN0 og AN1 samtidigt)
  • TMP -termometer -10 til 80? degC (2N3904 eller dobbelt LM334 transducer)
  • LOG - indstiller logningsinterval
  • OHM - Modstandsmåling (potentiometermetode) fra 0Ω til 39MΩ i 4 intervaller
  • DIO-Diode, måler fremspænding (0-2,5V)
  • CON - Kontinuitet (bip, når modstand er mindre end tærsklen på 25, 50 eller 100)

Komponent Meter1 - Kildefil er meter1.asm

Kondensator-, induktor- og modstandsmåling ved hjælp af LM311 -sammenligningskredsløb. Baseret på måling af tiden for en opladningscyklus.

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

Komponent Meter2 Kildefil Meter2.asm

Komponentmåling ved hjælp af alternativ LM311 -afslapningsoscillator og Colpitts -oscillator. Baseret på måling af tidsperioden for N -cykler. Dette er lidt mere præcist end ovenstående metode, da tiden for N = op til 1000 cyklusser måles. Det er mere en hardwareløsning og kræver mere konstruktion.

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

Frekvensmåler - kildefil Fmeter.asm

Indeholder funktioner, der bruger PIC -tællere og timere, og lidt andet;

  • FREQ - Frekvensmåler fra 0Hz til 1000kHz i 3 områder
  • XTL - måler frekvensen af LP -krystaller (ikke testet)
  • SIG - signalgenerator fra 10Hz til 5KHz i 10 trin
  • SMR - trinmotor - omvendt retning
  • SMF- trinmotor- fremadgående retning.

Kommunikation - Kildefilen er comms.asm

Funktioner til at transmittere/modtage signal til test af serielle og SPI -perifere enheder;

  • UTX test seriel TX & inc og dec bitrate fra 0,6 til 9,6k
  • URX test seriel RX & inc og dec bitrate fra 0,6 til 9,6k
  • SPM - tester SPI i master -tilstand
  • SPS - tester SPI i slave -tilstand

FSK Radio Module - Kildefil er Radio.asm

Funktioner ved brug af RM01 og RM02 radiomodtagere og transmittere moduler. Disse moduler grænseflade via SPI, som bruger de fleste Port C -ben.

  • RMB - indstil radiomodul BAUD rate
  • RMF - indstil radiomodul RF -frekvens
  • RMC - indstiller radiomodulets frekvens
  • XLC - justerer krystalkapacitansbelastningen
  • POW - indstiller senderens effekt
  • RM2 - transmitter testdata (RM02 -modul)
  • RM1 - modtag testdata (RM01 -modul)

Kontrolmodul - Kildefil control.asm

  • SV1 - Servo Output (ved hjælp af CCP1) fra 1 ms til 2 ms i trin på 0,1 ms
  • SV2 - Servo Output (ved hjælp af CCP2) fra 1 ms til 2 ms i trin på 0,1 ms
  • PW1 - PWM -output (ved hjælp af CCP1) fra 0 til 100% i 10% trin
  • PW2 - PWM output (ved hjælp af CCP2) fra 0 til 100% i 10% trin

Fjernerhvervelse af data - kildefil er remote.asm

Remote mode (Rem) - et sæt kommandoer, så måleren kan betjenes fra en computer via et serielt interface. En kommando indsamler data, der er logget ind i EEPROM over en periode på timer. En anden kommando læser spændinger ved fuld hastighed af ADC'en til hukommelsesbuffer, og overfør derefter bufferen til pc, hvor resultaterne kan vises grafisk. Dette er effektivt et oscilloskop, der arbejder over lydfrekvensområdet

Tid - kildefil er time.asm

Tim - viser bare tiden i hh: mm: ss -format og tillader ændring ved hjælp af 4 knapper

Trin 3: Kredsløbsbeskrivelse

Kredsløb Beskrivelse
Kredsløb Beskrivelse
Kredsløb Beskrivelse
Kredsløb Beskrivelse

Kredsløb Beskrivelse

3.1 Grundlæggende udviklingsbestyrelse

Figur 1 viser et grundlæggende udviklingsbord til at få PICBIOS til at køre. Det er meget standard og ligetil, 5V reguleret strømkilde og afkoblingskondensatorer, C1, C2….

Uret er 4 MHz krystal, så TMR1 ticks i 1us intervaller. 22pF kondensatorerne C6, C7 anbefales af Microchip, men ser ikke ud til at være nødvendige. ICSP-headeren (in-circuit-seriel programmering) bruges til i første omgang at programmere en tom PIC med PICBIOS.

Den serielle port (COM1)- bemærk TX og RX byttes om, dvs. COM1-TX er forbundet til Port C-RX, og COM1-RX er forbundet til Port C-TX (kaldes normalt et "null-modem"). Også de signalniveauer, der kræves til RS232, skal virkelig være +12V (mellemrum) og -12V (mærke). Spændingsniveauer på 5V (mellemrum) og 0V (mærke) synes imidlertid tilstrækkelige til alle pc'er, jeg har brugt. Så signalniveauer for RX og TX er bare inverteret af linjedriver (Q3) og linjemodtager (Q2).

LM032LN (2-rækker 20 tegn) LCD bruger standard “HD44780 interface”. Softwaren bruger 4-bit nibble-tilstand og kun skrive, der bruger 6 pins af port D. Softwaren kan konfigureres til nibble low (Port D bits 0-3) eller nibble high (Port D bits 4-7) som brugt her.

Trykknapkontakterne giver fire indgange til menuvalg. Brug push til at foretage switches, da software registrerer den faldende kant. Pull-up-modstandene (= 25k) er interne i PORT B. Port RB6 kan ikke bruges til switches på grund af 1nF-hætten (som anbefales til ICSP). Er der ikke behov for en nulstillingskontakt?

knap0

menuindstillinger tilbage [◄]

knap 1

menupunkter til højre [►]

knap 2

stigningsområde/værdi/vælg [▲]

knap 3

formindskelse område/værdi/vælg [▼]

3.2 Analoge indgange og komponentchecker - Board 1

Figur 2 viser det analoge kredsløb til PICMETER1. Analoge indgange AN0 og AN1 bruges til måling af generelle spændinger. Vælg modstandsværdier for dæmpere til at give 5V på inputstifter AN0/AN1.

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

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

AN2 bruges til temperaturmåling ved hjælp af transistor Q1 som en "rå" temperatur transducer. Temperaturkoefficient for NPN -transistor ved 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (se temperaturmåling i analog sektion). LM431 (U1) giver en 2,5V spændingsreference på AN3. Endelig bruges AN4 til eller komponenttest i analog sektion.

Til komponentmåling er testkomponenten forbundet på tværs af RE2 (D_OUT) og AN4 -input. Modstandene R14 til R18 giver fem forskellige modstandsværdier, der bruges til modstandsmåling (potentiometermetode) i analog sektion. Modstandene er "forbundet i kredsløb" ved at indstille Port C/Port E -benene som enten Input eller Output.

Meter1 udfører komponentmåling ved at oplade forskellige kombinationer af kendt/ukendt kondensator og modstand. LM311 (U2) bruges til at oprette CCP1 -afbrydelser, når en kondensator oplades til den øvre tærskel (75% VDD) og aflades til lavere tærskel (25% VDD) Disse tærskelspændinger indstilles med R8, R9, R11 og potentiometer R10, hvilket giver små justering. Ved testning af kondensatorer giver kondensator C13 (= 47pF) plus kortets kapacitans på kortet 100pF trim. Dette sikrer, at intervallet mellem CCP1 -afbrydelser overstiger 100us, når testkomponenten fjernes, og ikke overbelaster PIC. Denne trimværdi (100pF) trækkes fra komponentmåling med software. D3 (1N4148) giver afladningsvejen ved testning af induktorer og beskytter D_OUT, hvilket forhindrer spænding i at blive negativ.

λΩπμ

Trin 4: Byggeguide

Konstruktionsguide
Konstruktionsguide
Konstruktionsguide
Konstruktionsguide

Konstruktionsguide

En god ting er, at dette projekt er bygget og testet i etaper. Planlæg dit projekt. For disse instruktioner går jeg ud fra, at du bygger PICMETER1, selvom proceduren ligner PICMETER2 og 3.

4.1 Development Board PCB

Du skal bygge det grundlæggende udviklingsbord (figur 1), som skal passe til et 100 x 160 mm PCB i standardstørrelse, planlægge layoutet for at holde det så ryddeligt som muligt. Rengør dit printkort og tin alt kobber, brug pålidelige komponenter og stik, testet hvor det er muligt. Brug 40 -polet stik til PIC. Kontinuitetskontrol af alle loddede samlinger. Det kan være nyttigt at se på mine bordlayoutbilleder ovenfor.

Du har nu en tom PIC, og du skal programmere PICBIOS i flash -hukommelse. Hvis du allerede har en programmeringsmetode - fint. Hvis ikke anbefaler jeg følgende metode, som jeg har brugt med succes.

4.2 AN589 Programmerer

Dette er et lille interfacekredsløb, der gør det muligt for en PIC at programmere fra en pc ved hjælp af printerporten (LPT1). Designet blev oprindeligt udgivet af Microchip i en Application Note. (reference 3). Få eller lav en AN589 -kompatibel programmerer. Jeg har brugt et forbedret AN589 -design beskrevet her. Dette er ICSP - hvilket betyder, at du sætter PIC'en i 40 -pin -stikket for at programmere det. Tilslut derefter printerkablet til AN539 -input og ICSP -kablet fra AN589 til udviklingskortet. Mit programmørdesign tager sin kraft fra udviklingskortet via ICSP -kablet.

4.3 PICPGM -indstillinger

Du har nu brug for noget programmeringssoftware til at køre på pc. PICPGM arbejder med forskellige programmører, herunder AN589, og det downloades gratis. (Se referencer).

I menuen Hardware skal du vælge Programmer AN589 på LPT1

Enhed = PIC16F877 eller 877A eller autodetekter.

Vælg hexfil: PICBIOS1. HEX

Vælg Slet PIC, derefter Program PIC, derefter Verificer PIC. Med lidt held får du en vellykket meddelelse om afslutning.

Fjern ICSP -kabel, Genstart PIC'en, forhåbentlig ser du PICBIOS -displayet på LCD'et, ellers kontroller dine forbindelser. Kontroller startmenuen ved at trykke på venstre og højre knap.

4.4 Seriel forbindelse (hyperterminal eller spartel)

Kontroller nu den serielle forbindelse mellem PIC og pc. Tilslut det serielle kabel fra PC COM1 til udviklingskortet, og kør et kommunikationsprogram, f.eks. Den gamle Win-XP Hyper-Terminal eller PUTTY.

Hvis du bruger Hyperterminal, skal du konfigurere som følger. Opkald> Afbryd fra hovedmenuen. Derefter Filer> Egenskaber> Opret forbindelse til fanen. Vælg Com1, og klik derefter på konfigurationsknappen. Vælg 9600 bps, ingen paritet, 8 bit, 1 stop. Hardware flowkontrol”. Ring derefter til> Ring for at oprette forbindelse.

Hvis du bruger PuTTY, Forbindelse> Seriel> Opret forbindelse til COM1 og 9600 bps, ingen paritet, 8 bit, 1 stop. Vælg "RTS/CTS". Derefter Session> Seriel> Åben

Vælg "Command Mode" i menuen PICBIOS Boot, og tryk derefter på [inc] eller [dec]. "PIC16F877>" -meddelelsen skal vises på skærmen (hvis ikke tjek din serielle grænseflade). Tryk? for at se en liste over kommandoer.

4.5 Program PICMETER

Når den serielle forbindelse fungerer, er programmering af flash -hukommelse lige så enkelt som at sende en hex -fil. Indtast kommandoen "P", som svarer med "Send hex -fil …".

Ved hjælp af hyperterminal fra menuen Overførsel> Send tekstfil> PICMETER1. HEX> Åbn.

Fremskridt er angivet med ":." som hver linje med hex-kode er programmeret. Endelig indlæse succes.

Hvis du bruger PuTTY, skal du muligvis bruge Notesblok og kopiere/indsætte hele indholdet af PICMETER1. HEX i PuTTY.

På samme måde for at kontrollere, skal du indtaste kommando “V”. I hyperterminal fra menuen Overførsel> Send tekstfil> PICMETER1. HEX> OK.

Advarsel = xx … Hvis du programmerer en 16F877A -chip, får du nogle advarselsmeddelelser. Dette har at gøre med forskelle mellem 877 og 877A, som programmeres i 4 ordblokke. Desværre justerer linkeren ikke starten af sektioner på 4 ordgrænser. Den enkle løsning er at have 3 NOP -instruktioner i starten af hvert afsnit, så ignorer bare advarslerne.

Genstart, og vælg "Kør applikation" i BIOS -startmenuen. Du bør se PICMETER1 på LCD -skærmen.

4.6 Kør PICMETER1

Start nu med at bygge flere sektioner af udviklingsbordet (figur 2) for at få Voltmeter, Component Meter -funktioner til at fungere efter behov.

Meter1 har brug for en vis kalibrering. På “Cal” -funktionen justeres R10 for at give aflæsninger på 80,00, 80,0nF og 10.000uF ca. Læs derefter en lille 100pF på Cx1 -funktion. Hvis aflæsningen er ude, skal du enten ændre trimhætten C13 eller ændre værdien af "trimc" i meter1.asm.

Kør nu PICBIOS Setup, og rediger et par kalibreringsindstillinger i EEPROM. Kalibrer temperaturen ved at justere 16-bit offset (høj, lav format). Du skal muligvis også ændre værdien "delayt".

Hvis din hensigt er at bygge projektet som det er - Tillykke - du er færdig! Fortæl mig om din succes på Instructables.

4,7 MPLAB

Men hvis du ønsker at foretage ændringer eller udvikle projektet yderligere, skal du genopbygge softwaren ved hjælp af MPLAB. Download MPLAB fra Microchip. Dette er den "gamle", der er enkel og ligetil at bruge. Jeg har ikke prøvet det nye labx udviklingsværktøj, der ser langt mere kompliceret ud.

Detaljer om, hvordan du opretter et nyt projekt, og derefter tilføjer filer til projektet i Fuld dokumentation.

Trin 5: Fotos af test

Fotos af test
Fotos af test
Fotos af test
Fotos af test
Fotos af test
Fotos af test

Foto ovenfor af termometer, læsning 15 grader

Testfrekvens, læsning = 416k

Test af induktor mærket 440uF, læser 435u

Test 100k modstand, læser 101k, det er let.

Test af 1000pF kondensator, læsning er 1.021nF

Trin 6: Referencer og links

6.1 PIC16F87XA Datablad, Microchip Inc.

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

6.2 PIC16F87XA FLASH Specificering af hukommelsesprogrammering, Mikrochip

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

6.3 Anmærkningsanvisning AN589, Microchip Inc.

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

6.4 PICPGM download

picpgm.picprojects.net/

6,5 MPLab IDE v8.92 gratis download, mikrochip

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 enheder

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

6.8 Et pic-programmerings kredsløb baseret på AN589, Best-Microcontroller-Projects

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

6.9 Open Source -filer

open_source

Anbefalede: