Статья №14


       
     В  этой  статье  мы  опять  вернемся  к  рассмотрению  проблемы  формирования  ШИМ – сигнала  для  регуляторов  мощности  электроприборов, работающих  на  переменном  токе. 
     Основным  преимуществом  представленного  ниже  регулятора  мощности  является  практически  полное  отсутствие  электромагнитных  помех, которые  обусловлены  включением  или  выключением  тока  нагрузки    внутри  полупериода  напряжения.  Помехи  будут  минимальны, если  нагрузку  включать  и  выключать  в  начале  или  в  конце  полупериода.  
     Всё  это требует  применить  метод  ступенчатого  регулирования  мощности, когда  мощность  на  нагрузке  определяется  количеством  полупериодов  подводимого  напряжения.   Применение  полевого  транзистора  в  качестве  элемента, управляющего  нагрузкой, позволяет  включать  и  выключать  нагрузку  при  напряжении  ниже  1В. Описанный  ниже  регулятор    имеет  8  ступеней  регулирования  (максимальное  число  полупериодов – 8), т.е.  дискретность  регулирования  составляет  12,5%. Временные  диаграммы  работы  регулятора  изображены  на  Рис.1.
 
Рис.1 - Диаграммы сигналов
 
     Схема  регулятора  мощности  приведена  на  Рис.2. Импульсы  частотой  следования  100 Гц  формируются  из  сетевого  напряжения  с  помощью  диодного  моста  VD3 – VD6. И  через  оптопару  DA2  и элементы  микросхемы  (CD-4011  или  564 ЛА7)  DD2.1, DD2.4  поступают  на  вход  INT0  микроконтроллера  DD1  (ATtiny2313). Количество  ступеней  мощности  (полупериодов  напряжения  от  1  до  8)  задаётся  с  терминала  Bascom  и  передаётся  по  RS-232  на  UART  микроконтроллера.
 
Рис.2 - Схема регулятора мощности
 
 
     Шим – импульсы  формируются  микроконтроллером  и  с  вывода  РВ0  через  оптопару  DA3  поступают  на  элемент  управления  нагрузкой – транзисторную  сборку  DA1, транзисторы  которой  соединены  параллельно  для  увеличения  токово – нагрузочной  способности.  Диод  VD1  cлужит  для  предохранения  затвора  от  отрицательного  напряжения. Диод  VD2  шунтирует  нагрузку  от  противо -  ЭДС, в  случае,  если  нагрузка  имеет  индуктивный  характер.
     На  ЖКИ – индикаторе  типа  МТ-16S2H  индуцируется  количество  полупериодов  напряжения  в  ШИМ – сигнале: в  лог.0  и  лог.1  и  слово  «Аrbeit» (на  нижней  стоке  индикатора).
     При  задании  мощности  следует  переключить  тумблер  TS1  из  состояния  «работа», в  состояние  «программ.».
     Программа  для  микроконтроллера  регулятора  мощности  “RP1”  состоит  из  цикла  основной  программы, а  так  же  подпрограмм  обработки  прерываний  по  INT0  и  обработки  прерываний  по  приёму.
     В  цикле  основной  программы  DO…LOOP  включается  светодиод  (PD6), и  на  ЖКИ  отображаются  количество  полупериодов  в  ШИМ – сигнале :  в  лог.1  и   лог.0.  Во  второй  строке  ЖКИ  отображается  слово  «работа».  
     В  подпрограмме  «RxD»  обрабатываются  прерывания  по  приёму. С  терминала  Bascom  задаётся  количество  полупериодов  в  сигнале  лог.1,  и  включается  нагрузка  (РВ0=1). Количество  полупериодов  в  сигнале  лог.0 определяется  выражением:  8 – N, здесь  N-первоначально  заданное  количество  импульсов  в  сигнале  лог.1.
     В  подпрограмме  «Pulse»  обрабатываются  внешние  прерывания  по  INT0. Подсчитывается  количество  синхроимпульсов, приходящих  на  вывод  микроконтроллера  INT0  (PD2). Если  это  количество  совпадёт    с  заданным, то  заданное  количество  изменяется  на  Nновое =8-Nпрежнее , где  8 – максимальное  число  ступеней  регулирования, при  этом  переключается  логический  уровень  на  РВ0.  Таким  образом, на  выводе   РВ0   формируется  ШИМ – сигнал  (см. Рис.1)
     Текст  программы  приводится  ниже:

$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Pind.0 = Input              'UART RXD
Config Portd.1 = Output            'UART TXD
Config Int0 = Falling              'прерывание по спаду импульса
Config Pind.2 = Input              'INT0
Config Portd.6 = Output            'cветодиод
Config Portb.0 = Output            'нагрузка

Dim N As Byte                      'объявление переменных
Dim Counters As Byte
Dim N2 As Byte

On Urxc Rxd                        'определение подпрограмм обработки прерываний
On Int0 Pulse

Enable Interrupts                  'разрешение прерываний
Enable Urxc                        'по приёму
Enable Int0                        'внешнее

Reset Portb.0                      'начальные  установки                      '
N = 0

Do                                 'основной цикл
  Set Portd.6                'вкл. светодиода
  N2 = 8 - N                       
  Cls
  Lcd "N1=" ; N ; " " ; "N2=" ; N2 'отображение на ЖКИ числа полупериодов
  Lowerline                        'отображение на нижнем ур-не ЖКИ
  Lcd "Arbeit"
Loop

Pulse:                             'обработка INT0
 Incr Counters                     'инкриминировать
 If Counters = N Then              'если счёт = кол-ву заданных полупериодов
  N = 8 - N                        'пересчёт
  Toggle Portb.0                   'переключение выхода управ. нагрузкой
  Counters = 0                     'сброс счёта
 End If
Return

Rxd:                               'обработка Urxc
 Reset Portb.0                     'выкл. нагрузки
 Reset Portd.6                     'выкл. светодиода
 N = 0
 Input "ENTER N=1...8:" , N        'ввод с терминала числа положительных ‘полупериодов
 Set Portb.0                       'вкл. нагрузки
Return

End                                'end program


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

     На  таймерах  в  Bascom  можно  создавать  генераторы  прямоугольных  импульсов  с  изменяемой  частотой, которую  можно  изменять  по  определённой  сетке  (с  определённым  шагом).
     На  Рис.3  представлена  схема  генератора  прямоугольных  импульсов, который  построен  на  микроконтроллере  ATtiny2313.  Значение  частоты  задаётся  с  терминала  Bascom  по  RS-232. Сигнал  прямоугольной  формы  (меандр)  снимается  с  вывода  микроконтроллера  РВ3. Значение  частоты  отображается  на  ЖКИ – индикаторе  типа  MT-16S2H. 
 
Рис.3 - Схема генератора прямоугольных импульсов
 
 
     Программа   «Freq»  основана  на  определённом  конфигурировании   счётчика – таймера. При  данной  конфигурации  счётчик,  достигая  значения, записанного  в  регистре  сравнения  Compare A, сбрасывается , а  уровень  логического  сигнала  на  выводе  ОС1А  (РВ3)  переключается  на  противоположный:
 Config Timer1= Timer, Preskale=1024, Compare A=Toggle, Clear Timer1
    Программа  состоит  из  основного  цикла  DO…LOOP, в  котором   происходит  отображение (LCD)  на  ЖКИ - индикаторе  значения  генерируемой  частоты,  и  подпрограммы  обработки  прерывания  по приёму, где  осуществляется  задание  значений  частоты  от  0  до  100Гц  сеткой  1Гц  с  терминала  Bascom  с  помощью  эффекта  «эхо». Далее  происходит  пересчёт  заданной  частоты  в  количество  импульсов  при  определённой  частоте  работы  таймера – счётчика  и  запись  в  регистр  сравнения  Compare A.
      Текст  программы  “Freq”  приведён  ниже:

$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Pind.0 = Input                 'RXD
Config Portd.1 = Output            'TXD
Config Portb.3 = Output            'выход Timer1
Config Timer1 = Timer , Prescale = 1024 , Compare A = Toggle , Clear Timer = 1       'коэфф.дел.=1024,по совпад.- переключ.  OC1A и очистить таймер

Stop Timer1                        'начальная установка таймера
Timer1 = 0

Dim F As Byte                      'объявление переменных
Dim X As Integer
Dim T As Single

Const P = 0.256

On Urxc Rxd                        'определение подпрограммы обраб. прерыв.

Enable Interrupts               ’разрешение  прерываний
Enable Urxc                         ’прерывание  по  приёму

Do                                          'основной цикл
  Cls
  Lcd "F=" ; F ; "Hz"              'отображение на ЖКИ частоты
Loop

Rxd:                                        'подпрограмма прерывания по приёму
 Input "Enter F = 1-100 Hz :" , F  'задание частоты
 T = 500 / F                       ' определение длит. импульса
 X = T / P                            ' определение кол-ва отсчётов
 Compare1a = X                     'запись в регистр сравнения
 Timer1 = 0
 Start Timer1                          'пуск таймера
Return


End                                         'end program  

     Cледует  отметить, что  точность  установки  частоты  составляет  0,032%. Стабильность  работы  генератора  повысится,  если  вместо  внутреннего  RC – генератора  микроконтроллера  использовать  навесной  кварц.
      Используя  методику  создания  подпрограмм  в  Bascom, которая  была  описана  в  предыдущих  статьях,  а  также  различные  сетки  изменения  частоты, можно  получать  генераторы  для  нескольких  диапазонов  частоты.

       Все  приведённые  в  статье  программы  находятся  в  приложении 1.