Программная реализация импульсов и сдвига 120 эл.градусов

Обсуждаем контроллеры компании Atmel.
Ответить
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Программная реализация импульсов и сдвига 120 эл.градусов

Сообщение BeerserkN1 »

Добрый день, уважаемые пользователи форума! Всех с наступающим новым годом! Пишу программу для МК Atmega 8535, которая реализует одноканальную СИФУ тиристорным преобразователем, цель написания программы - освоение современной микропроцессорной техники, обучение, иначе говоря. Пишу на ассемблере. Возникло несколько вопросов, касающихся реализации формирования импульсов для тиристоров фаз А, В, С и сдвига 120 эл. градусов (схема трёхфазная нулевая, без реверса). Сеть имитирует генератор прямоугольных импульсов с частотой 50 Гц, синхронизация происходит по переднему фронту, в подпрограмме обработки прерывания (при переходе из 0 в 1) происходит перезапуск основного таймера (основным я назвал таймер, отвечающий за выработку импульса в фазе А, от которого отсчитываются остальные) в регистр сравнения которого записано некое значение нужного угла, как только таймер досчитает до этого значения, то произойдёт прерывание, в котором будет вырабатываться импульс фазы А, в этой же подпрограмме происходит запуск второго таймера, который вырабатывает импульс через 120 эл. градусов в фазе В. Кусочек кода, в котором это реализуется, приложен ниже.
1 вопрос: как реализовать 3 фазу, возможно ли реализация 3 импульса в фазе С так же перезапуском таймера, например, Т2, который отвечал за выработку импульса в фазе В. или есть какие-то более простые алгоритмы?
2 вопрос: см. картинку ниже.
P.S. программу отлаживал в протеусе, проверял работу на лабораторном стенде. Тот код, который у меня сейчас есть (с 2-мя фазами), вполне рабочий.
Импульсы.txt
(924 байт) 207 скачиваний
Вот то, что получилось в протеусе
Изображение
2 вопрос
Изображение
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение ARV »

Я бы делал на единственном таймере: сначала отсчитывал бы угол регулирования, выдавал импульс первой фазы, а затем перенастраивал бы таймер на "120 градусов" и выдавал бы еще 2 импульса, после чего таймер бы останавливал до момента прихода синхрофронта.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение BeerserkN1 »

ARV писал(а):Я бы делал на единственном таймере: сначала отсчитывал бы угол регулирования, выдавал импульс первой фазы, а затем перенастраивал бы таймер на "120 градусов"
С этим вроде понятно, сначала прерывание сработает по заданному углу, потом, перенастраивая таймер, добиваемся срабатывания прерывания этого же таймера, но уже с выдачей импульсов на другие фазы
ARV писал(а): и выдавал бы еще 2 импульса, после чего таймер бы останавливал до момента прихода синхрофронта.
Вот тут не совсем понятно, по идее, перенастроенный таймер сначала выдаст импульс в фазу В, потом его нужно опять перезапустить, и опять же через 120 эл.градусов выдать импульс в фазу С, т.е., при угле 180 градусов импульс в фазе С не успеет появиться, т.к. время его "срабатывания" будет по картинке правее синхроимпульса. Что тогда даст остановка таймера? И потом, импульсы вырабатываются в подпрограмме обработки прерывания по совпадению таймера, когда все остальные прерывания запрещены, в этом случае импульс в фазе С может и получится, а вот синхронизации не будет, т.к. выработка импульса в фазе С будет правее по графику, чем синхроимпульс, и только в следующем такте произойдёт синхронизация. Т.е., как бы один такт генератора будет пропущен. Я это так себе представил. Возможно, я не совсем правильно Вас понял? Если возможно, то объясните этот момент.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение ARV »

ну я делал так:
1 по внешнему прерыванию (синхронизация) стартует TIMER1 и отрабатывает угол управления.
2 по прерыванию TIMER1:
2.1 включаем сигнал на фазе А
2.2 запускаем TIMER0, который отрабатывает длительность импульса в фазе
2.3 настраиваем и запускаем TIMER1 на длительность угла 120 гр.
с этого момента:
4 сработал TIMER0 - отключил выходы ВСЕХ ФАЗ ОДНОВРЕМЕННО (сформировался импульс нужной длительности в той фазе, которую включил TIMER1)
5 сработал TIMER1 - включил фазу B и отработал алгоритм п.2.2-2.3
6 когда TIMER1 сработает третий раз, он включает фазу С, отрабатывает алгоритм только 2.2, т.е. снова не перезапускается, а останавливается и ждет синхроимпульса.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение BeerserkN1 »

Спасибо! Попробую по этому алгоритму реализовать программу. О результатах постараюсь сообщить.
Реклама
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение BeerserkN1 »

Что-то не получилось! Выкладываю код.
Не найду ошибку никак, вроде, алгоритм верный, протеус показывает вот такой сигнал.
Изображение
Таймеры1.txt
(2.04 КБ) 183 скачивания
Реклама
Limark91
Родился
Сообщения: 1
Зарегистрирован: Вт янв 06, 2015 18:28:31

Re: Программная реализация импульсов и сдвига 120 эл.градусо

Сообщение Limark91 »

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

Вернуться в «AVR»