Реализация в пакете AVRStudio

Автор работы: Пользователь скрыл имя, 07 Июня 2013 в 10:24, курсовая работа

Краткое описание

Тиристор не проводит ток в отрицательную полуволну питающего напряжения (изображена пунктиром на рис. 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 Кб (Скачать файл)

 

  1. ;настройка ацп
  2. ldi tp,0b00100000      
  3. out admux,tp           
  4. ldi tp,0b10001011
  5. out adcsra,tp

 

  1. ;компаратор
  2. ldi tp,0b01101111
  3. out acsr,tp
  4. ldi tp,0b00000000
  5. out sfior,tp


 

  1. ;настройка таймера 2
  2. ldi tp,0b00000000
  3. out assr,tp
  4. ldi tp,0b00000000
  5. out tccr2,tp
  6. ldi tp,0b00000000
  7. out tcnt2,tp
  8. ldi tp,0b10000000
  9. out timsk,tp
  10. ldi tp,0b11111111
  11. out ocr2,tp

 

  1. ; настройка таймера 0
  2. sbi toie0,0            ; прерывание по переполнению таймера
  3. ldi tp,0                 ;
  4. out tccr0,tp           ; таймер выключен

 

  1. sei                        ; разрешение глобальных прерываний
  2. clr tp
  3. clr ygl
  4. clr imp

 

  1. ldi prom,65         ; установка номинального значения угла регулирования
  2. sbi ADCSRA, 6 ; разрешение единичного преобразования ацп

 

  1. wa:
  2. cpi imp,9           ; смотрим сколько прошло импульсов
  3. breq v3             ; если прошло 5 импульсов переходим на метку
  4. cp temp,ygl       ; сравниваем текущего угла с углом включения
  5. breq v2             ; если ровны перейти на метку
  6. rjmp wa             ; переход на метку w
  7. v2:                    ;
  8. sbi PortD,0                 ; подать импульс управления
  9. ldi tp,0b00000010      ; пред делитель на 8
  10. out tccr2,tp                 ; запуск импульсов
  11. cbi acsr,7                    ; запускаем компаратор
  12. sbi ADCSRA, 6         
  13. clr imp
  14. rjmp wa                      ; переход на метку w
  15. v3:
  16. clr imp
  17. ldi tp,0b00000000      ; останавливаем импульсы
  18. rjmp wa

 

  1. ;значение ацп
  2. ADC_CC:                  ;


  1. mov ygl,prom            ; угол=65
  2. in uvx,adch                ; считываем значение старшего байта ацп
  3. ror uvx                       ; делим на 2 получаем значение в вольтах
  4. cpi uvx,70                ; сравниваем с номинальным
  5. breq v1                      ; если равно переходим на метку
  6. subi uvx,70               ; вычитаем номинальное значение
  7. sub ygl,uvx               ; прибавляем разность к углу регулирования
  8. v1:                            ;
  9. reti                            ; выход из прерывания

 

  1. ;компаратор
  2. ANA_COMP:
  3. sbi acsr,7                  ;выключаем компаратор
  4. clr temp                    ;обнуляем значение счетчика
  5. ldi tp,0b00000010   ;
  6. out tccr0,tp               ;запускаем таймер 0
  7. ldi tp,227                  ;
  8. out tcnt0,tp
  9. reti                            ;выход из прерывания

 

  1. ;таймер 2 генерация импульсов высокой частоты
  2. TIMER2_COMP:
  3. sbic portd,0           ;если бит в порту установлен пропускаем следующую строчку
  4. sbi portd,0            ;устанавливаем нулевой бит порта D в 1
  5. sbis portd,0           ;если бит в порту сброшен пропускаем следующую строчку
  6. cbi portd,0            ;устанавливаем нулевой бит порта D в 0
  7. inc imp                ;увеличиваем счетчик на 1
  8. reti                       ;

 

  1. ;таймер0
  2. TIMER0_OVF:   ;
  3. inc temp               ;увеличиваем счетчик на 1
  4. out tcnt0,tp           ;устанавливаем начальный момент счета частота прерываний 18кГц
  5. reti                   ;выход из прерывания
  6. .exit

4.3. Принцип работы программы.

После окончания настройки  контроллера разрешается единичное  преобразование ацп и программа  входит в главный цикл. В главном цикле (строки 97-114) происходит включение и выключение импульсов управления.


При срабатывании аналогов компаратора (компаратор настроен на прерывание по фронту, и работы от внутреннего источника опорного напряжения 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 Схема включения контроллера:

 

5. Заключение.

Графический интерфейс  языка программирования LabVIEW позволяет относительно быстро писать приложения под Windows и управлять устройством с компьютера. Недостатком является высокая стоимость аппаратуры фирмы National Instruments.

Недостатком 8ми битных контроллеров AVR является скудный математический аппарат и как следствие на них практически невозможно вести сложный пересчет данных. Но при этом у контроллеров широкие технические возможности.

Наличие одинаковых интерфейсов  передачи у AVR  и у LabVIEW позволяет объединить контроллер с компьютером. ПК в таком случаи будет является управляющим устройством на котором выполняется расчет параметров и индикации, а контроллер в свою очередь является устройством измерения и управления схемой.


Информация о работе Реализация в пакете AVRStudio