LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

Obsługa przetwornika ADC w mikrokontrolerach STM32

Zestaw promocyjny z STM32

W prezentowanym projekcie pokazano wykorzystanie 12-bitowego przetwornika analogowo-cyfrowego (ADC) wbudowanego w mikrokontroler STM32F103. W projekcie jest mierzone napięcie na wyprowadzeniu PC4 mikrokontrolera STM32 zamontowanego w zestawie ZL27ARM. Napięcie to można zmieniać za pomocy zamontowanego potencjometru. Zmierzone napięcie jest prezentowane na wyświetlaczu LCD dołączonego modułu KAmodLCD1 jako odczytana wartość rejestru przetwornika ADC mikrokontrolera, obliczona wartość napięcia oraz bargraf. Dodatkowo wartość 8 najbardziej znaczących bitów jest przedstawiana na diodach LED zestawu ZL27ARM.

Projekty referencyjne dla ZL27ARM

Portal www.stm32.eu przygotował projekty referencyjne dla mikrokontrolerów z rodziny STM32, które zostały opublikowane tu. Są one dostępne bezpłatnie, konieczne jest tylko zarejestrowanie się jako użytkownik portalu.

Na rysunku 1 przedstawiono sposób dołączenia modułu wyświetlacza do zestawu ZL27ARM. Połączenie wygodnie jest wykonać za pomocą kolorowych przewodów CAB_A pokazanych na rysunku 2. Na rysunku 3 pokazano wyświetlacz LCD podczas pracy programu.

 

Rys. 1. Sposób dołączenia wyświetlacza do mikrokontrolera STM32

Rys. 1. Sposób dołączenia wyświetlacza do mikrokontrolera STM32

 

 

Rys. 2. Kolorowe przewody CAB_A ułatwiające wykonanie połączeń

Rys. 2. Kolorowe przewody CAB_A ułatwiające wykonanie połączeń

 

 

Rys. 3. Widok wyświetlacza podczas pracy programu

Rys. 3. Widok wyświetlacza podczas pracy programu

 

Rzadko jest wymagane, aby pomiar napięcia odbywał się w cyklu ciągłym. Przedstawiony program wykonuje pomiar w momencie ustawienia odpowiedniego bitu w czasie obsługi przerwania SysTick. Na listingu 1 przedstawiono funkcję main programu.

List. 1

int main(void)
{
    Configuration_RCC();
    Configuration_GPIO();
    Configuration_Interrupts();
    Configuration_ADC();

    //inicjalizacja i obsługa wyświetlacza
    PCD8544_INIT();
    PCD8544_LCDClear();
    PCD8544_LCDWriteText("Voltage", 21, 0);
    PCD8544_LCDWrite();

    while(1)
    {
        //
        ADC1Reg = ADC_GetConversionValue(ADC1) & 0xFF0;
        ADC1Val = (ADC1Reg * 3.3 / 4096);

        //przekształcenie wartosci ADC1Val do postaci umożliwiającej prezentację na wywietlaczu
        temp[0] = (uint8_t)(ADC1Val / 1.0);
        temp[1] = (uint8_t)((ADC1Val - temp[0]) / 0.1) ;
        temp[2] = (uint8_t)((ADC1Val - temp[0] - (temp[1] * 0.1))/ 0.01);

        //prezentacja napięcia na pinie PC4 na wywietlaczu
        PCD8544_LCDWriteSignDouble(temp[0] + 0x30, 12, 2);
        PCD8544_LCDWriteSignDouble('.', 24, 2);
        PCD8544_LCDWriteSignDouble(temp[1] + 0x30, 36, 2);
        PCD8544_LCDWriteSignDouble(temp[2] + 0x30, 48, 2);
        PCD8544_LCDWriteSignDouble('V', 60, 2);

        //wyświetlenie wartości heksadecymalnej zmiennej ADC1Val
        PCD8544_LCDWriteSign('0', 27, 1);
        PCD8544_LCDWriteSign('x', 33, 1);
        PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x1000 / 0x100), 39, 1);
        PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x100 / 0x10), 45, 1);
        PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x10 / 0x1), 51, 1);

        //wyświetlenie bargrafu
        PCD8544_LCDBargraph(ADC1Reg & 0xFF0,0xFF0,5);

        //wyslanie danych na wyświetlacz
        PCD8544_LCDWrite();

        //wyzerowanie 8 najstarszych bitów GPIOB
        GPIOB->BSRR = 0xFF000000;
        //ustawienie 8 najstarszych bitów GPIOB
        GPIOB->BSRR = (ADC1Reg << 4);
    }
}

Do pobrania

Polski portal branżowy dedykowany zagadnieniom elektroniki. Przeznaczony jest dla inżynierów i konstruktorów, projektantów hardware i programistów oraz dla studentów uczelni technicznych i miłośników elektroniki. Zaglądają tu właściciele startupów, dyrektorzy działów R&D, zarządzający średniego szczebla i prezesi dużych przedsiębiorstw. Oprócz artykułów technicznych, czytelnik znajdzie tu porady i pełne kursy przedmiotowe, informacje o trendach w elektronice, a także oferty pracy. Przeczyta wywiady, przejrzy aktualności z branży w kraju i na świecie oraz zadeklaruje swój udział w wydarzeniach, szkoleniach i konferencjach. Mikrokontroler.pl pełni również rolę patrona medialnego imprez targowych, konkursów, hackathonów i seminariów. Zapraszamy do współpracy!