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

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

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

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

Сообщение GARMIN »

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

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

[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мВ сверху диапазона.
Мудрый кот
Сообщения: 1779
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

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

Сообщение GARMIN »

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

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

[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В.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Сообщение 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);}

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

Сообщение jcxz »

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

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

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

Сообщение jcxz »

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

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

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

Сообщение es131245 »

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

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

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

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