|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
28.05.2013, 02:46 | #1 |
Member
Регистрация: 28.05.2013
Сообщений: 71
Вес репутации: 0 |
Плавное изменение оборотов асинхронного вентилятора переменного тока с помощью Arduino.
Здравствуйте уважаемые форумчане.Обращаюсь с такой проблемой:
Недавно решил своими силами сделать устройство позволяющее плавно менять скорость вентилятора( 220 V) в зависимости от температуры. Для начала решил подключить датчик температуры DS18B20 и прописать логику, для проверки использовал стандартный ШИМ arduino + двигатель постоянного тока через MOSFET. Результат меня более чем устроил, все завелось с пол пинка и олично выполняло свои функции. Датчик температуры DS18B20 , использовал стандартные библиотеки. Первый потенциометр VAR_REZ задаёт температуру включения вентиляции (на наименьших оборотах) , второй потенциометр VAR_REZ2 задает температуру на которой вентилятор выйдет на максимальные обороты. Соотношением этих двух резисторов можно довольно тонко настроить соотношение эффективности охлаждения к уровню шума. вот код: сильно не ругайте он первый у меня PHP код:
Короче в какой то момент начал понимать что задачу не по зубам взял...Но в какой то момент натолкнулся на статью на Вашем форуме, собрал устройство (пришлось немного изменить номиналы резисторов ) залил скетч из первого поста ,протестировал и понял что данный диммер полностью подходит для моих целей. И с разбегу переписал свой скетч добавив туда код и библиотеки диммера. И всё как будто заработало- логика выполняется , скорость вращения меняется....но вентилятор вращается с прерываниями которое задаёт опрос датчика температуры !!! (видно когда порт мониториш) В варианте с стандартным ШИМом такого не наблюдалось.Всю голову сломал то ли значение Dimmer1 сбрасывается почему то, при опросе датчика температуры, или конфликт библиотек.( может <DallasTemperature.h> тоже timer 1 использует ) но это всё лиш догадки... В общем даже не знаю в какую сторону смотреть т.к. это первый проэкт на МК. Буду рад любым предложениям, советам, критике , примерам) Всем заранее спасибо) Вот код переделаный: Здесь все библиотеки использованые в проэкте. PHP код:
|
28.05.2013, 12:30 | #2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Для начала нужно понять из за чего глючит.
Для этого потребуется убрать все что связано с вызовом измерения температуры. Если посте этого даргатся перестанет, то смотреть саму либу на датчик темепературы и пытаться обойти проблему |
28.05.2013, 13:17 | #3 |
Member
Регистрация: 28.05.2013
Сообщений: 71
Вес репутации: 0 |
Большое спасибо за совет, Будем ковырять)
|
28.05.2013, 13:28 | #4 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Я бы для регулировки индуктивной нагрузки, использовал другой вариант регулировки, так как эта схема будет генерировать большое количество помех в сети
Например я бы попробовал вариант который основан на пропуске полупериодов. Для этого понадобится оптрон с детектором ноля, в цепи симистора. Алгоритм такой Например берем за основу 10 полупериодов, это 100% если включить симмистор на один полупериод, а остальные 9 ПП пропустить, то это будет 10% мощности, Если 2 ПП то это 20% и т.д. При таком алгоритме, можно немножко упростить код. Таймер в коде не понадобится |
28.05.2013, 14:53 | #5 |
Member
Регистрация: 28.05.2013
Сообщений: 71
Вес репутации: 0 |
Спасибо , как раз есть moc 3083 . Не могли бы дать ссылку на пример кода?
Как понимаю обратной связи не потребуется? Последний раз редактировалось zsm; 28.05.2013 в 14:59. |
28.05.2013, 15:30 | #6 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Можно попробовать проверить без обратной связи.
|
28.05.2013, 15:39 | #7 |
Member
Регистрация: 28.05.2013
Сообщений: 71
Вес репутации: 0 |
Схему с пропуском периодов обязательно попробую.
Хочу все же для начала разобраться с первой схемой. удалил по Вашему совету всё что связано с датчиком температуры , всё нормально стало, похоже надо в DallasTemperature.h проблему искать..а там вообще чёрт ногу сломит)) Может датчик другой попробовать? DHT11 например. Последний раз редактировалось zsm; 28.05.2013 в 15:59. |
28.05.2013, 16:26 | #8 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Тогда уж лучше использовать любой из списка аналоговый датчик температуры LM35, LM135, LM235, LM335
|
28.05.2013, 16:55 | #9 |
Member
Регистрация: 28.05.2013
Сообщений: 71
Вес репутации: 0 |
Спасибо за советы , с аналоговыми проще будет пожалуй, но всё же поковыряюсь с этим ещё.
Последний раз редактировалось zsm; 28.05.2013 в 17:13. |
28.05.2013, 17:11 | #10 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Попробуй вот такой вариант регулятора
PHP код:
|
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5) | |
|
|