Spisu treści:

Multimetr PIC16F877: 6 kroków
Multimetr PIC16F877: 6 kroków

Wideo: Multimetr PIC16F877: 6 kroków

Wideo: Multimetr PIC16F877: 6 kroków
Wideo: Digital DC ammeter using pic16f877a microcontroller 2024, Lipiec
Anonim
Multimetr PIC16F877
Multimetr PIC16F877

PICMETER Wprowadzenie

Projekt PICMETER stał się użytecznym i niezawodnym narzędziem dla każdego entuzjasty elektroniki.

  • Działa na mikrokontrolerze PIC16F877 / 877A.
  • Jest to system rozwoju PIC
  • Jest to 19-funkcyjny multimetr (woltomierz, miernik częstotliwości, generator sygnału, termometr…)
  • Jest to kontroler komponentów (R, L, C, dioda…) z maksymalnie 5 zakresami dla każdej funkcji.
  • Posiada radio ASK na pasmo 433 MHz, które czeka na jakąś aplikację.
  • Jest to system zdalnej akwizycji, w którym inny komputer (PC) może zbierać dane przez port szeregowy w celu ich graficznego wyświetlenia. (Był używany jako front end projektu EKG).
  • Posiada funkcję rejestrowania (do rejestrowania danych w godzinach), wyniki są ładowane z EEPROM.
  • Generuje sygnały testowe do napędzania niektórych silników.
  • Jest dokładnie przetestowany, zobacz zdjęcia w kroku 5.
  • Oprogramowanie zostało wydane jako Open Source

Ta instrukcja jest okrojoną wersją pełnej dokumentacji. Opisuje sprzęt i oprogramowanie wystarczające dla innych do zbudowania go jako ukończonego projektu lub użycia go jako systemu programistycznego do wprowadzania dalszych zmian lub po prostu przeglądania pomysłów do wykorzystania w innych projektach.

Kieszonkowe dzieci

Jedynym krytycznym chipem do kupienia jest Microchip PIC16F877A-I/P

  • A = późniejsza wersja, która różni się od oryginału definicją bitów konfiguracyjnych.
  • I = Przemysłowy zakres temperatur
  • P= 40-odprowadzeniowy plastikowy podwójny pakiet liniowy, 10 MHz, normalne limity VDD.

Również Hitachi LM032LN 20 znaków na 2 linie LCD, który ma wbudowany kontroler HD44780.

Pozostałe części to tylko ogólne komponenty elektryczne, płytka PCB, LM340, LM311, LM431, tranzystory małej mocy ogólnego przeznaczenia itp.

Krok 1: Opis PICBIOS

Opis PICBIOS
Opis PICBIOS

Opis PICBIOS

To oprogramowanie działa na płycie PIC16F877 i zajmuje dolne 4k pamięci programu. Zapewnia środowisko programowe dla aplikacji zajmującej górną połowę pamięci programu. Jest podobny w zamyśle do PC-BIOS z kilkoma „debugowymi” poleceniami do tworzenia programów i ma 5 komponentów:

  1. Menu startowe
  2. Program instalacyjny
  3. Interfejs wiersza poleceń (przez port szeregowy)
  4. Sterowniki jądra i urządzeń
  5. Interfejs aplikacji do programowania

Krok 2: Opis PICMETER

PICMETR Opis
PICMETR Opis

PICMETR Opis

Wstęp

Podobnie jak multimetr (wolty, ampery, omy) ma wiele funkcji, które wybiera się za pomocą systemu menu. Jednak połączenie sprzętu i oprogramowania czyni go bardzo wszechstronnym, na przykład dostępne są takie funkcje, jak rejestrowanie przez długi czas i wysyłanie danych szeregowych.

Menu to „serce”, w którym wybiera się funkcje za pomocą przycisków [w lewo] i [w prawo]. Następnie dla każdej funkcji wybierane są różne zakresy za pomocą przycisków [inc] i [dec]. Na przykład kondensatory są mierzone od około 0,1 nF do 9000 uF za pomocą 5 oddzielnych zakresów.

2.1 Oprogramowanie PICMETER

Jest to zorganizowane jako program aplikacyjny, który zajmuje górne 4k pamięci programu i opiera się na funkcjach PICBIOS dla urządzeń I/O i obsługi przerwań. Składa się z sekcji menu, która działa jako zadanie w tle i odpytuje przyciski co 20 ms. Po naciśnięciu przycisku w celu zmiany funkcji lub zmiany zakresu wywoływana jest odpowiednia procedura. Gdy żaden przycisk nie zostanie wciśnięty, zmierzony odczyt jest aktualizowany w odstępach około 0,5 sekundy. Zasadniczo menu jest tabelą przeglądową.

2.2 Funkcja miernika - sekcje

Funkcji jest wiele, więc ta część jest podzielona na sekcje, z których każda zajmuje się funkcjami o podobnym charakterze. To jest krótka lista sekcji, zobacz pełną dokumentację, aby zobaczyć, jak szczegółowo działa każda sekcja. Ze względu na ograniczenia portów istnieją 3 warianty projektu (patrz Pełna dokumentacja). Funkcje w normalnej czcionce są wspólne dla wszystkich projektów. Funkcje PODKREŚLONE są zawarte tylko w projekcie PICMETER1. Funkcje pisane KURSYWĄ są zawarte tylko w projektach PICMETER2 lub PICMETER3.

Sekcja VoltMeter - plik źródłowy to vmeter.asm

Zawiera funkcje oparte na pomiarze napięcia za pomocą ADC.

  • Napięcie ADC (odczytuje napięcie na wybranym wejściu, AN0 do AN4)
  • AD2 Dual (wyświetla napięcie jednocześnie na AN0 i AN1)
  • Termometr TMP -10 do 80? degC (2N3904 lub podwójny przetwornik LM334)
  • LOG – ustawia interwał logowania
  • OHM – Pomiar rezystancji (metodą potencjometryczną) od 0Ω do 39MΩ w 4 zakresach
  • DIO – Dioda, mierzy napięcie przewodzenia (0-2,5 V)
  • CON – Ciągłość (sygnalizuje dźwięk, gdy opór jest mniejszy niż próg 25, 50 lub 100)

Składnik Meter1 - plik źródłowy to meter1.asm

Pomiar kondensatorów, cewek i rezystorów z wykorzystaniem układu komparatora LM311. Na podstawie pomiaru czasu jednego cyklu ładowania.

  • CAL – kalibracja – mierzy stałe 80nf i 10μF do autotestu i regulacji
  • Cx1 – pomiar kondensatorów od 0,1nF do 9000μF w 5 zakresach
  • Lx1 – pomiar induktora od 1mH do ?? mH w 2 zakresach
  • Rx1 – pomiar rezystora od 100Ω do 99MΩ w 3 zakresie

Składnik Meter2 Plik źródłowy Meter2.asm

Pomiar komponentów przy użyciu alternatywnego oscylatora relaksacyjnego LM311 i oscylatora Colpittsa. Na podstawie pomiaru okresu czasu N cykli. Jest to nieco dokładniejsze niż powyższa metoda, ponieważ mierzony jest czas N= do 1000 cykli. Jest to bardziej rozwiązanie sprzętowe i wymaga większej konstrukcji.

  • Cx2 – pomiar kondensatorów od 10pF do 1000 μF w 5 zakresach.
  • Rx2 – pomiar rezystora od 100 omów do 99M w 5 zakresach.
  • Lx2 - pomiar wzbudników od 1mH do 60mH w 1 zakresie.
  • osc - pomiar induktora (metoda Colpittsa) od 70μH do 5000μH ? w 2 zakresach.

Miernik częstotliwości - plik źródłowy Fmeter.asm

Zawiera funkcje korzystające z liczników i timerów PIC i niewiele więcej;

  • FREQ - Miernik częstotliwości od 0Hz do 1000kHz w 3 zakresach
  • XTL - mierzy częstotliwość kryształów LP (nie testowano)
  • SIG – generator sygnału od 10Hz do 5KHz w 10 krokach
  • SMR – silnik krokowy – kierunek odwrotny
  • SMF – silnik krokowy – kierunek do przodu.

Komunikacja - plik źródłowy to comms.asm

Funkcje do nadawania/odbierania sygnału do testowania urządzeń peryferyjnych szeregowych i SPI;

  • UTX testuje przepływność transmisji szeregowej TX i inc i dec od 0,6 do 9,6 k
  • URX testuje szybkość transmisji szeregowych RX i inc i dec od 0,6 do 9,6 k
  • SPM - testuje SPI w trybie master
  • SPS - testuje SPI w trybie slave

Moduł radiowy FSK - plik źródłowy to Radio.asm

Funkcje wykorzystujące moduły odbioru i transmisji radiowej RM01 i RM02. Te moduły łączą się przez SPI, który wykorzystuje większość pinów Port C.

  • RMB – ustaw szybkość transmisji modułu radiowego
  • RMF – ustaw częstotliwość RF modułu radiowego
  • RMC - ustawia częstotliwość zegara modułu radiowego
  • XLC – reguluje obciążenie pojemności kryształów
  • POW - ustawia moc nadajnika
  • RM2 - przesyłanie danych testowych (moduł RM02)
  • RM1 – odbierz dane testowe (moduł RM01)

Moduł sterowania - plik źródłowy control.asm

  • SV1 - Wyjście serwo (za pomocą CCP1) od 1 ms do 2 ms w krokach co 0,1 ms
  • SV2 - Wyjście serwo (za pomocą CCP2) od 1ms do 2ms w krokach co 0,1ms
  • PW1 - Wyjście PWM (za pomocą CCP1) od 0 do 100% w 10% krokach
  • PW2 - Wyjście PWM (za pomocą CCP2) od 0 do 100% w 10% krokach

Zdalne pozyskiwanie danych - plik źródłowy to remote.asm

Tryb zdalny (Rem) - zestaw komend umożliwiający obsługę miernika z komputera poprzez interfejs szeregowy. Jedno polecenie zbiera dane zarejestrowane w EEPROM przez okres godzin. Kolejne polecenie odczytuje napięcia przy pełnej prędkości ADC do bufora pamięci, a następnie przesyła bufor do komputera, gdzie wyniki mogą być wyświetlane graficznie. W rzeczywistości jest to oscyloskop pracujący w zakresie częstotliwości audio

Czas - plik źródłowy to time.asm

Tim – po prostu wyświetla czas w formacie hh:mm:ss i umożliwia zmianę za pomocą 4 przycisków

Krok 3: Opis obwodu

Opis obwodu
Opis obwodu
Opis obwodu
Opis obwodu

Opis obwodu

3.1 Podstawowa rada rozwoju

Rysunek 1 pokazuje podstawową płytkę rozwojową do uruchomienia PICBIOS. Jest to bardzo standardowe i proste, regulowane źródło zasilania 5V i kondensatory odsprzęgające, C1, C2….

Zegar jest kryształem 4 MHz, dzięki czemu TMR1 tyka co 1us. Kondensatory 22pF C6, C7 są rekomendowane przez Microchip, ale nie wydają się być właściwie konieczne. Nagłówek ICSP (programowanie szeregowe w obwodzie) jest używany do wstępnego programowania pustego PIC za pomocą PICBIOS.

Port szeregowy (COM1) – uwaga TX i RX są zamienione miejscami, tj. COM1-TX jest podłączony do portu C-RX, a COM1-RX jest podłączony do portu C-TX (powszechnie określany jako „modem zerowy”). Również poziomy sygnału wymagane dla RS232 powinny naprawdę wynosić +12V (spacja) i -12V (znak). Jednak poziomy napięcia 5V (spacja) i 0V (znak) wydają się odpowiednie dla wszystkich używanych przeze mnie komputerów. Tak więc poziomy sygnałów RX i TX są po prostu odwracane przez sterownik linii (Q3) i odbiornik linii (Q2).

LM032LN (2-wierszowy, 20-znakowy) wyświetlacz LCD wykorzystuje standardowy „interfejs HD44780”. Oprogramowanie wykorzystuje 4-bitowy tryb nibble i tylko do zapisu, który wykorzystuje 6 pinów portu D. Oprogramowanie można skonfigurować tak, aby nibble był niski (bity 0-3) portu D lub wysoki (bity portu D 4-7), jak zastosowano tutaj.

Przełączniki przyciskowe zapewniają cztery wejścia do wyboru menu. Użyj przycisku, aby dokonać przełączników, gdy oprogramowanie wykryje opadającą krawędź. Rezystory podciągające (=25k) są wbudowane w PORT B. Port RB6 nie może być używany do przełączników ze względu na nasadkę 1nF (zalecaną dla ICSP). Nie ma potrzeby resetowania przełącznika ?

przycisk0

opcje menu w lewo [◄]

przycisk 1

opcje menu w prawo [►]

przycisk2

zakres przyrostu/wartość/wybór [▲]

przycisk3

zmniejsz zakres/wartość/wybierz [▼]

3.2 Wejścia analogowe i kontroler komponentów – płytka 1

Rysunek 2 przedstawia obwody analogowe dla PICMETER1. Wejścia analogowe AN0 i AN1 służą do ogólnego pomiaru napięcia. Wybierz wartości rezystorów dla tłumików, aby dać 5 V na piny wejściowe AN0/AN1.

Dla zakresu wejściowego 10V m = 1 + R1/R2 = 1 + 10k/10k = 2

Dla zakresu wejściowego 20 V, m = 1 + (R3+R22)/R4 = 1 + 30k/10k = 4

AN2 służy do pomiaru temperatury z wykorzystaniem tranzystora Q1 jako „surowego” przetwornika temperatury. Współczynnik temperaturowy tranzystora NPN przy 20 stopniach Celsjusza = -Vbe/ (273+20) = -0.626/293 = -2,1 mV/K. (patrz pomiar temperatury w sekcji Analog). LM431 (U1) zapewnia napięcie odniesienia 2,5 V na AN3. Wreszcie AN4 jest używany do testowania komponentów w sekcji analogowej.

W celu pomiaru komponentów, komponent testowy jest podłączony przez wejście RE2 (D_OUT) i AN4. Rezystory od R14 do R18 zapewniają pięć różnych wartości rezystancji używanych do pomiaru rezystancji (metoda potencjometryczna) w sekcji analogowej. Rezystory są „podłączone w obwodzie” poprzez ustawienie pinów Port C/Port E jako wejście lub wyjście.

Miernik1 wykonuje pomiary komponentów, ładując różne kombinacje znanego/nieznanego kondensatora i rezystora. LM311 (U2) służy do tworzenia przerwań CCP1, gdy kondensator ładuje się do górnego progu (75% VDD) i rozładowuje do dolnego progu (25% VDD). Te napięcia progowe są ustawiane przez R8, R9, R11 i potencjometr R10, co daje niewielkie dostosowanie. Podczas testowania kondensatorów kondensator C13 (=47pF) plus rozproszona pojemność płyty zapewnia 100pF wykończenia. Gwarantuje to, że po usunięciu komponentu testowego odstęp między przerwaniami CCP1 przekracza 100us i nie przeciąża PIC. Ta wartość dostrajania (100 pF) jest odejmowana od pomiaru komponentów przez oprogramowanie. D3 (1N4148) zapewnia ścieżkę rozładowania podczas testowania cewek i chroni D_OUT, zapobiegając spadkowi napięcia.

λΩπμ

Krok 4: Przewodnik budowy

Przewodnik budowlany
Przewodnik budowlany
Przewodnik budowlany
Przewodnik budowlany

Przewodnik budowlany

Dobrą rzeczą jest to, że ten projekt jest budowany i testowany etapami. Zaplanuj swój projekt. W przypadku tych instrukcji zakładam, że budujesz PICMETER1, chociaż procedura jest podobna dla PICMETER2 i 3.

4.1 Płytka rozwojowa PCB

Musisz zbudować podstawową płytkę rozwojową (rysunek 1), która powinna pasować do płytki o standardowym rozmiarze 100 na 160 mm, zaplanować układ tak, aby był jak najbardziej uporządkowany. Oczyść swoją płytkę drukowaną i pocynuj całą miedź, używaj niezawodnych komponentów i złączy, przetestowanych tam, gdzie to możliwe. Użyj 40-pinowego gniazda dla PIC. Sprawdź ciągłość wszystkich połączeń lutowanych. Pomocne może okazać się obejrzenie powyższych zdjęć układu tablicy.

Masz teraz pusty PIC i musisz zaprogramować PICBIOS w pamięci flash. Jeśli masz już metodę programowania – w porządku. Jeśli nie, polecam następującą metodę, którą z powodzeniem zastosowałem.

4.2 Programator AN589

Jest to mały obwód interfejsu, który umożliwia programowanie PIC z komputera PC przy użyciu portu drukarki (LPT1). Projekt został pierwotnie opublikowany przez Microchip w nocie aplikacyjnej. (odniesienie 3). Zdobądź lub stwórz programator zgodny z AN589. Użyłem opisanej tutaj ulepszonej konstrukcji AN589. To jest ICSP - co oznacza, że wkładasz PIC do 40-pinowego gniazda, aby go zaprogramować. Następnie podłącz kabel drukarki do wejścia AN539 i kabel ICSP z AN589 do płytki rozwojowej. Mój projekt programatora czerpie moc z płytki rozwojowej za pośrednictwem kabla ICSP.

4.3 Ustawienia PICPGM

Potrzebujesz teraz oprogramowania do programowania, aby uruchomić na komputerze. PICPGM współpracuje z różnymi programistami, w tym AN589, i jest pobierany za darmo. (Patrz Referencje).

Z menu Sprzęt wybierz Programator AN589 na LPT1

Urządzenie = PIC16F877 lub 877A lub autodetekcja.

Wybierz plik szesnastkowy: PICBIOS1. HEX

Wybierz Usuń PIC, następnie Zaprogramuj PIC, a następnie Sprawdź PIC. Przy odrobinie szczęścia otrzymasz wiadomość o pomyślnym zakończeniu.

Usuń kabel ICSP, Zrestartuj PIC, miejmy nadzieję, że zobaczysz wyświetlacz PICBIOS na wyświetlaczu LCD, w przeciwnym razie sprawdź połączenia. Sprawdź menu startowe, naciskając lewy i prawy przycisk.

4.4 Połączenie szeregowe (Hyperterminal lub Putty)

Teraz sprawdź połączenie szeregowe między PIC a komputerem. Podłącz kabel szeregowy z komputera PC COM1 do płytki rozwojowej i uruchom program komunikacyjny, taki jak stary Win-XP Hyper-Terminal lub PUTTY.

Jeśli używasz Hyperterminala, skonfiguruj w następujący sposób. W menu głównym wybierz Połącz > Rozłącz. Następnie Plik> Właściwości> Połącz z zakładką. Wybierz Com1, a następnie kliknij przycisk Konfiguruj. Wybierz 9600 bps, bez parzystości, 8 bitów, 1 stop. Sprzętowa kontrola przepływu”. Następnie Zadzwoń > Zadzwoń, aby połączyć.

Jeśli używasz PuTTY, Połączenie> Szeregowy> Podłącz do COM1 i 9600 bps, bez parzystości, 8 bitów, 1 stop. Wybierz „RTS/CTS”. Następnie Sesja> Szeregowy> Otwórz

W menu rozruchowym PICBIOS wybierz „Tryb poleceń”, a następnie naciśnij [inc] lub [dec]. Na ekranie powinien pojawić się komunikat „PIC16F877>” (jeśli nie, sprawdź interfejs szeregowy). Naciskać ? aby zobaczyć listę poleceń.

4.5 Program PICMETER

Gdy połączenie szeregowe działa, programowanie pamięci flash jest tak proste, jak wysłanie pliku hex. Wpisz polecenie „P”, które odpowiada „Wyślij plik szesnastkowy…”.

Używając hiperterminala, z menu Transfer > Wyślij plik tekstowy > PICMETER1. HEX > Otwórz.

Postęp jest wskazywany przez „:.” ponieważ każdy wiersz kodu szesnastkowego jest zaprogramowany. Wreszcie udało się wczytać.

Jeśli używasz PuTTY, może być konieczne użycie Notatnika i skopiowanie/wklejenie całej zawartości PICMETER1. HEX do PuTTY.

Podobnie do weryfikacji, wpisz polecenie „V”. W hiperterminalu, z menu Transfer > Wyślij plik tekstowy > PICMETER1. HEX > OK.

Ostrzeżenie = xx…Jeśli zaprogramujesz układ 16F877A, otrzymasz kilka komunikatów ostrzegawczych. Ma to związek z różnicami między 877 a 877A, które programują w 4 blokach słów. Niestety linker nie wyrównuje początku sekcji do granic 4 słów. Prostym rozwiązaniem jest umieszczenie 3 instrukcji NOP na początku każdej sekcji, więc po prostu zignoruj ostrzeżenia.

Uruchom ponownie i w menu startowym BIOS wybierz "Uruchom aplikację". Powinieneś zobaczyć PICMETER1 na wyświetlaczu LCD.

4.6 Uruchom PICMETER1

Teraz zacznij budować więcej sekcji płytki rozwojowej (Rysunek 2), aby uzyskać funkcje Voltmeter i Component Meter działające zgodnie z wymaganiami.

Meter1 wymaga pewnej kalibracji. W funkcji „Cal” wyreguluj R10, aby uzyskać odczyty ok. 80,00, 80,0nF i 10.000uF. Następnie odczytaj małe 100pF na funkcji Cx1. Jeśli odczyt jest niedostępny, zmień nasadkę trymowania C13 lub zmień wartość „trimc” w meter1.asm.

Teraz uruchom program PICBIOS Setup i zmień kilka ustawień kalibracji w pamięci EEPROM. Skalibruj temperaturę, dostosowując 16-bitowe przesunięcie (format wysoki, niski). Może być również konieczna zmiana wartości „delayt”.

Jeśli Twoim zamiarem jest zbudowanie projektu takim, jaki jest – Gratulacje – skończyłeś! Opowiedz mi o swoim sukcesie w Instructables.

4.7 MPLAB

Ale jeśli chcesz wprowadzić zmiany lub dalej rozwijać projekt, musisz przebudować oprogramowanie za pomocą MPLAB. Pobierz MPLAB z Microchip. To ten „stary”, prosty i łatwy w użyciu. Nie próbowałem nowego narzędzia programistycznego labx, które wygląda na znacznie bardziej skomplikowane.

Szczegóły dotyczące tworzenia nowego projektu, a następnie dodawania plików do projektu w pełnej dokumentacji.

Krok 5: Zdjęcia z testów

Zdjęcia z testów
Zdjęcia z testów
Zdjęcia z testów
Zdjęcia z testów
Zdjęcia z testów
Zdjęcia z testów

Zdjęcie powyżej termometru, odczyt 15 degC

Częstotliwość testowania, odczyt = 416k

Testowanie cewki oznaczonej 440uF, odczytuje 435u

Testowanie rezystora 100k, odczytuje 101k, to łatwe.

Testowanie kondensatora 1000pF, odczyt 1,021nF

Krok 6: Odniesienia i linki

6.1 Arkusz danych PIC16F87XA, Microchip Inc.

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

6.2 Specyfikacja programowania pamięci FLASH PIC16F87XA, mikrochip

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

6.3 Nota aplikacyjna AN589, Microchip Inc.

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

6.4 Pobieranie PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 do pobrania za darmo, Microchip

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

6.6 Arkusze danych dla modułów Hope RFM01-433 i RFM02-433, RF Solutions

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

6.7 LT Spice, urządzenia analogowe

www.analog.com/pl/centrum-projektowania/narzędzia-projektowania-i-kalkulatory/ltspice-simulator.html

6.8 Obwód programatora pic oparty na AN589, Best-Microcontroller-Projects

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

6.9 Pliki Open Source

otwarte źródło

Zalecana: