Страница 17 из 29

Re: RLC Meter, аналоговая часть

Добавлено: Пт дек 19, 2014 07:21:09
DIVON2
pixar писал(а):Проект Coocox 1.77 / GCC 4.8 2014q3
Это что, портированные проект с питона на си?

Re: RLC Meter, аналоговая часть

Добавлено: Пт дек 19, 2014 09:19:24
pixar
это исходники автора, собранные в проект в coocox.

Re: RLC Meter, аналоговая часть

Добавлено: Пт дек 19, 2014 16:15:14
balmer
pixar писал(а):буфер на выходе ЦАП лучше отключить.
А как без буфера? У DAC без буфера выходное сопротивление порядка 1 МОм. А мы его нагружаем на достаточно низкоомную нагрузку в десяток килоом....

Re: RLC Meter, аналоговая часть

Добавлено: Сб дек 20, 2014 07:10:55
pixar
balmer писал(а): У DAC без буфера выходное сопротивление порядка 1 МОм.
откуда такая цифра? в даташите упоминается выходной импеданс 15 кОм (с буфером) - я думаю , это как раз импеданс без буфера, а в даташите - ошибка.
Внутренний буфер немного кривоват и дает большой переходной процесс даже на малых шагах , с которым ты потом борешся подключамым конденсатором.
У меня в приведенной схеме на синусе 25 кГц из 128 шагов амплитуда одинаковая с буфером и без буфера. Даже больше - без буфера выходной сигнал в полном диапазоне питания , а с буфер недотягивает ~0.15-0.2 вольт до +/- питания (м/c STM32F303CB).
dac_output.jpg
(68.81 КБ) 784 скачивания

Re: RLC Meter, аналоговая часть

Добавлено: Сб дек 20, 2014 15:52:18
balmer
pixar писал(а): в даташите упоминается выходной импеданс 15 кОм (с буфером) - я думаю , это как раз импеданс без буфера, а в даташите - ошибка.
Однако ты прав.
Погуглил, нашел такой документ. См. 1.1 DAC equivalent circuit. и "As an example, the STM32F407 defines the impedance output with buffer off at a maximum
value of 15 kΩ. "

Так, что действительно выключение буфера видимо будет в плюс. Надо будет только RC цепочку пересчитать чутка, чтобы резистор был на 30-60 КОм.

Re: RLC Meter, аналоговая часть

Добавлено: Вт фев 03, 2015 07:34:49
alexf58
A что за хитрая кодировка в коментариях С файлов? Ни под Линуксом, ни под Виндами так и не подобрал ничего.

Re: RLC Meter, аналоговая часть

Добавлено: Вт фев 03, 2015 09:16:08
balmer
utf-8 там кодировка русских комментариев.

Re: RLC Meter, аналоговая часть

Добавлено: Вт фев 03, 2015 11:37:38
alexf58
UTF-8 я пробовал. Файл RLCMeter в корне прекрасно читается. А коментарии - нет. Чем его открыть?

P.S.
HEX editor и правда показывает честные UTF-8 буквы. Разберусь как нибуть.

P.P.S. В оригинальных файлах, как оказалось, все честно - UTF-8.
А я начас смотреть из архива для кокоса. Вот там с комментариями полный бардак...

Заодно нашел очень удобную программу для чтения *любых* кодировок: BabelPad.

Re: RLC Meter, аналоговая часть

Добавлено: Вт фев 03, 2015 21:24:23
balmer
Раз уж всплыла эта тема - вот такой мне недавно придумался вариант упрощения (потому как в другой железке подобный узел стал проектировать). Теоретически параметры ухудшиться не должны.

Оригинальный вариант виртуальной земли для MCP6S21
Изображение

Выкинули лишний ОУ (заодно избавились от проблемм с нелинейностью, из за которых snubber network вставляли)
Изображение

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

Итого - экономим пару дешевых ОУ, кучу рассыпухи и место на плате :)))

Re: RLC Meter, аналоговая часть

Добавлено: Ср фев 04, 2015 08:08:33
alexf58
Eще вопрос. А зачем использовать чип с 100 ногами? Почему, скажем, не STM32F303CC? Вроде есть и USB, и SPI, те же ADC/DAC, до 256K flash.

Re: RLC Meter, аналоговая часть

Добавлено: Ср фев 04, 2015 08:31:50
balmer
Это был чип, который было проще всего купить. В российских магазинах в то время (не знаю как сейчас) были только 100 ногие.

Re: RLC Meter, аналоговая часть

Добавлено: Сб фев 14, 2015 06:51:34
alexf58
Как я понял, пришлось добавлять С7 с ключем для фильтрации на низкой частоте. Из-за того, что выборки реже. Возникает вопрос: а надо ли уменьшать частоту DAC? Понятно, что если в таблице 2000 точек, то 1 КГц получится на 2 МГц, а для получения 100 Гц надо снизить до 200 КГц. А надо ли? Ведь можно сделать маленький буффер, скажем на 256 точек. По прерыванию от DMA подгружать следующую порцию, либо первую половину, либо вторую. Например на 1 MHz.

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 00:03:56
balmer
Пробовал в свое время увеличивать размер буфера для DAC и соответственно увеличивать точность аппроксимации. Измеримых улучшений заметить не смог.

Кстати причины того, что у меня качество сигнала от DAC не очень хорошая на частотах ниже 200 Гц - так и не понял. Но вот кстати недавно делал радиоприемник и выводил сигнал через DAC от STM32. И там было "гудение". Причем источник довольно интересный этого гудения. Оказывается когда процессор активно обрабатывает float инструкции он что-то делает чуть по другому, чем когда обрабатывает целочисленые. Этого оказалось достаточно, чтобы на выходе DAC была помеха с частототой обработки FFT :sleep:

PS: Кстати да. Есть еще такой вопрос - почему сделал два канала усиления, когда можно было сделать один канал и переключать I V каналы.
Причина - хотелось низкую входную емкость и минимальные наводки между каналами. Приведенная ко входу емкость получилась порядка 2 pF, что довольно неплохой результат. Наводки между каналами так-же получились очень низкими. На частотах до 10 КГц ниже уровня шума.

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 00:20:19
alexf58
Я не про точность, а про sample rate. Если я правильно понял, на маленьких частотах она снижается. Вплоть до использования прескейлера на таймер. Для DAC снижение частоты уменьшает и частоту помех, и их надо отфильтровывать дополнительным конденсатором. Если же на 100 Гц выборки делать с частотой 1 МГц, то фильтр с частотой среза скажем 150-200 КГц вполне справится. Или я что то не понял?

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 00:45:43
balmer
Смотри. Сейчас там размер буфера SINUS_BUFFER_SIZE = 2000 сэмплов. Это значит, что на частоте 100 Гц получается 200 000 SPS у DAC. Если бы это как-то влияло на качество сигнала, то уменьшение/увеличение размера буфера в два раза можно было-бы измерить/заметить. Ничего измерить не смог и забил.

Кстати да - философское отступление: Каждый результат должен быть измеряемым :idea:
Нет измеряемого результата - нет возможности понять "А сделал ли ты вообще чего либо?"

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 02:02:56
alexf58
Как человек занимавшийся аналоговым звуком, я очень верю в измеряемость результатов и не верю в изотерику. :)
Так вот, я перечитал всю эту ветку, и заметил что тебе пришлось вставить переключаемый конденсатор чтобы фильтровать высокочастотный шум на низкой частоте. Могу сам померять, дело не хитрое. Если ты увеличивал размер буффера, а тем самым и SPS с включенным С7 и это не дало результата, то нельзя сделать вывод что увеличение SPS до 1 млн не избавит от необходимости вообще переключать фильтр.
Другое дело, что возможно на низкой частоте есть другой источник искажений, к частоте дискретизации вообще не относящийся. Скажем взаимодействие с 50 Гц наводками.

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 08:27:50
balmer
К сожалению с низкими частотами не до конца разобрался. Форма синуса после DAC на частотах ниже 200 Гц остается идеальной. Но почему-то фаза между I V каналами начинает все больше и больше различаться при уменьшении частоты. На частоте 10 Гц (мерял и на такой) различие фаз достигает аж 2 процента. Да помогает калибровка. Но причину эффекта так и не понял.

Re: RLC Meter, аналоговая часть

Добавлено: Вс фев 15, 2015 09:20:17
alexf58
Действирельно странно. Каналы идентичны кроме IV конветрора. Паразитные емкости наоборот должны проявляться на высоких частотах. Разве что на самом деле переходные конденсаторы не равны? (С10, С14)

Re: RLC Meter, аналоговая часть

Добавлено: Ср мар 25, 2015 09:31:29
alexf58
pixar писал(а):Проект Coocox 1.77 / GCC 4.8 2014q3
Я прошу прощения за нескромный вопрос. А кто то проверил, что это работает? С авторским makefile все прекрасно собирается и запускается, а вот кокосовский вариант делает вид, что собрался, но там нет startup_stm32fxxx. Соответственно в бинарнике нет в начале векторов.

В файле "RLC_Balmer3_coocox.coproj" тоже ссылок на startup не видно. Что я не так понимаю?

Re: RLC Meter, аналоговая часть

Добавлено: Чт мар 26, 2015 02:22:01
pixar
Спасибо за нескромный вопрос. Я остановился на том, что кокос перестал выдавать ошибки и warnings . В железку залить не пытался, тк проект использовал для "чиста пасмотреть". А так же в связи с запаром на работе пришлось всё отложить. Если интересует - могу попробовать довести все в кокосе до ума и на макетке запустить.
Что мне не очень понравилось : Автор организовал работу DAC-ADC на принципе real time - одновременно забивать один буфер и обрабатывать другой. Для задачи измерения подход, думаю, не совсем верный :
balmer писал(а): когда процессор активно обрабатывает float инструкции он что-то делает чуть по другому, чем когда обрабатывает целочисленые. Этого оказалось достаточно, чтобы на выходе DAC была помеха с частототой обработки FFT .

У меня есть другой вариант : - DAC & ADC12 работают от одного триггера TIM4 , ADC12 собирает пачку uint32_t, потом ждёт завершения обработки. Начало сбора пачки привязано к началу периода DAC. Перед обработкой - выборка uint32_t разбивается на два канала, длинная выборка uint16_t сжимается в один период int32_t суммированием и удалением постоянной составляющей. Обработка одного периода делается float.
Общался с Никитой по этому вопросу, он порекомендовал длинную выборку паковать в буфер из множества периодов и на него, перед обработкой , накладывать оконную функцию.
alexf58 писал(а):Если же на 100 Гц выборки делать с частотой 1 МГц, то фильтр с частотой среза скажем 150-200 КГц вполне справится. Или я что то не понял?
DMA работает только с инкрементом адреса , поэтому потребуется буфер на полный период. С буфером на четверть периода потребуется работа процессора для формирования синуса. Других ограничений нет.