Inhoudsopgave:
- Benodigdheden
- Stap 1: PICBIOS-beschrijving
- Stap 2: PICMETER Beschrijving
- Stap 3: Circuitbeschrijving
- Stap 4: Bouwgids
- Stap 5: Foto's van testen
- Stap 6: Referenties en links
Video: PIC16F877 Multimeter - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
PICMETER Inleiding
Dit PICMETER-project is uitgegroeid tot een nuttig en betrouwbaar hulpmiddel voor elke elektronicaliefhebber.
- Het draait op een PIC16F877 / 877A microcontroller.
- Het is een PIC-ontwikkelsysteem
- Het is een multimeter met 19 functies (voltmeter, frequentiemeter, signaalgenerator, thermometer…)
- Het is een component checker (R, L, C, diode …) met tot 5 bereiken voor elke functie.
- Het heeft een 433MHz-band ASK-radio, die op een of andere toepassing wacht.
- Het is een systeem voor acquisitie op afstand, waarbij een andere computer (pc) gegevens kan verzamelen via de seriële poort voor grafische weergave. (Het is gebruikt als de voorkant van het ECG-project).
- Het heeft een logfunctie (voor datalogging over uren), resultaten worden geüpload vanuit EEPROM.
- Het produceert testsignalen om sommige motoren aan te drijven.
- Het is grondig getest, zie foto's in stap 5.
- De software wordt vrijgegeven als Open Source
Dit Instructable is een verkleinde versie van de volledige documentatie. Het beschrijft de hardware en software die voldoende is voor anderen om het te bouwen als een voltooid project, of om het te gebruiken als een ontwikkelsysteem om verdere wijzigingen aan te brengen, of om gewoon te bladeren naar ideeën voor gebruik bij andere projecten.
Benodigdheden
De enige kritische chip om te kopen is de Microchip PIC16F877A-I/P
- A = de latere revisie die verschilt van het origineel in de definitie van configuratiebits.
- I = Industrieel temperatuurbereik
- P= 40-lead plastic dubbel in-line pakket, 10 MHz, normale VDD-limieten.
Ook de Hitachi LM032LN 20 karakters door 2-regelig LCD met ingebouwde HD44780-controller.
De andere onderdelen zijn slechts generieke elektrische componenten, printplaat-PCB's, LM340, LM311, LM431, laagvermogentransistoren voor algemeen gebruik enz.
Stap 1: PICBIOS-beschrijving
PICBIOS-beschrijving
Deze software draait op een PIC16F877-bord en neemt de onderste 4k aan programmageheugen in beslag. Het biedt de softwareomgeving voor een toepassingsprogramma dat de bovenste helft van het programmageheugen in beslag neemt. Het is qua idee vergelijkbaar met de PC-BIOS met een paar "debug"-achtige commando's voor programma-ontwikkeling en heeft 5 componenten:
- Opstart menu
- Installatieprogramma
- Opdrachtregelinterface (via seriële poort)
- Kernel- en apparaatstuurprogramma's
- Applicatie programmeerinterface
Stap 2: PICMETER Beschrijving
PICMETER Beschrijving:
Invoering
Net als een multimeter (volt, amp, ohm) heeft deze veel functies die worden geselecteerd door middel van een menusysteem. Maar omdat het een combinatie is van hardware en software, is het zeer veelzijdig, bijvoorbeeld functies zoals loggen over lange perioden en het verzenden van seriële gegevens zijn beschikbaar.
Het menu is het “hart” waar functies worden geselecteerd door middel van [links] en [rechts] knoppen. Vervolgens worden voor elke functie verschillende bereiken geselecteerd met de knoppen [inc] en [dec]. Condensatoren worden bijvoorbeeld gemeten van ongeveer 0,1 nF tot 9000 uF door middel van 5 afzonderlijke bereiken.
2.1 PICMETER-software
Dit is georganiseerd als een applicatieprogramma dat de bovenste 4k van het programmageheugen in beslag neemt en vertrouwt op functies van de PICBIOS voor apparaat-I/O en interruptafhandeling. Het bestaat uit het menugedeelte dat als achtergrondtaak wordt uitgevoerd en de knoppen elke 20 ms controleert. Wanneer een knop wordt ingedrukt om de functie of het bereik te wijzigen, wordt de juiste routine opgeroepen. Als er geen knoppen worden ingedrukt, wordt de gemeten waarde bijgewerkt met intervallen van ongeveer 0,5 sec. In principe is menu een opzoektabel.
2.2 Meterfunctie - secties
Er zijn veel functies, dus dit deel is opgesplitst in secties, die elk betrekking hebben op soortgelijke functies. Dit is een korte lijst van de secties, zie de volledige documentatie om te zien hoe elke sectie in detail werkt. Vanwege poortbeperkingen zijn er 3 variaties van het project (zie volledige documentatie). Functies in normaal lettertype zijn gemeenschappelijk voor alle projecten. Functies ONDERSTREEPT zijn alleen opgenomen in het PICMETER1-project. Functies in ITALICS zijn alleen opgenomen in PICMETER2- of PICMETER3-projecten.
VoltMeter Sectie - Bronbestand is vmeter.asm
Met functies die zijn gebaseerd op spanningsmeting met behulp van de ADC.
- ADC-spanning (lees spanning op geselecteerde ingang, AN0 tot AN4)
- AD2 Dual (geeft tegelijkertijd spanning weer op AN0 en AN1)
- TMP-thermometer -10 tot 80? degC (2N3904 of dubbele LM334-transducer)
- LOG – stelt logboekinterval in
- OHM – Weerstandsmeting (potentiometermethode) van 0Ω tot 39MΩ in 4 bereiken
- DIO – Diode, meet voorwaartse spanning (0-2,5V)
- CON – Continuïteit (piept wanneer de weerstand lager is dan de drempel van 25, 50 of 100)
Component Meter1 - Bronbestand is meter1.asm
Meting van condensator, inductor en weerstand met behulp van LM311-comparatorcircuit. Gebaseerd op het meten van de tijd van één laadcyclus.
- CAL – kalibratie – meet vaste 80nf en 10μF voor zelftest & afstelling
- Cx1 – condensatormeting van 0,1 nF tot 9000 F in 5 bereiken
- Lx1 – inductormeting van 1mH tot ?? mH in 2 bereiken
- Rx1 - weerstandsmeting van 100Ω tot 99MΩ in 3 bereik
Component Meter2 Bronbestand Meter2.asm
Componentmeting met behulp van alternatieve LM311-relaxatie-oscillator en Colpitts-oscillator. Gebaseerd op het meten van de tijdsperiode van N cycli. Dit is iets nauwkeuriger dan de bovenstaande methode, aangezien de tijd van N= tot 1000 cycli wordt gemeten. Het is meer een hardware-oplossing en vereist meer constructie.
- Cx2 – condensatormeting van 10pF tot 1000 μF in 5 bereiken.
- Rx2 – weerstandsmeting van 100 ohm tot 99M in 5 bereiken.
- Lx2 - inductormeting van 1mH tot 60mH in 1 bereik.
- osc - inductormeting (Colpitts-methode) van 70μH tot 5000μH ? in 2 reeksen.
Frequentiemeter - bronbestand Fmeter.asm
Met functies die PIC-tellers en timers gebruiken, en weinig anders;
- FREQ - Frequentiemeter van 0Hz tot 1000kHz in 3 bereiken
- XTL - meet frequentie van LP-kristallen (niet getest)
- SIG – signaalgenerator van 10Hz tot 5KHz in 10 stappen
- SMR - stappenmotor - omgekeerde richting
- SMF - stappenmotor - voorwaartse richting.
Communicatie - Bronbestand is comms.asm
Functies voor het verzenden/ontvangen van signalen om seriële en SPI-randapparatuur te testen;
- UTX test seriële TX & inc en dec bitrate van 0,6 tot 9,6k
- URX test seriële RX & inc en dec bitrate van 0,6 tot 9,6k
- SPM - test SPI in mastermodus
- SPS - test SPI in slave-modus
FSK Radio Module - Bronbestand is Radio.asm
Functies met behulp van RM01 en RM02 radio-ontvang- en zendmodules. Deze modules communiceren via SPI, die de meeste poort C-pinnen gebruikt.
- RMB - BAUD-snelheid van de radiomodule instellen
- RMF – radiomodule RF-frequentie instellen
- RMC - stelt de klokfrequentie van de radiomodule in
- XLC - past de belasting van de kristalcapaciteit aan
- POW - stelt zendervermogen in
- RM2 - verzend testgegevens (RM02-module)
- RM1 – ontvang testgegevens (RM01-module)
Besturingsmodule - Bronbestand control.asm
- SV1 - Servo-uitgang (met behulp van CCP1) van 1 ms tot 2 ms in stappen van 0,1 ms
- SV2 - Servo-uitgang (met CCP2) van 1 ms tot 2 ms in stappen van 0,1 ms
- PW1 - PWM-uitgang (met behulp van CCP1) van 0 tot 100% in stappen van 10%
- PW2 - PWM-uitgang (met CCP2) van 0 tot 100% in stappen van 10%
Externe gegevensverzameling - Bronbestand is remote.asm
Externe modus (Rem) - een reeks commando's zodat de meter kan worden bediend vanaf een computer via een seriële interface. Eén opdracht verzamelt gegevens die zijn vastgelegd in EEPROM gedurende een periode van uren. Een ander commando leest de spanningen op volle snelheid van de ADC in de geheugenbuffer en verzendt de buffer vervolgens naar de pc, waar de resultaten grafisch kunnen worden weergegeven. In feite is dit een oscilloscoop die over het audiofrequentiebereik werkt
Tijd - Bronbestand is time.asm
Tim – geeft alleen de tijd weer in uu:mm:ss-formaat en staat verandering toe met 4 knoppen
Stap 3: Circuitbeschrijving
Circuitbeschrijving:
3.1 Basisontwikkelingsbord
Afbeelding 1 toont een basisontwikkelbord om PICBIOS te laten werken. Het is zeer standaard en ongecompliceerd, 5V gereguleerde stroombron en ontkoppelcondensatoren, C1, C2 ….
De klok is 4 MHz kristal, dus TMR1 tikt in intervallen van 1us. De 22pF condensatoren C6, C7 worden aanbevolen door Microchip, maar lijken niet echt nodig te zijn. De ICSP-header (in-circuit-serial-programmering) wordt gebruikt om in eerste instantie een lege PIC te programmeren met de PICBIOS.
De seriële poort (COM1) – let op TX en RX zijn verwisseld, d.w.z. COM1-TX is aangesloten op poort C-RX en COM1-RX is aangesloten op poort C-TX (gewoonlijk een "nulmodem" genoemd). Ook de signaalniveaus die nodig zijn voor RS232 zouden eigenlijk +12V (spatie) en -12V (mark) moeten zijn. Spanningsniveaus van 5V (spatie) en 0V (mark) lijken echter voldoende voor alle pc's die ik heb gebruikt. De signaalniveaus van RX en TX worden dus gewoon omgekeerd door de lijndriver (Q3) en de lijnontvanger (Q2).
De LM032LN (2-rij 20 tekens) LCD gebruikt de standaard “HD44780 interface”. De software gebruikt de 4-bits nibble-modus en alleen schrijven, waarbij 6 pinnen van poort D worden gebruikt. De software kan worden geconfigureerd voor nibble low (Port D bits 0-3) of nibble high (Port D bits 4-7) zoals hier gebruikt.
De drukknopschakelaars bieden vier ingangen voor menuselectie. Gebruik push om schakelaars te maken terwijl software de dalende flank detecteert. De pull-up weerstanden (=25k) zijn intern in PORT B. Poort RB6 kan niet worden gebruikt voor switches, vanwege de 1nF-cap (die wordt aanbevolen voor ICSP). Geen resetschakelaar nodig?
knop0
menu-opties links [◄]
knop1
menu opties rechts [►]
knop2
bereik/waarde verhogen/selecteren [▲]
knop3
bereik/waarde verlagen/selecteren [▼]
3.2 Analoge ingangen en componentencontrole – kaart 1
Afbeelding 2 toont de analoge schakeling voor PICMETER1. Analoge ingangen AN0 en AN1 worden gebruikt voor algemene spanningsmetingen. Selecteer weerstandswaarden voor verzwakkers om 5V te geven op ingangspinnen AN0/AN1.
Voor 10V ingangsbereik, m = 1 + R1/R2 = 1 + 10k/10k = 2
Voor 20V ingangsbereik, m = 1 + (R3+R22)/R4 = 1 + 30k/10k = 4
AN2 wordt gebruikt voor temperatuurmeting met behulp van transistor Q1 als een "ruwe" temperatuurtransducer. Temperatuurcoëfficiënt van NPN-transistor bij 20 celcuis = -Vbe/ (273+20) = - 0,626/293 = -2,1 mV/K. (zie temperatuurmeting in analoog gedeelte). De LM431 (U1) biedt een spanningsreferentie van 2,5 V op AN3. Ten slotte wordt AN4 gebruikt voor het testen van componenten in de analoge sectie.
Voor componentmeting wordt de testcomponent aangesloten via RE2 (D_OUT) en AN4 Input. Weerstanden R14 tot R18 bieden vijf verschillende weerstandswaarden die worden gebruikt voor weerstandsmeting (potentiometermethode) in de analoge sectie. De weerstanden zijn "verbonden in circuit" door Port C/Port E-pinnen in te stellen als Input of Output.
Meter1 voert componentmetingen uit door verschillende combinaties van bekende/onbekende condensator en weerstand op te laden. LM311 (U2) wordt gebruikt om CCP1-onderbrekingen te creëren wanneer een condensator oplaadt tot de bovenste drempel (75% VDD) en ontlaadt tot een lagere drempel (25% VDD). Deze drempelspanningen worden ingesteld door R8, R9, R11 en potentiometer R10, wat een lichte aanpassing. Bij het testen van condensatoren leveren condensator C13 (=47pF) plus de parasitaire capaciteit van het bord een trim van 100pF. Dit zorgt ervoor dat, wanneer de testcomponent wordt verwijderd, het interval tussen CCP1-interrupts groter is dan 100us, en de PIC niet overbelast. Deze trimwaarde (100pF) wordt softwarematig afgetrokken van de componentmeting. D3 (1N4148) biedt het ontladingspad bij het testen van inductoren en beschermt D_OUT, waardoor wordt voorkomen dat de spanning negatief wordt.
λΩπμ
Stap 4: Bouwgids
Bouwgids
Een goede zaak is dat dit project in fasen wordt gebouwd en getest. Plan uw project. Voor deze instructies neem ik aan dat je PICMETER1 bouwt, hoewel de procedure vergelijkbaar is voor PICMETER2 en 3.
4.1 PCB van de ontwikkelingskaart
U moet het basisontwikkelbord (Afbeelding 1) bouwen dat op een printplaat met standaardafmetingen van 100 bij 160 mm moet passen. Plan de lay-out om deze zo netjes mogelijk te houden. Reinig je printplaat en vertin al het koper, gebruik betrouwbare componenten en connectoren, getest waar mogelijk. Gebruik een 40-pins aansluiting voor de PIC. Continuïteit controleer alle soldeerverbindingen. Het kan nuttig zijn om naar de foto's van mijn bordlay-out hierboven te kijken.
U hebt nu een lege PIC en u moet PICBIOS in het flashgeheugen programmeren. Als je al een programmeermethode hebt, prima. Zo niet, dan raad ik de volgende methode aan die ik met succes heb gebruikt.
4.2 AN589 Programmeur:
Dit is een klein interfacecircuit waarmee een PIC kan worden geprogrammeerd vanaf een pc met behulp van de printerpoort (LPT1). Het ontwerp is oorspronkelijk gepubliceerd door Microchip in een Application Note. (referentie 3). Koop of maak een AN589-compatibele programmer. Ik heb een verbeterd AN589-ontwerp gebruikt dat hier wordt beschreven. Dit is ICSP - wat betekent dat je de PIC in de 40-pins socket steekt om hem te programmeren. Sluit vervolgens de printerkabel aan op de AN539-ingang en de ICSP-kabel van de AN589 op het ontwikkelbord. Het ontwerp van mijn programmeur haalt zijn stroom uit het ontwikkelbord via de ICSP-kabel.
4.3 PICPGM-instellingen
Je hebt nu wat programmeersoftware nodig om op de pc te draaien. PICPGM werkt met verschillende programmeurs, waaronder AN589, en het is gratis te downloaden. (Zie referenties).
Selecteer in het hardwaremenu Programmer AN589, op LPT1
Apparaat = PIC16F877 of 877A of autodetect.
Selecteer Hex-bestand: PICBIOS1. HEX
Selecteer PIC wissen, vervolgens PIC programmeren en vervolgens PIC verifiëren. Met een beetje geluk krijg je een succesvol voltooiingsbericht.
ICSP-kabel verwijderen, Start de PIC opnieuw op, hopelijk ziet u de PICBIOS-weergave op het LCD-scherm, controleer anders uw verbindingen. Controleer het opstartmenu door op de linker- en rechterknop te drukken.
4.4 Seriële aansluiting (Hyperterminal of Putty)
Controleer nu de seriële verbinding tussen PIC en pc. Sluit de seriële kabel van PC COM1 aan op het ontwikkelbord en voer een communicatieprogramma uit, zoals de oude Win-XP Hyper-Terminal of PUTTY.
Als u Hyperterminal gebruikt, configureert u als volgt. Vanuit het hoofdmenu, Bellen > Verbinding verbreken. Dan Bestand> Eigenschappen> Verbinding maken met tabblad. Selecteer Com1 en klik vervolgens op de knop Configureren. Selecteer 9600 bps, geen pariteit, 8 bits, 1 stop. Hardwarematige stroomregeling". Dan Bellen > Bellen om verbinding te maken.
Bij gebruik van PuTTY, Verbinding> Serieel> Verbinden met COM1 en 9600 bps, geen pariteit, 8 bits, 1 stop. Selecteer "RTS/CTS". Dan Sessie> Serieel> Openen
Selecteer in het opstartmenu van PICBIOS "Command Mode" en druk vervolgens op [inc] of [dec]. Het promptbericht "PIC16F877>" zou op het scherm moeten verschijnen (zo niet, controleer dan uw seriële interface). Druk op ? om een lijst met opdrachten te zien.
4.5 Programma PICMETER
Zodra de seriële verbinding werkt, is het programmeren van flashgeheugen net zo eenvoudig als het verzenden van een hex-bestand. Voer de opdracht "P" in, die reageert met "Send hex-bestand …".
Met behulp van hyper-terminal, vanuit het menu Overdragen > Tekstbestand verzenden > PICMETER1. HEX >Openen.
De voortgang wordt aangegeven met de “:.” aangezien elke regel hex-code is geprogrammeerd. Eindelijk succes laden.
Als u PuTTY gebruikt, moet u wellicht Kladblok gebruiken en de volledige inhoud van PICMETER1. HEX kopiëren/plakken in PuTTY.
Voer op dezelfde manier de opdracht "V" in om te verifiëren. In hyperterminal, vanuit het menu Overdracht > Tekstbestand verzenden > PICMETER1. HEX > OK.
Waarschuwing = xx…Als u een 16F877A-chip programmeert, krijgt u enkele waarschuwingsberichten. Dit heeft te maken met verschillen tussen 877 en 877A, die programmeert in 4 woordblokken. Helaas lijnt de linker het begin van secties niet uit op 4 woordgrenzen. De eenvoudige oplossing is om 3 NOP-instructies aan het begin van elke sectie te hebben, dus negeer de waarschuwingen gewoon.
Start opnieuw op en selecteer in het BIOS-opstartmenu "Toepassing uitvoeren". U zou PICMETER1 op het LCD-scherm moeten zien.
4.6 PICMETER1. uitvoeren
Begin nu met het bouwen van meer secties van het ontwikkelbord (Figuur 2) om de Voltmeter, Component Meter-functies naar wens te laten werken.
Meter1 heeft wat kalibratie nodig. Pas in de functie "Cal" R10 aan om waarden van ongeveer 80,00, 80,0nF en 10.000uF te geven. Lees dan een kleine 100pF op Cx1 functie. Als de uitlezing niet klopt, verander dan ofwel de trimkap C13 of verander de waarde van "trimc" in meter1.asm.
Voer nu PICBIOS Setup uit en wijzig een paar kalibratie-instellingen in EEPROM. Kalibreer de temperatuur door de 16-bits offset aan te passen (hoog, laag formaat). Mogelijk moet u ook de "delayt" -waarde wijzigen.
Als het je bedoeling is om het project te bouwen zoals het is – Gefeliciteerd – dan ben je klaar! Vertel me over uw succes op Instructables.
4.7 MPLAB
Maar als u wijzigingen wilt aanbrengen of het project verder wilt ontwikkelen, moet u de software opnieuw bouwen met MPLAB. Download MPLAB van Microchip. Dit is de "oude" die eenvoudig en duidelijk te gebruiken is. Ik heb de nieuwe labx-ontwikkelingstool niet geprobeerd, die er veel gecompliceerder uitziet.
Details over het maken van een nieuw project en het toevoegen van bestanden aan het project in Volledige documentatie.
Stap 5: Foto's van testen
Foto hierboven van thermometer, aflezing 15 degC
Testfrequentie, aflezing = 416k
Testinductor gemarkeerd met 440uF, leest 435u
100k weerstand testen, leest 101k, dat is een makkelijke.
Testen van 1000pF condensator, aflezing is 1.021nF
Stap 6: Referenties en links
6.1 PIC16F87XA Gegevensblad, Microchip Inc.
ww1.microchip.com/downloads/en/devicedoc/39582b.pdf
6.2 PIC16F87XA FLASH-geheugenprogrammeringsspecificatie, microchip
ww1.microchip.com/downloads/en/devicedoc/39589b.pdf
6.3 Toepassingsnota AN589, Microchip Inc.
ww1.microchip.com/downloads/en/appnotes/00589a.pdf
6.4 PICPGM-download
picpgm.picprojects.net/
6.5 MPLab IDE v8.92 gratis download, Microchip
pic-microcontroller.com/mplab-ide-v8-92-free-download/
6.6 Gegevensbladen voor Hope RFM01-433 en RFM02-433 modules, RF-oplossingen
www.rfsolutions.co.uk/radio-modules-c10/hope-rf-c238
6.7 LT Spice, analoge apparaten
www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html
6.8 A pic programmer circuit gebaseerd op AN589, Best-Microcontroller-Projects
www.best-microcontroller-projects.com/pic-programmer-circuit.html
6.9 Open source-bestanden
open source
Aanbevolen:
Een multimeter uit het WW2-tijdperk in werkende staat herstellen: 3 stappen
Een multimeter uit de Tweede Wereldoorlog in werkende staat herstellen: Een aantal jaren geleden kocht ik deze vroege Simpson Electric-multimeter voor mijn verzameling. Het werd geleverd in een zwarte kunstleren etui die in uitstekende staat was gezien zijn leeftijd. De patentdatum van het US Patent Office voor het uurwerk van de meter is 1936 en
Multimeter gebruiken in Tamil - Beginnersgids - Multimeter voor beginners: 8 stappen
Multimeter gebruiken in Tamil | Beginnersgids | Multimeter voor beginners: Hallo vrienden, In deze tutorial heb ik uitgelegd hoe je de multimeter kunt gebruiken in allerlei elektronische circuits in 7 verschillende stappen, zoals 1) continuïteitstest voor het oplossen van problemen hardware2) DC-stroom meten 3) Diode en LED testen 4) Meten Resi
Een oplaadbare batterij toevoegen aan multimeter [HAcked]!!: 9 stappen
Een oplaadbare batterij toevoegen aan een multimeter [HAcked]!!: Multimeter is een zeer goed hulpmiddel als je een elektronicaliefhebber of een professional bent, maar het is een erg vervelende taak om de batterij te vervangen, en soms als je hem aan laat staan een lange tijd (je dronk gewoon te veel en vergat de met
Hoe een multimeter te gebruiken Basisprincipes: 8 stappen
Hoe een multimeter te gebruiken Basisprincipes: Een multimeter of een multitester, ook bekend als een VOM (volt-ohm-milliammeter), is een elektronisch meetinstrument dat verschillende meetfuncties in één eenheid combineert. Een typische multimeter kan spanning, stroom en weerstand meten. Analoge meer
Hoe bipolaire transistoren te testen als u een analoge multimeter heeft: 4 stappen
Hoe bipolaire transistoren te testen Als u een analoge multimeter heeft: we weten hoe transistor werkt, maar sommigen van ons weten niet echt hoe ze het onderdeel zelf moeten testen. Tegenwoordig hebben de meeste digitale multimeters stopcontacten om ze te testen, maar wat ga je doen als je die oude analoge / naaldtypes hebt? Dit is een sim