Например TDA7294

Форум РадиоКот • Просмотр темы - LCR на STM32G431
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб июн 28, 2025 20:57:56

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 41 ]  1, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: LCR на STM32G431
СообщениеДобавлено: Пн апр 21, 2025 20:39:01 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Плата STM32G431CBU6 (WeAct Studio). Среда разработки CubeIDE. Первый этап - измерение LCR на 10кГц. На выходе двух каналов DAC1 синус в противофазе с буфером на ОУ mc33202 и фильтром на входе 300 Ом 1000рФ. Таблица синуса на 720 точек. На первом этапе нужно выйти на максимальную точность на одном диапазоне. Синус очень хороший. Пробовал много процессоров. Лучший синус на GD32F303, но с
CubeIDE он не дружит. С выходов синуса через резисторы 100-200 Ом и щупы Кельвина ток идет на измеряемый LCR, а напряжение c потенциальных контактов щупа на входа ADC через буфера ОУmc33202 .
За период измерения заполняем данными ADC массивы и вычисляем Z и RLC. Я еще не сталкивался с такой математикой, надеюсь на помощь. Пытался спрашивать у ИИ, но только потерял время и нервы.:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Ср апр 23, 2025 19:55:16 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Получил 3 массива АЦП за период синуса. 1- массив напряжения после буфера 1 канала ЦАП до шунта 150 Ом, 2- массив напряжения после резистора шунта 150 Ом 1 канала ЦАП. 3- массив напряжения 2 канала после резистора 150 Ом. Из 1 и 2 массива получаем массив тока через LCR. Из массивов 2 и 3 по разнице получаем массив напряжения на RLC. Вот что предлагает ИИ Deep Seek.
3. Алгоритм расчёта импеданса

Теперь у нас есть:

Массив напряжения на нагрузке: V_load[k] = V1[k] - V2[k]

Массив тока: I[k] = (2V3[k] - V1[k] - V2[k]) / 300

Шаги расчёта (аналогично предыдущему методу):

Применить DFT к V_load и I для получения Re_V, Im_V, Re_I, Im_I.

Вычислить импеданс:
Z=(ReV+j?ImV)(ReI+j?ImI)
Z=(ReI?+j?ImI?)(ReV?+j?ImV?)?

Разделить на активную (R) и реактивную (X) части:
R=ReVReI+ImVImIReI2+ImI2
R=ReI2?+ImI2?ReV?ReI?+ImV?ImI??
X=ImVReI?ReVImIReI2+ImI2
X=ReI2?+ImI2?ImV?ReI??ReV?ImI??

Определить L или C (как в предыдущем ответе).

4. Плюсы такого подхода

? Уменьшение влияния просадки буферов (используется разностный сигнал).
? Симметричная обработка обоих плеч моста.
? Требуется только один DFT для напряжения и один для тока (вместо трёх).
5. Пример кода (STM32G431)
c

// Напряжение на нагрузке: V1 - V2
for (int k = 0; k < 720; k++) {
V_load[k] = V1[k] - V2[k];
I[k] = (2 * V3[k] - V1[k] - V2[k]) / 300.0f; // Ток через 150 Ом
}

// DFT для V_load и I
dft(V_load, &Re_V, &Im_V);
dft(I, &Re_I, &Im_I);

// Расчёт Z
float denom = Re_I * Re_I + Im_I * Im_I;
float R = (Re_V * Re_I + Im_V * Im_I) / denom;
float X = (Im_V * Re_I - Re_V * Im_I) / denom;

// Определение L или C
if (X > 0) {
L = X / (2 * M_PI * f0);
} else {
C = -1 / (2 * M_PI * f0 * X);
}

6. Важные замечания

Калибровка разности АЦП:

Убедитесь, что каналы АЦП синхронизированы (или учитывайте задержку).

Если есть смещение нуля, вычитайте его до расчётов.

Повышение точности:

Используйте усреднение нескольких периодов.

Примените цифровую фильтрацию (например, медианный фильтр).

Оптимизация для STM32:

Используйте DMA для сбора данных с АЦП.

CORDIC и FMAC ускорят расчёты DFT.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Чт апр 24, 2025 06:36:27 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 0
не сталкивался с такой математикой, надеюсь на помощь

https://radiokot.ru/circuit/digital/measure/108/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Чт апр 24, 2025 08:53:12 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
bob1, Я не смог его программу перенести в CubeIDE. Там без помощи автора не просто разобраться. Пытаюсь разобраться сам поэтапно, упростив задачу до примитива. Вот пробую включить в STM32G4 функции DSP.
Вот уже включил, значит расчеты пойдут быстрее.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
В сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Чт апр 24, 2025 10:14:36 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 0
Вы попробуйте во float считать. Расчетов не так много. Это же не весь спектр считать при помощи FFT, а всего 1 точка (частота)!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Чт апр 24, 2025 22:54:16 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
bob1, Сначала нужно данные для расчета подготовить. Это и определяет точность.

Добавлено after 4 hours 34 minutes 44 seconds:
Стартую синхронно синус ЦАП и АЦП циркулярно от одного таймера. Первый период смазан вначале, брать в расчет можно данные только с второго цикла. После второго цикла останавливаю таймер и можно обрабатывать данные из 3-х буферов АЦП.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пт апр 25, 2025 10:35:47 
Держит паяльник хвостом
Аватар пользователя

Карма: 14
Рейтинг сообщений: 322
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 964
Откуда: Тула
Рейтинг сообщения: 0
linkov1959, стартовать ЦАП и АЦП можно асинхронно, начальная фаза не важна. Важна синхронная работа.

Длина буферов должна быть такой, чтоб в них укладывалось строго целое количество периодов измерительной частоты.

Продумывайте алгоритм так, чтобы генерация синуса ЦАП и весь механизм оцифровки не прерывались, без этого высокой точности не достичь. Если не сможете обеспечить обработку всех циклов измерения, можно брать только нечётные, а вместо пропущенных чётных производить вычисления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пт апр 25, 2025 10:52:42 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Andrey_B, Спасибо. Вот, что советует ИИ DeepSeek.
Рекомендуемый метод: Квадратурное детектирование (I/Q Demodulation)

Почему он лучше подходит для вашего случая:

Высокая точность на фиксированной частоте (1 кГц).

Устойчивость к шумам (фильтрация через синхронное детектирование).

Проще реализовать на STM32, чем полный FFT.

Позволяет сразу получить R и X без сложных расчётов.

Алгоритм расчёта
1. Захват сигналов

Синхронно снимаем:

V_adc[n] (разница двух каналов напряжения)

I_adc[n] (сигнал с шунта)

Буферы: 720 точек (целый период 1 кГц).

2. Генерация опорных сигналов

Создаем 2 массива (на той же частоте 1 кГц):
c

float ref_sin[n] = sin(2 * π * 1000 * n / (720 * fs)); // fs = частота дискретизации
float ref_cos[n] = cos(2 * π * 1000 * n / (720 * fs));

3. Квадратурное детектирование

Умножаем сигналы на опорные sin/cos и усредняем:
c

// Для напряжения (V)
float V_I = 0, V_Q = 0;
// Для тока (I)
float I_I = 0, I_Q = 0;

for (int n = 0; n < 720; n++) {
V_I += V_adc[n] * ref_sin[n];
V_Q += V_adc[n] * ref_cos[n];
I_I += I_adc[n] * ref_sin[n];
I_Q += I_adc[n] * ref_cos[n];
}

// Нормировка (делим на количество точек)
V_I /= 720; V_Q /= 720;
I_I /= 720; I_Q /= 720;


Изображение
Почему не FFT?

FFT избыточен для одной частоты.

Требует больше ресурсов ЦПУ.

Квадратурный метод даёт ту же точность при меньших вычислениях.

Оптимизации под STM32G431

Используйте DMA для захвата ADC и передачи данных.

Таблицы sin/cos (720 значений) храните в ROM (вместо расчёта в реальном времени).

Аппаратное умножение (STM32G431 имеет FPU — используйте float).

Погрешности и калибровка

Калибровка нуля: Измерьте сигналы при коротком замыкании (вычтите offset).

Калибровка шунта: Учёт точного значения 150 Ом и паразитного RL.

Фазовые сдвиги ADC: Если каналы ADC имеют разную задержку, потребуется коррекция


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пт апр 25, 2025 11:35:43 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 0
советует ИИ DeepSeek
Куда мир катится....роботы будут думать за вас и вы им верить.
// Нормировка (делим на количество точек)
Это лишняя операция. Потом все равно числа будите делить (напряжение на ток).
Почему не FFT? FFT избыточен для одной частоты. Требует больше ресурсов ЦПУ. Квадратурный метод даёт ту же точность при меньших вычислениях.
В примере у вас вычисление FFT в одной точке (для одной частоты). Другие частоты считать не нужно ведь. Они не нужны. Цифровые фильтры тоже не нужны.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пт апр 25, 2025 17:39:21 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
bob1, ИИ не думает, он сортирует для вас информацию от думающих людей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Сб апр 26, 2025 19:40:55 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Вот уже выходим на ключевые точки. Главная точка - это запуск и остановка таймера ТИМ3, который запускает ADC DMA(3 канала) и DAC DMA(2канала) в циркулярном режиме. По прерыванию ADC DMA два раза за цикл разбираем буфер(массив) ADC DMA(3 канала) 1080 точек по каналам 360 точек на канал и суммируем в 3 отдельных массива 16 раз с накоплением и останавливаем таймер ТИМ3. Накопленные данные делим на 16 и получаем 3 усредненных массивов. 1 и 2 пересчитываем по разнице значений и получаем массив напряжения на RLC. Из массивов 2 и 3 по разнице получаем массив напряжений на опорном резисторе 150 Ом и пересчитываем на массив тока через RLC. Рассчитываем в Экселе и заполняем опорные массивы синуса и косинуса на 360 точек. Вроде уже есть всё для расчета Z, если пренебречь пока калибровкой и задержками.

Добавлено after 4 hours 22 minutes 15 seconds:
Массивы напряжения и тока получаем в прерывании ADC DMA и поднимаем флаг готовности данных. В основном цикле по этому флагу рассчитываем комплексное Z и снова запускаем ТИМ3 для нового цикла. Усредняем Z за 10 циклов и рассчитываем R,C,L,Q и др. Обнуляем счетчики циклов и запускаем карусель снова.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Сб апр 26, 2025 21:47:24 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2916
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
В примере у вас вычисление FFT в одной точке (для одной частоты)

FFT для одной точки не существует. Либо всё, либо ничего.
Для одной точки вычисляют DFT. Дискретное преобразование Фурье - это узкополосная фильтрация. И она дает на выходе сразу комплЕксный результат. Обычная квадратурная выборка имеет никакую помехоустойчивость. Те, кто идет таким путем, дальше начинают медленно и печально накапливать скалярные значения вместе с перенесенными в ноль помехами и шумом:
Усредняем Z за 10 циклов и рассчитываем R,C,L,Q и др. Обнуляем счетчики циклов и запускаем карусель снова.

:)


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Вс апр 27, 2025 07:53:44 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 0
FFT
Перепутал перевод. Конечно ДПФ.
linkov1959 писал(а):
По прерыванию ADC DMA два раза за цикл разбираем буфер(массив) ADC DMA(3 канала) 1080 точек по каналам 360 точек
ADC в камне 2 штуки. Или выборка 3 каналов идет не одновременно?
linkov1959 писал(а):
Накопленные данные делим на 16 и получаем 3 усредненных массивов
Получили числа с фиксированной точкой 28бит целая часть и 4 бит дробь. Берете и выкидываете дробную часть. Уменьшаете точность результата. Не нужно делить на 16!
linkov1959 писал(а):
Рассчитываем в Экселе
Камень сам не может при старте заполнить таблицы?

У Вас какая задача стоит? Сделать замер на 1 частоте или вы хотите анализировать деталь на нескольких частотах сразу и строить графики?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Вс апр 27, 2025 11:25:21 
Опытный кот
Аватар пользователя

Карма: 10
Рейтинг сообщений: 378
Зарегистрирован: Пт май 01, 2015 14:33:13
Сообщений: 839
Рейтинг сообщения: 0
У Вас какая задача стоит? Сделать замер на 1 частоте или вы хотите анализировать деталь на нескольких частотах сразу и строить графики?

ТС не озвучил свои намерения. Вот для примера измерения требующие более детальной проработки...
СпойлерИзображение

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Вс апр 27, 2025 16:04:11 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Догадливые!:) 1 частота это разминка, 3 частоты это первый подход. А дальше будет интересно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Вс апр 27, 2025 20:57:03 
Держит паяльник хвостом
Аватар пользователя

Карма: 14
Рейтинг сообщений: 322
Зарегистрирован: Пт апр 09, 2010 16:06:38
Сообщений: 964
Откуда: Тула
Рейтинг сообщения: 0
Создаем 2 массива (на той же частоте 1 кГц):
float ref_sin[n] = sin(2 * π * 1000 * n / (720 * fs)); // fs = частота дискретизации
float ref_cos[n] = cos(2 * π * 1000 * n / (720 * fs));

Можно обойтись одним массивом, значения второго получить сдвигом индекса первого на 90 градусов.

Калибровка нуля: Измерьте сигналы при коротком замыкании (вычтите offset).
Калибровка шунта: Учёт точного значения 150 Ом и паразитного RL.
Фазовые сдвиги ADC: Если каналы ADC имеют разную задержку, потребуется коррекция

Калибровка по трём точкам (open-short-load) скомпенсирует все статические погрешности.

linkov1959 писал(а):
Догадливые!:) 1 частота это разминка, 3 частоты это первый подход. А дальше будет интересно...

balmer это "интересно" уже реализовал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пн апр 28, 2025 10:12:31 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: -3
Andrey_B, Ещё интересней... Беру случайное колечко с платы.
Е7-8 - 50mН 11 Ом.
RLC-2 - 50mН 10 Ом
neekeetos - 47mН 17 Ом
RLC 71 - 52mH 25 Ом
Частота везде 1кГц.
Мост постоянного тока - 0.169 Ом.
Ошибка в 100 раз.
Единожды совравшему кто поверит?, а мы верим... Не можешь - пиши прочерк или текст. Все LCR врут. Пока это не обсуждаем.
Обсуждать будет методы калибровки на одной частоте 1кГц.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пн апр 28, 2025 13:58:00 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2916
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Мост постоянного тока - 0.169 Ом.

А что удивляет? :dont_know: Скин слой, он на самом деле совсем не слой, а сложный градиент проводимости от поверхности вглубь металла. Понятие "слой" является достаточно оценочным и не отражает реальной картины с интегральными сопротивлением/проводимостью.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пн апр 28, 2025 14:17:31 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Пора переходить к 2-й точке отсчета. Напомню 1-ю. Запускаем ТИМ3 и получаем готовые данные для расчетов. Даже останавливать не надо. Таймер останавливается сам после обработки нужного количества циклов сбора данных и их усреднений.
2-я точка отсчета это обратная связь - возможность контролировать результат на каждом этапе. В данном случае использую возможности отладки в CubeIDE. Просто останавливаю после заполнения массивов и смотрю их.
Первое значение АЦП должно соответствовать началу контрольной таблице синусов для метода квадратурного детектирования.
У нас два противофазных канала АЦП и в начале цикла они равны. Подогнал дискретной фазой ЦАП почти равенство в первой точке, остальное выбирается корректировкой синусной таблицы.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: LCR на STM32G431
СообщениеДобавлено: Пн апр 28, 2025 15:01:28 
Мучитель микросхем

Карма: 24
Рейтинг сообщений: 144
Зарегистрирован: Ср июн 08, 2011 20:25:20
Сообщений: 438
Рейтинг сообщения: 3
ИИ не думает, он сортирует для вас информацию от думающих людей.
Исключите меня из списков, чтоб он мне подобное не сортировал :)). Мы уж как-нибудь по старинке по книжкам.
linkov1959 писал(а):
Е7-8 - 50mН 11 Ом. RLC-2 - 50mН 10 Ом neekeetos - 47mН 17 Ом RLC 71 - 52mH 25 Ом

Ничего не забыли написать?
linkov1959 писал(а):
Все LCR врут
Если вы чего-то не понимаете и не можете объяснить, то при чем ту приборы!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  1, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y