Skocz do zawartości
Komentator

Kurs STM32 F1 HAL - #6 - pomiar napięcia, przetwornik ADC

Pomocna odpowiedź

html_mig_img
Tym razem sprawdzimy działanie przetwornika analogowo-cyfrowego. Dzięki niemu będziemy mogli zmierzyć napięcie na wejściu układu.Podstawowa wiedza o ADC przydaje się prawie zawsze podczas tworzenia nowych projektów. Peryferia te używane są w większości systemów, które np. mają czujniki analogowe.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Udostępnij ten post


Link to post
Share on other sites

Mam problem z pomiarem napięcia referencyjnego. Zamiast 1.2V otrzymuję 0.052V (ADC=64). Ktoś wie z czego może to wynikać?

Udostępnij ten post


Link to post
Share on other sites

@pietraszkowaty, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

36 minut temu, pietraszkowaty napisał:

Mam problem z pomiarem napięcia referencyjnego. Zamiast 1.2V otrzymuję 0.052V (ADC=64). Ktoś wie z czego może to wynikać?

Jak widzisz od momenty publikacji tej części kursu nikt nie miał takiego problemu, więc jest duża szansa, że to coś po Twojej stronie. Zacznijmy od najważniejszego: czy korzystasz z tej samej płytki, która jest używana w kursie?

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Tak, korzystam z rekomendowanego zestawu. Taki sam problem występuje przy każdym pomiarze.

Aktualizacja:

Problem rozwiązany. Wystarczyło odłączyć płytkę od zasilania i ponownie ją podłączyć 😉

Edytowano przez pietraszkowaty
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@pietraszkowaty, dziękuję za podzielenie się rozwiązaniem!

Na pewno pomoże to w przyszłości jakiejś innej osobie, która trafi tu podczas szukania rozwiązania swojego problemu 🙂 

Udostępnij ten post


Link to post
Share on other sites

Witam,

Również miałem podobny odczyt ADC=65. Debugger pokazał że nie udało się zainicjować przetwornika (HAL_ADC_Init(&adc); zwracał wartość HAL_ERROR).

Sprawdziłem kod źródłowy, a nawet zrobiłem copy/paste ze strony kursu. Wciąż ten sam rezultat. Ostatecznie wygenerowałem kod inicjacji przetwornika z CubeMX i niespodzianka... wszystkie parametry zainicjowane w taki sam sposób. Była jednak mała różnica która rzuciła się w oczy. Otóż w kodzie generowanym przez CubeMX wszystkie zmienne konfiguracyjne (np ADC_HandleTypeDef) są zerowane podczas deklaracji. Dodanie "= {0}" do deklaracji ADC_HandleTypeDef rozwiązało problem. Wygląda na to że przy deklaracji zmiennej wcale nie ma gwarancji że wszystkie jej wartości będą wynosić 0. Warto więc o to zadbać.

Poza tym bardzo fajny kurs.

Pozdrawiam, Marek.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

@MR1979 dzięki za sygnał - sprawdzimy temat 🙂

Udostępnij ten post


Link to post
Share on other sites

@MR1979

Kolego, dziękuję bardzo za tego posta - miałem dokładnie taką samą sytuację i wyzerowanie adc pomogło.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Witam.

Ja spotkałem się przy temacie przetworników ADC z innym problemem.

W przkładach z kursu gdy jest użyta instrukcja "printf("Adc = %ld (%.3fV)\r\n", value, value * 3.3f / 4096.0f);" pojawia się błąd:

The float formatting support (-u _printf_float) is not enabled from linker flags

System opercyjny - Windows 10 PRO Czy to jest problem ECLIPSE? W Dev - C++ ta komenda działa prawidłowo. W Windows 7 Pro i ECLIPSE też chyba było prawidłowe zachowanie się tej instrukcji.

Pozdrawiam
Tadeusz

Udostępnij ten post


Link to post
Share on other sites

@Leonardtb czy dopisałeś do flag to co jest podpowiedziane w cytowanym komunikacie? Tzn. w ustawienia linkera dodałeś flagę "-u _printf_float"? Pytam, bo nie mam pewności czy po prostu tego nie zrobiłeś, czy błąd występuje nawet po dopisaniu tego ustawienia? 😉

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Witam,

Nie wiem czy jest dopisane bo nie wiem jak sprawdzić czy ta flaga jest dopisana  w tym systemie.

W ATOLLIC True Studio w belce z narzędziami jest pięć młotków. Czwarty młotek to Build Setting. Również w menu głównym po kliknięciu Project pojawia się menu rozwijane i tam też jest Build Setting.

Klikając  dalej    Setting -> Tool Setting -> C Linker pojawi się na ekranie pozycja Command i tam jest ta flaga.

W wersji kursowej na ekranie pojawia się tylko jeden młotek i przy nim jest menu rozwijane składające się z dwóch pozycji Debug i Release.

Również w menu głównym w "Project" po rozwinięciu menu  nie ma pozycji " Build Setting". Pozycja Build Working Set  jest nieaktywna

Podejrzewałem wadliwą instalację więc ponownie pobrałem program i zainstalowałem. Nic się nie zmieniło. Dalej ten błąd występuje.

 

 Tadeusz

 

 

 

 

 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...