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

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




































Главная

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

Методика проектирования генератора на основе микроконтроллера, его технические характеристики. Выбор и обоснование технического решения. Разработка принципиальной и электрической схемы устройства. Эмуляция программы в пакете VMLAB, оценка погрешностей.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
"Программно управляемый генератор линейно нарастающего напряжения сверхнизкой частоты на микроконтроллере"
2 Обоснование выбранного варианта технического решения
3 Разработка принципиальной схемы устройства
4 Разработка алгоритма и программы функционирования устройства
5 Результаты эмуляции программы в пакете VMLAB
6 Анализ временных соотношений и оценка погрешностей
В наше время в сфере радиоэлектроники находят широкое применение такие устройства, как микроконтроллеры, представляющие собой микропроцессорную систему, реализованную в виде интегральной микросхемы. В микроконтроллер возможно записать любую программу-прошивку, определяющую алгоритм функционирования устройства на базе микроконтроллера, что позволяет использовать микроконтроллеры практически во всех устройствах, где используется обработка цифровых сигналов. В качестве иллюстрации возможностей применения микроконтроллеров при проектировании радиотехнических устройств, в данном курсовом проекте приводится пример проектирования линейно нарастающего генератора с изменяемой частотой от 5 до 20 Гц с шагом 5 Гц, а также с дискретно меняющейся амплитудой от 0.5 до 5 Вольт, подстройка которой осуществляется двумя кнопками. Индикация амплитуды генерируемых сигналов осуществляется с помощью ЖКИ.
Прежде, чем приступить к рассмотрению проектирования генератора на основе МК, приведем краткий обзор аналогичных вариантов реализации генератора линейно нарастающего напряжения. Кроме МК, генератор импульсов можно реализовать на базе обычного двухтранзисторного симметричного мультивибратора. Достоинства такого варианта заключаются в отсутствии необходимости писать программу для МК, недостатки же заключаются в том, что в аналоговых генераторах труднее добиться идеальной формы фронтов импульса, а также обеспечить наиболее точную подстройку частоты вследствие разброса номиналов элементов схемы генератора. Индикация амплитуды с помощью ЖКИ несет усложнение такой схемы и неизбежность применения микроконтроллера с АЦП. Еще один вариант заключается в использовании логических элементов, соединенных последовательно в неинвертирующий усилитель и применении RC-цепочки для создания положительной обратной связи. Недостаток такой схемы заключается в ее усложнении по сравнению с мультивибратором, а вопрос с индикацией решается путем еще большего усложнения устройства. Наконец, схема генератора на базе МК обладает неоспоримыми преимуществами: простотой (генерирование и управление индикацией осуществляется с помощью одной микросхемы), хорошей формой генерируемого сигнала, а также широкими возможностями по точной подстройке частоты и амплитуды сигнала.
2 . Обоснование выбранного варианта технического решения
В данной работе для реализации генератора на базе МК будут использованы такие элементы, как микроконтроллер, ЦАП, ЖКИ и управляющие кнопки. Необходимость использования ЦАП вызвана тем, что амплитуду сигналов проектируемого генератора можно будет изменять. ЦАП же позволяет формировать сигналы произвольной формы путем подачи цифрового кода мгновенного значения напряжения сигнала на его вход. В качестве ЖКИ используется индикатор на базе контроллера HD44780, который является фактически промышленным стандартом и на базе которого производятся большинство ЖКИ. В качестве МК выбрана модель AT90S8515 (AVR-микроконтроллер семейства Classic фирмы Atmel). Будучи выпущенным несколько лет назад, такой МК имеет небольшую стоимость, но в его составе есть все необходимые для разработки генератора компоненты (4 8-разрядных ПВВ, 8-разрядный таймер-счетчик, ядро с рабочими частотами до 16 МГц).
3. Разработка принципиальной схемы устройства
Как уже было сказано выше, основными компонентами схемы генератора являются микроконтроллер, ЦАП, ЖКИ и управляющие кнопки. ЦАП имеет 8 входов, на которые подается цифровой код сигнала, и выход, с которого снимается аналоговый сигнал. В данном случае было решено подключить входы ЦАП к 8-разрядному порту С микроконтроллера. Управляющие кнопки делятся на 2 кнопки регулировки амплитуды и 4 кнопки установки частоты. Кнопки регулировки амплитуды были подключены к выходам 2 и 3 порта D, которые являются входами внешних прерываний INT0 и INT1. Кнопки установки частоты подключены к выводам 4, 5, 6 и 7 порта D.
ЖКИ подключается к микроконтроллеру 11-ю выводами. 8 из них являются шиной данных и подключаются к порту А. Оставшиеся 3 вывода являются управляющими: вывод RS определяет, что передается по 8-разрядной шине: команды или данные (коды отображаемых символов) и подключен он к нулевому выходу порта В, вывод R/W определяет режим чтения / записи шины данных, и подключается к первому выходу порта В, по выводу Е подаются стробирующие импульсы, сопровождающие процессы чтения или записи, подключен выход Е к выводу 2 порта В. Также у МК есть выводы XTAL1 и XTAL2, к которым подключается кварцевый резонатор. Схема генератора электрическая принципиальная приведена на чертеже, прилагающемся к пояснительной записке. Проектный файл программы VMLAB, описывающий схему устройства электрическую принципиальную, приведен в приложении А.
4 . Разработка алгоритма и программы функционирования устройства
Алгоритм главной программы можно условно разделить на 3 части: блок инициализации МК и ЖКИ, блок опроса кнопок и блок генерирования сигнала. Кроме того, в данной программе будут использоваться вспомогательные подпрограммы, алгоритмы которых будут рассмотрены чуть позже.
В блоке инициализации можно выделить такие основные части, как присвоение значений объявленным константам, настройка портов ввода-вывода, инициализацию прерываний, а также команды инициализации ЖКИ и индикации амплитуды по умолчанию. Настройка ПВВ осуществляется путем присвоения определенных значений регистрам ввода-вывода - DDRX (отвечает за тип порта - вход, или выход) и PORTX (позволяет программным путем подключать подтягивающие резисторы).
Разрешение прерываний происходит на двух уровнях: общем уровне (установкой в 1 флага I регистра SREG) и местном уровне. В данной программе используются два вида прерываний: внешние INT0 и INT1, и прерывания по сравнению от первого таймер-счетчика. Внешние прерывания разрешаются путем установки в 1 6-го и 7-го битов регистра GIMSK, а прерывание по переполнению нулевого таймер-счетчика разрешается установкой в 2-го бита регистра TIMSK (регистра маскирования прерываний). Команды инициализации ЖКИ выполняют включение ЖКИ и очистку экрана, настройку вида курсора, указание кол-ва строк, равного двум и установку разрядности шины данных (8-разрядная шина, в нашем случае).
В блоке опроса кнопок опрашиваются 4, 5, 6 и 7 выводы порта D, к которым подключены кнопки управления частотой. (Кнопки регулировки амплитуды подключены к выводам внешних прерываний, обработка которых будет рассмотрена позднее.) Опрос кнопок производится путем проверки соответствующего вывода порта на нулевое состояние (когда кнопка не нажата, на ее выводе стоит «1», вследствие наличия подтягивающих резисторов). Если кнопка нажата, происходит переход на соответствующую метку, в которой устанавливаются значения констант, которые будут записаны в регистр счетчик TCNT0 таймер-счетчика. Если же не нажата ни одна из кнопок, то в регистры сравнения загружаются значения по умолчанию, соответствующие частоте 10 Гц. После блока опроса кнопок следует блок генерирования сигнала.
Генерация линейно нарастающего напряжения происходит по следующему принципу. Сначала на вход ЦАП подается значение амплитуды увеличенное на единицу, затем сравнивается с максимальным значением, если амплитуда не достигла максимального значения амплитуды, то значение опять увеличивается на единицу и подается на вход ЦАП. Если же значение достигло максимальной амплитуды, то вызывается подпрограмма формирования временной задержки. После этого на вход ЦАП подается цифровой код, равный нулю, затем опять вызывается подпрограмма временной задержки и происходит переход на метку блока опроса кнопок. Перед блоком генерирования сигнала 6 и 7 биты регистра GIMSK устанавливаются в ноль, чтобы нажатие кнопки регулировки амплитуды не влияло на частоту импульсов.
Кроме главной программы, в данном проекте используются подпрограммы формирования временной задержки, индикации текущей амплитуды сигнала, записи команд и записи данных в ЖКИ, опроса флага занятости ЖКИ и чтения кода отображаемого символа из EEPROM.
В подпрограмме формирования временной задержки выполняются следующие шаги. Сначала в регистр TCNT0 записывается значение константы freq. Рассчитывается оно по следующему алгоритму. Период импульса делим на число равное максимальному значению амплитуды, затем умножаем на тактовую частоту МК, если полученное число больше 255, то делим его на коэффициент предделения. Затем из 255 вычитаем полученное число и записываем значение в регистр TCCR1B. После чего вызывается команда sleep, переводящая МК в режим Idle Mode, в котором ядро не выполняет никаких операций. После того, как таймер отсчитывает нужное число тактов, он вызывает прерывание, выводящее МК из режима Idle Mode, и следующей командой в регистр TCCR0 записывается 0, т.е. таймер-счетчик выключается.
Подпрограмма проверки флага занятости ЖКИ нужна для того, чтобы определить момент, когда ЖКИ свободен и готов к выполнению очередной команды. Последовательность проверки флага занятости следующая. Сначала порт А МК, подключенный к шине данных ЖКИ, настраивается как вход, и к нему подключаются подтягивающие резисторы. Затем выход R/W ЖКИ устанавливается в 1, что настраивает шину данных ЖКИ на запись в порт МК. Затем, в соответствии с временной диаграммой сигналов ЖКИ, выдерживается задержка в 1 мкс, для которой требуются 4 команды nop. После них сигнал E устанавливается в 1, выдерживается задержка еще в 0.5 мкс и значение шины данных записывается во временный регистр temp МК. Затем сигнал E сбрасывается в 0 и опрашивается 7-й бит регистра temp, содержащий значение флага занятости. Если он равен 1, то идет возврат на метку команды установки R/W в 1, если нет, то идет команда выхода из подпрограммы.
Подпрограмма записи команд в ЖКИ содержит следующие шаги. Сначала порт А настраивается на вывод информации. Затем устанавливаются в 0 сигналы RS (по шине данных передаются команды) и R/W (шина данных ЖКИ настроена на прием информации из порта МК). После чего выдерживается время 0.5 мкс, и сигнал E устанавливается в 1. Затем выдерживается время 1 мкс и в шину данных через порт А записывается значение команды из константы comm. После этого сигнал E сбрасывается в 0, и идет выход из подпрограммы.
Подпрограмма записи данных в ЖКИ немногим отличается от записи команд. Различия заключаются лишь в том, что сигнал RS устанавливается в 1, что говорит о передаче данных, а на шину данных подается не код команды, а код отображаемого символа.
Коды отображаемых символов хранятся в EEPROM по следующему принципу. Поскольку изменение цифрового кода амплитуды импульса осуществляется с шагом 5 (приблизительно 0.1 В), а максимальное значение цифрового кода равно 255, то кол-во значений амплитуды равно 46 (вместе с нулевым значением). На ЖКИ отображаются целая, десятичная и сотая части значений амплитуды. Поэтому в первые 46 байта EEPROM записываются коды целой части амплитуды, во вторые 46 байта - коды десятичной части амплитуды, и в третьи 46 байта - коды сотой части. Сама же подпрограмма чтения из EEPROM содержит в себе команды записи адреса считываемого байта в регистры EEARH и EEARL, установки нулевого бита регистра EECR в 1 (разрешение чтения из EEPROM) и чтения значения кода из регистра данных EEDR в константу symbol.
Подпрограмма индикации текущей амплитуды сигнала использует подпрограммы проверки флага занятости ЖКИ, а также записи команд и данных в ЖКИ. Ее можно условно разделить на блоки очистки экрана, индикации целой части значения амплитуды, индикации десятичной точки, десятичной и сотой части значения амплитуды, а также индикации пробела и буквы V. В итоге значение амплитуды по умолчанию выводится на ЖКИ в виде «2.45 V». Каждый из блоков (кроме блоков индикации точки, пробела и буквы V) содержит вызов подпрограммы чтения флага занятости, чтения кода символа из EEPROM, индикации символа на ЖКИ. После блоков вывода целой и десятичной части значение адреса увеличивается на 46.
Подпрограммы уменьшения и увеличения амплитуды действуют по следующему принципу. Сначала текущая амплитуда сравнивается со значениями 0 (при уменьшении амплитуды) и 255 (при увеличении амплитуды). Если текущая амплитуда не равна этим значениям, то в ПП уменьшения амплитуды происходит уменьшение значения константы amplitude на 5, уменьшение константы адреса на единицу и вызов ПП индикации амплитуды, а в ПП увеличения амплитуды происходит соответственно увеличение значения amplitude на 5, увеличение константы address на единицу и вызов ПП индикации амплитуды. Блок-схема алгоритма приведена на чертеже, прилагающемся к пояснительной записке.
Исходный код программы приведен ниже.
; ******************************************************
; Генератор сигнала линейно нарастающего напряжения сверхнизкой частоты с управляемой частотой и амплитудой
; ******************************************************
include «C:\VMLAB\include\8515def.inc»
; инициализация таймер-счетчика T0 и режима Idle Mode
rcall display_ampl; индикация амплитуды по умолчанию
display_ampl:; подпрограмма индикации амплитуды
; вывод целой части значения амплитуды
; вывод десятичной части значения амплитуды
; вывод сотой части значения амплитуды
command:; подпрограмма записи команды в ЖКИ
data:; подпрограмма записи кода символа в ЖКИ
bf_check:; подпрограмма проверки флага занятости
read_EEPROM:; подпрограмма чтения кода символа из EEPROM
db $30, $30, $30, $30, $30, $31, $31
db $31, $31, $31, $31, $31, $31, $31, $31, $32, $32, $32, $32, $32
db $32, $32, $32, $32, $32, $33, $33, $33, $33, $33, $33, $33, $33
db $33, $33, $34, $34, $34, $34, $34, $34, $34, $34, $34, $34, $35
db $35, $36, $37, $38, $39, $30, $31
db $32, $33, $34, $35, $36, $37, $38, $39, $30, $31, $32, $33, $34
db $35, $36, $37, $38, $39, $30, $31, $32, $33, $34, $35, $36, $37
db $38, $39, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $30
db $39, $39, $38, $38, $38, $38, $38
db $37, $37, $37, $37, $37, $36, $36, $36, $36, $36, $35, $35, $35
db $35, $35, $34, $34, $34, $34, $34, $33, $33, $33, $33, $33, $32
db $32, $32, $32, $32, $31, $31, $31, $31, $31, $30, $30, $30, $30
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
db $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
В начале программы с помощью директив.def регистрам общего назначения присваиваются определенные, осмысленные имена, с целью облегчения чтения кода в дальнейшем. Затем, после метки reset идет блок описания подпрограмм обработки прерываний. В нашем случае таких подпрограмм 2 - подпрограммы уменьшения и увеличения амплитуды (minus и plus). После метки start начинается основная программа. Первые 4 команды после нее инициализируют стек (записывают в старший и младший байты указателя стека SPH и SPL адреса границы оперативной памяти, тем самым под область стека отводится все адресное пространство ОЗУ). Затем с помощью команд ldi в используемые РОНы загружаются требуемые значения. После присвоения значений РОНам (константам) с помощью команд out в регистры ввода-вывода записываются значения настройки портов. Командами
out DDRA, ConstFF и out DDRC, ConstFF порты A и С настраиваются на выход, командой out PORTD, ConstFF к порту D подключаются подтягивающие резисторы. Далее, командой sei разрешаются прерывания на общем уровне. Далее, командами ldi temp, 2 и out TIMSK, temp
в регистре TIMSK устанавливается в 2-й бит, разрешающий прерывания по сравнению от первого таймер-счетчика. Следующими двумя командами в регистр MCUCR записывается значение 0b00101010. Установка пятого бита регистра разрешает использование режима пониженного энергопотребления, а значение 4-го бита, равное 0, задает тип режима - Idle Mode. 3-й и 1-й биты, установленные в 1, задают внешнее прерывание по переднему фронту сигнала (по отпусканию кнопки). Далее, запись значения 0b11000000 в регистр GIMSK разрешает внешние прерывания INT0 и INT1.
В блоке инициализации ЖКИ с помощью команд rcall вызываются подпрограммы опроса флага занятости, записи команд в ЖКИ и индикации амплитуды по умолчанию.
В блоке опроса кнопок используются команды sbis, пропускающие следующую за ними команду, если опрашиваемый бит порта установлен в 1 (кнопка не нажата). В противном случае происходит переход по соответствующей метке, где командами ldi в константу freq загружаются требуемое значение. В блоке генерации командами out в порт С, подключенный ко входу ЦАП, загружаются значения амплитуды и нулевые значения, задающие 2 полупериода импульса.
5 . Результаты эмуляции программы в пакете VMLAB
6 . Анализ временных соотношений и оценка погрешностей
С помощью результатов, полученных при эмуляции программы в среде VMLAB, можно оценить частоту полученных сигналов. В первом режиме период меандра оказывается равным 200 мс, как следствие его частота равна 5 Гц и не отличается от заданной в ТЗ. Во втором режиме период меандра равен 100 мс, а частота сигнала - 10 Гц, которая также не отличается от заданной. В третьем режиме период меандра равен 68.0 мс, а его частота равна f = 1000/68.0 = 14.7 Гц. Она отличается от заданной частоты 15 Гц на 0.03 Гц, и в данном случае относительная погрешность частоты сформированного сигнала равна:
Полученная относительная погрешность меньше заданной в ТЗ - 0.5%, следовательно, требуемая точность полученного значения частоты достигнута.
В 4-м режиме период меандра равен 50 мс, а его частота - 20 Гц, которая не отличается от заданной.
Что касается 1-го, 2-го и 4-го режимов, то погрешность значения частоты есть, но она меньше погрешности измерения частоты сигнала средствами программы VMLAB.
В итоге выполнения курсового проекта была разработана схема генератора линейно нарастающего напряжения, а также был составлен алгоритм и текст программы функционирования МК. Полученное устройство обладает следующими характеристиками:
- частота сигнала устанавливается в 4 фиксированных значения
(5, 10, 15 и 20 Гц) 4-мя кнопками. Погрешность значения частоты не превышает 0.5%;
- амплитуда сигнала изменяется в пределах от 0.5 до 5 Вольт 2-мя кнопками увеличения и уменьшения амплитуды через 0.1 Вольт;
- индикация амплитуды осуществляется с помощью ЖКИ на базе контроллера HD44780.
Проверка работоспособности устройства эмулировалась в программе VMLAB, позволяющей описать схему электрическую принципиальную устройства, ввести текст программы функционирования устройства, а также осуществить визуальный контроль над генерируемым сигналом и проверку работы устройства в различных режимах.
Устройство и механизм действия простейшего генератора пилообразного напряжения. Принципиальная схема простейшего ГПН. Классификация устройств со стабилизаторами тока. Разработка принципиальной схемы генератора. Алгоритм и программа функционирования. курсовая работа [906,6 K], добавлен 09.06.2011
Простейший генератор прямоугольных импульсов. Алгоритм работы устройства, включая подпрограммы. Программный пакет VMLAB, позволяющий производить отладку программного обеспечения и моделирование работы радиоэлектронных устройств. Режим работы генератора. курсовая работа [1,0 M], добавлен 17.05.2014
Проектирование цифрового генератора аналоговых сигналов. Разработка структурной, электрической и функциональной схемы устройства, блок-схемы опроса кнопок и работы генератора. Схема делителя с выходом в виде напряжения на инверсной резистивной матрице. курсовая работа [268,1 K], добавлен 05.08.2011
Развитие микроэлектроники и освоение производства интегральных микросхем. Применение микроконтроллеров и микроэлектронных генераторов импульсов. Разработка электрической и принципиальной схем устройства. Анализ временных соотношений и погрешностей. курсовая работа [1,1 M], добавлен 22.10.2009
Анализ аналогов генератора пилообразного напряжения. Принципиальная схема, принцип работы. Генератор пилообразного напряжения на микроконтроллере. Разработка структурной функциональной схемы цифрового устройства. Индикатор уровня сигнала на LM3915. курсовая работа [1,3 M], добавлен 27.01.2016
Описание структурной схемы генератора. Описание работы схемы электрической принципиальной блока. Выбор и обоснование элементной базы. Разработка конструкции печатной платы. Разработка конструкции датчика сетки частот. Описание конструкции генератора. дипломная работа [287,2 K], добавлен 31.01.2012
Особенности проектирования микропроцессорного устройства "Цифровой осциллограф". Выбор микроконтроллера, описание периферийных устройств. Разработка принципиальной схемы устройства и программы для микроконтроллера, осуществляющей все функции устройства. курсовая работа [923,5 K], добавлен 24.12.2012
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Программно управляемый генератор линейно нарастающего напряжения сверхнизкой частоты на микроконтроллере курсовая работа. Коммуникации, связь, цифровые приборы и радиоэлектроника.
Курсовая Работа На Тему 15 Служебных Собак
Отчет по практике по теме Диагностика всех частей персонального компьютера
Заключение Бронхиальной Астмы Курсовая
Твердый Книжный Переплет Дипломной Работы
Контрольная работа по теме Оглавления и указатели в Microsoft Word
Контрольная Работа Алгебраические Дроби
Дипломная работа по теме Разработка учебного модуля по курсу 'социология' для студентов очной формы обучения технических специальностей
Доклад по теме Элементарные сведения о частицах и анти-частицах
Реферат по теме Тихвинская икона
Контрольная Работа На Тему Распределение Прибыли
Шпаргалки: Прокурорский надзор.
Курсовая работа по теме Анализ современного состояния стада и разработка плана мероприятий по совершенствованию племенных и продуктивных качеств скота
Реферат по теме Особенности закаливания
Дипломная работа по теме Трудности адаптации детей первой младшей группы в условиях посещения и непосещения дошкольного учреждения
Сочинение Описание Воробья
Реферат: Звуковой аналитико-синтетический метод профилактики дислексии у дошкольников с общим недоразвитием речи
Реферат: Внешняя торговля России 5
Список Произведений По Направлениям Итогового Сочинения 2022
Курсовая На Тему Индивидуальный Стиль Деятельности Педагога
Реферат: Стратегический менеджмент и его применение на предприятии ресторанно-гостиничного бизнеса
Реализация национального проекта в сфере совершенствования образования Кемеровской области - Государство и право контрольная работа
Теория нормы права - Государство и право курсовая работа
Система нормативного учёта - Бухгалтерский учет и аудит курсовая работа


Report Page