написание скетча для управления оборотами двигателя

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не знаю. ищите ошибку в подключении. подцепите аккумулятор а D2 отсоедените. Если будет работать при отключении и не работать  при подключении к D2 ищите ошибки в монтаже. хотя тут изначально ошибка монтажа

Pavlo
Offline
Зарегистрирован: 18.12.2013

проблема была не в электрическом соединении а в самой плате какойто пробой.

схема срабатывает при 210 оборотах и отключаеться при 170

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

как вы проверили если плата сдохла?

Pavlo
Offline
Зарегистрирован: 18.12.2013

я перепаял питание на старую плату из этой и она заработала. сейчас работаю на первой плате

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

понятно. плавно увеличивайте и уменьшайте обороты и проверьте еще раз. изза усреднения будет задержка небольшая

Pavlo
Offline
Зарегистрирован: 18.12.2013

есть небольшая задержка. в проге установлен верхний порог 250 и нижний 210

при испытании верхний порог срабатывания 210 и нижний 170

я изменил в проге верхний 290 и нижний 270 при испытании срабатывание происходит при верхнем пороге 245 и нижнем 225

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

понятно. странно. ну да ладно. работает стабильно или нет?

Pavlo
Offline
Зарегистрирован: 18.12.2013

тестирую. пока на нижней границе 220-224 небольшой сбой. дойдя до 225 об переключаеться и пока об не упадут до 220 шток актуатора двигаеться из одного крайнего положения в другой (полное движение вперед и назад) до тех пор пока не дойдет до 220 об. дойдя до 220 фиксируеться. и ждет когда подниметься до 250

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

разрыв между границами уменьшите

Pavlo
Offline
Зарегистрирован: 18.12.2013

уменьшил разрыв 250-240 об в начале работало нормально потом нижний предел сместился на 232 об

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

расскажите как у вас должно работать. если правлиьно понял увеличились обороты выше какого то предела актуатор поворачивает ветрогенератор чтобы уменьшить силу ветра, когда ветер стал слабее вернуть назад. так?

Pavlo
Offline
Зарегистрирован: 18.12.2013

правильно

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тогда получается если какая то затоможенность будет ничего страшного как только слишком далеко повернется плата заметит падение оборотов и вернет назад. единственное может будет постоянно туду сюда гонять. тут нужны наверно немного другие условия. ветер не появляется обычно на секунду, значит инерционность не страшна

и еще вопрос акуатор насколько помню работает в обе стороны. когда включается реле подается питание и он поворачивает ветрогенератор. а как он назад возвращается?

Pavlo
Offline
Зарегистрирован: 18.12.2013

на реле подаеться изначально высокий сигнал. в проге прописан. который замыкает реле и включает актуатор в рабочее положение шток выдвинут. когда поднимаються обороты на реле подаеться сигнал LOW  реле обестачиваеться и  замыкает цепь на обратную полярность (на увод из под ветра)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а в крайних точках актуатора он сам останавливается?

Pavlo
Offline
Зарегистрирован: 18.12.2013

да он останавливаеться размыкает цепь и ждет команду на обратное движение

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хорошо. когда в реальных уловиях протестируете?

Pavlo
Offline
Зарегистрирован: 18.12.2013

в понедельник-вторник поеду тестировать.

меня пока нижний предел беспокоит. иногда жестко срабатывает и иногда от 3-8 раз меняет положение штока до фиксации

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

проверьте осциллографом если есть сигнал с датчика

в крайнем случае придется возможно усилитель ставить до нормального уровня 5В (у вас с датчика вроде 3.2В)

Pavlo
Offline
Зарегистрирован: 18.12.2013

проводил испытания на 12В работал. когда поставил номинальное 24 В от быстрых переключений начали гореть предохранители.

при понижении оборотов на нижнем пределе когда реле начинает пульсировать и шток находиться возле конечного выключателя происходит КЗ и летит предохранитель после примерно 8 быстрых пульсаций

Pavlo
Offline
Зарегистрирован: 18.12.2013

на датчике напряжение 3.4-3.6 В

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

как часто щелкает?

не ставьте пока 24В во время тестов. не жгите предохранители

#define rele 10
volatile unsigned long time = 0;        //Время срабатывания датчика
volatile unsigned long time_old = 0;             //предыдущее время
int speeed = 0;
boolean flag = 0;

int mass[5] = {0,0,0,0,0};   
byte first = 0;

void setup(){
  delay(120000); //подождем 2 мин на начальном этапе
  pinMode(rele, OUTPUT);
  digitalWrite(rele, LOW);
  attachInterrupt(0, impuls, RISING);   //Прерывание по нарастающему фронту на D2
} 
void loop(){
  if(flag == 1){
    speeed = 60000/(time-time_old);     //вычисляем скорость в об/мин
    
//========================================================================
//  Первый раз заполняем массив одинаковыми значениями измеренной скорости
//             Выполняется только 1 раз после первого измерения

    if( first == 1){
       for(int i=0; i<5; i++){
          mass[i] = speeed;
          first++;
       }  
    }  
    
//========================================================================
//                        Вычисляем среднее
    for(int i=0; i<4; i++){
      mass[i] = mass[i+1];
    }
    mass[4] = speeed;
    for(int i=0; i<5; i++){ 
      speeed += mass[i];
    }
    speeed /= 5;
//========================================================================
//                          Управляем реле    
    
    if(speeed >= 250){ 
      digitalWrite(rele, HIGH);
      delay(1000); 
    } 
    if(speeed <= 210){ 
      digitalWrite(rele, LOW);
      delay(1000);  
    } 
    flag = 0;
  }
}

//========================================================================
//                      Подпрограмма прерывания    
void impuls(){
  time_old = time; 
  time = millis(); 
  flag = 1;
  if(first == 0){
     first++;
  }
}

добавим задержку. секунду например и посмотрим

Pavlo
Offline
Зарегистрирован: 18.12.2013

первая проверка прошла чисто. сейчас еще погоняю и посмотрим

Pavlo
Offline
Зарегистрирован: 18.12.2013

спасибо. пока работает чисто. нужна будет корректировка уже по месту по силе ветра. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну хорошо. сразу 24 не подавайте. проверьте так

Pavlo
Offline
Зарегистрирован: 18.12.2013

Пока опустил на 20 В

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

может оставить 12 или 15 например чтобы не горели предохранители если что? 

но тут сами выбирайте. если есть предохранители то пожалуйста. главное чтобы еще что нибудь не погорело

Pavlo
Offline
Зарегистрирован: 18.12.2013

Погорели они из-за скачков когда реле скачками переключалось и на контактах реле происходила дуга.  В последней проге переключение разовое как на ручном управлении. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ок. отпишись после тестов. а лучше видео как это все выглядит и работает