МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИИ
НОВОСИБИРСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Кафедра Систем Сбора и Обработки Данных
Дисциплина «Микроконтроллеры», 7 - й семестр
Курсовой проект
«Преобразователь частоты в длительность импульса»
Группа АО-81
Вариант: 5
Выполнил: Ишмухаметов Р. Р.
Преподаватель: Еленычев С. В.
Новосибирск 2010
Разработать на базе МК ATtiny2313 преобразователь частоты входного сигнала в длительность импульса выходного сигнала (ШИМ). Параметры входного сигнала: прямоугольный сигнал (максимальное значение 5В, минимальное 0В) с полосой частот 10 – 100Гц. Выходной сигнал: прямоугольный сигнал с постоянным периодом Т = 0.01с, длительность импульса t пропорциональна частоте входного сигнала: отношение t/T = 0.1 соответствует частоте входного сигнала 10Гц, отношение t/T = 0.9 соответствует 100Гц. Отношение t/T сохранять в ОЗУ контроллера. Приведенная относительная погрешность не хуже 0.5%. Результат измерения дополнительно выводить через интерфейс RS-232 в формате ASCII с точностью до второго знака после запятой. Период вывода 1с.
Проект разрабатывается под микроконтроллер ATtiny2313. Средства разработки – программная среда AVR Studio 4.17 и язык программирования Assembler.
Особенностью данного проекта является четкая привязанность тактов микроконтроллера ко времени. Т. е. обязательно должен использоваться кварц, причем довольно высокой частоты, чтобы вероятность наложения прерываний была минимальной. Также в этом проекте используются оба таймера/счетчика микроконтроллера. Один в режиме входного захвата, другой в режиме ШИМ. Подбираемая частота кварца должна быть такой, чтобы оба таймера работали адекватно: желательно чтобы таймер входного захвата не переполнялся, но и досчитывал до довольно высоких значений (в этом случае точность счета будет приемлемой); таймер – ШИМ должен также обеспечивать приемлемую точность и период согласно заданию.
В связи с данными требованиями был выбран кварцевый генератор на 4096кГц. Можно также использовать другие генераторы с частотами в кГц, являющимися степенью двойки (в этом случае ШИМ будет работать с хорошей точностью, если же взять кварц с другой частотой, то период выходного сигнала ШИМ будет отличаться от заданного), нужно только поменять некоторые коэффициенты.
Другой проблемой является малая разрядность таймера, обеспечивающего модуляцию. Если измеряется малая частота, то относительная погрешность в этом случае будет довольно большой – порядка 5%, при больших частотах погрешность порядка 1%. Эта погрешность является определяющей в данном случае (она вносит подавляющую долю в суммарную погрешность и можно остальные погрешности считать малыми по сравнению с этой) и зависит от разрядности таймера/счетчика, т. е. чтобы уменьшить ее влияние необходимо выбрать другой микроконтроллер. Программно такую погрешность никак не уменьшить. Выводить же скважность через интерфейс RS-232 возможно с требуемой точностью.
Задача системы должна заключаться в преобразовании частоты входного сигнала в скважность выходного. Так как входной сигнал представлен прямоугольными импульсами, то можно считать, что его период равен расстоянию между двумя передними фронтами волны. Это расстояние можно измерить с помощью функции входного захвата ТС1, которая заключается в том, что по приходу фронта волны (в данном случае переднего) организуется прерывание. Записывая количество времени, которое насчитал ТС1, а затем обнуляя счетный регистр, можно определить период сигнала, а следовательно и частоту.
Для ТС0, работающего в режиме ШИМ, необходимо определить основные параметры (максимальное значение, делитель частоты и пр.). Итак, имея частоту кварца 4096кГц, выберем делитель частоты 256. В итоге таймер будет считать с частотой 16кГц. Это значит, что в период ШИМ 0.01с будет укладываться 160 отсчетов. Это число и будет максимальным значением счета таймера (при 160 отсчетах он будет переполняться и сбрасываться). Теперь составим систему уравнений, позволяющих преобразовать частоту в скважность:
Здесь x и y – коэффициенты преобразования. Однако это значение будет выводиться не только через ШИМ, но также и через интерфейс RS-232, а вывод через интерфейс требует большей точности. Поэтому есть смысл переписать уравнения, умножив значения в правой стороне на 16 (проще говоря, добавить 4 двоичных разряда для большей точности):
В итоге получим . Оставленных разрядов коэффициентов достаточно для обеспечения приемлемой точности.
Теперь определим параметры ТС1, работающего на захват. Делителем частоты для него выберем 8. Получается, что он считает с частотой 512кГц. Максимальное число он отсчитает когда частота входного сигнала будет минимальной, т . е. 10Гц. При этом он отсчитает 51200 раз, т. е. не переполнится.
Так как частота обратно пропорциональна периоду, получается зависимость следующего вида:
, где - частота входного сигнала, y – коэффициент, n – число тактов, насчитанных ТС1, С – константа. Соответственно, зная все остальные параметры, легко найти частоту (но находить ее явно не надо, нужно найти произведение ). Найдем С:
Эту константу можно уместить в 3х разрядах, значит необходимо написать функцию деления (целочисленного), делимое которого состояло бы из 3х разрядов, а делитель и частное – из 2х (больше не нужно). Деля константу на количество, отсчитанное ТС1 и сдвигая затем полученное произведение на 4 двоичных разряда вправо, получим длительность импульса ШИМ. Чтобы получить скважность, сдвинем произведение на 4 разряда влево (умножим на 16) и разделим на 160. В итоге получается дробная часть скважности в виде байта. Этот байт в виде двух шестнадцатеричных чисел в формате ASCII и будем выводить через порт RS-232, перед этим выводя ноль и точку.
Поз. |
Обозначение |
Наименование |
Кол. |
Примечание |
Детали |
||||
1 |
Резонатор кварцевый O-4,0960-JCO8-2-C |
1 |
||
2 |
Микроконтроллер ATtiny2313 |
1 |
||
С1,С2 |
Конденсатор К73-17, 22пФ |
2 |
||
Сигналы |
||||
U1 |
Входной сигнал с интерфейса RS-232 |
|||
U2 |
Выходной сигнал на интерфейс RS-232 |
|||
U3 |
Входной сигнал с измеряемой частотой |
|||
U4 |
Выходной сигнал ШИМ |
|||
U5 |
Питание микроконтроллера +5В |
|||
В связи с тем, что в задании не указано, откуда приходит входной сигнал и куда должен идти выходной, логично будет просто оставить входы и выходы, не подключая к ним ничего.
Кварцевый резонатор необходим для того, чтобы частота микроконтроллера была точной.
Вход PD6 воспринимает внешний сигнал – прямоугольные импульсы, частота которых модулируется. Смодулированные импульсы выходят из порта PB2. Также с помощью порта PD1, значение скважности этих импульсов каждую секунду поступает на выход интерфейса RS-232 в виде дробного шестнадцатеричного числа с точностью до 2го знака после запятой (коды символов A-F соответствуют заглавным буквам).
Программное обеспечение работает согласно структурной схеме проекта, которая была описана ранее. Оно разработано и отлажено в программной среде AVR Studio на языке Assembler. Все необходимые краткие комментарии имеются в листинге программы:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.