Innehållsförteckning:
- Tillbehör
- Steg 1: PICBIOS Beskrivning
- Steg 2: PICMETER Beskrivning
- Steg 3: Kretsbeskrivning
- Steg 4: Byggguide
- Steg 5: Foton av testning
- Steg 6: Referenser och länkar
Video: PIC16F877 Multimeter: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
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
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:
- Startmenyn
- Inställningsprogram
- Kommandoradsgränssnitt (via seriell port)
- Kärn- och enhetsdrivrutiner
- Applikationsprogrammeringsgränssnitt
Steg 2: 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
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
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
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:
Återställa en WW2 -era -multimeter till fungerande skick: 3 steg
Återställa en WW2 Era Multimeter till fungerande skick: För ett antal år sedan köpte jag denna tidiga Simpson Electric multimeter för min samling. Den kom i ett svart konstläderfodral som var i utmärkt skick med tanke på dess ålder. Det amerikanska patentverkets patentdatum för mätarrörelsen är 1936
USB litium återladdningsbar DT830 multimeter med polyfuse: 5 steg
USB litium återladdningsbar DT830-multimeter med polyfuse: ■ Vad jag gillar med den här mätaren Denna DT830LN digitala multimeter (DMM) erbjuder ▪ En kompakt storlek ▪ 10A strömmätområde ▪ Bakgrundsbelyst display ▪ Låg kostnad DT830D-modellen är identisk och mer allmänt tillgänglig, men har inte bakgrundsbelyst display. ■ Vad
Arduino -driven multimeter: 8 steg (med bilder)
Arduino Powered Multimeter: I detta projekt kommer du att bygga en voltmeter och ohmmeter med hjälp av digitalRead -funktionen hos en Arduino. Du kommer att kunna få en avläsning nästan varje millisekund, mycket mer exakt än en typisk multimeter. Slutligen kan data nås från
Hur man använder multimeter på tamil - Nybörjarguide - Multimeter för nybörjare: 8 steg
Hur man använder multimeter på tamil | Nybörjarguide | Multimeter för nybörjare: Hej vänner, I den här självstudien har jag förklarat hur man använder multimeter i alla slags elektronikkretsar i 7 olika steg, t.ex. Återställ
16x64 P10 rullande LED -display med hjälp av PIC16F877 mikrokontroller: 5 steg (med bilder)
16x64 P10 -rullande LED -display med hjälp av PIC16F877 mikrokontroller: I denna instruktör beskrivs hur du gränssnittar 16 x 64 (p10) LED -matrisdisplay med PICI6F877A mikrokontroller. En data skickas till mikrokontrollen via UART som lagras i EEPROM och data kommer att ha visats på LED -matrisdisplayen. Den