Реализация в пакете AVRStudio
Курсовая работа, 07 Июня 2013, автор: пользователь скрыл имя
Краткое описание
Тиристор не проводит ток в отрицательную полуволну питающего напряжения (изображена пунктиром на рис. 1, б). Но и в положительную полуволну тиристор открывает цепь тока только после того, как на управляющий электрод будет подан импульс управления. В этот момент тиристор открывается и в цепи появляется ток. Сопротивление тиристора резко уменьшается, и все напряжение питания оказывается приложенным к нагрузке.
Содержание
1 Задание………………………………………………………………………………………....2
2 Реализация в пакете LabVIAW……………………………………………………………….3
3 Параметры настройки контроллера………………………………………………………….7
3.1 АЦП…………………………………………………………………………………………..7
3.2 Аналоговый компаратор……………………………………………….……………….…...7
3.3 Таймеры счетчики…………………………………………………………………………...8
4 Реализация в пакете AVRStudio……………………………………………………………....9
4.1 Параметры схемы……………………………………………………………………………9
4.2 Код программы……………………………………………………………………………..10
4.2 Принцип работы программы………………………………………………………………12
4.4 Схема включения контроллера…………………………………………………………….13
5 Заключение…………………………………………………………………………………….14
Вложенные файлы: 1 файл
Курсовая1.doc
— 382.00 Кб (Скачать файл)
- ;настройка ацп
- ldi tp,0b00100000
- out admux,tp
- ldi tp,0b10001011
- out adcsra,tp
- ;компаратор
- ldi tp,0b01101111
- out acsr,tp
- ldi tp,0b00000000
- out sfior,tp
- ;настройка таймера 2
- ldi tp,0b00000000
- out assr,tp
- ldi tp,0b00000000
- out tccr2,tp
- ldi tp,0b00000000
- out tcnt2,tp
- ldi tp,0b10000000
- out timsk,tp
- ldi tp,0b11111111
- out ocr2,tp
- ; настройка таймера 0
- sbi toie0,0 ; прерывание по переполнению таймера
- ldi tp,0 ;
- out tccr0,tp ; таймер выключен
- sei ; разрешение глобальных прерываний
- clr tp
- clr ygl
- clr imp
- ldi prom,65 ; установка номинального значения угла регулирования
- sbi ADCSRA, 6 ; разрешение единичного преобразования ацп
- wa:
- cpi imp,9 ; смотрим сколько прошло импульсов
- breq v3 ; если прошло 5 импульсов переходим на метку
- cp temp,ygl ; сравниваем текущего угла с углом включения
- breq v2 ; если ровны перейти на метку
- rjmp wa ; переход на метку w
- v2: ;
- sbi PortD,0 ; подать импульс управления
- ldi tp,0b00000010 ; пред делитель на 8
- out tccr2,tp ; запуск импульсов
- cbi acsr,7 ; запускаем компаратор
- sbi ADCSRA, 6
- clr imp
- rjmp wa ; переход на метку w
- v3:
- clr imp
- ldi tp,0b00000000 ; останавливаем импульсы
- rjmp wa
- ;значение ацп
- ADC_CC: ;
- mov ygl,prom ; угол=65
- in uvx,adch ; считываем значение старшего байта ацп
- ror uvx ; делим на 2 получаем значение в вольтах
- cpi uvx,70 ; сравниваем с номинальным
- breq v1 ; если равно переходим на метку
- subi uvx,70 ; вычитаем номинальное значение
- sub ygl,uvx ; прибавляем разность к углу регулирования
- v1: ;
- reti ; выход из прерывания
- ;компаратор
- ANA_COMP:
- sbi acsr,7 ;выключаем компаратор
- clr temp ;обнуляем значение счетчика
- ldi tp,0b00000010 ;
- out tccr0,tp ;запускаем таймер 0
- ldi tp,227 ;
- out tcnt0,tp
- reti ;выход из прерывания
- ;таймер 2 генерация импульсов высокой ча
стоты - TIMER2_COMP:
- sbic portd,0 ;если бит в порту установлен пропускаем следующую строчку
- sbi portd,0 ;устанавливаем нулевой бит порта D в 1
- sbis portd,0 ;если бит в порту сброшен пропускаем следующую строчку
- cbi portd,0 ;устанавливаем нулевой бит порта D в 0
- inc imp ;увеличиваем счетчик на 1
- reti ;
- ;таймер0
- TIMER0_OVF: ;
- inc temp ;увеличиваем счетчик на 1
- out tcnt0,tp ;устанавливаем начальный момент счета частота прерываний 18кГц
- reti ;выход из прерывания
- .exit
4.3. Принцип работы программы.
После окончания настройки
контроллера разрешается
При срабатывании аналогов компаратора (компаратор настроен на прерывание по фронту, и работы от внутреннего источника опорного напряжения 1.23В) происходит переход в подпрограмму обработки прерывания (строки 127-134). В подпрограмме сразу запрещается прерывание компаратора для того, чтобы избавиться от дребезга при переходе через ноль. Обнуляется значение регистра temp, который отвечает за отсчет градусов. Запускается таймер0 с пред делителем тактовой частоты микроконтроллера на 8, и установлено начальное значение счета 227.
Частота прерывания таймера 0 примерно 18кГц, что достигается за счет установки начального значения регистра tcnt0=227. При переполнении таймера вызывается подпрограмма прерывания (строки 143-147). В подпрограмме увеличивается на одно значение регистра temp.
При окончании преобразования ацп, вызывается прерывание. В подпрограмме (строки 116-125) считывается значение выходного напряжения выпрямителя равное половины величины старшего байта ацп (adch/2) и высчитывается угол регулирования по формуле ygl=65+(70- adch/2)
При достижении значения регистра temp=ygl в главном цикле включается импульсы управления, за которые отвечает таймер2: частота импульсов равна f=4МГц/256/8/2=976Гц настройка прерывания таймера по совпадению регистров tcnt2 и ocr2 позволяют увеличить частоту; для уменьшения частоты надо изменить значение пред делителя на 32. Число импульсов равно (9+1)/2=5 строка 98, меняя значение числа, можно менять количество подаваемых импульсов (число обязательно должно быть не четным). После прохождения заданного числа импульсов в главном цикле программы включается аналоговый компаратор и ацп.
4.4 Схема включения контроллера:
Графический интерфейс языка программирования LabVIEW позволяет относительно быстро писать приложения под Windows и управлять устройством с компьютера. Недостатком является высокая стоимость аппаратуры фирмы National Instruments.
Недостатком 8ми битных контроллеров AVR является скудный математический аппарат и как следствие на них практически невозможно вести сложный пересчет данных. Но при этом у контроллеров широкие технические возможности.
Наличие одинаковых интерфейсов передачи у AVR и у LabVIEW позволяет объединить контроллер с компьютером. ПК в таком случаи будет является управляющим устройством на котором выполняется расчет параметров и индикации, а контроллер в свою очередь является устройством измерения и управления схемой.