Cyfrowa waga elektroniczna na STM32 z sensorem siły FSS1500NS

Przedstawiamy projekt aplikacji opracowanej dla zestawu DevKit407 (z STM32F4DISCOVERY) z wyświetlaczem TFT. Wykorzystuje ona dwa przetworniki A/C skonfigurowane do pracy jednoczesnej przy pomiarze napięcia różnicowego na wyjściu czujnika FSS1500NS, przelicza tę wartość na masę i wyświetla na ekranie TFT.

Fot. 1. Wygląd układu testowowego

Fot. 1. Wygląd układu testowowego

Czujnik FSS1500NS jest zbudowany z czterech elementów rezystancyjnych o takiej samej wartości i tworzących dwa dzielniki napięcia na wejścia których jest podawane napięcie zasilające z zakresu 3…6 V (rysunek 2). W przypadku gdy na czujnik nie działa żadna siła to na wyjściu obu dzielników wartości napięć są takie same. Natomiast przyłożenie siły do elementu czułego (mała srebrna kulka) skutkuje zmianą wartości tych rezystancji, a zatem i napięć na wyjściu dzielników w stronę wyższych (+Vout) i niższych wartości (–Vout). Napięcie różnicowe między tymi wyprowadzeniami czujnika pozwala określić wartość przyłożonej siły, a dzięki informacji zawartej w dokumentacji można wartość tego napięcia przeliczać od razu na masę obiektu pomiarowego (masa jest zawarta w wielkości ciężaru/siły). Deklarowany przez producenta zakres pomiarowy czujnika wynosi od 0 do 1500 gramów, a napięcie różnicowe przyjmuje wartości od 0 do 180 mV (wartość średnia dla napięcia zasilania 5 V). Stąd też aby wyznaczyć masę należy wykorzystać wzór:

wz1

 Rys. 2. Budowa wewnętrzna czujnika siły FSS1500NS

Rys. 2. Budowa wewnętrzna czujnika siły FSS1500NS

 

Ponieważ mikrokontroler STM32F407VG zamontowany na płytce zestawu STM32F4DISCOVERY nie posiada przetworników z wejściem różnicowym to zostały wykorzystane dwa przetworniki (ADC1 i ADC2) skonfigurowane do pracy jednoczesnej (rysunek 3). Pierwszy przetwornik mierzy napięcie na wyjściu dodatnim czujnika, a drugi na ujemnym. Różnica wartości tych napięć służy do obliczenia przyłożonej do czujnika masy.

Rys. 3. Idea realizacji pomiaru napięcia różnicowego

Rys. 3. Idea realizacji pomiaru napięcia różnicowego

 

Przy podłączaniu czujnika do mikrokontrolera należy określić położenie pierwszego pinu i jest to możliwe tylko przez odnalezienie napisu na jego bocznej ściance (rysunek 4).

Rys. 4. Opis wyprowadzeń czujnika FSS1500NS

Rys. 4. Opis wyprowadzeń czujnika FSS1500NS

 

Schemat elektryczny przedstawiający sposób podłączenia wyświetlacza TFT oraz czujnika masy pokazano na rysunkach 5 i 6. Czujnik jest zasilany napięciem 5 V, a jego wyjścia są podłączone do wyprowadzeń PB0 (+Vout) i PB1 (–Vout) mikrokontrolera.

Rys. 5. Schemat elektryczny podłączenia czujnika siły do mikrokontrolera

Rys. 5. Schemat elektryczny podłączenia czujnika siły do mikrokontrolera

Rys. 6. Schemat elektryczny podłączenia wyświetlacza TFT do mikrokontrolera

Rys. 6. Schemat elektryczny podłączenia wyświetlacza TFT do mikrokontrolera

 

W projekcie wykorzystano pliki źródłowe obsługi peryferii dostępne w archiwum o nazwie „STM32F4DISCOVERY board firmware package” na stronie producenta mikrokontrolera w zakładce Design support. Oprócz tego wykorzystano pliki źródłowe obsługi wyświetlacza TFT znajdujące się na płytce CD dołączonej do zestawu DevKit407 (stm32f4_discovery_lcd i fonts). Strukturę całego projektu przedstawiono na rysunku 7.

Rys. 7. Struktura projektu

Rys. 7. Struktura projektu

 

Konfigurację parametrów kompilatora przedstawiono na rysunkach 7 i 8. W projekcie zostały zdefiniowane dwie stałe oraz dodane ścieżki dostępu do plików nagłówkowych. Oprócz tego w zakładce Debug i Utilities wybrano ST-Link (Deprecated Version).

Rys. 8. Konfiguracja w zakładce C/C++

Rys. 8. Konfiguracja w zakładce C/C++

 

Rys. 9. Ścieżki dostępu do plików nagłówkowych

Rys. 9. Ścieżki dostępu do plików nagłówkowych

 

Na początku działania programu jest wywoływana funkcja RCC_Config(), która powoduje włączenie sygnałów taktujących układy peryferii i konfiguruje licznik systemowy SysTick:

Konfiguracja wyprowadzeń do których podłączono wyjścia (+Vout) i (–Vout) czujnika:

Fot. 10. Efekt działania programu

Fot. 10. Efekt działania programu

 

Przetworniki A/C są skonfigurowane do pracy z kontrolerem DMA, który w danym przypadku zbiera wartości 20 próbek i zapisuje je do odpowiedniej tablicy (ADC1Val[] lub ADC2Val[]). Po wykonaniu każdej serii takich pomiarów z tych 20 wartości jest wyznaczana wartość średnia (w funkcji main(), pętla while). Ma to na celu zmniejszenie skoków wartości jakie występują po każdym wykonanym pomiarze (ustawienia różnych czasów próbkowania nie wpływają znacząco na efekt). Konfiguracja przetworników A/C wygląda następująco:

Końcowa funkcja main() wygląda następująco:

Jan Szemiet

Do pobrania

Autor: