6

Программно управляемый генератор прямоугольного импульсного сигнала на микроконтроллере

Курсовая

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

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

Русский

2012-11-14

726.5 KB

244 чел.

Министерство образования и науки Украины

Харьковский национальный университет радиоэлектроники

Кафедра радиоэлектронных устройств

Дисциплина: цифровые приборы

КУРСОВАЯ РАБОТА

Расчетно-пояснительная записка

Тема: программно управляемый генератор прямоугольного импульсного сигнала на микроконтроллере.

Выполнил студент гр.                    Руководитель:

Пронякин С.С.                     Басецкий В.Л.

___________________

(подпись)

“__”__________2010 г.

ХАРЬКОВ 2010

Оглавление:

Введение………………………………………………………………………3

Реферат………………………………………………………………………..4

1. Обзор аналогичных устройств……………………………………………5

2. Обоснование выбранного схемотех. решения…………………………...8

3. Разработка принципиальной схемы устройства………………………...11

4. Разработка алгоритма и программы……………………………………..12

5. Результаты эмуляции в программе VMLab……………………………..17

6. Анализ временных соотношений и погрешностей……………………..20

Выводы……………………………………………………………………….22

Ссылки и перечень литературы…………………………………………….23

Приложения………………………………………………………………….24

ВВЕДЕНИЕ

Данная работа посвящена синтезу, моделированию и расчету схемы генератора прямоугольного сигнала постоянной длительности импульса и переменной скважности на основе микроконтроллера АТ90S8515 семейства Classic. Микроконтроллер есть функционально и конструктивно завершенное изделие, выполненное в виде одной микросхемы и реализующее прием, обработку и передачу информации, а так же формирование управляющего сигнала. Микроконтроллеры позволяют сравнительно быстро и удобно реализовать достаточно сложные схемы с широким спектром выполняемых задач и многими возможностями.

В ходе работы будет проведен синтез, моделирование, отладка и эмуляция работы схемы генератора синусоидального сигнала с изменяемыми параметрами. Так же будут реализованы схема электрическая принципиальная, блок-схема алгоритма и будут рассмотрены аналогичные устройства других типов.

 

РЕФЕРАТ

Микроконтроллер, ассемблер, VMLab, жидкокристаллический индикатор, команда, операнд, регистр, порт, цифро-аналоговый преобразователь, осциллограф, EEPROM, ОЗУ, энергонезависимая память, шина данных, гармонический сигнал, матрица символа, автогенератор, логические элементы, блок-схема.

1 КРАТКИЙ ОБЗОР АНАЛОГИЧНЫХ УСТРОЙСТВ

Генераторы на основе микроконтроллера работают с цифровыми сигналами – последовательностями нулей и единиц. Поэтому для формирования аналоговых сигналов в схеме генератора целесообразно применять цифро-аналоговые преобразователи (ЦАП), сглаживающие ступенчатую структуру сигнала. С другой стороны, генератор на микроконтроллере способен сформировать достаточно много вариантов сигналов, как цифровых, так и аналоговых – например, меандр, пилообразный сигнал со спадающим/возрастающим фронтом, синусоиду. Используя первый таймер-счетчик можно сформировать ШИМ (сигнал с широтно-импульсной модуляцией) – последовательность импульсов переменной длительности, но с постоянным периодом. Другое определение ШИМ-последовательности – сигнал постоянной частоты и переменной скважности. В сочетании с аналоговым фильтром ШИМ можно использовать опять-таки для генерации аналогового сигнала[1].

В целом, форма генерируемого сигнала определяется только двумя параметрами – длиной временной задержки таймера и амплитудой импульса. Сигнал любой формы можно «составить» из последовательности коротких прямоугольных импульсов, амплитуда которых может быть записана в оперативную, либо энергонезависимую память[2].

Микроконтроллерная структура генератора и наличие в нем таймер-счетчиков позволяет достаточно просто осуществлять дискретную подстройку частоты либо амплитуды сигнала. Плавная подстройка требует несколько иного подхода – она строится на основе дискретной и имеет «квазиплавный» характер. Так же микроконтроллер позволяет устроить индикацию любого показателя генератора разными способами – от диодов до жидкокристаллических индикаторов[3].

Аналогом программно управляемого генератора аналогового генератора (АГ) являются всевозможные нецифровые генераторы, выполняемые на основе колебательных контуров и фильтров. Для сравнения, возьмем схему автогенератора. Такой генератор содержит транзистор, играющий роль ограничителя и усилителя, параллельный LC-контур в качестве избирательной цепи и цепи питания и смещения.

Рисунок 1 – схема автогенератора с кондуктивной связью.

В составе такого автогенератора транзистор используется в активном режиме – при открытом эмиттерном переходе и обратном напряжении на коллекторном переходе, отсечки – когда оба перехода заперты, и насыщения – когда они оба отперты и ток коллектора определяется внешн. цепью. Данный контур содержит катушки индуктивности L1 и L2, не имеющие индуктивной связи между собой. Напряжение обратной связи снимается с элемента контура, имеющего кондуктивную связь с другими эл-тами контура. Такой генератор может дать нам требуемый сигнал, но предложенный в теме проекта цифровой вариант обладает существенными преимуществами – индикацией частоты, возможностью подстройки параметров, устойчивой генерацией. Для обеспечения устойчивости к аналоговому АГ потребовалось бы подключать кварцевый резонатор, тогда как цифровой генератор дает четко обозначенную частоту[4].

Второй пример – генератор на микросхемах структуры КМОП:

Рисунок 2 – схема генератора на логических микросхемах серии К561

В этом случае мы имеем генератор прямоугольного импульсного сигнала на элементах 2И-НЕ, построенный по другому принципу, с возможностью подстройки частоты путем изменения параметров элементов. Он сохраняет работоспособность при понижении напряжения питания Uпит до 2 В, при этом, правда, значительно уменьшается частота генерации. Преимущества схемы, синтезируемой в курсовой работе опять-таки очевидны – в ее случае частота изменяется нажатием одной кнопки, тогда как здесь требуется согласованное изменение номиналов емкостей и сопротивлений. Также в схеме на лог. элементах недоступна корректировка амплитуды и индикация[5].

В целом, все аналоговые схемы по сравнению с цифровыми, выполненными на микроконтроллерах, проигрывают последним в плане простоты изменения параметров и удобства использования. Также в некоторых случаях можно говорить о более высоком качестве сигнала, генерируемого цифровым генератором.

2 ОБОСНОВАНИЕ ВЫБРАННОГО ТЕХНИЧЕСКОГО РЕШЕНИЯ

Данный генератор реализован на базе  AT90S8515 - 8-ми разрядного AVR микроконтроллера с 8 Кб Flash-памятью с поддержкой внутрисистемного программирования. Этот контроллер имеет следующие показатели:

- 8 Кбайт Flash- памяти с поддержкой внутрисистемного программирования:

   SPI последовательный интерфейс для загрузки программного обеспечения

   Ресурс: 1000 циклов записи/ стирания

- 512 байт EEPROM

   Ресурс: 100 000 циклов записи/ стирания

- 512 байт внутренней SRAM

- 32 х 8 рабочих регистров общего назначения

- 32 программируемые шины I/O

- Программируемый последовательный UART

- SPI последовательный интерфейс

- Напряжение VCC: от 2.7В до 6.0 В

- Полностью статический режим работы:

   От 0 до 8 МГц (от 4.0 В до 6.0 В)

   От 0 до 4 МГц (от 2.7 В до 4.0 В)

- Производительность, вплоть до 8 MIPS при 8 МГц

- Один 8-ми разрядный таймер/ счетчик с отдельным предварительным делителем частоты.

- Один 16-ти разрядный таймер/ счетчик с отдельным предварительным делителем частоты с режимами сравнения, захвата.

- Сдвоенный ШИМ

- Внешние и внутренние источники прерывания.

- Программируемый следящий таймер со встроенным тактовым генератором.

- Встроенный аналоговый компаратор.

- Режимы пониженного энергопотребления:

   А) покоя (Idle)

   Б) отключения (Power Down)

- Программируемая блокировка для безопасности программного обеспечения.

Рисунок 3 – блок-схема AT90S8515

Рисунок 4 – расположение выводов контроллера.

Данный контроллер выбран из соображений экономности и максимальной эффективности при малой стоимости контроллера и его общей простоте.

   Цифровой генератор обладает некоторыми ценными преимуществами по сравнению с аналоговым его эквивалентом:

  1.  простота реализации достаточно точной генерации.
  2.  Настройка параметров генератора перенесена из схемотехнической в программную область, что позволяет затрачивать меньше усилий, времени и ресурсов для корректировки – достаточно лишь переписать соответствующий участок программы.
  3.  Компактность.
  4.  Большая защищенность от внешних воздействий (помех и наводок), меньшее количество паразитных параметров и т.д.

Таким образом, использование микроконтроллера в синтезе генератора представляется экономичным и целесообразным.

3 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ УСТРОЙСТВА

Согласно предыдущим размышлениям схема генератора состоит из таких функциональных блоков:

- микроконтроллер AT90S8515

- матрица кнопок

- индикация номера текущего режима, представленная восемью диодами

- нагрузка

- осциллограф (для отслеживания формы генерируемого сигнала)

- заземления, коммуникационные провода и узлы.

- элемент питания (в нашем случае – питание от сети в 220 В)

 

Функция подтягивающих резисторов, обеспечивающих бесперебойную отработку нажатий кнопок, осуществлена программным решением (на регистр ввода-вывода PORT порта А, к которому подключены кнопки, подается логическая единица). Данная проблема могла быть решена как схемотехнически (подключением  резисторов) так и программно (как описано выше). Мною был выбран второй путь, как более простой и удобный.

Подробная принципиальная схема генератора приведена в дополнении А.

4 РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММЫ

Ниже будет приведен текст программы на языке Assembler – проектный файл, содержащий в себе программное описание подключений элементов схемы, необходимое для корректного согласования программы и собранного устройства, и, текст прошивки устройства.

Текст программы:

; ******************************************************

; BASIC .ASM template file for AVR

; ******************************************************

.include "C:\PROGRA~2\VMLAB\include\8515def.inc"

; Define here the variables

;

.def  temp  =r16

.def Const0 = r17

.def ConstFF = r18

.def ConstOCR1AH =r19

.def  ConstOCR1AL =r20

.def ConstOCR1BH =r21

.def ConstOCR1BL =r22

.def Const1 =r23

.def Const2 =r24

.def Diods =r25

; Define here Reset and interrupt vectors, if any

;

reset:

   rjmp start

  reti      ; Addr $01

  reti      ; Addr $02

  reti      ; Addr $03

  rjmp OCR1A      ; Addr $04

  rjmp OCR1B      ; Addr $05

  reti      ; Addr $06

  reti      ; Addr $07

  reti      ; Addr $08

  reti      ; Addr $09

  reti      ; Addr $0A

  reti      ; Addr $0B

  reti      ; Addr $0C        Not all MCUs have the same

; Program starts here after Reset

;

start:

   ldi temp, high(RAMEND)

  out SPH, temp

  ldi temp, low(RAMEND)

  out SPL, temp

  ldi Const0, 0b00000000

  ldi ConstFF, 0b11111111

   ldi temp, $0F

  out DDRA, temp

  out PORTA, ConstFF

  out DDRB, ConstFF

  out DDRC, ConstFF

  out PORTC, ConstFF

  sbi PORTB,1

  ldi Diods,0b11111110

  out PORTC,Diods

  sei

  ldi temp,0b01100000

  out TIMSK,temp

   ldi ConstOCR1AH,$01

   ldi ConstOCR1AL,$F4

   ldi ConstOCR1BH,$27

   ldi ConstOCR1BL,$10

keys:         ldi Const1, 0b11111110

                 ldi Const2, 0b11111101

out OCR1AH,ConstOCR1AH

out OCR1AL,ConstOCR1AL

out OCR1BH,ConstOCR1BH

out OCR1BL,ConstOCR1BL

  ldi temp,0b00000001

  out TCCR1B, temp

                 out PORTA, Const1

               nop

                 sbis PINA,4

                 rjmp m0

                 sbis PINA,5

                 rjmp m1

                sbis PINA,6

                 rjmp m2

                 sbis PINA,7

                rjmp m3

                out PORTA, Const2

                 nop

                 sbis PINA,4

                 rjmp m4

                 sbis PINA,5

                 rjmp m5

                 sbis PINA,6

                 rjmp m6

                 sbis PINA,7

                 rjmp m7

                 rjmp keys

m0:     ldi ConstOCR1BH,$27

       ldi ConstOCR1BL,$10

       ldi Diods,0b11111110

     out PORTC,Diods

      rjmp keys

m1:     ldi ConstOCR1BH,$13

       ldi ConstOCR1BL,$88

       ldi Diods,0b11111101

     out PORTC,Diods

     rjmp keys

m2:     ldi ConstOCR1BH,$D

       ldi ConstOCR1BL,$05

       ldi Diods,0b11111011

     out PORTC,Diods

      rjmp keys

m3:     ldi ConstOCR1BH,$09

       ldi ConstOCR1BL,$C4

       ldi Diods,0b11110111

     out PORTC,Diods

       rjmp keys

m4:     ldi ConstOCR1BH,$07

       ldi ConstOCR1BL,$D0

       ldi Diods,0b11101111

     out PORTC,Diods

      rjmp keys

m5:     ldi ConstOCR1BH,$06

       ldi ConstOCR1BL,$82

       ldi Diods,0b11011111

     out PORTC,Diods

      rjmp keys

m6:     ldi ConstOCR1BH,$05

       ldi ConstOCR1BL,$94

       ldi Diods,0b10111111

     out PORTC,Diods

      rjmp keys

m7:     ldi ConstOCR1BH,$04

       ldi ConstOCR1BL,$E2

       ldi Diods,0b01111111

     out PORTC,Diods

      rjmp keys

OCR1A: cbi PORTB,1

        reti

OCR1B: sbi PORTB,1

  out TCNT1H,Const0

  out TCNT1L,Const0

    reti

Проектный файл:

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

; ------------------------------------------------------------

.MICRO "AT90S8515"

.PROGRAM "my_idea.asm"

.TARGET "my_idea.hex"

.TRACE              ; Activate micro trace

; Following lines are optional; if not included

; exactly these values are taken by default

; ------------------------------------------------------------

.POWER VDD=5 VSS=0  ; Power nodes

.CLOCK 1meg         ; Micro clock

.STORE 2000m         ; Trace (micro+signals) storage time

; Micro nodes: RESET, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO, TIM1OVF

; Define here the hardware around the micro

; ------------------------------------------------------------

X1  KEY4x4 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

D1 VDD node1

D2 VDD node2

D3 VDD node3

D4 VDD node4

D5 VDD node5

D6 VDD node6

D7 VDD node7

D8 VDD node8

R1  node1 PC0 1k

R2  node2 PC1 1k

R3  node3 PC2 1k

R4  node4 PC3 1k

R5  node5 PC4 1k

R6  node6 PC5 1k

R7  node7 PC6 1k

R8  node8 PC7 1k

.PLOT V(PB1)

Алгоритм данной программы и ее подпрограмм находится в приложении.

5 РЕЗУЛЬТАТЫ ЭМУЛЯЦИИ В WMLAB

Рисунок 5 – режим 1

Рисунок 6 – режим 2

Рисунок 7 – режим 3

Рисунок 8 – режим 4

Рисунок 9 – режим 5

Рисунок 10 – режим 6

Рисунок 11 – режим 7

Рисунок 12 – режим 8

6. АНАЛИЗ ВРЕМЕННЫХ СООТНОШЕНИЙ И ОЦЕНКА ПОГРЕШНОСТЕЙ

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

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

  1.  находим период/длину импульса
  2.  умножаем на частоту процессора – 1000 герц в нашем случае
  3.  делим на коэф-т предделения и полученную цифру записываем в OCR1 (был взят коэф-т предделения 1, так как длина самой большой задержки не выходила за величину 65635 тактов)

Очень удобным свойством первого таймера так же является то, что он позволяет реализовать очень точно требуемое значение задержки, практически не требующее корректировки и подгонки. Таким образом, погрешности при генерации были исчезающее малы и стремились к нулевому значению. Для примера приведем замер периода для первого режима:

В данном случае мы видим, что длина периода равна 10 мс, что в точности соответствует его частоте – 100 Гц.

ВЫВОДЫ

По завершению работы мы получили работоспособную программу, готовую к прошивке и испытанию на реальном устройстве. Генератор, эмуляция прошивки которого была совершена в программе VMLab, имеет такие показатели:

  1.  начальная частота генерации – 100 Гц. Далее она изменяется 8-ю кнопками через 100 Гц до 800 Гц.
  2.  Исчезающее малые погрешности генерации
  3.  Плавная подстройка амплитуды с помощью подстроечного резистора от 1 до 14 В.
  4.  Длительность импульса – 0.5 мс.
  5.  Питание – от сети (220 В)
  6.  Положительная полярность сигнала.
  7.  Индикация режима генерации светодиодом

Таким образом, были соблюдены требования технического задания, указанные в начале работы. Генератор был реализован на основе максимально простых, дешевых и обеспечивающих нужные показатели элементах, из чего следует его низкая стоимость и простота реализации.

ССЫЛКИ И ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

[1] Методические указания к лабораторным работам по курсу “Цифровые устройства” для студентов направления подготовки  6.050901  "Радиотехника" / Составитель:  В.Л. Басецкий. – Харьков:  ХНУРЭ,  2010. – 26 с.

[2] Методические указания по изучению программного пакета “Visual Micro Lab” для выполнения лабораторных работ по курсу „Цифровые устройства” для  студентов направления: 6.050901 ”Радиотехника”/Учред.: В.Л. Басецкий – Харьков: ХНУРЭ, 2010 – 37 с.

[3] Методические указания к практическим и лабораторным  работам по курсу «Цифровые устройства» для студентов направления «Радиотехника». / Сост.  В.Л. Басецкий. – Харьков: ХНУРЭ,  2010. – 31с.

[4] Голуб В.С. Генераторы гармонических колебаний. – М.: Энергия, 1980. – 80 с.

[5] http://www.chipinfo.ru/literature/radio/200001/p44_45.html

ПЕРЕЧЕНЬ ГРАФИЧЕСКОГО МАТЕРИАЛА

Приложение А: Схема электрическая принципиальная устройства (формат А3).

Приложение Б: Блок-схема алгоритма программы (формат А3).

Приложение В: Блок-схемы алгоритмов подпрограмм (формат А3).

Приложение Г: спецификация и перечень элементов.


 

А также другие работы, которые могут Вас заинтересовать

61457. Iгри на уроках англiйськоi мови у молодших класах 30.45 KB
  Iгра являэться добрим средством активiзацii лексики, отработки вимови, розвитку навикiв усноi мови. Iгрова форма занять допоможе уникнути дiтям додаткового навантаження суто навчальною дiяльнiстю...
61461. Основні прийоми введення та редагування тексту 26.04 KB
  Молодці ви вправно справилися із тим завданням. Погляньте на дошку ну хто вже здогадався яке схоже прислів’я є у нас. Скажи мені який у тебе компютер і я скажу хто ти. Скажи мені хто твій друг і я скажу хто ти.
61463. Правила введення тексту. Форматування тексту 24.09 KB
  А зараз діти давайте разом пригадаємо що ви вивчали на останньому уроці інформатики З якою програмою ви працювали на минулому уроці Для чого ми можемо використати цю програму Де ми можемо її знайти на комп’ютері...
61464. Информационные технологии на уроках ИЗО 223.73 KB
  Цель моей педагогической деятельности в течение последних лет выявить возможности применения компьютера на уроках ИЗО. В результате я определила формы применения компьютера на уроках ИЗО...
61465. Быстрый эффект Instagram в Фотошоп 238.16 KB
  Откройте изображение, к которому вы хотите применить эффект, далее, идём Слой – Новый Корректирующий слой – Уровни (Layer>New Adjustment Layer>Levels). В панели RGB, выберите Канал Синий...