Управление электромотором. Помогите по коду.
- Войдите на сайт для отправки комментариев
Втр, 01/12/2015 - 15:14
Это был банальный кухонный измельчитель отходов InSinkErator 200. Но сгорел. Мотор мне перематали, а вот блок управления я сделал полностью свой, с защитой от невключения. С Ардуино, и программированием вообще дел никогда не имел. Спасибо за понимание. Вопросы по существу в коде.
void setup() {
pinMode(2, INPUT);//Появляются +4в при включении вак.кн.
pinMode(3, INPUT);//Замыкается на массу 2 раза за один оборот
pinMode(4, OUTPUT);//Правое вращение
pinMode(5, OUTPUT);//Левое вращение
pinMode(6, OUTPUT);//Вентилятор
pinMode(7, OUTPUT);//Стартовый конденсатор
}
void loop() {
digitalRead(2, LOW);
// !!!!!!!Выключатель. При включении на эту ногу подаётся +4в и висит там пока не выключат.
//!!!!Как сделать что-бы рабочие циклы 1 и 2 запускались поочерёдно от этого выключателя и немедленно отключались при его выключении?!!!!
digitalRead(3, HIGH);
// !!!!!При старте может быть в любом из состояний. При нормальном вращении мотора замыкает на массы с частотой около 50Гц,
//В случае отсутствия попеременного сигнала с этого датчика на протяжении 3 секунд цыкл должен останавливаться (Все выходы в положение HIGH)!!!!!
digitalWrite(4, HIGH);// Изначально устанавливаем состояние всех выходов ВЫКЛЮЧЕННО
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
// Рабочий цикл 1 -Правое вращение
digitalWrite(7, LOW); //Запускаем стартовый конденсатор
delay(100); //Через 01c
digitalWrite(4, LOW); //Запускаем правое вращение
delay(2000); // Через 2 секунды
digitalWrite(7, HIGH);// Выключаем стартовый конденсатор
delay(60000); //Через 1 минуту
digitalWrite(6, LOW); //Включаем вентилятор
delay(240000); //Через 4 минуты
digitalWrite(4, HIGH);//Выключаем правое вращение
delay(10000); // Через 10 секунд
digitalWrite(6, LOW);//Отключаем вентилятор
// Рабочий цикл 2 - Левое вращение
digitalWrite(7, LOW); //Запускаем стартовый конденсатор
delay(100); //Через 01c
digitalWrite(5, LOW); //Запускаем левое вращение
delay(2000); // Через 2 секунды
digitalWrite(7, HIGH);// Выключаем стартовый конденсатор
delay(60000); //Через 1 минуту
digitalWrite(6, LOW); //Включаем вентилятор
delay(240000); //Через 4 минуты
digitalWrite(5, HIGH);//Выключаем левое вращение
delay(10000); // Через 10 секунд
digitalWrite(6, LOW);//Отключаем вентилятор
}
Вот ещё что: Если рабочий цикл 1 или 2 закончился целиком сам по времени, т.е. выключатель никто не выключил, или аварийно при отсутствию сигнала с датчика вращения, то всё останвливается пока выключатель не выключат-включат заново.