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

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio kwiecień - maj 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów