Innehållsförteckning:

PIC16F877 Multimeter: 6 steg
PIC16F877 Multimeter: 6 steg

Video: PIC16F877 Multimeter: 6 steg

Video: PIC16F877 Multimeter: 6 steg
Video: 12 line multi action chaser using pic16f628a microcontroller 2024, Juli
Anonim
PIC16F877 Multimeter
PIC16F877 Multimeter

PICMETER Introduktion

Detta PICMETER -projekt har vuxit till ett användbart och pålitligt verktyg för alla elektronikentusiaster.

  • Den körs på en PIC16F877 / 877A mikrokontroller.
  • Det är ett PIC -utvecklingssystem
  • Det är 19-funktioners multimätare (voltmeter, frekvensmätare, signalgenerator, termometer …)
  • Det är en komponentkontroll (R, L, C, diod …) med upp till 5 intervall på varje funktion.
  • Den har en 433MHz band ASK -radio, som väntar på någon form av applikation.
  • Det är ett fjärranslutningssystem där en annan dator (PC) kan samla in data via serieporten för grafisk visning. (Det har använts som front -end för EKG -projekt).
  • Den har en loggfunktion (för dataloggning över timmar), resultat laddas upp från EEPROM.
  • Den producerar testsignaler för att driva vissa motorer.
  • Det är noggrant testat, se fotografier i steg 5.
  • Programvaran släpps som öppen källkod

This Instructable är en nedskuren version av hela dokumentationen. Den beskriver hårdvaran och programvaran som är tillräckliga för att andra ska kunna bygga den antingen som ett färdigt projekt, eller använda det som ett utvecklingssystem för att göra ytterligare ändringar, eller bara leta efter idéer att använda på andra projekt.

Tillbehör

Det enda kritiska chipet att köpa är Microchip PIC16F877A-I/P

  • A = den senare versionen som skiljer sig från originalet i definitionen av konfigurationsbitar.
  • I = Industriellt temperaturintervall
  • P = 40-bly plast dubbel in-line paket, 10 MHz, normala VDD gränser.

Även Hitachi LM032LN 20 tecken med 2 rader LCD som har inbyggd HD44780 -styrenhet.

De andra delarna är bara generiska elektriska komponenter, PCB-kort, LM340, LM311, LM431, lågeffekttransistorer etc.

Steg 1: PICBIOS Beskrivning

PICBIOS Beskrivning
PICBIOS Beskrivning

PICBIOS Beskrivning

Denna programvara körs på ett PIC16F877 -kort och upptar de nedre 4 k programminnet. Det tillhandahåller mjukvarumiljön för ett applikationsprogram som upptar den övre halvan av programminnet. Det liknar idén till PC-BIOS med några "felsöknings" -kommandon för programutveckling och har fem komponenter:

  1. Startmenyn
  2. Inställningsprogram
  3. Kommandoradsgränssnitt (via seriell port)
  4. Kärn- och enhetsdrivrutiner
  5. Applikationsprogrammeringsgränssnitt

Steg 2: PICMETER Beskrivning

PICMETER Beskrivning
PICMETER Beskrivning

PICMETER Beskrivning

Introduktion

Precis som en multimeter (volt, ampere, ohm) har denna många funktioner som väljs med hjälp av ett menysystem. Men en kombination av hårdvara och mjukvara gör det mycket mångsidigt, till exempel funktioner som att logga över långa perioder och skicka seriell data är tillgängliga.

Menyn är”hjärtat” där funktioner väljs med knapparna [vänster] och [höger]. För varje funktion väljs sedan olika intervall med [inc] och [dec] -knapparna. Exempelvis mäts kondensatorer från cirka 0,1 nF till 9000 uF med hjälp av 5 separata intervall.

2.1 PICMETER -programvara

Detta är organiserat som ett applikationsprogram som upptar de övre 4k programminnet och är beroende av funktioner i PICBIOS för enhetens I/O och avbrottshantering. Den består av menysektionen som körs som bakgrundsuppgift och undersöker knapparna var 20: e ms. När du trycker på en knapp för att ändra funktion eller ändra intervall, kallas lämplig rutin. När inga knappar trycks uppdateras den uppmätta avläsningen med cirka 0,5 sek intervall. I grund och botten är menyn en uppslagstabell.

2.2 Mätarfunktion - sektioner

Det finns många funktioner så den här delen är uppdelad i sektioner, var och en som behandlar funktioner av liknande karaktär. Detta är en kort lista över sektionerna, se hela dokumentationen för att se hur varje avsnitt fungerar i detalj. På grund av portbegränsningar finns det tre varianter av projektet (se fullständig dokumentation). Funktioner med normalt teckensnitt är gemensamma för alla projekt. Funktioner UNDERLINED ingår endast i PICMETER1 -projektet. Funktioner inom ITALICS ingår endast i PICMETER2- eller PICMETER3 -projekt.

VoltMeter Section - Källfilen är vmeter.asm

Innehåller funktioner som är baserade på spänningsmätning med hjälp av ADC.

  • ADC -spänning (läser spänning på vald ingång, AN0 till AN4)
  • AD2 Dual (visar spänning på AN0 och AN1 samtidigt)
  • TMP -termometer -10 till 80? degC (2N3904 eller dubbel LM334 -givare)
  • LOG - anger loggningsintervall
  • OHM - Motståndsmätning (potentiometermetod) från 0Ω till 39MΩ i 4 intervall
  • DIO-Diod, mäter spänning framåt (0-2,5V)
  • CON - Kontinuitet (pip när motståndet är mindre än tröskeln 25, 50 eller 100)

Komponent Meter1 - Källfilen är meter1.asm

Kondensator-, induktor- och motståndsmätning med LM311 -komparatorkrets. Baserat på att mäta tiden för en laddningscykel.

  • CAL - kalibrering - mäter fast 80nf och 10μF för självtest och justering
  • Cx1 - kondensatormätning från 0,1nF till 9000μF i 5 intervall
  • Lx1 - induktormätning från 1mH till ?? mH i 2 intervall
  • Rx1 - motståndsmätning från 100Ω till 99MΩ i 3 intervall

Komponent Meter2 Källfil File2.asm

Komponentmätning med alternativ LM311 -relaxationsoscillator och Colpitts -oscillator. Baserat på att mäta tidsperioden för N -cykler. Detta är något mer exakt än ovanstående metod då tiden för N = upp till 1000 cykler mäts. Det är mer en hårdvarulösning och kräver mer konstruktion.

  • Cx2 - kondensatormätning från 10pF till 1000 μF i 5 intervall.
  • Rx2 - motståndsmätning från 100 ohm till 99M i 5 intervall.
  • Lx2 - induktormätning från 1mH till 60mH i 1 område.
  • osc - induktormätning (Colpitts -metoden) från 70μH till 5000μH? i 2 intervall.

Frekvensmätare - källfil Fmeter.asm

Innehåller funktioner som använder PIC -räknare och timers, och lite annat;

  • FREQ - Frekvensmätare från 0Hz till 1000kHz i 3 intervall
  • XTL - mäter frekvensen av LP -kristaller (ej testad)
  • SIG - signalgenerator från 10Hz till 5KHz i 10 steg
  • SMR - stegmotor - omvänd riktning
  • SMF- stegmotor- riktning framåt.

Kommunikation - Källfilen är comms.asm

Funktioner för att sända/ta emot signal för att testa seriella och SPI -kringutrustning;

  • UTX -test seriell TX & inc och minskningshastighet från 0,6 till 9,6k
  • URX testar seriell RX & inc och dec bitrate från 0,6 till 9,6k
  • SPM - testar SPI i masterläge
  • SPS - testar SPI i slavläge

FSK Radio Module - Källfilen är Radio.asm

Funktioner som använder RM01 och RM02 radiomottagnings- och sändningsmoduler. Dessa moduler gränssnitt via SPI, som använder de flesta Port C -stiften.

  • RMB - ställ in radiomodulens BAUD -hastighet
  • RMF - ställ in radiomodul RF -frekvens
  • RMC - ställer in radiomodulens klockfrekvens
  • XLC - justerar kristallkapacitansbelastningen
  • POW - ställer in sändarens effekt
  • RM2 - överför testdata (RM02 -modul)
  • RM1 - ta emot testdata (RM01 -modul)

Kontrollmodul - Källfilkontroll.asm

  • SV1 - Servoutgång (med CCP1) från 1 ms till 2 ms i steg om 0,1 ms
  • SV2 - Servoutgång (med CCP2) från 1 ms till 2 ms i steg om 0,1 ms
  • PW1 - PWM -utmatning (med CCP1) från 0 till 100% i 10% -steg
  • PW2 - PWM -utmatning (med CCP2) från 0 till 100% i 10% -steg

Fjärradatainsamling - Källfilen är remote.asm

Fjärrläge (Rem) - en uppsättning kommandon så att mätaren kan manövreras från en dator via ett seriellt gränssnitt. Ett kommando samlar in data som är inloggad i EEPROM under en tidsperiod. Ett annat kommando läser spänningar vid ADC: s fulla hastighet till minnesbuffert och överför sedan bufferten till PC, där resultaten kan visas grafiskt. Detta är effektivt ett oscilloskop som arbetar över ljudfrekvensområdet

Tid - källfilen är time.asm

Tim - visar bara tiden i hh: mm: ss -format och tillåter ändring med 4 knappar

Steg 3: Kretsbeskrivning

Kretsbeskrivning
Kretsbeskrivning
Kretsbeskrivning
Kretsbeskrivning

Kretsbeskrivning

3.1 Grundutvecklingsnämnd

Figur 1 visar en grundläggande utvecklingskort för att få PICBIOS igång. Det är mycket standard och enkelt, 5V reglerad strömkälla och avkopplingskondensatorer, C1, C2….

Klockan är 4 MHz kristall, så att TMR1 tickar i 1us intervall. 22pF -kondensatorerna C6, C7 rekommenderas av Microchip, men verkar inte vara nödvändiga. ICSP-huvudet (in-circuit-serial-programmering) används för att initialt programmera en tom PIC med PICBIOS.

Seriell port (COM1)- notera TX och RX byts om, dvs COM1- TX är ansluten till port C-RX och COM1-RX är ansluten till port C-TX (kallas vanligtvis ett "nullmodem"). Signalnivåerna som krävs för RS232 bör också vara +12V (mellanslag) och -12V (märke). Spänningsnivåer på 5V (mellanslag) och 0V (märke) verkar emellertid tillräckliga för alla datorer jag har använt. Så signalnivåerna för RX och TX är bara inverterade av linjedrivrutinen (Q3) och linjemottagaren (Q2).

LM032LN (2-raders 20-tecken) LCD använder standard "HD44780-gränssnitt". Programvaran använder 4-bitars nibble-läge och skriv endast, som använder 6 stift i port D. Programvaran kan konfigureras för nibble low (Port D bits 0-3) eller nibble high (Port D bits 4-7) som används här.

Tryckknapparna har fyra ingångar för menyval. Använd push för att göra omkopplare eftersom programvara upptäcker den fallande kanten. Dragmotstånden (= 25k) är interna i PORT B. Port RB6 kan inte användas för switchar, på grund av 1nF-locket (som rekommenderas för ICSP). Behövs det ingen återställningsknapp?

knapp 0

menyalternativ kvar [◄]

knapp 1

menyalternativ höger [►]

knapp 2

ökningsområde/värde/välj [▲]

knapp 3

minska intervall/värde/välj [▼]

3.2 Analoga ingångar och komponentkontroll - kort 1

Figur 2 visar den analoga kretsen för PICMETER1. Analoga ingångar AN0 och AN1 används för spänningsmätning för allmänna ändamål. Välj motståndsvärden för dämpare för att ge 5V på ingångsstiften AN0/AN1.

För 10V ingångsområde, m = 1 + R1/R2 = 1 + 10k/10k = 2

För 20V ingångsområde, m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 används för temperaturmätning med hjälp av transistorn Q1 som en "rå" temperaturomvandlare. Temperaturkoefficient för NPN -transistor vid 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (se temperaturmätning i analogt avsnitt). LM431 (U1) ger en 2,5V spänningsreferens på AN3. Slutligen används AN4 för eller komponenttestning i avsnittet Analog.

För komponentmätning är testkomponenten ansluten över RE2 (D_OUT) och AN4 -ingång. Resistorerna R14 till R18 ger fem olika värden på motstånd som används för resistansmätning (potentiometermetod) i avsnittet Analog. Motstånden är "anslutna i krets" genom att ställa in stift C/Port E som antingen ingång eller utgång.

Meter1 utför komponentmätning genom att ladda olika kombinationer av känd/okänd kondensator och motstånd. LM311 (U2) används för att skapa CCP1 -avbrott när en kondensator laddas till det övre tröskelvärdet (75% VDD) och urladdas till lägre tröskel (25% VDD) Dessa tröskelspänningar ställs in med R8, R9, R11 och potentiometer R10 vilket ger små justering. Vid testning av kondensatorer ger kondensator C13 (= 47pF) plus kortets kapacitans 100 pF trim. Detta säkerställer att, när testkomponenten tas bort, intervallet mellan CCP1 -avbrott överstiger 100us och inte överbelastar PIC. Detta trimvärde (100pF) subtraheras från komponentmätning med mjukvara. D3 (1N4148) tillhandahåller urladdningsvägen vid testning av induktorer och skyddar D_OUT, vilket förhindrar att spänningen blir negativ.

λΩπμ

Steg 4: Byggguide

Byggguide
Byggguide
Byggguide
Byggguide

Byggguide

En bra sak är att detta projekt är byggt och testat i etapper. Planera ditt projekt. För dessa instruktioner antar jag att du bygger PICMETER1, även om proceduren liknar PICMETER2 och 3.

4.1 Utvecklingskortets kretskort

Du måste bygga det grundläggande utvecklingskortet (figur 1) som ska passa på ett 100 x 160 mm PCB i standardstorlek, planera layouten så att den är så städad som möjligt. Rengör ditt kretskort och tenn all koppar, använd pålitliga komponenter och kontakter, testade där det är möjligt. Använd ett 40 -poligt uttag för PIC. Kontinuitetskontroll av alla lödfogar. Det kan vara till hjälp att titta på mina foton på brädlayouten ovan.

Du har nu en tom PIC och du måste programmera PICBIOS i flashminne. Om du redan har en programmeringsmetod - bra. Om inte rekommenderar jag följande metod som jag har använt framgångsrikt.

4.2 AN589 Programmerare

Detta är en liten gränssnittskrets som gör det möjligt för en PIC att programmera från en dator med hjälp av skrivarporten (LPT1). Designen publicerades ursprungligen av Microchip i en Application Note. (referens 3). Skaffa eller gör en AN589 -kompatibel programmerare. Jag har använt en förbättrad AN589 -design som beskrivs här. Detta är ICSP - vilket innebär att du sätter in PIC -enheten i 40 -stiftsuttaget för att programmera den. Anslut sedan skrivarkabeln till AN539 -ingången och ICSP -kabeln från AN589 till utvecklingskortet. Min programmerardesign tar sin kraft från utvecklingskortet via ICSP -kabeln.

4.3 PICPGM -inställningar

Du behöver nu programmeringsprogram för att köra på PC. PICPGM fungerar med olika programmerare inklusive AN589, och det laddas ner gratis. (Se referenser).

På hårdvaru -menyn, välj Programmer AN589, på LPT1

Enhet = PIC16F877 eller 877A eller autodetektera.

Välj hexfil: PICBIOS1. HEX

Välj Radera PIC, sedan Program PIC, sedan Verifiera PIC. Med lite tur får du ett framgångsrikt meddelande om slutförande.

Ta bort ICSP -kabeln, Starta om PIC, förhoppningsvis ser du PICBIOS -displayen på LCD -skärmen, annars kontrollera dina anslutningar. Kontrollera startmenyn genom att trycka på vänster och höger knapp.

4.4 Seriell anslutning (hyperterminal eller kitt)

Kontrollera nu den seriella anslutningen mellan PIC och PC. Anslut seriekabeln från PC COM1 till utvecklingskortet och kör ett kommunikationsprogram, som den gamla Win-XP Hyper-Terminal eller PUTTY.

Om du använder Hyperterminal, konfigurera enligt följande. Från huvudmenyn, Ring> Koppla bort. Sedan Arkiv> Egenskaper> Anslut till fliken. Välj Com1 och klicka sedan på konfigurationsknappen. Välj 9600 bps, ingen paritet, 8 bitar, 1 stopp. Hårdvaruflödeskontroll”. Ring sedan> Ring för att ansluta.

Om du använder PuTTY, Anslutning> Seriell> Anslut till COM1 och 9600 bps, ingen paritet, 8 bitar, 1 stopp. Välj "RTS/CTS". Sedan Session> Serial> Öppna

Välj “Command Mode” på PICBIOS Boot -menyn och tryck sedan på [inc] eller [dec]. "PIC16F877>" -meddelandet ska visas på skärmen (om inte kontrollera ditt seriella gränssnitt). Tryck ? för att se listan över kommandon.

4.5 Program PICMETER

När den seriella anslutningen fungerar är programmering av flashminne lika enkelt som att skicka en hex -fil. Ange kommandot "P", som svarar med "Skicka hexfil …".

Med hjälp av hyperterminal, från överföringsmenyn> Skicka textfil> PICMETER1. HEX> Öppna.

Framsteg indikeras med ":." eftersom varje rad med hex-kod är programmerad. Slutligen ladda framgång.

Om du använder PuTTY kan du behöva använda Anteckningar och kopiera/klistra in hela innehållet i PICMETER1. HEX i PuTTY.

På samma sätt för att verifiera, ange kommando “V”. I hyperterminal, från överföringsmenyn> Skicka textfil> PICMETER1. HEX> OK.

Varning = xx … Om du programmerar ett 16F877A -chip får du några varningsmeddelanden. Detta har att göra med skillnader mellan 877 och 877A, som programmeras i 4 ordblock. Tyvärr justerar inte länken starten på sektioner på 4 ordgränser. Den enkla lösningen är att ha 3 NOP -instruktioner i början av varje avsnitt, så ignorera bara varningarna.

Starta om och välj "Kör applikation" på BIOS -startmenyn. Du borde se PICMETER1 på LCD -skärmen.

4.6 Kör PICMETER1

Börja nu med att bygga fler delar av utvecklingskortet (Figur 2) för att få Voltmeter, Component Meter -funktioner att fungera efter behov.

Meter1 behöver lite kalibrering. På “Cal” -funktionen, justera R10 för att ge avläsningar på 80,00, 80,0nF och 10.000uF ca. Läs sedan en liten 100pF på Cx1 -funktion. Om avläsningen är av, ändra antingen trimlocket C13 eller ändra värdet på "trimc" i meter1.asm.

Kör nu PICBIOS Setup och ändra några kalibreringsinställningar i EEPROM. Kalibrera temperaturen genom att justera 16-bitars offset (hög, låg format). Du kan också behöva ändra värdet "delayt".

Om din avsikt är att bygga projektet som det är - Grattis - du är klar! Berätta om din framgång på Instructables.

4,7 MPLAB

Men om du vill göra ändringar eller utveckla projektet ytterligare måste du bygga om programvaran med MPLAB. Ladda ner MPLAB från Microchip. Detta är den "gamla" som är enkel och enkel att använda. Jag har inte provat det nya labx -utvecklingsverktyget som ser mycket mer komplicerat ut.

Detaljer om hur du skapar ett nytt projekt och sedan lägger till filer till projektet i Full Documentation.

Steg 5: Foton av testning

Bilder på tester
Bilder på tester
Bilder på tester
Bilder på tester
Bilder på tester
Bilder på tester

Foto ovanför termometer, avläsning 15 grader

Testfrekvens, avläsning = 416k

Testande induktor märkt 440uF, läser 435u

Testar 100k motstånd, läser 101k, det är lätt.

Testning av 1000pF kondensator, avläsning är 1.021nF

Steg 6: Referenser och länkar

6.1 PIC16F87XA Datablad, Microchip Inc.

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

6.2 PIC16F87XA FLASH -minnesprogrammeringsspecifikation, mikrochip

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

6.3 Ansökningsanmärkning AN589, Microchip Inc.

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

6.4 PICPGM -nedladdning

picpgm.picprojects.net/

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

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

6.6 Datablad för Hope RFM01-433 och RFM02-433 moduler, RF Solutions

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

6.7 LT Spice, analoga enheter

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

6.8 En bildprogrammerarkrets baserad på AN589, Best-Microcontroller-Projects

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

6.9 Öppna källfiler

öppen källa

Rekommenderad: