Pierwsze kroki z FPGA (7). Termometr z analogowym sensorem i wyświetlaczem 7-segmentowym

Pierwsze kroki z FPGA (7). Termometr z analogowym sensorem i wyświetlaczem 7-segmentowym
Pobierz PDF Download icon
Przedstawiamy kolejną kompletną aplikację MAXimatora, w której spełnia on (a dokładniej ? zastosowany w MAXimatorze układ FPGA) cyfrowego termometru, wyświetlającego temperaturę otoczenia zmierzoną za pomocą sensora STLM20 na 4-cyfrowym, multipleksowanym wyświetlaczu LED. W projekcie zastosowano m.in. wbudowany w FPGA MAX10 przetwornik ADC, który służy do konwersji sygnału analogowego do postaci cyfrowej.

Działanie projektu zaimplementowanego w FPGA najlepiej wyjaśni schemat blokowy pokazany na rysunku 1. Na wejście jednego z kanałów ADC wbudowanego w FPGA jest podawany sygnał napięciowy z wyjścia sensora STLM20. Przetwornik przetwarza napięcie na 12-bitową wartość cyfrową, następnie za pomocą techniki tablicowania (Lookup Table) odczytywana wartość jest konwertowana na wartość wyrażoną w stopniach Celsjusza i wyświetlana na multipleksowanym wyświetlaczu 7-segmentowym. Wyświetlacz LED oraz analogowy sensor temperatury znajdują się na ekspanderze (shieldzie – fotografia 2), który wraz z programatorem JTAG jest jednym z elementów wyposażenia promocyjnej wersji MAXimatora.

W tabeli 1 zestawiono wyprowadzenia FPGA z zestawu MAXimator, które zostały wykorzystane w prezentowanym projekcie.

Blok my_adc przekazuje cyfrową wartość odpowiadającą zmierzonej temperaturze do bloku ROM, który przelicza ją na wartość w skali Celsjusza zapisaną w kodzie BCD. Moduł mux wybiera pojedynczą cyfrę z kodu BCD przekazuje ją do bloku bcd2seg, który zapisuje cyfrę w notacji 7-segmentowej. Moduł counter opóźnia multipleksowanie oraz służy do wybierania liczb do wyświetlenia. Moduł demux, na podstawie wartości otrzymanej z bloku counter wybiera odpowiedni wyświetlacz, na którym wyświetlona zostaje cyfra.

Funkcje poszczególnych bloków i ich sygnały są następujące:

- my_adc. Moduł przetwarza wartość analogową z czujnika temperatury na wartość cyfrową. Wykorzystano w nim komponent ADC wygenerowany przy pomocy narzędzia Qsys programu Quartus Prime Lite. W module można ustawić, który kanał ma być wejściem analogowym przetwornika. W projekcie jest to kanał nr 15 – ADC1_15, co wynika ze sposobu podłączenia sensora STLM20 do wyprowadzeń FPGA. Wejścia i wyjścia tego modułu opisano w tabeli 2.
- ROM. Jest to moduł pamięci ROM, zainicjalizowanej ręcznie utworzonym plikiem LUT.mif. Moduł odpowiada za przetworzenie wartości otrzymanej z czujnika temperatury na wartość w skali Celsjusza w kodzie BCD. Przeliczenie jest zrealizowane za pomocą techniki tablicowania (Lookup Table). Moduł został wygenerowany przy pomocy IP Core’a ROM: 1-PORT dostępnego w programie Quartus Prime Lite. Ze względu na znaczne wahania wartości odczytanej z czujnika temperatury w pliku LUT.mif nie została zamieszczona część dziesiętna wartości przedstawiającej temperaturę (dla każdej wartości część dziesiętna jest równa zero). Wejścia i wyjścia modułu ROM opisano w tabeli 3.
- mux. Jest to multiplekser, który wybiera z kodu BCD pojedynczą cyfrę do wyświetlenia. O wyborze cyfry decyduje wejściowy sygnał sel. Wejścia i wyjścia tego modułu opisano w tabeli 4.
- bcd2seg. Moduł otrzymaną cyfrę w kodzie BCD zapisuje w notacji 7-segmentowej. Wejścia i wyjścia tego modułu opisano w tabeli 5.
- counter. Licznik n-bitowy. Ilość bitów ustawia się w parametrze bits. Funkcją licznika jest opóźnienie multipleksowania oraz wybór cyfry do wyświetlenia. Wejścia i wyjścia tego modułu opisano w tabeli 6.
- demux. Demultiplekser wybiera cyfrę do wyświetlenia, dodatkowo włącza kropkę oddzielającą część dziesiętną wartość temperatury. Wejścia i wyjścia tego modułu opisano w tabeli 7.

Prezentowany projekt jest dość prosty do wykonania, różni się od typowych implementacji realizowanych w FPGA przede wszystkim faktem wykorzystania wbudowanego w układ przetwornika A/C (wyposażenie rzadko spotykane w FPGA). Na fotografii 3 przedstawiono wyniki kilku przykładowych pomiarów temperatury wykonanych za pomocą MAXimatora i zastosowanego w shieldzie sensora temperatury STLM20.

Przykład został zaimplementowany w zestawie MAXimator za pomocą bezpłatnego narzędzia Quartus Prime Lite (do pobrania na stronie www.altera.com), komplet plików jest dostępny do pobrania na stronie maximator-fpga.org.

Przemysław Sala

 

Więcej informacji:

Kompletny projekt dla programu Quartus Prime Lite wraz z plikami źródłowymi jest dostępny do pobrania na stronie www.maximator-fpga.org

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

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 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 czerwiec 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