Народ всем привет,
Облазил весь интернет не нашел решение своей проблемы может вы поможете или посоветуете что нибудь.
Собственно проблема в том что не удается мне управлять оборотами двигателя переменного напряжения через симистор.
Вот схема подключения
А вот скетч на ардуино от Алекса.
Двигатель не реагирует на потенциометр! Как бы по задумке она должна при повороте ручки потенциометра плавно повышать обороты но в реале двигатель либо не крутится вообще либо же начинает крутится на максимальных оборотах не реагируя на положение потенциометра.
За любой совет буду очень благодарен.
Облазил весь интернет не нашел решение своей проблемы может вы поможете или посоветуете что нибудь.
Собственно проблема в том что не удается мне управлять оборотами двигателя переменного напряжения через симистор.
Вот схема подключения
А вот скетч на ардуино от Алекса.
C++:
#define dimPin 4
#define zeroPin 2
#include <CyberLib.h> // шустрая библиотека для таймера
volatile int tic, Dimmer;
void setup() {
pinMode(dimPin, OUTPUT);
digitalWrite(dimPin, 0);
pinMode(zeroPin, INPUT); // настраиваем порт на вход для отслеживания прохождения сигнала через ноль
attachInterrupt(0, detect_up, FALLING); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
StartTimer1(timer_interrupt, 40); // время для одного разряда ШИМ
StopTimer1(); // остановить таймер
}
void loop() {
// раскомментировать для управления потенциометром (аналоговый А0)
Dimmer = map(analogRead(0), 0, 1023, 240, 0);
}
//----------------------ОБРАБОТЧИКИ ПРЕРЫВАНИЙ--------------------------
void timer_interrupt() { // прерывания таймера срабатывают каждые 40 мкс
tic++; // счетчик
if (tic > Dimmer) // если настало время включать ток
digitalWrite(dimPin, 1); // врубить ток
}
void detect_up() { // обработка внешнего прерывания на пересекание нуля снизу
tic = 0; // обнулить счетчик
ResumeTimer1(); // перезапустить таймер
attachInterrupt(0, detect_down, RISING); // перенастроить прерывание
}
void detect_down() { // обработка внешнего прерывания на пересекание нуля сверху
tic = 0; // обнулить счетчик
StopTimer1(); // остановить таймер
digitalWrite(dimPin, 0); // вырубить ток
attachInterrupt(0, detect_up, FALLING); // перенастроить прерывание
}
За любой совет буду очень благодарен.