Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/84: Рейтинг темы: голосов - 84, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278

Фазо-импульсная модуляция на симисторе

30.11.2014, 00:43. Показов 18079. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Я тут недавно задался целью сделать управление гирляндами для елки. Соответственно нужна плавная регулировка яркости. Причем аж для 8 каналов. Решил использовать для этого симисторы в связке с оптосимисторами MOC3023 и детектор нуля на оптопаре. Сделал вот такую схему:


В теории все просто, ловим переход синуса через 0, ждем некоторый интервал времени и включаем симистор. Чем позже включили, тем меньше яркость. Выключится он сам при переходе тока через 0. но на практике все оказалось как-то не очень просто. Сделал так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 // AtMiko8, частота 8МГц.
ISR(INT0_vect){ // словили переход через 0, запустили таймер
OCR2 = 250;
TCCR2 |= _BV(WGM21) | _BV(CS20);
GICR &= ~(1<<INT0);
}
 
ISR(TIMER2_COMP_vect){
 
if(++cnt >= 255){ // максимальна задержка 255 тиков
cnt = 0;
TCCR2 = 0; // выключаем таймер
GICR = (1<<INT0); // включаем прерывания
}
 
if(cnt == brykhtness[0]){ // если досчитали до значения яркости канала - включаем его
CH1_H;
_delay_us (20); // задержка для включения симистора
CH1_L;
}
 
if(cnt == brykhtness[1]){
CH2_H;
_delay_us (20);
CH2_L;
}
 
if(cnt == brykhtness[2]){
CH3_H;
_delay_us (20);
CH3_L;
}
 
if(cnt == brykhtness[3]){
CH4_H;
_delay_us (20);
CH4_L;
}
 
if(cnt == brykhtness[4]){
CH5_H;
_delay_us (20);
CH5_L;
}
 
if(cnt == brykhtness[5]){
CH6_H;
_delay_us (20);
CH6_L;
}
 
if(cnt == brykhtness[6]){
CH7_H;
_delay_us (20);
CH7_L;
}
 
if(cnt == brykhtness[7]){
CH8_H;
_delay_us (20);
CH8_L;
}
 
}
В принципе оно работает. Но если гонять яркость туда сюда, то периодически идут скачки яркости гирлянды. Плюс на малой яркости заметна равномерная пульсация, через равные промежутки времени (примерно 0,5с ярче, еще 0,5с тусклее). В чем может быть проблема? Может я как-то не так понимаю принцип работы такой системы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2014, 00:43
Ответы с готовыми решениями:

Широко импульсная модуляция
Составить проекты по изменению яркости светодиода от min до max и от max до min с шагом 1. min = 118, max=137.

Широтно-импульсная, фазо-импульсная модуляции
Здравствуйте! Мне нужно составить 2 модулированных сигнала. Вот программа для ptm: A=9; f=3; Fs=1000; fc=10; t=0:1/Fs:3; ...

Импульсная кодовая модуляция и дифференциальная импульсная кодовая модуляция сигнала
Добрый день, дали задание, создать программу, реализующую преобразование из ИКМ в ДИКМ. С алгоритмом и порядком действий проблем не...

40
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
03.12.2014, 13:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от BORS_
Осциллографа пока нет, возможно, придет на след. неделе. Анализатором подцеплюсь к схеме, гляну. 160 отсчетов подобрано экспериментально. Хотя таймер работает на частоте 20КГц, следовательно должно быть 200 отсчетов таймера, но они туда почему-то никак не помещаются. Если делать меньше - яркость при конце снижается ступенькой, больше - начинает сильнее дергаться.
Да, точно, совсем забыл про 0. А что тут лучше, добавить мост или скорректировать программно?
то что в 200 не вписывается дает намек на то, что что-то не так с таймингами
посчитайте теоретически задержку детектора нуля. когда будет осциллограф проверите фактическую задержку
для расчета надо взять из даташита на вашу оптопару trigger curren и forward voltage и с учетом ваших сопротивлений посчитать при каком напряжении полуволны сработает датчик
отсюда будет ясно сколько мкс отделяют срабатывание от реального нуля
возможно именно эта задержка причина не вписывания в 200 отсчетов

у вас там запас по максимальным токам, я бы снизил сопротивление со 120к до 50-100к, не превышая максимальный ток стабилитрона
оставшуюся задержку корректировать программно

проще поставить мост
можно и программно, но тогда получится, что вы будете одну полуволну ловить, а вторую вслепую предсказывать
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
03.12.2014, 14:17
PC817 даёт задержку относительно нуля. Года полтора назад делал ФИМ, столкнулся с этим.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
03.12.2014, 17:46
задержку даст любая оптоэлектроника если нет компенсационной схемы

кстати, читал даташит на pc817. без моста и без стабилитрона оптопара накроется, у нее всего 6В обратное допустимое напряжение
0
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
03.12.2014, 18:55
Буду дома - скину схемку хорошего детектора нуля, там к оптопаре дополнительно нужно щепотку деталек добавить. Зато гораздо точнее детектит пересечение.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
03.12.2014, 19:20
Цитата Сообщение от oxytt
задержку даст любая оптоэлектроника если нет компенсационной схемы

кстати, читал даташит на pc817. без моста и без стабилитрона оптопара накроется, у нее всего 6В обратное допустимое напряжение
Отчего накроется то? Там диод стоит в обратку.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
03.12.2014, 20:02
Цитата Сообщение от Hotd
Цитата Сообщение от oxytt
задержку даст любая оптоэлектроника если нет компенсационной схемы

кстати, читал даташит на pc817. без моста и без стабилитрона оптопара накроется, у нее всего 6В обратное допустимое напряжение
Отчего накроется то? Там диод стоит в обратку.

где диод? в обратку там только стабилитрон, накроется если его убрать
0
Dmytryy_1_b
03.12.2014, 21:04
Насчет детектирования нуля, если блок питания не импульсный можно сигнал синхронизации взять между выпрямителем и стабилизатором напряжения

Dmytryy_1_b
03.12.2014, 21:12
Можно еще сигнал детектирования подать на Ацп чтоб посмотреть вообще что там происходит
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
03.12.2014, 21:47
Цитата Сообщение от Dmytryy_1_b
Можно еще сигнал детектирования подать на Ацп чтоб посмотреть вообще что там происходит
это только если нет осциллографа
там смотреть не на что)) если только где-то что-то не так запаяно
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
03.12.2014, 22:14
Итак, начнем по пунктам =)

Добавил мост и поставил резистор на 47К (видимо, маловато, мост греется). Нашел небольшую ошибку в коде, прерывание было настроено на детектирование любого изменения фронта на выводе, изменил на детектирование нарастающего фронта.

Ткнулся анализатором в схему. Получил вот это:




(максимальная яркость)


(средняя яркость)

Задержка вроде не особо большая и влиять на работу не должна. Однако срывы в работе как были, так никуда и не ушли. Хотя стали появляться реже. Диапазон яркости растянулся до 180 отсчетов и судя по диаграмме - это практически максимум. Снятие напряжения с симистора сейчас происходит по достижению конца диапазона:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ISR(TIMER2_COMP_vect){
 
if(++cnt >= BR_CONST){ // максимальна задержка 255 тиков
cnt = 0;
TCCR2 = 0; // выключаем таймер
GICR = (1<<INT0); // включаем прерывания
 
PORTB = 0;
CH1_L;
CH2_L;
}
 
if(cnt == brykhtness[0]) CH1_H;
if(cnt == brykhtness[1]) CH2_H;
if(cnt == brykhtness[2]) CH3_H;
if(cnt == brykhtness[3]) CH4_H;
if(cnt == brykhtness[4]) CH5_H;
if(cnt == brykhtness[5]) CH6_H;
if(cnt == brykhtness[6]) CH7_H;
if(cnt == brykhtness[7]) CH8_H;
}
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
03.12.2014, 22:17
0
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
03.12.2014, 22:54
http://www.dextrel.net/diyzerocrosser.htm Вот тот самый детектор. В данном варианте реагирует на оба полупериода.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
03.12.2014, 23:58
Цитата Сообщение от mShit
http://www.dextrel.net/diyzerocrosser.htm Вот тот самый детектор. В данном варианте реагирует на оба полупериода.
интересный вариант
насчет двух полупериодов - ничего удивительного, там диодный мост)

я так понимаю работает он так - энергия накапливается на электролите в течении полупериода
в нуле сети потенциал базы транзистора сравнивается с потенциалом плюсового контакта электролита из-за чего происходит открытие транзистора и разрядка электролита на светодиод оптопары

возникли два вопроса:
1. чем ограничено напряжение зарядки электролита?
2. чем задается ширина импульса детектора? указано 1мс
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
04.12.2014, 00:10
А в чем у меня может быть проблема?
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
04.12.2014, 00:18
Цитата Сообщение от BORS_
А в чем у меня может быть проблема?
выбросы яркости на 95% связаны именно с пропусками нуля
сделайте заведомо успешное отключение симистора во время

п.с. тема заразная))) у меня перестала работать моя схема, причем уже была отлажена эта часть на отдельном МК, отработанная схема и прошивка
и тут вчера то работает - то нет, потом вообще перестала. все перепаял, выпаял МК - прошивка на месте
проверил детектирование нуля - есть
а не работает! вот зараза)
вынужден на макетку опять все ставить и искать проблему
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 278
04.12.2014, 00:38
У меня все уже на платах спаяно, не люблю возиться с 220В, когда все на проводах висит да еще и к ноуту подключено.

Так судя по тому, что показывает анализатор, напряжение с симистора стабильно снимается до перехода через 0. И выбросы (точнее провалы) не обязательно на 95%, они возникают во всем диапазоне. Тааак, кстати, если яркость не меняется, то провалов нет. Так, так, а не может ли, случайно, быть такой ситуации, что значение яркости изменилось в такой момент, что в полупериоде с ним значение счетчика не совпало (там же строгое равно стоит), вот он и провал. Сейчас работают все 8 каналов с разной яркостью и ни один не дергается. Т.е. изменение яркости придется синхронизировать с таймером, чтобы не было провалов.
0
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
04.12.2014, 12:37
Цитата Сообщение от oxytt
1. чем ограничено напряжение зарядки электролита?
2. чем задается ширина импульса детектора? указано 1мс
Напряжение на электролите ограничено делителем R3/(R1+R2+R3).
Ширина связана с порогом срабатывания и временем нарастания сетевого напряжения, для 60Гц например ширина будет меньше.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
04.12.2014, 13:37
Цитата Сообщение от mShit
Напряжение на электролите ограничено делителем R3/(R1+R2+R3).
Ширина связана с порогом срабатывания и временем нарастания сетевого напряжения, для 60Гц например ширина будет меньше.
Посчитал, для входящего пика синуса в 310в подучается на конденсаторе 15в, а по номиналу стоит 10в
В статье явно указано, что ширина импульса не зависит ни от напряжения ни от частоты
0
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
04.12.2014, 13:51
Цитата Сообщение от oxytt
В статье явно указано, что ширина импульса не зависит ни от напряжения ни от частоты
The typical putsi width is 1ms at 50Hz, omd 0.83ms at 60Hz,when using the somponent values shown.
От напряжения сети не зависит, зависит в некоторой степени от компонентов схемы.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
04.12.2014, 14:10
Да, от частоты зависит, пропустил (забыл, читал бегло)
И все же. Если разрядка электролита происходит при переходе через ноль, то ширина импульса зависит от того, что раньше произойдет - разрядится конденсатор или закроется транзистор, так ведь?
Раз от частоты зависит видимо конденсатор стоит с запасом и тразистор закрывается как только потенциал базы падает ниже 0.6в от эмитера. Так?
Просто для понимания.

Хорошо иметь импульс ровно в нуле, с другой стороны компенсировать сдвиг можно програмно. Правда возникает факт ошибки. И если на малых мощностях можно просто сделать "мертвую зону" которая гарантирует, что не перескочим через ноль в следующий полупериод, то на полной мощности "промахи" увеличат помехи, потому, что включерие будет не в нуле, а в конце предыдущего полупериода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2014, 14:10

Широтно-импульсная модуляция (создание)
Ребят. Долго рассказывать. Вот лучше посмотрите что получается: clear all; clc; close all; % Построение треугольного импульса ...

Дифференциально импульсная кодовая модуляция
народ подскажите нужно написать курсач ,на тему дифференциально импульсная кодовая модуляция... теорию написал) А с реализацией...

Фазовый регулятор на симисторе
Всем привет. Не совсем вопрос. Очень срочно понадобилось регулировать мощность индуктивной нагрузки по цифре. За вечер на пару с гуглом и...

Шунтирующий регулятор напряжения на симисторе
Схема представляет из себя шунтирующий стабилизатор напряжения. А вот когда нагрузка отсутствует куда симистор рассеивает всю выдаваемую...

Регулятор напряжения на симисторе до 25А
Господа нужна ваша помощь. Нашёл схему в интернете для регулятора напряжения, но в этой схеме симистор был слабенький(TRIAC BT136-600E)....


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru