Obsah:

Multimetr PIC16F877: 6 kroků
Multimetr PIC16F877: 6 kroků

Video: Multimetr PIC16F877: 6 kroků

Video: Multimetr PIC16F877: 6 kroků
Video: Digital DC ammeter using pic16f877a microcontroller 2024, Červenec
Anonim
Multimetr PIC16F877
Multimetr PIC16F877

PICMETER Úvod

Tento projekt PICMETER se stal užitečným a spolehlivým nástrojem pro každého elektronického nadšence.

  • Běží na mikrořadiči PIC16F877 / 877A.
  • Jedná se o vývojový systém PIC
  • Jedná se o 19funkční multimetr (voltmetr, měřič frekvence, generátor signálu, teploměr …)
  • Jedná se o kontrolu komponent (R, L, C, dioda …) s až 5 rozsahy pro každou funkci.
  • Má 433MHz pásmo ASK rádio, které čeká na nějaký druh aplikace.
  • Jedná se o vzdálený sběrný systém, kde jiný počítač (PC) může sbírat data přes sériový port pro grafické zobrazení. (Byl použit jako přední část projektu EKG).
  • Má možnost protokolování (pro protokolování dat přes hodiny), výsledky se nahrávají z EEPROM.
  • Vytváří testovací signály pro pohon některých motorů.
  • Je důkladně testován, viz fotografie v kroku 5.
  • Software je vydán jako Open Source

This Instructable is a cut down version of the Full Documentation. Popisuje hardware a software dostatečný pro ostatní, aby jej mohli postavit buď jako dokončený projekt, nebo jej použít jako vývojový systém k provedení dalších změn, nebo jen procházet nápady pro použití na jiných projektech.

Zásoby

Jediným kritickým čipem, který lze koupit, je Microchip PIC16F877A-I/P

  • A = pozdější revize, která se liší od původní v definici konfiguračních bitů.
  • I = rozsah průmyslové teploty
  • P = 40vodičový plastový duální řadový balíček, 10 MHz, normální limity VDD.

Také Hitachi LM032LN 20 znaků na 2 řádkovém LCD, který má vestavěný ovladač HD44780.

Ostatní části jsou pouze generické elektrické součástky, deskové desky s plošnými spoji, LM340, LM311, LM431, nízkonapěťové tranzistory pro obecné účely atd.

Krok 1: Popis PICBIOS

PICBIOS Popis
PICBIOS Popis

PICBIOS Popis

Tento software běží na desce PIC16F877 a zabírá spodní 4k programové paměti. Poskytuje softwarové prostředí pro aplikační program zabírající horní polovinu programové paměti. Je nápadem podobný PC-BIOS s několika příkazy pro „ladění“pro vývoj programu a má 5 komponent:

  1. Nabídka zavádění
  2. Instalační program
  3. Rozhraní příkazového řádku (přes sériový port)
  4. Ovladače jádra a zařízení
  5. Rozhraní pro programování aplikací

Krok 2: Popis PICMETERU

PICMETER Popis
PICMETER Popis

PICMETER Popis

Úvod

Jako multimetr (volty, zesilovače, ohmy) má mnoho funkcí, které se volí pomocí systému nabídek. Díky kombinaci hardwaru a softwaru je však velmi univerzální, například jsou k dispozici funkce, jako je dlouhodobé protokolování a odesílání sériových dat.

Nabídka je „srdcem“, kde jsou funkce vybírány pomocí tlačítek [vlevo] a [vpravo]. Poté jsou pro každou funkci pomocí tlačítek [inc] a [dec] vybrány různé rozsahy. Například kondenzátory se měří od přibližně 0,1 nF do 9 000 uF pomocí 5 samostatných rozsahů.

2.1 Software PICMETER

Toto je organizováno jako aplikační program, který zabírá horních 4 kB programové paměti a spoléhá na funkce PICBIOS pro I/O zařízení a zpracování přerušení. Skládá se z části nabídky, která běží jako úkol na pozadí a každých 20 ms vybírá tlačítka. Po stisknutí tlačítka pro změnu funkce nebo změny rozsahu se vyvolá příslušná rutina. Pokud není stisknuto žádné tlačítko, měřené hodnoty se aktualizují přibližně v 0,5sekundových intervalech. Nabídka je v podstatě vyhledávací tabulka.

2.2 Funkce měřiče - sekce

Existuje mnoho funkcí, takže tato část je rozdělena do sekcí, z nichž každá se zabývá funkcemi podobné povahy. Toto je stručný seznam sekcí. Podrobnou dokumentaci jednotlivých sekcí najdete v úplné dokumentaci. Z důvodu omezení portu existují 3 varianty projektu (viz úplná dokumentace). Funkce v normálním písmu jsou společné pro všechny projekty. Funkce PODČÍRANÉ jsou zahrnuty pouze v projektu PICMETER1. Funkce v ITALICS jsou zahrnuty pouze v projektech PICMETER2 nebo PICMETER3.

VoltMeter Section - Zdrojový soubor je vmeter.asm

Obsahuje funkce, které jsou založeny na měření napětí pomocí ADC.

  • Napětí ADC (čte napětí na vybraném vstupu, AN0 až AN4)
  • AD2 Dual (zobrazuje napětí na AN0 a AN1 současně)
  • TMP teploměr -10 až 80? degC (převodník 2N3904 nebo duální LM334)
  • LOG - nastavuje interval protokolování
  • OHM - Měření odporu (metoda potenciometru) od 0Ω do 39MΩ ve 4 rozsazích
  • DIO-dioda, měří dopředné napětí (0-2,5V)
  • CON - Kontinuita (pípne, když je odpor menší než prah 25, 50 nebo 100)

Component Meter1 - Zdrojový soubor je meter1.asm

Měření kondenzátoru, induktoru a odporu pomocí obvodu komparátoru LM311. Na základě měření času jednoho nabíjecího cyklu.

  • CAL - kalibrace - měří pevně 80nf a 10μF pro vlastní test a nastavení
  • Cx1 - měření kondenzátoru od 0,1nF do 9000μF v 5 rozsazích
  • Lx1 - měření induktoru od 1 mH do ?? mH ve 2 rozsazích
  • Rx1 - měření odporu od 100Ω do 99MΩ ve 3 rozsahech

Komponentní měřič2 Zdrojový soubor Meter2.asm

Měření komponent pomocí alternativního relaxačního oscilátoru LM311 a oscilátoru Colpitts. Na základě měření časového období N cyklů. To je o něco přesnější než výše uvedená metoda, protože se měří čas N = až 1000 cyklů. Jedná se spíše o hardwarové řešení a vyžaduje větší konstrukci.

  • Cx2 - měření kondenzátoru od 10 pF do 1000 μF v 5 rozsazích.
  • Rx2 - měření odporu od 100 ohmů do 99M v 5 rozsazích.
  • Lx2 - měření induktoru od 1 mH do 60 mH v 1 rozsahu.
  • osc - měření induktoru (Colpittsova metoda) od 70μH do 5000μH? ve 2 rozsazích.

Frekvenční měřič - zdrojový soubor Fmeter.asm

Obsahuje funkce, které používají čítače a časovače PIC a nic jiného;

  • FREQ - měřič frekvence od 0Hz do 1000kHz ve 3 rozsazích
  • XTL - měří frekvenci LP krystalů (netestováno)
  • SIG - generátor signálu od 10Hz do 5KHz v 10 krocích
  • SMR - krokový motor - zpětný směr
  • SMF- krokový motor- směr vpřed.

Komunikace - Zdrojový soubor je comms.asm

Funkce pro přenos/příjem signálu pro testování sériových a SPI periferií;

  • UTX testuje sériovou TX & inc a dec bit rate od 0,6 do 9,6k
  • URX testuje sériovou RX & inc a dec bit rate od 0,6 do 9,6k
  • SPM - testuje SPI v hlavním režimu
  • SPS - testuje SPI v podřízeném režimu

Rádiový modul FSK - zdrojový soubor je Radio.asm

Funkce využívající rádiové přijímací a vysílací moduly RM01 a RM02. Rozhraní těchto modulů je přes SPI, který využívá většinu pinů Port C.

  • RMB - nastavení rychlosti BAUD rádiového modulu
  • RMF - nastavení rádiové frekvence rádiového modulu
  • RMC - nastavuje frekvenci hodin rádiového modulu
  • XLC - upravuje zatížení krystalovou kapacitou
  • POW - nastavuje výkon vysílače
  • RM2 - přenos testovacích dat (modul RM02)
  • RM1 - příjem testovacích dat (modul RM01)

Řídicí modul - zdrojový soubor control.asm

  • SV1 - Servo výstup (pomocí CCP1) od 1 ms do 2 ms v krocích 0,1 ms
  • SV2 - Servo výstup (pomocí CCP2) od 1 ms do 2 ms v krocích 0,1 ms
  • PW1 - PWM výstup (pomocí CCP1) od 0 do 100% v 10% krocích
  • PW2 - PWM výstup (pomocí CCP2) od 0 do 100% v 10% krocích

Vzdálené získávání dat - zdrojový soubor je remote.asm

Vzdálený režim (Rem) - sada příkazů, takže měřič lze ovládat z počítače přes sériové rozhraní. Jeden příkaz shromažďuje data zaznamenaná v EEPROM po dobu několika hodin. Další příkaz načte napětí plnou rychlostí ADC do vyrovnávací paměti a poté přenese vyrovnávací paměť do počítače, kde lze výsledky graficky zobrazit. Účinně se jedná o osciloskop pracující v audio frekvenčním rozsahu

Čas - zdrojový soubor je time.asm

Tim - zobrazuje pouze čas ve formátu hh: mm: ss a umožňuje změnu pomocí 4 tlačítek

Krok 3: Popis obvodu

Popis obvodu
Popis obvodu
Popis obvodu
Popis obvodu

Popis obvodu

3.1 Základní vývojová rada

Obrázek 1 ukazuje základní vývojovou desku pro spuštění PICBIOS. Jedná se o velmi standardní a přímočarý, 5V regulovaný zdroj energie a oddělovací kondenzátory, C1, C2….

Hodiny jsou krystalické 4 MHz, takže TMR1 tiká v intervalech 1us. Kondenzátory 22pF C6, C7 jsou doporučovány společností Microchip, ale nezdají se být ve skutečnosti nutné. Záhlaví ICSP (programování v obvodu-sériové) slouží k prvotnímu naprogramování prázdného PIC s PICBIOS.

Sériový port (COM1)- poznámka TX a RX jsou přepnuty, tj. COM1-TX je připojen k portu C-RX a COM1-RX je připojen k portu C-TX (běžně se označuje jako „nulový modem“). Také úrovně signálu požadované pro RS232 by skutečně měly být +12V (mezera) a -12V (značka). Úrovně napětí 5 V (mezera) a 0 V (značka) se však zdají být dostatečné pro všechny počítače, které jsem použil. Úrovně signálu RX a TX jsou tedy invertovány linkovým ovladačem (Q3) a linkovým přijímačem (Q2).

LCD LM032LN (2řadý, 20 znaků) používá standardní „rozhraní HD44780“. Software používá 4bitový režim nibble a pouze zápis, který používá 6 pinů portu D. Software lze konfigurovat pro nibble low (port D bits 0-3) or nibble high (Port D bits 4-7) as used here.

Tlačítkové přepínače poskytují čtyři vstupy pro výběr z nabídky. Pomocí tlačítek proveďte přepínání, protože software detekuje sestupnou hranu. Pull-up rezistory (= 25k) jsou interní pro PORT B. Port RB6 nelze použít pro přepínače, protože 1nF cap (což je doporučeno pro ICSP). Není třeba resetovací přepínač?

tlačítko0

možnosti nabídky vlevo [◄]

tlačítko 1

možnosti nabídky vpravo [►]

tlačítko 2

rozsah přírůstku/hodnota/vyberte [▲]

tlačítko 3

snížit rozsah/hodnotu/vybrat [▼]

3.2 Analogové vstupy a komponentní kontrola - deska 1

Obrázek 2 ukazuje analogové obvody pro PICMETER1. Analogové vstupy AN0 a AN1 se používají pro obecné měření napětí. Vyberte hodnoty odporu pro atenuátory tak, aby na vstupních pinech AN0/AN1 bylo 5V.

Pro 10V vstupní rozsah m = 1 + R1/R2 = 1 + 10k/10k = 2

Pro vstupní rozsah 20 V m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 se používá k měření teploty pomocí tranzistoru Q1 jako „surového“převodníku teploty. Teplotní koeficient NPN tranzistoru při 20 celcuis = -Vbe/(273+20) = -0,626/293 = -2,1 mV/K. (viz měření teploty v sekci Analog). LM431 (U1) poskytuje referenční napětí 2,5 V na AN3. Nakonec se používá AN4 nebo testování komponent v sekci Analogové.

Pro měření komponent je testovací komponent připojen přes vstup RE2 (D_OUT) a AN4. Rezistory R14 až R18 poskytují pět různých hodnot odporu použitých pro měření odporu (metoda potenciometru) v analogové sekci. Rezistory jsou „zapojeny do obvodu“nastavením pinů Port C/Port E jako Vstup nebo Výstup.

Meter1 provádí měření komponent nabíjením různých kombinací známého/neznámého kondenzátoru a odporu. LM311 (U2) se používá k vytváření přerušení CCP1, když se kondenzátor nabije na horní práh (75% VDD) a vybije se na spodní práh (25% VDD) Tato prahová napětí jsou nastavena pomocí R8, R9, R11 a potenciometru R10, který poskytuje mírné nastavení. Při testování kondenzátorů poskytuje kondenzátor C13 (= 47 pF) plus rozptylová kapacita desky úpravu 100 pF. Tím je zajištěno, že když je testovací komponent odstraněn, interval mezi přerušeními CCP1 překročí 100us a nepřetíží PIC. Tato hodnota oříznutí (100 pF) se odečte od měření součásti softwarem. D3 (1N4148) zajišťuje vybíjecí dráhu při testování induktorů a chrání D_OUT, čímž brání zápornému napětí.

λΩπμ

Krok 4: Průvodce stavbou

Průvodce stavbou
Průvodce stavbou
Průvodce stavbou
Průvodce stavbou

Průvodce stavbou

Dobrá věc je, že tento projekt je postaven a testován po etapách. Naplánujte si projekt. U těchto pokynů předpokládám, že stavíte PICMETER1, ačkoli postup je podobný pro PICMETER2 a 3.

4.1 Deska plošných spojů vývojové desky

Musíte postavit základní vývojovou desku (obrázek 1), která by se měla vejít na desku standardní velikosti 100 x 160 mm, naplánovat rozvržení tak, aby byla co nejvíce uklizená. Vyčistěte desku plošných spojů a pocínujte veškerou měď, používejte spolehlivé součásti a konektory, kde je to možné, vyzkoušené. Pro PIC použijte 40kolíkovou zásuvku. Zkontrolujte spojitost všech pájených spojů. Může být užitečné podívat se na fotografie mého rozložení desky výše.

Nyní máte prázdný PIC a potřebujete naprogramovat PICBIOS do flash paměti. Pokud již máte programovací metodu - v pořádku. Pokud ne, doporučuji následující metodu, kterou jsem úspěšně použil.

4.2 Programátor AN589

Toto je malý obvod rozhraní, který umožňuje programování PIC z počítače pomocí portu tiskárny (LPT1). Design byl původně publikován společností Microchip v poznámce k aplikaci. (odkaz 3). Získejte nebo si vyrobte programátor kompatibilní s AN589. Použil jsem zde popsaný vylepšený design AN589. Toto je ICSP - to znamená, že vložíte PIC do 40pinové zásuvky, abyste ho naprogramovali. Poté připojte kabel tiskárny ke vstupu AN539 a kabel ICSP od AN589 k vývojové desce. Můj návrh programátoru čerpá energii z vývojové desky pomocí kabelu ICSP.

4.3 Nastavení PICPGM

Ke spuštění na PC nyní potřebujete nějaký programovací software. PICPGM pracuje s různými programátory včetně AN589 a je stažen zdarma. (Viz reference).

V nabídce Hardware vyberte Programátor AN589 na LPT1

Zařízení = PIC16F877 nebo 877A nebo automatické zjišťování.

Vyberte hexadecimální soubor: PICBIOS1. HEX

Vyberte Vymazat PIC, poté Program PIC a poté Ověřit PIC. Při troše štěstí dostanete zprávu o úspěšném dokončení.

Odpojte kabel ICSP, Restartujte PIC, doufejme, že uvidíte displej PICBIOS na LCD, jinak zkontrolujte připojení. Zkontrolujte nabídku spouštění stisknutím levého a pravého tlačítka.

4.4 Sériové připojení (hyperterminál nebo tmel)

Nyní zkontrolujte sériové připojení mezi PIC a PC. Připojte sériový kabel z PC COM1 k vývojové desce a spusťte komunikační program, jako je starý Win-XP Hyper-Terminal nebo PUTTY.

Pokud používáte Hyperterminal, nakonfigurujte následovně. V hlavní nabídce volejte> Odpojit. Pak Soubor> Vlastnosti> Připojit na kartu. Vyberte Com1, poté klikněte na tlačítko Konfigurovat. Vyberte 9600 bps, bez parity, 8 bitů, 1 stop. Hardwarová kontrola toku “. Pak se spojte Voláním> Volat.

Pokud používáte PuTTY, Connection> Serial> Connect to COM1 a 9600 bps, no parity, 8 bits, 1 stop. Vyberte „RTS/CTS“. Poté Session> Serial> Open

V nabídce Boot PICBIOS vyberte „Command Mode“a poté stiskněte [inc] nebo [dec]. Na obrazovce by se měla objevit výzva „PIC16F877>“(pokud ne, zkontrolujte sériové rozhraní). Lis ? zobrazit seznam příkazů.

4.5 Program PICMETER

Jakmile sériové připojení funguje, programování paměti flash je stejně jednoduché jako odeslání hexadecimálního souboru. Zadejte příkaz „P“, který odpoví „Odeslat hex soubor …“.

Pomocí hyper-terminálu z nabídky Přenos> Odeslat textový soubor> PICMETER1. HEX> Otevřít.

Pokrok je indikován znakem „:.“jak je naprogramován každý řádek hex kódu. Nakonec načtěte úspěch.

Pokud používáte PuTTY, možná budete muset použít Poznámkový blok a zkopírovat/vložit celý obsah PICMETER1. HEX do PuTTY.

Podobně pro ověření zadejte příkaz „V“. V hyper-terminálu z nabídky Přenos> Odeslat textový soubor> PICMETER1. HEX> OK.

Varování = xx… Pokud naprogramujete čip 16F877A, zobrazí se několik varovných zpráv. To souvisí s rozdíly mezi 877 a 877A, které programují ve 4 slovních blocích. Linker bohužel nevyrovná začátek sekcí na hranici 4 slov. Jednoduchým řešením je mít 3 instrukce NOP na začátku každé sekce, takže varování ignorujte.

Restartujte a v nabídce spouštění systému BIOS vyberte „Spustit aplikaci“. Na displeji LCD byste měli vidět PICMETER1.

4.6 Spusťte PICMETER1

Nyní začněte stavět další části vývojové desky (obrázek 2), aby funkce voltmetru a komponentního měřiče fungovala podle potřeby.

Měřič 1 potřebuje určitou kalibraci. U funkce „Cal“upravte R10 tak, aby hodnoty činily přibližně 80,00, 80,0nF a 10 000uF. Pak přečtěte malý 100 pF na funkci Cx1. Pokud je hodnota mimo, změňte buď ozdobný kryt C13, nebo změňte hodnotu „trimc“v meter1.asm.

Nyní spusťte PICBIOS Setup a změňte několik nastavení kalibrace v EEPROM. Kalibrujte teplotu úpravou 16bitového offsetu (vysoký, nízký formát). Možná budete muset také změnit hodnotu „zpoždění“.

Pokud máte v úmyslu postavit projekt tak, jak je - Gratulujeme - jste hotovi! Řekněte mi o svém úspěchu na Instructables.

4,7 MPLAB

Pokud však chcete provést změny nebo projekt dále rozvíjet, musíte software znovu vytvořit pomocí MPLAB. Stáhněte si MPLAB z Microchip. Toto je ten „starý“, který se snadno a snadno používá. Nezkoušel jsem nový vývojový nástroj labx, který vypadá mnohem složitěji.

Podrobnosti o tom, jak vytvořit nový projekt a poté přidat soubory do projektu v úplné dokumentaci.

Krok 5: Fotky z testování

Fotografie z testování
Fotografie z testování
Fotografie z testování
Fotografie z testování
Fotografie z testování
Fotografie z testování

Foto nahoře na teploměru, čtení 15 stupňů Celsia

Frekvence testování, čtení = 416k

Testovací induktor s označením 440uF, čte 435u

Testování odporu 100k, čtení 101k, to je snadné.

Testování kondenzátoru 1000 pF, čtení je 1,021nF

Krok 6: Reference a odkazy

6.1 Datový list PIC16F87XA, Microchip Inc.

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

6.2 Specifikace programování paměti PIC16F87XA FLASH, mikročip

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

6.3 Aplikační poznámka AN589, Microchip Inc.

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

6.4 Stažení PICPGM

picpgm.picprojects.net/

6,5 MPLab IDE v8.92 ke stažení zdarma, mikročip

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

6.6 Datové listy pro moduly Hope RFM01-433 a RFM02-433, RF Solutions

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

6.7 LT Spice, analogová zařízení

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

6.8 Obvod programátoru na základě projektu AN589, Best-Microcontroller-Projects

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

6.9 Open Source Files

open_source

Doporučuje: