![]() |
|
|
#681 |
|
Junior Member
Регистрация: 26.04.2015
Сообщений: 8
Вес репутации: 0 ![]() |
имел в виду нечто ворде http://uniel.ru/catalog/2202
|
|
|
|
|
|
#682 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
По RS485 проще всего
Для этого понадобится сам драйвер RS485-TTL и дописать скетч |
|
|
|
|
|
#683 |
|
Junior Member
Регистрация: 25.07.2016
Сообщений: 2
Вес репутации: 0 ![]() |
Имеется Nano (328) и диммер.
Код взял с этой темы. Работает, но с задержкой около одной секунды. На контроллере светодиод RX моргает моментально, сразу после отправки данных в порт, а уже спустя секунду изменятся яркость лампочки. Как минимизировать эту паузу? Код:
#include <TimerOne.h>
volatile uint8_t tic ;
uint8_t data;
int Dimmer;
void setup() {
//*********************Настраиваем порты на выход**********************
pinMode (3, OUTPUT);
digitalWrite(3, LOW); // гасим оответствующий пин
Dimmer = 10; //выставим яркость соответствующего диммера в 0
attachInterrupt(0, detect_up, LOW); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
Timer1.initialize(40); // Интервал срабатывания таймера в мкс
Timer1.attachInterrupt(halfcycle); //будет вызыватся каждый раз при отсчете заданого времени
Timer1.stop();
Serial.begin(115200); //инициализация порта
randomSeed(analogRead(0)); //псевдогенератор случайных чисел будет использовать шумы на аналог пин 0
Serial.begin(9600);
}
//********************обработчики прерываний*******************************
void halfcycle() //прерывания таймера
{
tic--; //счетчик
if (Dimmer > tic )
digitalWrite(3, HIGH); //управляем выходом (откроем семистор)
}
void detect_up() // обработка внешнего прерывания. Сработает по переднему фронту
{
tic = 200; //обнулить счетчик
Timer1.resume(); //запустить таймер
attachInterrupt(0, detect_down, HIGH); //перепрограммировать прерывание на другой обработчик
}
void detect_down() // обработка внешнего прерывания. Сработает по заднему фронту
{
Timer1.stop(); //остановить таймер
digitalWrite(3, LOW);
tic = 200; //обнулить счетчик
attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик
}
void loop() {
if (Serial.available() > 0)
{
Dimmer = Serial.parseInt();
}
}
|
|
|
|
|
|
#684 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В шапке темы рабочий и проверенный код, без каких либо задержек
|
|
|
|
|
|
#685 | |
|
Junior Member
Регистрация: 26.04.2015
Сообщений: 8
Вес репутации: 0 ![]() |
Цитата:
|
|
|
|
|
|
|
#686 |
|
Junior Member
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0 ![]() |
Непонятно почему, при плавной регулировке в диапазоне от 125 до 100 лампа начинает моргать, как будто симистор после импульса открывается на полную и в конце полуволны закрывается. Боролся уже по всякому. Снаббер почти не помогает. Симистор BTA225-800, оптика MOC3052/
|
|
|
|
|
|
#687 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вы сами собирали диммет? Если да то возможно что сопротивление на PC814 не соответсвует
|
|
|
|
|
|
#688 |
|
Junior Member
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0 ![]() |
Собирал сам, на основе плавного пуска мощного пылесоса. Там схема практически один в один,только контроллер сдох. Вот его и меняю на ардуинку.
С работой диммера разобрался,уменьшил резистор на управляющем оптроне (MOC3052) все заработало отлично. При подаче питания на всю схему, движок, после загрузки ардуинки плавно разгоняется. Теперь не получается прикрутить кнопку пуск-стоп. Опрос входа на котором она висит из-за прерываний не происходит, в результате получается белиберда с пуск-стопом. Думаю надо опрашивать вход в момент обработки прерывания. Может кто решал задачу с обработкой цифрового входа при работе диммера? Последний раз редактировалось bublonik; 23.09.2016 в 22:05. Причина: Дополнение текста. |
|
|
|
|
|
#689 |
|
Junior Member
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0 ![]() |
Все, плавное включение-выключение кнопкой то же победил. Сделал обработку кнопки в момент работы прерывания по положительной полуволне.
|
|
|
|
|
|
#690 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Конденсатор 0,1мкф, одним концом на GND, другим на вход контроллера к которому подключена кнопка. Такой способ надежнее любых программных
|
|
|
|
![]() |
| Здесь присутствуют: 15 (пользователей: 0 , гостей: 15) | |
|
|