ПРикольно придумал. Кстати разбирал пачку сканеров наткнулся на замену ULN2003, некая микруха LB1233, поспрашал у местных продавцов, сказали по 5р за 100 штук привезут.))
Возник вопрос: собрал схемку данную выше, и пробую пример fade , так вот лампочка или горит или (на низком уровне) тупо мерцает с частотой около 5-10гц . при этом светодиод плавно гаснет и загорается. в чем может быть проблема? номиналы R2 и R3 очень существенны в данном случае?
Я взял за основу библиотеку х10. Библиотека написана для взаимодействия с TW523 (грубо говоря модем, для передачи сигналов по силовой сети). Устройство TW523 я приобретал отдельно (порядка 1500 р.).
Я смотрю по похожей задаче на XBee, дешевле выйдет и намного надежней. Технология X10 канула в лету из-за проблем с надежностью сети и ее ограниченностью. XBee series 2 могут образовывать mesh сеть, т. е. каждый элемент не просто приемник и передатчик, но еще и ретранслятор. Это современная надежная технология. "Там" стандартные модули 2 мвт стоят 25 долларов, даже если один заказывать, то с доставкой выйдет около 1000р. Жду несколько штук со спаркфана, буду тестить
Помогите разобраться. Смакетировал схему с MOC3081, все как по схеме в этом посте, с теме же элементами и номиналами. В качестве нагрузки выступает кварцевая лампа на 100вт. Код на ардуино:
const int pin = 11;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(pin, OUTPUT);
Serial.begin(9600);
Serial.println("started");
}
void loop() {
Serial.println("pwr 0");
analogWrite(pin, 0); // set the LED on
delay(5000); // wait for a second
Serial.println("pwr 10");
analogWrite(pin, 10); // set the LED on
delay(15000); // wait for a second
Serial.println("pwr 50");
analogWrite(pin, 50); // set the LED on
delay(1000); // wait for a second
Serial.println("pwr 100");
analogWrite(pin, 100); // set the LED on
delay(500); // wait for a second
}
Но лампа почему-то сильно мерцает при значениях меньше 255. Насколько я понимаю такого быть не должно. Что я не так делаю?
а чего ты хочешь добится? если регулировки яркости, то не всё так просто, ссылку я давал выше.
получается, что если делать регулятор яркости, то встроенный контроллер ШИМ уже не подойдет и нужно будет использовать програмный? А нет ли железных контроллеров с привязкой к фазе?
Мне нужна плавная регулировка нагревательного элемента на 3квт. Может для него и не важгна привязка?
да надо делать программый с привязкой к фазе, железные есть, стоят как несколько ардуинок, так что смысла в них не вижу. и кстати MOC3081 тоже по моему не подойдут, они не умеют включать нагрузку посередине полуволны. А собрать по схеме как там и нарисовано ничего сложного нет.
да надо делать программый с привязкой к фазе, железные есть, стоят как несколько ардуинок, так что смысла в них не вижу. и кстати MOC3081 тоже по моему не подойдут, они не умеют включать нагрузку посередине полуволны. А собрать по схеме как там и нарисовано ничего сложного нет.
Меня что смущает. Делаю контроллер, которы должен контролировать воздух на входе, на выходе и управлять вентилятором и калорифером. Кроме этого нужна интеграция с умным домом (мини комп). Интеграция или через ethernet/wifi или через xbee. Если на ардуино делать софт ШИМ, то получается в одном цикле нужно и ШИМ отработать и интеграцию. Врядли это будет нормально работать. Тогда ставить второй ардуионо?
Без привязки к сети плавно регулировать мощность не получится, для плавной регулировки очень важно чтобы происходило своевременное включение, в течении каждой полуволны, нагрузки симистором.
Впрочем в случае с мощным нагревателем можно было бы пойти по пути последовательности краткосрочных включений на время заведомо более чем 1/50 секунды ... просто пользуясь некоторой инертностью нагревателя. например импульсами по 0.1-0.5 секунды и с регулируемыми длительностями интервалов между включениями...
Тогда напряжение к нагревателю будет прикладываться полностью на все время действия управляющего импульса.
но у такого способа будут и собственные подводные камни, например при совсем малой требуемой мощности подача полного напряжения на достаточно холодный нагревательный элемент будут сопровождаться импульсами тока гораздо большей силы чем при плавно подогретом с помощью нормального ШИМ... как результат автомат защиты придется загрубить, что на качестве этой защиты врядли скажется положительно.
В то же самое время привязка к фазе не сложна, и ее достаточно одной для успешного управления сразу несколькими, самостоятельными нагрузками, впрочем даже трехфазной нагрузкой можно управлять привязавшись всего к одной из фаз, в принципе можно фазу вычислять полностью, лишь периодически синхронизируя систему ...
кстати это или нет. но для задач подобного регулирования есть целая микросхема TDA1085 которая не смотря на предназначение управлять двигателем стиральной машины, прекрасно может быть "обманута" и станет регулировать нагрев или что велЯт, а ардуину можно не напрягать глупостЯми, а использовать для прямого назначения - управления всеми этими бестолковыми механизмами...
кстати это или нет. но для задач подобного регулирования есть целая микросхема TDA1085 которая не смотря на предназначение управлять двигателем стиральной машины, прекрасно может быть "обманута" и станет регулировать нагрев или что велЯт, а ардуину можно не напрягать глупостЯми, а использовать для прямого назначения - управления всеми этими бестолковыми механизмами...
Посмотрел datasheet. Обвязка к этой микросхеме сложне чем к ардуино ))) Да и цена кусается (360р на чипдип)
Жаль у ардуино нет прерываний. В обычном цикле успеет ли ардуино опросить фазу, выставить нужные задержки по двум нагрузкам, двум реле и еще послушать XBee и не пропустить сообщение?
у меня успевало держать яркость лампы, слушать команды от ИК пульта и радиоканал, плюс опрашивать несколько кнопок. и как это нет прерываний? есть там всё.
В чипо-дипе и я увидел цену - испугался, в других магазинах розничная цена 64 - 85 руб за штуку (я только что покупал ввиду неодходимости ремонта стиралки ) ... кстати в стиралках симистор MAC15 - очень по теме. цена за штуку 25-40руб а по характеристике 800V, 15A ...
насчет обвязки там же 80% лишние детальки ) Кстати обвязка там дурная, ибо питание от 220, управление оборотами и скоростью разгона от коммандоаппарата, обратная связь от датчика импульсов, в нагрузке коллекторный двигатель а значит искрить может ... одним словом я бы пожалуй упростил для использования то ;)))
И совсем кстати, в процессе ремонта очень грешил на коммандоаппарат, и очень не однозначно косился в сторону ардуины на тему замены "раритета с ручкой" на ардинку с красивым экранчиком и парой кнопок...
Жаль у ардуино нет прерываний. В обычном цикле успеет ли ардуино опросить фазу, выставить нужные задержки по двум нагрузкам, двум реле и еще послушать XBee и не пропустить сообщение?
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
А в обычном цикле на самых 8 Мгц(про 16 умалчиваю) у ардуины порядка 80К тактов на один полупериод сетевого напряжения... хватит этого времени не только перечисленные операции сделать но и сбегать из Москвы на Сахалин и обратно ))) по карте ...
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
А в обычном цикле на самых 8 Мгц(про 16 умалчиваю) у ардуины порядка 80К тактов на один полупериод сетевого напряжения... хватит этого времени не только перечисленные операции сделать но и сбегать из Москвы на Сахалин и обратно ))) по карте ...
Спасибо, обнадежили )) Упрощать обвязку у микросхемы от стиралки я не осилю )) Раз atmega должен справиться, буду на ней все строить.
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
Правильно понимаю? Ставлю такую схему (скопировано по ссылке выше):
Завожу на вход пин 2 или 3 ардуино и настраиваю с помощью функции attachInterrupt arduino.cc/en/Reference/AttachInterrupt так? И каждый раз, когда будет проход через ноль, автоматически будет вызываться нужная мне функция. Какой тип прерывания в данной схеме понадобиться? RAISING? т.е. когда значение будет менятся с нуля на единицу?
Правильно понимаю? Ставлю такую схему (скопировано по ссылке выше):
Почти правильно, но не совсем. Дело в том что по такой схеме ты "поймаешь" только одну полуволну от периода - положительную, вторую тебе придется вычислить самостоятельно, при этом программа управления ну никак не упростится, не смотря на то что за каждым полупериодом придется следить все равно, ведь для плавной регулировке нужно считать остаток времени до конца периода а не его начала (на работу тиристора и симистора надо бы обратить внимание) главноечто нужно вспомнить, симистор откроется сразу после подачи напряжения на управляющий электрод и не закроется до тех пор пока напряжение сети не пройдет точку 0(конец ПОЛУпериода).
Впрочем все не так печально и вполне реалистично. и все же будет гораздо веселее если перед оптопарой 4N35 (или аналог, напрмер наша АОТ128) поставить диодный мостик тогда не понадобится обрабатывать по отдельности положительный и отрицательный полупериоды сетевого напряжения. Вот так это реализовано в промышленных контроллерах Сименс:
На схеме "лишний" LED, на самом деле он не лишний ибо с его помощью видно что процесс идет )) - если этот светодиод светится значит и оптопара в это время включена... ))
axill пишет:
Завожу на вход пин 2 или 3 ардуино и настраиваю с помощью функции attachInterrupt arduino.cc/en/Reference/AttachInterrupt так? И каждый раз, когда будет проход через ноль, автоматически будет вызываться нужная мне функция. Какой тип прерывания в данной схеме понадобиться? RAISING? т.е. когда значение будет менятся с нуля на единицу?
Опять не совсем. Когда транзистор оптопары открыт на светодиоде есть напряжение и он светится. то на выходе оптопары мы получим 0, нам этот момент и интересен значит и прерывание нужно запускать по FALLING - перепаду с 1 на 0. еще лучше вызывать по CHANGE тогда прерывание будет в два раза чаще но зато если прочитать состояние порта то станет точно известно когда и почему было вызвано прерывание - напряжение появилось или "пропало" ... например по пропаданию можно снимать напряжение с УЭ симистора а не вычислять этот момент где то в программе
В остальном все верно. функция обработчика будет вызываться при каждом появлении напряжения в сети а именно 100 раз в секунду (200 раз в случае CHANGE). Главное не задерживаться в этой функции и не писать там долгих алгоритмов обработки с ожиданиями и тп. Там все быстро, установить/сбросить переменную и сразу досвиданья, остальное обрабатываем в основном цикле loop{}
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
Хорошо, попробую снова. Делаю схему с "ловлей" обоих полупериодов и вещаю это на вход ардуины, который понимает прерывания. Настраиваю прерывания на CHANGE. Далее строю логику такую:
на входе 0 - значит снимаю напряжение с семистора (ну точнее с управляющего оптосимистора)
на входе 1 - нужно расчитать время до момента, когда нужно подать напряжение на оптосемистор и сделать паузу. Вопрос как ее делать? Ведь из прерывания нужно выйти сразу как можно скорее. Можно ли использовать что-то типа www.arduino.cc/playground/Main/MsTimer2 ?
когда время приходит - подаю напряжение на оптосимистор
в случае двух нагрузок расчета времени будет два и пауз будет две
так?
Кстати отвлеченный вопрос. Получается, что если я так буду включать нагрузку (с отсрочкой от перехода нуля) то теоретически я могу ее включить в любой фазе полупериода, в том числе при максимальном напряжении, это значит, что помехи могут быть весьма высоки. Это как-то решаемо? Как я понял логика включения в момент перехода нуля уже не работает, так как в этом случае оптосемистор не выключится до следующего перехода
кстати, как расчитывать номиналы резисторов в схеме "ловли" фазы выше? посмотрел даташит 4N35, указан нормальный постоянный ток 60 ма через светодиод. но не указан минимальный для открытия транзистора. какой ток брать в расчет?
забыл написать по схеме выше, я быстро накидал ее схематично, там попались случайные номиналы резисторов
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
ну да разницы то ни какой DIP6 - оптопара и DIP6 - мостик )) в принципе можно оптопару взять сдвоенную, тогда однозначно выигрыш в корпусах ) две оптопары даже круче )) типа резервирования и можно воспользоваться двумымя входами чтоб знать что за полуволна в данный момент ))
впрочем использовать есть смысл то что в наличии а если в любом случае на рынок идти то
АОТ128 - на прошлой неделе обошлись в 15 руб, а диодные мостики DB107 всего в 5 руб )) копейки конечно, но покупая десяток-другой (на вырост) иногда задумаешься ... на "вырученные" 25 рублей купил пяток винтовых коннекторов на плату ))
А можно совсем отвелченный вопрос? А в чем это нарисовано, имею ввиду, программа какая?
Протеус, но прошу строго не судить, я в ней новичек
Вот блин досада, а я тоолько собрался пару вопросов по ней подкинуть ... тоже совсем недавно взял на вооружение уперся в нехватку элементов в библиотеках ((
на входе 0 - значит снимаю напряжение с семистора (ну точнее с управляющего оптосимистора)
* на входе 1 - нужно расчитать время до момента, когда нужно подать напряжение на оптосемистор и сделать паузу. Вопрос как ее делать? Ведь из прерывания нужно выйти сразу как можно скорее. Можно ли использовать что-то типа www.arduino.cc/playground/Main/MsTimer2 ?
* когда время приходит - подаю напряжение на оптосимистор
Да, логика примерна такая. по суте тебя интересует "остаток" периода в течении которого будет подключена к питанию твоя нагрузка, увеличивая этот "остаток" ты можешь регулировать мощность практически от 0-1% и до почти 100% 100% не получится в нашем случае, потому что мы потеряем некоторое время до включения светодиода - наростание напряжения на нем примерно до 2-3 вольт ... но это не много, в принципе когда нужно 100% нагрузки можно полностью игнорировать фазу, а просто дать постоянную 1 на УЭ
*
axill пишет:
в случае двух нагрузок расчета времени будет два и пауз будет две
так?
Пауз будет две, но ловить фазу все равно придется только один раз )
если в обработчике прерывания ты будешь просто фиксировать в какой то переменной текущее время или еще лучше сбрасывать таймер, то у тебя будет прекрасная возможность обрабатывать это совершенно независимо для каждой из нагрузок ))
axill пишет:
Кстати отвлеченный вопрос. Получается, что если я так буду включать нагрузку (с отсрочкой от перехода нуля) то теоретически я могу ее включить в любой фазе полупериода, в том числе при максимальном напряжении, это значит, что помехи могут быть весьма высоки. Это как-то решаемо? Как я понял логика включения в момент перехода нуля уже не работает, так как в этом случае оптосемистор не выключится до следующего перехода
Да, так и получается, именно так и происходит во всех системах с "плавной" регулировкой на тиристорах/симисторах, но это либо ни кого не заботит, либо строят схемы с почти бесполезными фильтрами ) Наверное тебе приходилось слышать что тиристоры/симисторы - шумят, и не смотря на этот шум ими пользуются ибо пока нет более простого, компактного и достаточно дешевого способа регулирования нагрузок переменного тока, согласись что регулировать 1-2-3 киловатную нагрузку, а это достаточно типовая нагрузка даже для бытовых нагревательных приборов, например ЛАТРом было бы не очень красиво и несколько сложновато в плане управляемости ))
если в обработчике прерывания ты будешь просто фиксировать в какой то переменной текущее время или еще лучше сбрасывать таймер, то у тебя будет прекрасная возможность обрабатывать это совершенно независимо для каждой из нагрузок ))
можно подробнее про таймер? есть в ардуино прерывания по таймеру? могу я в прерывании по началу фазы настроить прерывание через нужный мне период времени? библиотека из кастомных с сайта ардуины MsTimer2 судя по примеру работает именно как прерывание по таймеру.
Цитата:
согласись что регулировать 1-2-3 киловатную нагрузку, а это достаточно типовая нагрузка даже для бытовых нагревательных приборов, например ЛАТРом было бы не очень красиво и несколько сложновато в плане управляемости ))
Рарзве IGBT не являются тут альтернативой? У меня две нагрузки для плавного управления - вентилятор (120 вт) и нагреватель (3квт). Может мне для вентилятора другую схему использовать?
насчет альтернатив изначально думал взять готовый регулятор мощности который регилуируется переменным резистором и к нему вместо переменного резистора прикрутить электронный потенциомер, а тем в свою очередь управлять с вывода ШИМ. тоже ведь вариант?
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
дальше не забывая про закон Ома считаем делитель напряжения, с таким расчетом чтобы как можно раньше включить светодиод, но при этом и не спалить его ...
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
дальше не забывая про закон Ома считаем делитель напряжения, с таким расчетом чтобы как можно раньше включить светодиод, но при этом и не спалить его ...
Таймеров у Ардуино доступно аж 3 штуки, прерывания от них работают, из них последний имеет аж 16 битный счетчик в отличии от 2 других. пользоваться ими в данном случае очень полезно, к сожалению готового решения не могу предложить ибо сам их пока что не щупал... Т2 пользовал, но только как счетчик внешних событий (импульсов) а вообще пора бы уже и пощупать ибо хочется иметь в приборе хоть какие то часы ;) говорят в каких то версиях Atmega существуют RTC было бы здорово, но пока не видел...
говорят в каких то версиях Atmega существуют RTC было бы здорово, но пока не видел...
Есть такая интересная штука, там много чего есть в том числе RTC и стоит практически как мега www.ghielectronics.com/catalog/product/256 , это не ардуино, но интересная штука, там с портами прерываниями и частотой процессора все еще намного круче. присматриваюсь, разберусь с ардуино, может попробую. С доставкой в россиию будет что-то типа 1500р
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
кстати там указано максимальное обратно напряжение, что это? не нужно ли подключать диод паралельно в обратном направлении, чтобы исключить пробой по обратному напряжению?
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
кстати там указано максимальное обратно напряжение, что это? не нужно ли подключать диод паралельно в обратном направлении, чтобы исключить пробой по обратному напряжению?
Все верно, напряжение пробоя на закрытом p-n переходе, если не делать делителя напряжения, а просто ограничить макс. ток одним сопротивлением, то разумеется будет пробой, причем обязательно, тогда нужно второй диод навстречу и он частенько уже есть в некоторых оптопалрах.
при использовании диодного мостика или встречной оптопары ни какого опасного напряжения вназад, не будет в принципе...
Судя по диаграммам в конце даташита от тока через светодиод зависит время срабатывания оптопары, в самом худшем случае это при токе 1мА = 20 микросекунд, что в пару-тройку сотен раз раз превышает нашу потребность. максимальный, продолжительный ток 60 мА )) так что имеем хороший запас по диаппазону...
Первым сопротивлением ограничиваешь максимальный ток, при полном напряжении(не забудь про рассеиваимую мощность при этом не спроста в первой схеме сопротивлений было аж 4 штуки ...), вторым - которое параллельно диоду ограничиваешь максимальное напряжение которое могло бы при этом быть приложено к LED.
у меня получилось 3К9 для напряжения 230В и тока чуть меньше 60 мА, но я бы постеснялся и поставил поболе хотя бы в два раза(5К6, 6К8). При этом если оптопара будет включаться примерно при 1-2 мА, то это должно произойти уже при достижении напряжения в сети 2.3-4.5 В(4-7 для увеличенного R), что наверное не правда, хотя кто знает. Я бы пожалуй поэкспериментировал с обычными светодиодами сначала, что то мне подсказывает что они умеют взрываться ... из детского опыта, отечественные МЛТ-0.5 очень быстро разогреваются и сгорают сами при сопротивлении менее 2К2 ... впрочем P=U**2/R еще ни кто не опроверг ))
Учитывая что типовой рабочий ток для уверенного срабатывания оптопар обычно в пределах 5-7 мА, можно поставить соп..люшку и побольше, в самом первом примере это было аж 82К )) но если нужно чтобы пара сработала раньше задирать вредно...
А вот интересно, касательно схемы выше cyber-place.ru/showthread.php, а если у меня блок питания всего устройства с понижающим трансформатором, то зачем мне фазу ловить через оптопару? Разве нельзя подключить вход ардуины к вторичной обмотке трансформатора через скажем делитель на сопротивлениях?
А вот интересно, касательно схемы выше cyber-place.ru/showthread.php, а если у меня блок питания всего устройства с понижающим трансформатором, то зачем мне фазу ловить через оптопару? Разве нельзя подключить вход ардуины к вторичной обмотке трансформатора через скажем делитель на сопротивлениях?
Конечно, лучше использовать трансформатор и делитель
ПРикольно придумал. Кстати разбирал пачку сканеров наткнулся на замену ULN2003, некая микруха LB1233, поспрашал у местных продавцов, сказали по 5р за 100 штук привезут.))
Возник вопрос: собрал схемку данную выше, и пробую пример fade , так вот лампочка или горит или (на низком уровне) тупо мерцает с частотой около 5-10гц . при этом светодиод плавно гаснет и загорается. в чем может быть проблема? номиналы R2 и R3 очень существенны в данном случае?
arduino-ru.blogspot.com/2009/02/220.html
robocraft.ru/blog/arduino/223.html
всё совершенно не то. надо менять яркость а не просто управлять нагрузкой. просто вкл-выкл работает без проблем.
А если попробовать поменять частоту ШИМ? Здесь есть как - http://arduino.ru/forum/obshchii/shim-ili-kak-vzorvat-mosfet
а нагрузка какая ? напряжение ? мощность ? какую именно схему собрали ?
просто немного пугает что вы и светодиод тудаже
какай пин ардуино используете ? частота шим? скважность шим ?
эти все вопросы в данном случае значения не имеют.
вот ответ http://cyber-place.ru/showthread.php?t=191
Я взял за основу библиотеку х10. Библиотека написана для взаимодействия с TW523 (грубо говоря модем, для передачи сигналов по силовой сети). Устройство TW523 я приобретал отдельно (порядка 1500 р.).
Я смотрю по похожей задаче на XBee, дешевле выйдет и намного надежней. Технология X10 канула в лету из-за проблем с надежностью сети и ее ограниченностью. XBee series 2 могут образовывать mesh сеть, т. е. каждый элемент не просто приемник и передатчик, но еще и ретранслятор. Это современная надежная технология. "Там" стандартные модули 2 мвт стоят 25 долларов, даже если один заказывать, то с доставкой выйдет около 1000р. Жду несколько штук со спаркфана, буду тестить
мне xbee не понравились из-за цены, хотя несколько штук у мя есть, дешевле и компактней собрать на паре приемник-передатчик 433мгц например такой http://www.ebay.com/itm/433Mhz-RF-link-kit-Arduino-ARM-MCU-/280702807164... на них сейчас и собираю "умный дом" кстати библиотеки под них тоже есть.
ну я отвечал на пост, где речь шла о более высокой цене за более старую технологию
xbee только ценой не понравился?
да. ну и размер с учетом переходной платы у них побольше получается, а в остальном без нареканий.
да. ну и размер с учетом переходной платы у них побольше получается, а в остальном без нареканий.
Как я понял, сам модуль XBee тоже имеет контроллер и входы-выходы и простые задачи можно делать вообще на нем одном, все, что нужно - питание 3.3В
Помогите разобраться. Смакетировал схему с MOC3081, все как по схеме в этом посте, с теме же элементами и номиналами. В качестве нагрузки выступает кварцевая лампа на 100вт. Код на ардуино:
Но лампа почему-то сильно мерцает при значениях меньше 255. Насколько я понимаю такого быть не должно. Что я не так делаю?
а чего ты хочешь добится? если регулировки яркости, то не всё так просто, ссылку я давал выше.
получается, что если делать регулятор яркости, то встроенный контроллер ШИМ уже не подойдет и нужно будет использовать програмный? А нет ли железных контроллеров с привязкой к фазе?
Мне нужна плавная регулировка нагревательного элемента на 3квт. Может для него и не важгна привязка?
да надо делать программый с привязкой к фазе, железные есть, стоят как несколько ардуинок, так что смысла в них не вижу. и кстати MOC3081 тоже по моему не подойдут, они не умеют включать нагрузку посередине полуволны. А собрать по схеме как там и нарисовано ничего сложного нет.
да надо делать программый с привязкой к фазе, железные есть, стоят как несколько ардуинок, так что смысла в них не вижу. и кстати MOC3081 тоже по моему не подойдут, они не умеют включать нагрузку посередине полуволны. А собрать по схеме как там и нарисовано ничего сложного нет.
Меня что смущает. Делаю контроллер, которы должен контролировать воздух на входе, на выходе и управлять вентилятором и калорифером. Кроме этого нужна интеграция с умным домом (мини комп). Интеграция или через ethernet/wifi или через xbee. Если на ардуино делать софт ШИМ, то получается в одном цикле нужно и ШИМ отработать и интеграцию. Врядли это будет нормально работать. Тогда ставить второй ардуионо?
Без привязки к сети плавно регулировать мощность не получится, для плавной регулировки очень важно чтобы происходило своевременное включение, в течении каждой полуволны, нагрузки симистором.
Впрочем в случае с мощным нагревателем можно было бы пойти по пути последовательности краткосрочных включений на время заведомо более чем 1/50 секунды ... просто пользуясь некоторой инертностью нагревателя. например импульсами по 0.1-0.5 секунды и с регулируемыми длительностями интервалов между включениями...
Тогда напряжение к нагревателю будет прикладываться полностью на все время действия управляющего импульса.
но у такого способа будут и собственные подводные камни, например при совсем малой требуемой мощности подача полного напряжения на достаточно холодный нагревательный элемент будут сопровождаться импульсами тока гораздо большей силы чем при плавно подогретом с помощью нормального ШИМ... как результат автомат защиты придется загрубить, что на качестве этой защиты врядли скажется положительно.
В то же самое время привязка к фазе не сложна, и ее достаточно одной для успешного управления сразу несколькими, самостоятельными нагрузками, впрочем даже трехфазной нагрузкой можно управлять привязавшись всего к одной из фаз, в принципе можно фазу вычислять полностью, лишь периодически синхронизируя систему ...
кстати это или нет. но для задач подобного регулирования есть целая микросхема TDA1085 которая не смотря на предназначение управлять двигателем стиральной машины, прекрасно может быть "обманута" и станет регулировать нагрев или что велЯт, а ардуину можно не напрягать глупостЯми, а использовать для прямого назначения - управления всеми этими бестолковыми механизмами...
Спасибо за разъяснения
кстати это или нет. но для задач подобного регулирования есть целая микросхема TDA1085 которая не смотря на предназначение управлять двигателем стиральной машины, прекрасно может быть "обманута" и станет регулировать нагрев или что велЯт, а ардуину можно не напрягать глупостЯми, а использовать для прямого назначения - управления всеми этими бестолковыми механизмами...
Посмотрел datasheet. Обвязка к этой микросхеме сложне чем к ардуино ))) Да и цена кусается (360р на чипдип)
Жаль у ардуино нет прерываний. В обычном цикле успеет ли ардуино опросить фазу, выставить нужные задержки по двум нагрузкам, двум реле и еще послушать XBee и не пропустить сообщение?
у меня успевало держать яркость лампы, слушать команды от ИК пульта и радиоканал, плюс опрашивать несколько кнопок. и как это нет прерываний? есть там всё.
В чипо-дипе и я увидел цену - испугался, в других магазинах розничная цена 64 - 85 руб за штуку (я только что покупал ввиду неодходимости ремонта стиралки ) ... кстати в стиралках симистор MAC15 - очень по теме. цена за штуку 25-40руб а по характеристике 800V, 15A ...
насчет обвязки там же 80% лишние детальки ) Кстати обвязка там дурная, ибо питание от 220, управление оборотами и скоростью разгона от коммандоаппарата, обратная связь от датчика импульсов, в нагрузке коллекторный двигатель а значит искрить может ... одним словом я бы пожалуй упростил для использования то ;)))
И совсем кстати, в процессе ремонта очень грешил на коммандоаппарат, и очень не однозначно косился в сторону ардуины на тему замены "раритета с ручкой" на ардинку с красивым экранчиком и парой кнопок...
К сожалению КА оказался рабочим )))))
Жаль у ардуино нет прерываний. В обычном цикле успеет ли ардуино опросить фазу, выставить нужные задержки по двум нагрузкам, двум реле и еще послушать XBee и не пропустить сообщение?
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
А в обычном цикле на самых 8 Мгц(про 16 умалчиваю) у ардуины порядка 80К тактов на один полупериод сетевого напряжения... хватит этого времени не только перечисленные операции сделать но и сбегать из Москвы на Сахалин и обратно ))) по карте ...
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
А в обычном цикле на самых 8 Мгц(про 16 умалчиваю) у ардуины порядка 80К тактов на один полупериод сетевого напряжения... хватит этого времени не только перечисленные операции сделать но и сбегать из Москвы на Сахалин и обратно ))) по карте ...
Спасибо, обнадежили )) Упрощать обвязку у микросхемы от стиралки я не осилю )) Раз atmega должен справиться, буду на ней все строить.
Как это нет прерываний!? есть! как миним два внешних на 3 и 4 пин. пользоваться им более чем не сложно и Архи удобно.
Правильно понимаю? Ставлю такую схему (скопировано по ссылке выше):
Завожу на вход пин 2 или 3 ардуино и настраиваю с помощью функции attachInterrupt arduino.cc/en/Reference/AttachInterrupt так? И каждый раз, когда будет проход через ноль, автоматически будет вызываться нужная мне функция. Какой тип прерывания в данной схеме понадобиться? RAISING? т.е. когда значение будет менятся с нуля на единицу?
AttachInterrupt на русском
Правильно понимаю? Ставлю такую схему (скопировано по ссылке выше):
Почти правильно, но не совсем. Дело в том что по такой схеме ты "поймаешь" только одну полуволну от периода - положительную, вторую тебе придется вычислить самостоятельно, при этом программа управления ну никак не упростится, не смотря на то что за каждым полупериодом придется следить все равно, ведь для плавной регулировке нужно считать остаток времени до конца периода а не его начала (на работу тиристора и симистора надо бы обратить внимание) главноечто нужно вспомнить, симистор откроется сразу после подачи напряжения на управляющий электрод и не закроется до тех пор пока напряжение сети не пройдет точку 0(конец ПОЛУпериода).
Впрочем все не так печально и вполне реалистично. и все же будет гораздо веселее если перед оптопарой 4N35 (или аналог, напрмер наша АОТ128) поставить диодный мостик тогда не понадобится обрабатывать по отдельности положительный и отрицательный полупериоды сетевого напряжения. Вот так это реализовано в промышленных контроллерах Сименс:
На схеме "лишний" LED, на самом деле он не лишний ибо с его помощью видно что процесс идет )) - если этот светодиод светится значит и оптопара в это время включена... ))
Завожу на вход пин 2 или 3 ардуино и настраиваю с помощью функции attachInterrupt arduino.cc/en/Reference/AttachInterrupt так? И каждый раз, когда будет проход через ноль, автоматически будет вызываться нужная мне функция. Какой тип прерывания в данной схеме понадобиться? RAISING? т.е. когда значение будет менятся с нуля на единицу?
Опять не совсем. Когда транзистор оптопары открыт на светодиоде есть напряжение и он светится. то на выходе оптопары мы получим 0, нам этот момент и интересен значит и прерывание нужно запускать по FALLING - перепаду с 1 на 0. еще лучше вызывать по CHANGE тогда прерывание будет в два раза чаще но зато если прочитать состояние порта то станет точно известно когда и почему было вызвано прерывание - напряжение появилось или "пропало" ... например по пропаданию можно снимать напряжение с УЭ симистора а не вычислять этот момент где то в программе
В остальном все верно. функция обработчика будет вызываться при каждом появлении напряжения в сети а именно 100 раз в секунду (200 раз в случае CHANGE). Главное не задерживаться в этой функции и не писать там долгих алгоритмов обработки с ожиданиями и тп. Там все быстро, установить/сбросить переменную и сразу досвиданья, остальное обрабатываем в основном цикле loop{}
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
так?
Почти правильно, но не совсем.
Хорошо, попробую снова. Делаю схему с "ловлей" обоих полупериодов и вещаю это на вход ардуины, который понимает прерывания. Настраиваю прерывания на CHANGE. Далее строю логику такую:
в случае двух нагрузок расчета времени будет два и пауз будет две
так?
Кстати отвлеченный вопрос. Получается, что если я так буду включать нагрузку (с отсрочкой от перехода нуля) то теоретически я могу ее включить в любой фазе полупериода, в том числе при максимальном напряжении, это значит, что помехи могут быть весьма высоки. Это как-то решаемо? Как я понял логика включения в момент перехода нуля уже не работает, так как в этом случае оптосемистор не выключится до следующего перехода
А можно совсем отвелченный вопрос? А в чем это нарисовано, имею ввиду, программа какая?
А можно совсем отвелченный вопрос? А в чем это нарисовано, имею ввиду, программа какая?
Протеус, но прошу строго не судить, я в ней новичек
кстати, как расчитывать номиналы резисторов в схеме "ловли" фазы выше? посмотрел даташит 4N35, указан нормальный постоянный ток 60 ма через светодиод. но не указан минимальный для открытия транзистора. какой ток брать в расчет?
забыл написать по схеме выше, я быстро накидал ее схематично, там попались случайные номиналы резисторов
Протеус, но прошу строго не судить, я в ней новичек
Спасибо
да, забыл упомянуть. я ставил 2 штуки 4N35 один прямо, другой в обратку и ловилось обе полуволны, проблем не наблюдал. мне так было проще и удобнее, вместо того, что бы городить мосты :)
ну да разницы то ни какой DIP6 - оптопара и DIP6 - мостик )) в принципе можно оптопару взять сдвоенную, тогда однозначно выигрыш в корпусах ) две оптопары даже круче )) типа резервирования и можно воспользоваться двумымя входами чтоб знать что за полуволна в данный момент ))
впрочем использовать есть смысл то что в наличии а если в любом случае на рынок идти то
АОТ128 - на прошлой неделе обошлись в 15 руб, а диодные мостики DB107 всего в 5 руб )) копейки конечно, но покупая десяток-другой (на вырост) иногда задумаешься ... на "вырученные" 25 рублей купил пяток винтовых коннекторов на плату ))
А можно совсем отвелченный вопрос? А в чем это нарисовано, имею ввиду, программа какая?
Протеус, но прошу строго не судить, я в ней новичек
Вот блин досада, а я тоолько собрался пару вопросов по ней подкинуть ... тоже совсем недавно взял на вооружение уперся в нехватку элементов в библиотеках ((
на входе 0 - значит снимаю напряжение с семистора (ну точнее с управляющего оптосимистора)
* на входе 1 - нужно расчитать время до момента, когда нужно подать напряжение на оптосемистор и сделать паузу. Вопрос как ее делать? Ведь из прерывания нужно выйти сразу как можно скорее. Можно ли использовать что-то типа www.arduino.cc/playground/Main/MsTimer2 ?
* когда время приходит - подаю напряжение на оптосимистор
Да, логика примерна такая. по суте тебя интересует "остаток" периода в течении которого будет подключена к питанию твоя нагрузка, увеличивая этот "остаток" ты можешь регулировать мощность практически от 0-1% и до почти 100% 100% не получится в нашем случае, потому что мы потеряем некоторое время до включения светодиода - наростание напряжения на нем примерно до 2-3 вольт ... но это не много, в принципе когда нужно 100% нагрузки можно полностью игнорировать фазу, а просто дать постоянную 1 на УЭ
*
в случае двух нагрузок расчета времени будет два и пауз будет две
так?
Пауз будет две, но ловить фазу все равно придется только один раз )
если в обработчике прерывания ты будешь просто фиксировать в какой то переменной текущее время или еще лучше сбрасывать таймер, то у тебя будет прекрасная возможность обрабатывать это совершенно независимо для каждой из нагрузок ))
Кстати отвлеченный вопрос. Получается, что если я так буду включать нагрузку (с отсрочкой от перехода нуля) то теоретически я могу ее включить в любой фазе полупериода, в том числе при максимальном напряжении, это значит, что помехи могут быть весьма высоки. Это как-то решаемо? Как я понял логика включения в момент перехода нуля уже не работает, так как в этом случае оптосемистор не выключится до следующего перехода
Да, так и получается, именно так и происходит во всех системах с "плавной" регулировкой на тиристорах/симисторах, но это либо ни кого не заботит, либо строят схемы с почти бесполезными фильтрами ) Наверное тебе приходилось слышать что тиристоры/симисторы - шумят, и не смотря на этот шум ими пользуются ибо пока нет более простого, компактного и достаточно дешевого способа регулирования нагрузок переменного тока, согласись что регулировать 1-2-3 киловатную нагрузку, а это достаточно типовая нагрузка даже для бытовых нагревательных приборов, например ЛАТРом было бы не очень красиво и несколько сложновато в плане управляемости ))
ну да разницы то ни какой DIP6 - оптопара и DIP6 - мостик ))
в целом согласен )) мне показался вариант с двумя оптопарами "круче" ))) да и мостиков у меня нет, хотя 4N35 тоже нет ))
как расчитать номиналы сопротивлений?
если в обработчике прерывания ты будешь просто фиксировать в какой то переменной текущее время или еще лучше сбрасывать таймер, то у тебя будет прекрасная возможность обрабатывать это совершенно независимо для каждой из нагрузок ))
можно подробнее про таймер? есть в ардуино прерывания по таймеру? могу я в прерывании по началу фазы настроить прерывание через нужный мне период времени? библиотека из кастомных с сайта ардуины MsTimer2 судя по примеру работает именно как прерывание по таймеру.
согласись что регулировать 1-2-3 киловатную нагрузку, а это достаточно типовая нагрузка даже для бытовых нагревательных приборов, например ЛАТРом было бы не очень красиво и несколько сложновато в плане управляемости ))
Рарзве IGBT не являются тут альтернативой? У меня две нагрузки для плавного управления - вентилятор (120 вт) и нагреватель (3квт). Может мне для вентилятора другую схему использовать?
насчет альтернатив изначально думал взять готовый регулятор мощности который регилуируется переменным резистором и к нему вместо переменного резистора прикрутить электронный потенциомер, а тем в свою очередь управлять с вывода ШИМ. тоже ведь вариант?
как расчитать номиналы сопротивлений?
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
дальше не забывая про закон Ома считаем делитель напряжения, с таким расчетом чтобы как можно раньше включить светодиод, но при этом и не спалить его ...
как расчитать номиналы сопротивлений?
вопервых для оптопары нужно определиться с минимальным током включения светодиода и максимальным током допустимым через светодиод и приложенное при этом к нему напряжение - это паспортные значения.
дальше не забывая про закон Ома считаем делитель напряжения, с таким расчетом чтобы как можно раньше включить светодиод, но при этом и не спалить его ...
Таймеров у Ардуино доступно аж 3 штуки, прерывания от них работают, из них последний имеет аж 16 битный счетчик в отличии от 2 других. пользоваться ими в данном случае очень полезно, к сожалению готового решения не могу предложить ибо сам их пока что не щупал... Т2 пользовал, но только как счетчик внешних событий (импульсов) а вообще пора бы уже и пощупать ибо хочется иметь в приборе хоть какие то часы ;) говорят в каких то версиях Atmega существуют RTC было бы здорово, но пока не видел...
Есть такая интересная штука, там много чего есть в том числе RTC и стоит практически как мега www.ghielectronics.com/catalog/product/256 , это не ардуино, но интересная штука, там с портами прерываниями и частотой процессора все еще намного круче. присматриваюсь, разберусь с ардуино, может попробую. С доставкой в россиию будет что-то типа 1500р
что то не нашел я значение минимального тока в lib.chipdip.ru/060/DOC000060918.pdf
кстати там указано максимальное обратно напряжение, что это? не нужно ли подключать диод паралельно в обратном направлении, чтобы исключить пробой по обратному напряжению?
что то не нашел я значение минимального тока в lib.chipdip.ru/060/DOC000060918.pdf
кстати там указано максимальное обратно напряжение, что это? не нужно ли подключать диод паралельно в обратном направлении, чтобы исключить пробой по обратному напряжению?
Все верно, напряжение пробоя на закрытом p-n переходе, если не делать делителя напряжения, а просто ограничить макс. ток одним сопротивлением, то разумеется будет пробой, причем обязательно, тогда нужно второй диод навстречу и он частенько уже есть в некоторых оптопалрах.
при использовании диодного мостика или встречной оптопары ни какого опасного напряжения вназад, не будет в принципе...
Судя по диаграммам в конце даташита от тока через светодиод зависит время срабатывания оптопары, в самом худшем случае это при токе 1мА = 20 микросекунд, что в пару-тройку сотен раз раз превышает нашу потребность. максимальный, продолжительный ток 60 мА )) так что имеем хороший запас по диаппазону...
В дополение.
как расчитать номиналы сопротивлений?
Первым сопротивлением ограничиваешь максимальный ток, при полном напряжении(не забудь про рассеиваимую мощность при этом не спроста в первой схеме сопротивлений было аж 4 штуки ...), вторым - которое параллельно диоду ограничиваешь максимальное напряжение которое могло бы при этом быть приложено к LED.
у меня получилось 3К9 для напряжения 230В и тока чуть меньше 60 мА, но я бы постеснялся и поставил поболе хотя бы в два раза(5К6, 6К8). При этом если оптопара будет включаться примерно при 1-2 мА, то это должно произойти уже при достижении напряжения в сети 2.3-4.5 В(4-7 для увеличенного R), что наверное не правда, хотя кто знает. Я бы пожалуй поэкспериментировал с обычными светодиодами сначала, что то мне подсказывает что они умеют взрываться ... из детского опыта, отечественные МЛТ-0.5 очень быстро разогреваются и сгорают сами при сопротивлении менее 2К2 ... впрочем P=U**2/R еще ни кто не опроверг ))
Учитывая что типовой рабочий ток для уверенного срабатывания оптопар обычно в пределах 5-7 мА, можно поставить соп..люшку и побольше, в самом первом примере это было аж 82К )) но если нужно чтобы пара сработала раньше задирать вредно...
а можно посмотреть схему подключения твердотельного реле, н-р, sharp s202s02
Я не пойму зачем велосипед изобретать? По ссылке которую дал pmaster все работает на прерываниях, судя по скетчу в расчет идут обя полупериода.
Пишите свой код в цикле loop и все.
меня диммер не интересует, потом у меня под рукой только данное реле...
Я имел ввиду axill
А вот интересно, касательно схемы выше cyber-place.ru/showthread.php, а если у меня блок питания всего устройства с понижающим трансформатором, то зачем мне фазу ловить через оптопару? Разве нельзя подключить вход ардуины к вторичной обмотке трансформатора через скажем делитель на сопротивлениях?
А вот интересно, касательно схемы выше cyber-place.ru/showthread.php, а если у меня блок питания всего устройства с понижающим трансформатором, то зачем мне фазу ловить через оптопару? Разве нельзя подключить вход ардуины к вторичной обмотке трансформатора через скажем делитель на сопротивлениях?
Конечно, лучше использовать трансформатор и делитель