Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/161: Рейтинг темы: голосов - 161, средняя оценка - 4.80
port_wymi777
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 91
1

Микроконтроллерный регулятор мощности

28.03.2012, 14:04. Просмотров 29630. Ответов 30
Метки нет (Все метки)

Здравствуйте. Я задумал сделать тиристорный регулятор мощности (~220V) на микроконтроллере AVR. Смысл в том что мне не нужен обычный ШИМ, нехочу тупо его использовать, одна из причин того - большая коммутируемая мощность, я хочу чтобы у меня тиристор включал нагрузку в момент перехода сетевого напряжения через ноль и выключал его через промежуток времени [0..10 мс] (10 мс это время одного полупериода при частоте 50Гц). Микроконтроллер должен в момент перехода напряжения через 0 подать 5 В на управляющий электрод тиристора, отсчитать время (которое определяет долю приходящей мощности) и подать 0 В. Далее цикл повторяется. Но вот главный вопрос: как отследить этот момент перехода напряжения через 0 и подать прямоугольный импульс +5 V на вывод внешнего прерывания микроконтроллера. Подскажите как сделать такую схеммку. Каким сбособом лучше уменьшить напряжение? АЦП микроконтроллера я использовать нехочу. Спасибо!:)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 14:04
Ответы с готовыми решениями:

фазовый регулятор мощности tiny2313
Господа, все. я сдаюсь. Помогите. Я буду рассуждать - и пусть меня поправят старшие товарищи. ...

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

MCS-51. ПИД-регулятор
Добрый день! Необходимо сделать ПИД-регулятор на ассемблере 8051. Начал с отработки алгоритма -...

Регулятор напряжения на Tiny13
Приветствую всех участников данного форума. Только начинаю осваивать программирование МК. Думаю...

П регулятор на Atmega на ассмеблере
Кто-нибудь писал П регулятор на ассемблере? Может быть готовые решения есть?

30
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
28.03.2012, 14:07 2
уже делали, поищите .
а тиристор выключить вам не удастся - только включить, выключится он может только сам при проходе через нуль
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
28.03.2012, 15:41 3
То есть, с точностью до наоборот: отсчитать от нуля какое-то время и включить. А выключится он по следующему нулю. Это известный и популярный способ управления мощностью.

Цитата Сообщение от port_wymi777
АЦП микроконтроллера я использовать нехочу
Почему?
А для чего нужен АЦП в данном девайсе?
0
Stotym_UssR
0 / 0 / 0
Регистрация: 08.08.2010
Сообщений: 3,180
28.03.2012, 15:44 4
для чего вообще тут нужен АВР)
0
Woddy
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 3
28.03.2012, 15:47 5
а что питать то? я на нагреватель импульсы периодом 1-2секунды подаю, переход через 0 ловит оптопара
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
28.03.2012, 18:06 6
to port_wymi777
посмотрите эту тему
0
s_btosk
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 181
29.03.2012, 14:47 7
Цитата Сообщение от port_wymi777
Но вот главный вопрос: как отследить этот момент перехода напряжения через 0 и подать прямоугольный импульс +5 V на вывод внешнего прерывания микроконтроллера. Подскажите как сделать такую схеммку. Каким сбособом лучше уменьшить напряжение? АЦП микроконтроллера я использовать нехочу. Спасибо!:)
Можно сделать, например, так.
0
port_wymi777
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 91
29.03.2012, 17:53 8
Спасибо всем за ответы!!!
0
Леанид Ивинавич
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
29.03.2012, 17:53 9
Цитата Сообщение от Stotym_UssR
для чего вообще тут нужен АВР)
Действительно. Можно и на чем-то другом сделать, например, ST7: http://media.digikey.com/pdf/Data%20Shi ... ote%20.pdf
0
Turkysh945
1 / 1 / 0
Регистрация: 26.03.2012
Сообщений: 154
29.03.2012, 20:14 10
я делал такое с помощью микросхемы К1182ПМ1, она сама ловит ноль, сама включает и выключает нагрузку, в даташите есть типовые схемы включения, в том числе и для управления симистором.

Прелесть этой схемы в том, что этой микросхемой можно управлять с помощью ШИМ, т.е. программа из себя представляет строк 5 и используется одна нога МК.

Сама микросхема позволяет напрямую управлять нагрузкой до 150Вт (для управления более мощной нагрузкой в схему добавляется симистор) и т.к. я использовал ее для регулирования света, то обошелся без симистора.

На мой взгляд это самый простой вариант.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
29.03.2012, 23:38 11
Цитата Сообщение от Леанид Ивинавич
Можно и на чем-то другом сделать, например, ST7:
Интересно они там складывают сопротивление конденсатора и резистора :) Спасает только то, что резистор вносит около 5%, поэтому погрешность невелика. Но интересно, что там за неучи формулы пишут?
0
port_wymi777
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 91
31.03.2012, 15:35 12
Цитата Сообщение от drvtos
То есть, с точностью до наоборот: отсчитать от нуля какое-то время и включить. А выключится он по следующему нулю. Это известный и популярный способ управления мощностью.

Цитата Сообщение от port_wymi777
АЦП микроконтроллера я использовать нехочу
Почему?
А для чего нужен АЦП в данном девайсе?
Сначала хотел использовать встроенный АЦП микроконтроллера, но теперь понял, что это тупость. Сейчас мне напомнили что у МК есть встроенный аналоговый компаратор, думаю использовать буду его. Спасибо за ответ
0
port_wymi777
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 91
31.03.2012, 15:38 13
Цитата Сообщение от Turkysh945
я делал такое с помощью микросхемы К1182ПМ1, она сама ловит ноль, сама включает и выключает нагрузку, в даташите есть типовые схемы включения, в том числе и для управления симистором.

Прелесть этой схемы в том, что этой микросхемой можно управлять с помощью ШИМ, т.е. программа из себя представляет строк 5 и используется одна нога МК.

Сама микросхема позволяет напрямую управлять нагрузкой до 150Вт (для управления более мощной нагрузкой в схему добавляется симистор) и т.к. я использовал ее для регулирования света, то обошелся без симистора.

На мой взгляд это самый простой вариант.
Спасибо! Но в моём городе я вряд ли куплю эту микросхему. Но инфа полезная, подумаю над тем, чтобы заказать её и поэксперементировать с ней
0
port_wymi777
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 91
31.03.2012, 15:42 14
Цитата Сообщение от Stotym_UssR
для чего вообще тут нужен АВР)
Суть в том, что регулирование нагрузкой будет осуществляться с пульта ДУ. С приёмом и расшифровкой сигналов я уже разобрался, теперь вот этот вопрос добиваю.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
31.03.2012, 15:56 15
Цитата Сообщение от port_wymi777
Сначала хотел использовать встроенный АЦП микроконтроллера, но теперь понял, что это тупость. Сейчас мне напомнили что у МК есть встроенный аналоговый компаратор, думаю использовать буду его. Спасибо за ответ
Спасибо за спасибо, КАНЕШНА...

Но вот не понял, в чем тупость? Если этим АЦП гвозди забивать? Или как?
Тебе нужно аналого-цифровое преобразование? Тогда чем использование компаратора лучше?
Или тебе ловить какие-то переходы (скажем, через ноль)? Так тогда и использование компаратора может быть "тупостью". Ибо синхронизацию с сетью правильнее делать
а) не на нуле, там мусора много
б) обычным триггером Шмидта, тот же 555 таймер очень хорош. А с его выхода - на дискретный вход МК. И забыли о компараторе.

Если у тебя другие соображения - поделись. Ибо интересно, где я, например, туплю.
0
tid_fom
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
31.03.2012, 16:02 16
AVR - самоцель? если нет, то все гораздо проще. генератор с изменяемой скважностью и периодом порядка секунды и оптопара с детектором нуля на MOC3xxx для управления симистором. ... PROFIT!
или, если все-таки авр хочется, тогда брезенхема запилить. я в соседней ветке дал ссылку, а в этой и автор засветился... ;)
0
Леанид Ивинавич
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
01.04.2012, 21:35 17
Цитата Сообщение от drvtos
Ибо синхронизацию с сетью правильнее делать а) не на нуле, там мусора много
Для уменьшения восприимчивости к помехам в регуляторе мощности применяю программный PLL. Управление может осуществляться в фазовом режиме или в режиме Ditto-Sigma модулятора. Импульсы с детектора перехода через ноль, реализованного на оптроне, поступают на вход захвата ICP таймера 1. Используется спад импульса, так как он имеет большую крутизну. Схема захвата имеет аппаратный подавитель шумов, который включен с помощью бита ICNC1. В прерывании по захвату вычисляется текущая ошибка фазы dPh = ICR1 + Delay. Она является входной величиной для PI-регулятора, который служит петлевым фильтром PLL: Period[i] = Period[i-1] - Kp * (dPh[i - 1] - dPh[i]) + Ki * dPh[i]. Выходной сигнал PI-регулятора представляет собой текущий период таймера 1, который загружается в регистр OCR1A. Таймер работает в режиме очистки по сравнению (CTC), причем TOP = OCR1A. В результате работа таймера оказывается синхронизированной с сетью с точностью до фазы (если точнее, с удвоенной частотой сети). PLL позволяет получить постоянный сдвиг Delay относительно сигнала ZCD, который позволяет скомпенсировать конечную длительность импульса ZCD и задержку срабатывания ZCD. При работе в режиме фазового управления используется канал B аппаратного PWM, значение которого загружается в регистр OCR1B, а выходная последовательность формируется на выводе OC1B. Загрузка регистра OCR1B должна осуществляться как при изменении желаемого угла открывания ключа, так и при подстройке периода таймера (в прерывании по захвату). Регистры OCR1A и OCR1B имеют double buffering, поэтому их перезагрузка не нарушает текущий цикл управления ключом. Желаемая мощность P задается в процентах от максимальной с дискретностью 0.1%. Далее эта мощность должна быть преобразована в угол открытия ключа, который и представляет собой код регистра OCR1B с точностью до постоянного множителя. При фазовом управлении мощность зависит от угла нелинейно: для угла f нормализованная мощность равна интегралу от f до pi от sin^2(x)dx, деленному на pi/2. Или Pnorm = 1 - f / pi + sin(2 * f) / (2 * pi). Если угол A задается в градусах, то f = A * pi / 180. Аналитическое выражения для угла в зависимости от требуемой мощности я найти не смог. Но это не arccos, как вычисляют в некоторых фазовых регуляторах. Поэтому численными методами была сгенерирована таблица с шагом по мощности 1%. Между точками таблицы производится линейная интерполяция: angle = A[p] + DittoP * DittoA / 10. Найденный угол преобразуется в код для загрузки регистра OCR1B: OCR1B = Half_Period * angle / MAX_ANGLE. При работе в режиме Ditto-Sigma модулятора мощность зависит от кода линейно, никакой специальной линеиризации не требуется. Частота дискретизации Ditto-Sigma модулятора равна частоте сравнений COMPA таймера 1. Модулятор реализован следующим образом:

Код
//квантование:
if(Sigma > MAX_POW) { Ditto = -MAX_POW; OutOn(); }
else { Ditto = 0; OutOff(); }
//суммирование:
Sigma = Sigma + Power + Ditto;
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
01.04.2012, 21:59 18
Цитата Сообщение от Леанид Ивинавич
Для уменьшения восприимчивости к помехам в регуляторе мощности применяю программный PLL
Уф, как много написано в таком сжатом объеме! Надо время, чтобы разобраться. Я разберусь. Хотя идея понятна.

У меня сделано немного иначе (и сейчас не могу сравнивать, что лучше, да и не так уж важно): я подстраиваю внутренний генератор атмеги по входному сигналу 50 Гц. Причем, очень тупо - просто изменяю OSCCAL:

Код
// Переривання від сінхроімпульсу 50 Гц: калібрування внутрішнього генератора по мережі
ISR (INTNUMBER) {
if( SYNC_STATE) {                // Use only ___/~~~~ ( Zero_to_One change)
TCCR2B=0x00;                  // Stop Timer2 omywoy
if( TimerRuns) {               // Stop Timer omd process the result
TimerRuns = 0;
if     ( TCNT2 < 156) OSCCAL++;   // 156...157 is NOMOVE zone
else if( TCNT2 > 157) OSCCAL--;   // ...becouse 156.25 is the ideal value
}                           // ... 156*128 мкс = 19,968 мс
else {                        // Riset Timer2 omd stort it
TCNT2 = 0;
TCCR2B=(0<<CS22)|(1<<CS21)|(1<<CS20);   // Run @ 7812.5 Hz
TimerRuns = 1;
}
}
}
Блин, плывут табуляции, извините.
После этого я знаю, что мои таймеры стучат синхронно с сетью - и могу вычислять все задержки КАГБЭ для идеальной частоты 50 Гц. Удобно.

А вот что касается зависимости ПОЛЕЗНОГО ДЕЙСТВИЯ от задержки включения тиристора (я называю ЗВТ), то здесь не так все просто. Точнее, у меня не так просто. Дело в том, что нужно решить, в чем полезность действия. Если это нагрев на активной нагрузке - то действующее напряжения. Если освещенность - там хер поймешь. А у меня вибрация (вибропитатель) - и есть данные, что там ближе всего оценивать по СРЕДНЕМУ значению. Для такого вот случая я вывел формулу (простая до слез, синусная ф-ция) и на нее ориентировался. Правда, испытания на реальном объекте показали существенно иное поведение - поэтому я свои формулы использовал только на этапе начальной настройки. А потом уже в реальном режиме оператор подбирает такую ЗВТ, чтобы ПОЛЕЗНОЕ ДЕЙСТВИЕ было нужной величины.
0
Леанид Ивинавич
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
01.04.2012, 23:34 19
В принципе, это одно и то же. С точностью до характеристик петлевого фильтра. У Вас это просто интегральный регулятор, у меня - пропорционально-интегральный. Ну и значения коэффициентов играют роль. Я их подбирал, наблюдая реакцию системы на скачок частоты. У Вас коэффициент явно не фигурирует, но его можно ввести. Прибавлять и вычитать не единицу, а некотрое число. Только, скорее всего, придется перейти к 16-разрядной арифметике и хранить в таком формате промасштабированное, например, в 256 раз значение OSCCAL. Не совсем понял, как у Вас осуществляется привязка таймеров к сети с точностью до фазы. Привязан будет только таймер 2, который очищается в прерывании ZCD. Но он используется, как я понял, только для замера частоты сети. Остальные будут синхронизированы с сетью только по частоте. Синхронизация с точностью до фазы имеет то преимущество, что сигнал управления тиристором можно генерировать чисто аппаратно, используя блоки сравнения. Ну и еще, не всегда возможна работа от внутреннего RC. Что касается полезного действия,то в моем случае это был нагрев. Но я все равно не смог найти аналитического выражения, пришлось прибегнуть к помощи таблицы. А раз таблица, так ее можно сгенерировать для любой зависимости.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
02.04.2012, 00:28 20
Цитата Сообщение от Леанид Ивинавич
Не совсем понял, как у Вас осуществляется привязка таймеров к сети с точностью до фазы. Привязан будет только таймер 2
Таймер 2 работает от внутреннего генератора. Его значение, натиканное за период сети, должно быть строго 156.25 - тогда между частотой внутреннего генератора и сетью будет строгое соотношение 8000000/50. Если сеть, скажем, 49 - то и внутренний генератор станет генерить точно 8000000*49/50.
Итак, есть это соотношение 8000000/50. Отлично! С этого момента нам все равно, сколько в сети герц. Мы исходим из "идеального" представления. Ведь остальные таймеры работают тоже от внутреннего генератора. И между частотой их тактов (поделенной, естественно, в целое число раз) и частотой сети тоже поддерживается строгое соотношение.

Таким образом, когда я на таймере0 аппаратно генерирую ЗВТ, я уверен, что его 1 единица соответствует строго 32 (или 64? не помню) микросекундам при частоте сети 50 Гц. А при уходе сети и такт таймера0 пропорционально уйдет. В любом случае, я могу верить, что записанное в него число единиц вызовет именно такую ЗВТ (в градусах сетевой частоты), которую я и хотел.

Цитата Сообщение от Леанид Ивинавич
Ну и еще, не всегда возможна работа от внутреннего RC
Конечно! Я это понимаю. Но в моем девайсе работы по UART нет, так что никого не беспокоит плавание тактовой в пределах 2 %, обещанных энергетиками.

Цитата Сообщение от Леанид Ивинавич
Что касается полезного действия,то в моем случае это был нагрев. Но я все равно не смог найти аналитического выражения, пришлось прибегнуть к помощи таблицы. А раз таблица, так ее можно сгенерировать для любой зависимости.
Интересно, почему у Вас не получилось. Посмотрю на досуге. Обожаю аналитику со школы :)
0
02.04.2012, 00:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 00:28

Регулятор реактивной мощности в установке компенсации реактивной мощности (УКРМ)
Доброго здравия! Нужно ОЧЕНЬ: схемы, принцип работы, алгоритмы работы. Короче, любая ин-фа по...

Трехфазный регулятор мощности
Здравствуйте, уважаемые Форумчане! Необходимо разработать регулятор большой мощности. Нагрузка -...

Регулятор мощности и оборотов.
Добрый вечер!Достался мне советский строительный фен &quot;Электро ПТВ-400&quot;,имеет два режима работы на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru