Управление электромотором. Помогите по коду.

valevy
Offline
Зарегистрирован: 01.06.2015

Это был банальный кухонный измельчитель отходов 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);//Отключаем вентилятор
  
  
  
 

}

 

valevy
Offline
Зарегистрирован: 01.06.2015

Вот ещё что: Если рабочий цикл 1 или 2 закончился целиком сам по времени, т.е. выключатель никто не выключил, или аварийно при отсутствию сигнала с датчика вращения, то всё останвливается пока выключатель не выключат-включат заново.