Свежие обсуждения
Измерения

Дизайн народного RLC-метра (RLC-3)

1 49 174

Link, вы где? Дело есть. Написал программу, которая считает коэффициенты преобразования Фурье для опорного напряжения Re0, Im0 и напряжения на измеряемом импедансе Re1, Im1.

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

В программе используется целочисленная 48-битная арифметика, коэффициенты 48-битные, входные сигналы 16-битные, выборки делаются каждые 12.5 мкс (80 ksps), т.е. 80 выборок на период частоты 1 кГц. 48 бит выбрано, исходя из времени измерения не более 1 с. Сама программа расположена по адресу 0х0100, вызов rcall RLC3DFT. Буфер опорного сигнала лежит в озу с адреса 0х0100, длина 160 байт, второй буфер сразу за ним, т.е. с адреса 0x01A0. Переменные Re0, Im0, Re1, Im1 лежат в озу, начиная с адреса 0х0080, каждая занимает 8 байт, но пока используется только 6.

На симуляторе при подаче максимального косинуса Re0=0x0009FFBB9F96, Im0=0x000000000000, при подаче максимального синуса Re0=0x000000000000, Im0=0x0009FFBB9F96. То же самое со вторым каналом. Как видите, никаких чудес, всё именно так, как предсказал товарищ Фурье.

197905.hex

 

GM: Сама программа расположена по адресу 0х0100, вызов rcall RLC3DFT.
Вам меня не жалко?
Из чего я буду вызывать программу?
Как я могу просимулировать кусок машинного кода. Может как-то и можно подключить к основной программе МК кусок hex файла, но я это точно не умею делать.
Я в протеус подключаю hex файл и нажимаю кнопку начало симуляции.
На Ваш hex файл протеус выдает ошибку. Симулятор понимает полнофункциональные hex файлы, т.е. те файлы которые зашиваются в МК, и он с ними работает.

GM: Надо бы потестировать программу с более-менее реальными сигналами, особенно интересуют пограничные значения, когда один сигнал минимальный, а второй - максимальный, и наоборот.
Дайте hex файл который откомпилирован для МК типа Атмеги8.

 

Gregory: Делаю так потому, что пока как-то не удалось запустить в Протеусе "аналоговые" схемы. А Вы это дело освоили?
http://kazus.ru/forum/topics/12366.html
Думаю Вам эта ссылка знакома.
Я один раз заставил работать в нём обратноходовой импульсный преобразователь, на ne555. Посей день, иногда симулирую усилители на ОУ+МК. Вообще-то если есть возможность разделить аналоговую часть от цифровой, то аналоговую симулирую в МС9 цифровую в Протеусе. Протеус плохо взломан, поэтому лучше всего в нём работают цифровые схемы на МК, аналоговые схемы забирают большой ресурс компьютера. Сейчас сижу, моделирую схему аналоговой части RLC3 в Протеусе версии 7,5 пока полёт нормальный (правда на AD623 но с однополярным питанием), когда доведу файл проекта до эстетического вида, выложу. Когда я понял как работать в МС9, в Протеусе стало намного легче работать. У них обоих один движок моделирования аналоговых элементов.

 

Получите.

197998.hex

 

GM: Надо бы потестировать программу с более-менее реальными сигналами, особенно интересуют пограничные значения, когда один сигнал минимальный, а второй - максимальный, и наоборот.
Хотелось бы проверять уже с задействованными шимами, пусть хоть стабильно генерируют 1кГц. Протеус файл принял, сейчас буду проверять.

 

GM: Получите.
Уважаемый GM, а исходник посмотреть можно?

 

А смысл?

 

GM: Получите.
На какой вход мультиплексора АЦП что подавать?
Подал на все входы порта С общую синусоиду 1кГц запустил файл на выполнение через 7секунд, в ячейках ОЗУ 0х0080 и далее нули.

 

 

Ну, link, голубчик, какие входы, какого мультиплексора? Вы же сами сказали "пишем программу, потом займёмся схемой". Ну вот, вышло по-вашему. Программа ни к чему не привязана, голое ядро, обрабатывает то, что вы занесли во входные буфера.