Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
013-bot.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
381.74 Кб
Скачать
    1. . Формализация определений для рабочего цикла фильтра

Реализация прерываний по входу INT0

Прерывание по внешнему входу INT0 выполняет сигнал оповеще­ния ЕОС с выхода АЦП о готовности кода текущего отсчёта xn. По прерыва­нию INT0 запускается подпрограмма вычисления выходного отсчёта уn (за­пускается рабочий цикл) цифрового фильтра.

Вектор прерывания по входу INT0 равен 0003. С этого адреса в ПЗУ загружается подпрограмма обслуживания прерывания данного типа.

Согласование кодов АЦП и МК

Согласование кодов АЦП и МК не требуется, так как выходной код AD7892AN-1 является арифметическим дополнительным кодом и отображает числовые значения входного знакопеременного напряжения.

Форма представления чисел

Представляем числовые значения отсчетов входного сигнала в виде правильной дроби с фиксированной запятой: старший разряд - знаковый, за­пятая, остальные двоичные разряды - числовые. Таким образом, числовые значения входного сигнала изменяются в диапазоне от -1 до +1.

Коэффициенты разностного уравнения определяем, как 8-разрядные числа без знака:

К1= 0,04(10)Т ≈.00001010(2) = 0A(16) = 0,0390625(10)Р.

К2= 0,02(10)Т ≈.00000101 (2) = 05(16) = 0,01953125(10)Р.

Отличие реализуемых значений от заданных предопределяет отличие реализуемых характеристик фильтра от расчётных, но с достаточной точностью приближённые к ним.

Хранение текущих данных

Необходимость хранения данных определяется видом заданного разностного уравнения. Для каждого цикла вычисления текущих выходных отсчётов yn требуется использовать выборку входных отсчетов Xn, Xn-1, Xn-2 и выборку выходных отсчетов Yn, Yn-1, Yn-2. Все указанные отсчеты долж­ны быть доступны для вычислений, следовательно, должны храниться в па­мяти МП-системы.

Требуется также вычислять произведение:

p1n = 0.02xn-2, p2n = 0.04yn-2, которое также должно храниться в памяти.

Следовательно, 8 ячеек внутреннего ОЗУ при составлении программы оп­ределим для хранения данных в текущем цикле обработки входного сигнала (в текущем интервале дискретизации).

После вычисления выходного отсчета yn и записи его в ОЗУ, перед приемом нового входного отсчета необходимо сдвинуть отсчеты всех выбо­рок в памяти: n-1-й отсчет на место n-2-го, n-й отсчет на место n-1-гo. Это требуется для подготовки следующего цикла вычислений.

Масштабирование входных отсчётов

Если при вычислении разностного уравнения при принятом 8-разрядном формате представления данных получен числовой результат, вы­ходящий за пределы -1, +1 имеет место переполнение разрядной сетки.

Для исключения переполнения введем масштабирование (ослабле­ние) входных отсчетов путем их умножения на коэффициент масштабирова­ния kM < 1, при котором вычисление разностного уравнения не дает недопус­тимого результата.

Коэффициент kM получим, предположив, что отсчеты в разностном уравнении принимают максимальные значения (-1;+1) и такие знаки, при которых слагаемые разностного уравнения складываются по модулю, то есть складываются по модулю коэффициенты.

Подставив такие значения в уравнение для вычисления Yn и просум­мировав по модулю коэффициенты, получим ynmax = 2,06, что является недопустимым результатом. Отсюда заданный коэффициент масштабирования (число без знака) равен

kM = 1/ ynmax = 0,4854368932…(10)

Определяем его как 8-разрядное число без знака:

0,4854368932…(10) ≈ .01111100(2) = 7C(16)

Умножение отсчёта на коэффициент

При вычислении разностного уравнения и при масштабировании, перемножаются числа со знаком (отсчёты) на числа без знака (коэффициен­ты). Произведение - число со знаком. Система команд МК содержит коман­ды умножения только для чисел без знака (положительных чисел).

Поэтому перемножение множимого со знаком на множитель без знака в системе команд МК реализуется либо на основе алгоритма умноже­ния вручную (арифметические сдвиги множимого вправо, соответствующие позициям единиц множителя, и накопление суммы частичных произведе­ний), либо на основе смены знака у отрицательного множимого, перемноже­ния беззнаковых сомножителей с соответствующей сменой знака у произве­дения.

Примем для реализации второй алгоритм, как более эффективный по критериям: объём программы и длительность выполнения программы умно­жения.

Согласование кодов МК и ЦАП

Согласование кода МК и кода ЦАП необходимо, так как ЦАП преобразует в ток смещённый входной код (положительные числа), а арифметический код МК – дополнительный. Для согласования – вычисленный отсчет yn перед выводом на ЦАП суммируется с константой 1000 0000(2) = 80(16).

Напряжение на выходе ЦАП

Выходом ЦАП AD9708 являются два токовых выхода с максимальным током (ток полной шкалы), задаваемый внешним резистором, подключаемый к выводу FS ADJ. Таким образом, максимальный ток можно регулировать от 2 мА до 20 мА. Так как выходным сигналом должно служить знакопеременное напряжения, то на выходе ставятся два резистора нагрузки, с которых снимается выходное напряжение. Для расчета применим следующие формулы:

; ; , где

UMOUT – амплитуда напряжения на выходе ЦАП, IOUTFS – максимальный ток, RН – сопротивление нагрузки, IREF – опорный ток, UREFIO – опорное напряжение, RSET – внешний резистор на выводе FS ADJ для задания опорного тока IREF. Для правильного функционирования внутренних транзисторных структур ЦАП необходимо задать линейный режим работы, для чего необходимо выполнение условия: UMOUT << EП = 5 В.

Пусть UMOUT = 0.5 В; RH = 50 Ом. Тогда согласно соотношениям: IOUTFS = 0.5/50=10 мА, IREF = 0.01/32 = 0.31 мА. Так как в качестве источника опорного напряжения выбран внутренний источник +1.2 В, то UREFIO = 1.2 В,

RSET = 1.2/0.31·10-3 = 3.87 кОм.

Выбираем стандартное значение RSET = 3.9 кОм

Так как на выходе согласно ТЗ необходимо иметь размах -4…+4 В, то применим ОУ в дифференциальном включении. Схема усиления на ОУ в дифференциальном включении использует свойство операционного усилителя усиливать разность входного сигнала (рис. 2).

Операционный усилитель AD8072.

Рис. 2 Усилитель выходного сигнала ЦАП

Рассчитаем номиналы сопротивлений:

;

В нашем случае, Ku= 4/Umout = 4/0.5=8.

Рассчитаем номиналы резисторов:

R3=Ku·R1, R4=Ku·R2.

Входной ток 5мА. Сопротивление R1(R2) выбирается так, чтобы при входном токе (5 мА) падение напряжения на нем не превышало 10% от входного напряжения (0.5 В). Таким образом, R1=U/I=0.5/5·10-3=100 Oм, R1=R2=100 Ом.

Сопротивление R3(R4) находим по формулам R4= KUR2, R3=KUR1,

R3=R4=8·100=800 Ом.