Ради интереса решил попробовать мостовую схему, но питать её простым меандром при достаточно высокой добротности контура это не слишком экономично. Можно было ШИМом "нарисовать" что-то близкле к синусу, но я не стал морочить себе голову и самым примитивным образом нарисовал комплементарный ШИМ с защитными интервалами (dead-time). Т.е. противоположные импульсы разнесены на 180 градусов. Ширина импульсов регулируется от нескольких микросекунд до меандра. Можно даже просто посчитать при какой форме сигнала основная гармоника наибольшая, но у меня всё равно это уже заложено в программе. Ключи сделал на обычных биполярных транзисторах. Питание пока всего от 5 В, чтобы не клеить ещё один источник питания. Размах сигнала на передающей катушке (от крайних точек) около 20В. Ток порядка 300-400 мА (ломать катушку не хочу, поэтому, могу только прикинуть). По сравнению с однотактной схемой влияние магнитных целей (включая феррит) на форму сигнал намного уменьшилось.
Разбаланс на выходе предусилителя приблизительно 50 мВ. Также, как у Fisher-F2. Схема предварительного у меня практически такая же (схема Fisher-F2
здесь). Только питание операционника не двуполярное а однополярное с делителем на резисторах, которые привязаны к плюсовому входу операционника. По настоящему надо привязываться к Vref для ADC.
Покачал частоту, в надежде, что найду на глаз частоту, на которой разбаланс умешьшится больше, чем сигнал. С наскоку, конечно, ничего не получилось.
Квадратуры видно, что изменяются, но количественно я не смотрел. Не вижу пока смысла.
Поехали дальше.
Теперь нужно делать строить фильтры, которые будут выделять полезную составляющую. Обычно народ строит полосовые фильтры с центральной частотой порядка 10 Гц. Начну с этого. Нарисовать пару фильтров на Си, понятно, не фокус. Хорошо бы ещё красиво "уложить" их в систему, чтобы он не кушали ресурсов больше, чем это необходимо, были удобны для настройки в составе системы и хорошо делали своё дело. Поскольку, у меня в системе изначально заложена гибкость, то и и фильтры стоит сделать достаточно гибкими. Фильтр для каждого канала составлю из пары ФНЧ и ФВЧ, чтобы можно было удобно двигать частоты среза в любую сторону и с любой стороны.
[...поправил...] Ерунду вчера вечаром сморозил насчёт БИХ фильтров с линейной фазовой х-кой. Устал, видимо, уже. Лучше сразу КИХ и никаких проблем с "разбеганием" квадратур. Звеньев придётся городить больше, но математика не страдает.
Итак, куда же этот фильтр клеить и как синхронизировать? Синхронизация - это одна из ключевых проблем в таких системах. Что я на данный момент имею? Пока построена лишь система сбора данных, которая реализована на двух прерываниях - двух небольших функциях, одна из которых вызывается с частотой питания передающей катушки (примерно 6 кГц). Вторая вызывается в 16 раз чаще - раз на каждый отсчёт. Сами же отсчёты прилетают по DMA.
При такой частоте я технически могу в несколько раз увеличить число отсчётов на интервал и получать, скажем, 32 или даже больше за один период (пробовал - работает), но я пока этого делать не буду во избежание непредвиденных ситуаций. Увеличение числа отсчётов идёт за счёт укорочения периода выборки-хранения. Зачем я буду уменьшать период аналового интегрирования отсчёта в надежде увеличить точность цифровым интегрированием?
Самый простой вариант реализации фильтра, который, вроде как, напрашивается сам собой, это включить фильтры (по паре на каждую квадратуру) внутрь уже существующего прерывания (раз на период Tx), но я так делать не буду. Квадратуры накапливаются на интеграторе и изменяются не столь быстро, чтобы была необходимомть обрабатывать их с такой частотой. Ведь фильтр нам нужен на частоту всего 10 Гц. Чем чащё я вызываю функцию фильтра, чем больше ресурсов я трачу. Минимальная частота, с которой можно безболезненно реализовать такой фильтр это где-то 30 отсчётов в секунду. У меня нет причин применять столь категоричные меры. Лишний счётчик у меня найдётся и ресурсы пока есть. Частота в катушке Tx у меня сделана изменяемой. Если привязать частоту отсчётов к нёй, то хароактеристики фильтров будут соответственно плавать по частоте. Выберу пока частоту отсчетов фильтров порядка 500 Гц. Делитель 2**16 даст частоту примерно 488 Гц без джиттера.
Завтра проснусь и посчитаю коэффициэнты.
Буду благодарен за любой совет или комментарий.
[...добавил...]
C КИХ фильтрами критерии выборы частоты отсчётов для фильтра меняются. В БИХ фильтрах крутизна характеристики растёт при повышении частоты отсчётов, поэтому, её выбор не столь критичен. Повышаем частоту - фильтр вызывается чаще, ресурсов тратиться больше, но и крутизна (абсолютная, т.е. приведённая к реальной частоте среза в Герцах) увеличивается, что позволяет уменьшить порядок фильтра и, таким образом, "вернуть" потраченные ресурсы. С КИХ фильтром всё наоборот. С увеличением частоты их абсолютная крутизна только падает. Значит, мало того, что приходится чаще вызывать функцию фильтра, так ещё и порядок надо увеличивать. Можно, конечно, его проредить, но это абсолютно эквивалентно уменьшению его частоты дискретизации. Вот, так... придётся частоту снижать где-то до 50-60 Гц.