Posiadam zestaw ewaluacyjny STM32L0538 Discovery. Mam problem z pomiarem napięcia z prostego czujnika LM35. Pomiaru dokonuję na pinie PA4 który nie jest zajmowany przez inne układy na płytce.
Program na którym testuję pomiar napięcia:
Kod: Zaznacz cały
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC_Init();
/* USER CODE BEGIN 2 */
HAL_ADC_Start(&hadc);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(HAL_ADC_PollForConversion(&hadc, 100) == HAL_OK)
{
volatile uint32_t reading = HAL_ADC_GetValue(&hadc); // volatile abym mógł podglądnąć wartości zmiennych w przy użyciu profilu debug
volatile double voltage = reading * (3.3 / 4096);
// Tutaj BREAKPOINT jest wstawiony
HAL_Delay(1000);
HAL_ADC_Start(&hadc);
}
}
Wartości napięcia podglądam przy użyciu profilu debug:
W momencie robienia tego zrzutu ekranu miernik cyfrowy wskazał wartość 257mV. Moje testy:
Nie ma znaczenia czy miernik cyfrowy jest wpięty.
Na czas robienia zdjęcia został odłączony kondensator elektrolityczny 10uF który znajduję się zaraz przy nóżkach zasilających LM35DZ.
Kiedy podaję napięcie z zewnętrznego zasilacza pomiary różnią się w niewielkim - stopniu są dla mnie akceptowalne.
Czy jest mi ktoś podpowiedzieć gdzie robię błąd?
Albo dać jakieś wskazówki co mogę jeszcze sprawdzić?
Od razu zaznaczam, że robiłem buforowanie sygnału przy użyciu wzmacniacza operacyjnego LM324 i rezultaty były takie same.