ADC INJECTED Wrong values reading

Thread Starter

majd-ghadab

Joined Dec 25, 2012
23
Hello everyone
i have a question, i am using 3 Ranks ADC injected mode for reading potential resistors.. with stm32f103c8
the problem is when ever i change one value it affects the other channel reading.

example

channel 1 reading is 1.3v

channel 2 reading is 1.5v

channel 3 reading is 1.6v

changing only resistor value on channel 1 to 2.9v makes the following:

channel 1 reading is 2.9v

channel 2 reading is 1.7v

channel 3 reading is 1.7v

why when i change one value the others are affected !! or the second one affecting the third !

code is :

Code:
while (1)
{
HAL_ADCEx_InjectedStart(&hadc1);
HAL_ADC_PollForConversion(&hadc1,100);
u[0]=((float)HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_RANK_1))*3.0/4096.0;
u[1]=((float)HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_RANK_2))*3.0/4096.0;
u[2]=((float)HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_RANK_3))*3.0/4096.0;
HAL_ADCEx_InjectedStop(&hadc1);
sprintf(str, "%.2fv %.2fv %.2fv ", u[0], u[1], u[2]);
LCD_SetPos(0,0);
LCD_String(str);
HAL_Delay(200);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

}
 

Attachments

Last edited by a moderator:

danadak

Joined Mar 10, 2018
4,057
Are the other channels not being measured floating as inputs ?

What is the approximate Z of each input channel connected to its
measurement point ? If high you getting C coupling across channels
from mux ?

Regards, Dana.
 

RichardO

Joined May 4, 2013
2,270
It can take a while for an A/D channel to turn off. You might try a delay from the time you switch channels to when you start the A/D conversion.
 
Top