PIC16F176x - więcej niż mikrokontroler

PIC16F176x - więcej niż mikrokontroler
Pobierz PDF Download icon
Wynalazek mikroprocesora na początku lat 70-tych XX wieku, to chyba jedno najważniejszych wydarzeń w historii ludzkości. Już wtedy możliwość użycia komputera w formie układu scalonego dawała olbrzymie możliwości. Oczywiście, z dzisiejszego punktu widzenia taki 4-bitowy Intel 4004, Intel 8008, czy nawet Intel 8080 nadawałby się co najwyżej do sterowania przysłowiowym okapem kuchennym. Ale ówcześni konstruktorzy mieli odmienne zdanie i dawali tym układom o wiele ważniejsze zadania. Główna zaletą mikroprocesorów była ich uniwersalność - można je stosować w różnych aplikacjach "tylko" zmieniając program sterujący. Po wielu latach bardzo intensywnego rozwoju mikroprocesorów mamy do dyspozycji układy o możliwościach, o których kiedyś się nikomu nie śniło.

Za pomocą mikroprocesora i odpowiedniego oprogramowania możemy precyzyjnie sterować silnikami elektrycznymi, procesami przemysłowymi, silnikami spalinowymi itd. Aby ułatwić realizowanie takich zadań przez mikroprocesor, do rdzenia są dołączane specjalizowane układy peryferyjne.

Wydawałoby się, że w tym bogactwie wyboru wszystko jest dostępne, jednak okazuje się, że pomysłowość producentów układów nie ma granic. Microchip - jedna z najbardziej innowacyjnych firm, dobrze znana z produkcji wielu układów w tym mikrokontrolerów - od jakiegoś czasu forsuje pomysł łączenia stosunkowo prostego, ale sprawdzonego 8-bitowego rdzenia z nietypowymi i bardzo ciekawymi blokami funkcjonalnymi.

Jednym z takich rozwiązań są nowe układy z rodziny PIC16F176x. O wyjątkowości tego układu nie decyduje ani rdzeń o dużej wydajności, ani typowe zasoby, takie jak wielkość pamięci programu, czy pamięci RAM. Zamiast tego producent wyposażył mikrokontroler w spory zestaw układów peryferyjnych, w tym w kilka bardzo nietypowych.

Rysunek 1. Układy peryferyjne mikrokontrolera PIC16F1769

Zależnie od typu mikrokontrolera z rodziny PIV16F176x pamięć programu może mieć wielkość do 14 kB, a pamięć danych do 1 kB. Układ jest wyposażony w standardowe cyfrowe bloki funkcjonalne:

  • Porty wejścia/wyjścia.
  • Moduł CCP (Capture Compare PWM).
  • Zaawansowany moduł UART (EUART) z detekcją prędkości transmisji i wybudzaniu z uśpienia po wykryciu bitu startu.
  • Interfejsy komunikacyjne I2C i SPI.

Oprócz nich, mikrokontroler ma typowe bloki analogowe:

  • 10-bitowy przetwornik A/C o maksymalnie 12 kanałach pomiarowych, z możliwością konwersji w stanie uśpienia mikrokontrolera.
  • Programowany układ napięcia odniesienia:1,024 V; 2,048 V i 4,094 V.
  • Dwa wzmacniacze operacyjne.
  • Cztery komparatory analogowe.
  • Dwa przetworniki C/A pracujące z rozdzielczością 5-bitową.
  • Dwa przetworniki A/C z rozdzielczością 10-bitową.

Schemat blokowy mikrokontrolera PIC16F1769 zamieszczono na rysunku 1.

Takie same lub podobne peryferia nie są niczym nadzwyczajnym i można je znaleźć w mikrokontrolerach wielu producentów. O wyjątkowości PIC16F176x decydują takie bloki funkcjonalne, jak: Ramp Generator, Slope Compensation, Zero Cross Detect, Data Signal Modulator i Complementary Output Generator - trudno znaleźć je u konkurencji.

W układach o większej liczbie wyprowadzeń (na przykład PIC16F1769) najważniejsze układy peryferyjne są powielone, aby można było zestawić dwa niezależne tory zamkniętej pętli kontrolnej do sterowania układami zasilaczy impulsowych.

COG - Complementary Output Generator

Rysunek 2. COG sterujący mostkiem H

Głównym zadaniem COG jest konwersja standardowego sygnału PWM na podwójny sygnał komplementarny PWM, który następnie jest wykorzystywany do sterowania np. mostkami typu H (rysunek 2). Samo wytwarzanie sygnału komplementarnego nie jest czymś nadzwyczajnym - moduł COG potrafi o wiele więcej. Można zdefiniować dwa oddzielne zdarzenie wejściowe (input event).

Stany na wejściach zdarzeń są konwertowane na standardowy przebieg PWM lub komplementarny przebieg PWM. Częstotliwość tego przebiegu jest określana przez narastające zbocze na jednym z wejść input event, a współczynnik wypełnienia przez zbocze opadające na drugim z wejść.

Oczywiście możliwe jest dodawanie programowanego opóźnienia Dead band delay zapobiegającego krótkotrwałemu włączaniu się kluczy w obu gałęziach mostka w czasie przełączania kierunku przewodzenia. Można też regulować przesunięcie fazowe przebiegów PWM.

Moduł COG jest bardzo rozbudowany i ma kilka trybów pracy. Dokładne dane można znaleźć w dokumentacji mikrokontrolera.

PRG - Programmable Ramp Generator

Rysunek 3. Schemat blokowy implementacji zasilacza impulsowego

Bardzo rozbudowanym modułem jest programowany generator PRG przebiegu narastającego (piłokształtnego, lub trójkątnego) z kompensacją czasu narastania. PRG może pracować jednym z trzech trybów:

  • Z opadającym napięciem.
  • Z narastającym napięciem.
  • Zmiennym, z opadającym i narastającym napięciem.

Wewnętrzny kondensator generatora jest ładowany lub rozładowywany zależnie od stanu wejść Set_rising i Set_falling. W trybie z napięciem narastającym, wewnętrzny kondensator jest dołączony z jednej strony do źródła napięciowego, a z drugiej strony do wewnętrznego źródła prądowego.

Źródło prądowe ładuje kondensator z programowaną prędkością. Napięcie na kondensatorze jest dodawane mikrokontroler do napięcia źródła napięciowego wytwarzając liniowe narastanie napięcia z zadaną (programowaną) prędkością narastania. Gdy zostanie uaktywnione wejście Set_falling, kondensator jest rozładowywany. Kolejny cykl ładowania rozpoczyna się, gdy wejście Set_rising stanie się aktywne.

Rysunek 4. Uproszczony schemat blokowy modułu DSM

Źródła sygnałów Set_falling i Set_rising są programowane i mogą być nimi wyjścia sygnałów PWM z wewnętrznych modułów PWM, sygnały synchronizacji lub wygnały wyjściowe modułów CCP.

Mając do dyspozycji moduł COG i moduł PRG można zbudować tor pętli sterowania zasilaczem impulsowym ze stabilizacją napięcia wyjściowego i zabezpieczeniem prądowym, której schemat blokowy pokazano na rysunku 3.

Wartość ustawionego prądu i napięcia jest podawana na wejście odwracające wbudowanego w mikrokontroler wzmacniacza operacyjnego. Wejście nieodwracające tego wzmacniacza jest połączone z wyjściem przetwornika C/A (napięcie referencyjne).

Sygnał błędu steruje pracą generatora PRG. Napięcie piłokształtne z wyjścia PRG jest porównywane w komparatorze z chwilową wartością pobieranego prądu. Sygnał z wyjścia komparatora zmienia współczynnik wypełnienia przebiegu PWM generatora COG sterującego tranzystorem kluczem przetwornicy impulsowej.

Mikrokontrolery z rodziny PIC16F176x, na przykład - PIC16F1769, mają zasoby umożliwiające zbudowanie dwóch niezależnych torów Closed Loop Control.

DSM - Data Signal Modulator

Rysunek 5. Zasilacz diod LED dużej mocy

Kolejny nietypowy moduł peryferyjny to Data Signal Modulator - DSM. Umożliwia on miksowanie dwóch sygnałów cyfrowych. Przez analogię do modulacji fal radiowych, jeden z sygnałów o większej częstotliwości jest nazywany sygnałem nośnej (carrier signal), a drugi sygnałem modulującym (modulator signal).

Źródłem nośnej może być wybierany programowo sygnał wyjściowy PWM, wyjście z modułu CCP lub wyjście wbudowanego układu CLC (Configurable Logic Cell). Podobnie jest w przypadku sygnałów modulujących. Źródłem sygnału modulującego są również wybierane programowo sygnały PWM, CCP i CCP oraz sygnał z wyjścia komparatora.

Dostępne są modulacje typu FSK (Frequency Shift Keying), PSK (Phase Shift Keying) i OOK (On-Off Keying). Dodatkowo moduł może wykonywać synchronizację nośnej (Carrier Synchronization). Możliwe jest też programowe wybranie polaryzacji nośnej i polaryzacji zmodulowanego sygnału wyjściowego. Uproszczony schemat blokowy modułu DSM pokazano na rysunku 4.

Modułu DSM można użyć do zbudowania specjalizowanej przetwornicy zasilającej diody LED o dużej mocy. Uproszczony schemat takiego układu zasilania pokazano na rysunku 5. Sygnał PWM o rozdzielczości 10-bitowej jest podawany na wejście COG.

Sygnał wyjściowy z modułu COG jest modulowany przez sygnał PWM o rozdzielczości 16-bitowej. Sygnał modulujący określa, z jaką jasnością będzie świeciła dioda LED zasilana z wyjścia zasilacza. Przebiegi sygnału nośnej i sygnału modulującego pokazano na rysunku 6. Użycie PWM o rozdzielczości 16-bitowej umożliwia płynną regulację świecenia zasilanej diody LED.

CLC - Configurable Logic Cell

Rysunek 6. Modulacja sygnału sterującego przetwornicą

Moduł CLC programowalnym modułem logicznym. Każda komórka logiczna ma do 32 wejść. Tymi wejściami mogą być: wyprowadzenia mikrokontrolera, wewnętrzne wygnały zegarowe, sygnały układów peryferyjnych i bity rejestrów SFR.

Dostępne są funkcje logiczne: AND, NAND, AND-OR, AND-OR-INVERT, OR-XOR, OR-XNOR, przerzutnik RS, przerzutnik D z wejściami ustawiania i zerowania, przerzutnik typu zatrzask z wejściami ustawiania i zerowania, przerzutnik JK z wejściem zerującym.

Programowanie obwodów logicznych jest wykonywane poprzez zapisywanie odpowiednich rejestrów konfiguracyjnych mikrokontrolera. Ręczne konfigurowanie takiej logiki jest bardzo żmudne i trudno się taką konfigurację zmienia lub poprawia błędy.

Żeby moduł CLC mógł być w pełni wykorzystany, Microchip dostarcza wtyczkę (plug-in) o nazwie Code Configurator przeznaczoną do MPLAB X między innymi o możliwości przystępnego konfigurowania układów programowalnych wbudowanych w mikrokontrolery PIC.

Oprócz CLC, wtyczka Code Configurator umożliwia konfigurowanie również innych bloków funkcjonalnych na przykład: COG, komparatorów i wzmacniaczy operacyjnych wbudowanych w mikrokontroler, układu CCP, przetwornika C/A i innych. Na rysunku 7 pokazano otwarte okna Code Configuratora z podczas wykonywania konfiguracji modułu CLC.

O zaletach logiki programowanej nie trzeba przekonywać. Stosowanie układów kombinacyjnych i przerzutników pozwala, jeżeli to konieczne, na wykonywanie operacji logicznych o wiele szybciej, niż mógłby to wykonać mikrokontroler.

ZCD - Zero Cross Detector

Rysunek 7. Okna programu Code Configurator

Moduł ZCD wykrywa przejście przez potencjał zerowy napięcia przemiennego. Napięcie wyzwalające detektor przejścia jest równe 0,75 V. Jest ono podawane na wejście mikrokontrolera przez rezystor szeregowy. Uproszczony schemat modułu ZCD pokazano na rysunku 8.

Wykrycie przejścia przez zero ustawia flagę przerwania ZCDIF i jeżeli przerwanie jest odblokowane, to zostanie zgłoszone i obsłużone. Detekcja przejścia przez zero może być na przykład wykorzystana do sterowania mocą przez układy tyrystorowe, ale również do mierzenia okresu przebiegu prądu przemiennego.

Podsumowanie

Rysunek 8. Uproszczony schemat modułu ZCD

Przedstawiłem tu z konieczności bardzo ogólny opis kilku wyjątkowych bloków funkcjonalnych mikrokontrolerów z rodziny PIC16F176x. Dzięki nim pozornie "niepasujący" do współczesnych urządzeń mikrokontroler staje się układem, który może wykonywać niektóre zadania przeznaczone dla bardzo wydajnych mikrokontrolerów z procesorami DSP lub dla specjalizowanych układów scalonych.

Nie jest to też układ niszowy przeznaczony tylko do budowy i sterowania impulsowych układów zasilania. Wyposażenie w sporą liczbę klasycznych układów peryferyjnych oraz pamięć programu o pojemności do 8 kB pozwalają na użycie w klasycznych układach sterowania.

Microchip tradycyjnie wspiera swoje produkty poprzez dostarczanie bezpłatnych programów narzędziowych. Do dyspozycji użytkownika oddano bezpłatny pakiet IDE MPLAB X, plug-in Code Configurator i bezpłatny kompilator języka C MPLAB XC8 (z ograniczeniami optymalizacji kodu). To wszystko wskazuje, że PIC16F176x jest skazany na sukces.

Tomasz Jabłoński, EP

Artykuł ukazał się w
Maj 2015
DO POBRANIA
Pobierz PDF Download icon
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów