Нелинейность масштабного коэффициента SDADC на МК stm32f373

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Дмитрий Бо
Родился
Сообщения: 4
Зарегистрирован: Пт май 31, 2024 13:13:41

Нелинейность масштабного коэффициента SDADC на МК stm32f373

Сообщение Дмитрий Бо »

Добрый день!
Изучаю сигма дельта АЦП на МК stm32f373.
Настройки: 6МГц,режим single-ended zero reference, continuous mode, vddsd=3.3В, провожу калибровку, инициализацию итд. Для исследования АЦП использую калибратор, напряжение выставляю от 100мВ до 3В(с шагом 100мВ),делаю замеры по 30 сек.
Наблюдается значительная нелинейность масштабного коэффициента(СРЗНАЧ(кодАЦП)/Uкалибратора), особенно в районе нуля вольт(около 2%).
Кто нибудь сталкивался с подобным явлением?
Изображение
Реклама
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 954
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение GARMIN »

Допустимый диапазон входного напряжения соблюдается?
Встроенные операционники не R2R.
Реклама
Дмитрий Бо
Родился
Сообщения: 4
Зарегистрирован: Пт май 31, 2024 13:13:41

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение Дмитрий Бо »

[uquote="GARMIN",url="/forum/viewtopic.php?p=4589207#p4589207"]Допустимый диапазон входного напряжения соблюдается?
Встроенные операционники не R2R.[/uquote]
В режиме single-ended zero reference диапазон входных напряжений согласно мануалу от Vrefsd-(у меня 0В)до Vrefsd+/gain(у меня 3.3В, gain=1).
Насчёт операционников - отступил от края диапазона 100мВ снизу и 300мВ сверху диапазона.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение jcxz »

[uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4586819#p4586819"]Наблюдается значительная нелинейность масштабного коэффициента(СРЗНАЧ(кодАЦП)/Uкалибратора), особенно в районе нуля вольт(около 2%).
Кто нибудь сталкивался с подобным явлением?[/uquote]Очень похоже на то, что выставили слишком малое значение времени предвыборки для АЦП. Не соответствующее сопротивлению измеряемой цепи. Вот и не успевает ёмкость заряжаться до нужного напряжения. Для теста попробуйте поставить максимальный sampling time.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 954
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение GARMIN »

[uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4589503#p4589503"]Насчёт операционников - отступил от края диапазона 100мВ снизу и 300мВ сверху диапазона.[/uquote]
И как? Есть результат?
Реклама
Дмитрий Бо
Родился
Сообщения: 4
Зарегистрирован: Пт май 31, 2024 13:13:41

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение Дмитрий Бо »

[uquote="GARMIN",url="/forum/viewtopic.php?p=4590267#p4590267"][uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4589503#p4589503"]Насчёт операционников - отступил от края диапазона 100мВ снизу и 300мВ сверху диапазона.[/uquote]
И как? Есть результат?[/uquote]

Пока работаем в линейной области диапазона, жаль конечно терять больше трети точности на ровном месте.

Добавлено after 38 minutes 46 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=4589996#p4589996"][uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4586819#p4586819"]Наблюдается значительная нелинейность масштабного коэффициента(СРЗНАЧ(кодАЦП)/Uкалибратора), особенно в районе нуля вольт(около 2%).
Кто нибудь сталкивался с подобным явлением?[/uquote]Очень похоже на то, что выставили слишком малое значение времени предвыборки для АЦП. Не соответствующее сопротивлению измеряемой цепи. Вот и не успевает ёмкость заряжаться до нужного напряжения. Для теста попробуйте поставить максимальный sampling time.[/uquote]
Сигнал "медленно меняющийся"(на самом деле вообще не меняется в процессе замера), длительность переходного процесса не учитывается. Т.Е. зарядится он до номинального напряжения за условные 100 замеров, а мы начнем снимать показания через условные 1000 замеров. Я попробую замедлить замеры, но пока не могу проверить весь диапазон, уже переделал схему с учётом диапазона от 1В до 3В.
Реклама
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение es131245 »

У меня всё хорошо работает, но медленно.
И там нету "многоканальности"/сканирующий режим как у ADC

Код: Выделить всё


 __HAL_RCC_GPIOD_CLK_ENABLE();
 __HAL_RCC_SDADC1_CLK_ENABLE();

 pin.Pin=GPIO_PIN_8;
 pin.Mode=GPIO_MODE_ANALOG;
 pin.Pull=GPIO_NOPULL;
 HAL_GPIO_Init(GPIOD,&pin);

 adc1.Instance=SDADC1;
 adc1.Init.IdleLowPowerMode=SDADC_LOWPOWER_NONE;
 adc1.Init.FastConversionMode=SDADC_FAST_CONV_DISABLE;
 adc1.Init.SlowClockMode=SDADC_SLOW_CLOCK_DISABLE;
 adc1.Init.ReferenceVoltage=SDADC_VREF_EXT;
 if(HAL_SDADC_Init(&adc1)!=HAL_OK)Error_Handler();
 cfg.InputMode=SDADC_INPUT_MODE_SE_OFFSET;
 cfg.Gain=SDADC_GAIN_1_2;
 cfg.CommonMode=SDADC_COMMON_MODE_VSSA;
 cfg.Offset=0;
 if(HAL_SDADC_PrepareChannelConfig(&adc1,SDADC_CONF_INDEX_0,&cfg)!=HAL_OK)Error_Handler();
 if(HAL_SDADC_AssociateChannelConfig(&adc1,SDADC_CHANNEL_8,SDADC_CONF_INDEX_0)!=HAL_OK)Error_Handler();
 if(HAL_SDADC_InjectedConfigChannel(&adc1,SDADC_CHANNEL_8,SDADC_CONTINUOUS_CONV_OFF)!=HAL_OK)Error_Handler();
 if(HAL_SDADC_SelectInjectedTrigger(&adc1,SDADC_SOFTWARE_TRIGGER)!=HAL_OK)Error_Handler();
 //HAL_SDADC_CalibrationStart(&adc1,SDADC_CALIBRATION_SEQ_1);
 //HAL_SDADC_PollForCalibEvent(&adc1,HAL_MAX_DELAY);
 // один раз калибровать каждое устройство


 HAL_NVIC_SetPriority(SDADC1_IRQn,5,5);
 HAL_NVIC_EnableIRQ(SDADC1_IRQn);
 HAL_SDADC_InjectedStart_IT(&adc1);

void HAL_SDADC_InjectedConvCpltCallback(SDADC_HandleTypeDef*hadc){adcA[0]=HAL_SDADC_InjectedGetValue(hadc,(uint32_t*)&Ch);}
void SDADC1_IRQHandler(void){HAL_SDADC_IRQHandler(&adc1);}

jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение jcxz »

[uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4592053#p4592053"]Сигнал "медленно меняющийся"(на самом деле вообще не меняется в процессе замера), длительность переходного процесса не учитывается. Т.Е. зарядится он до номинального напряжения за условные 100 замеров, а мы начнем снимать показания через условные 1000 замеров.[/uquote]И что? Какая разница как он меняется?
Достаточно входному мультиплексору АЦП переключиться на измерение другого канала (с другим уровнем вх.сигнала), как сразу получите ошибку (при неверной длительности предвыборки). Если коммутация каналов происходит периодически - ошибка будет всегда. Величина её будет зависеть от разницы напряжений между каналами. Т.е. - если на одном канале вх.напряжение не меняется, а напряжение своего калибратора - меняете, то как раз и получится нелинейный график величины ошибки.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение КРАМ »

jcxz писал(а):Вот и не успевает ёмкость заряжаться до нужного напряжения.
[uquote="jcxz",url="/forum/viewtopic.php?p=4592151#p4592151"]сразу получите ошибку (при неверной длительности предвыборки)[/uquote]
О какой "предвыборке" вы говорите? Разговор идет не о 12-разрядном SAR ADC, а о 16-разрядном SDADC. Там нет никакого УВХ и соответственно емкости.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4592160#p4592160"]
jcxz писал(а):Вот и не успевает ёмкость заряжаться до нужного напряжения.
SDADC. Там нет никакого УВХ и соответственно емкости.[/uquote]Ну если нет ёмкости, значит проблема в чём-то другом.
Дмитрий Бо
Родился
Сообщения: 4
Зарегистрирован: Пт май 31, 2024 13:13:41

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение Дмитрий Бо »

es131245 писал(а): У меня всё хорошо работает, но медленно.
Подскажите, а какая частота подаётся на СДАЦП? Насколько медленно он работает? По коду вижу, что slow mode отключён.
Достаточно входному мультиплексору АЦП переключиться...
У меня используется пока один канал.
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Нелинейность масштабного коэффициента SDADC на МК stm32f

Сообщение es131245 »

[uquote="Дмитрий Бо",url="/forum/viewtopic.php?p=4592376#p4592376"]Подскажите, а какая частота подаётся на СДАЦП? Насколько медленно он работает? По коду вижу, что slow mode отключён.
Достаточно входному мультиплексору АЦП переключиться...
У меня используется пока один канал.[/uquote]

Тактирование 6Мгц, а измерение выходило к 20-35мкСек при 1 канале.
20мкСек это ограничения аппаратные (an4207 стр 12).
Что бы не накидывать лишние микроСеки резал HAL, но выхлоп был мал.
В итоге перешел на ADC, шоб не ставить внешнюю АЦП

Внешнее мультиплексирование тоже только предстоит ещё
Ответить

Вернуться в «ARM»