помогите с управлением ветрогенератора

8505299540
Offline
Зарегистрирован: 16.05.2016

         Добрый день.

Задумал собрать ветра-генератор, управление хочу доверить 

Аrduine Mega2560,но я не программист и не знаю язык программирования.

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

Были собственные попытки,но отсутствие знаний в программировании сказалось на результат.



Не могли бы Вы мне помочь со скетчем?

8505299540
Offline
Зарегистрирован: 16.05.2016

mega 2560, 2шт-датчика холла, модуль Реле 4х канальное- 1 канал-2 канал отвечают за перемещение двигателем корпуса двигателя лопастей( start,stop), 3 канал-4 канал отвечают за вращения двигателя лопастей (вправо,влево)

То есть, необходимо удерживать диапазон вращения главного вала 230-250 об/мин(на катором установлен дотчик холла). Вал начинает вращаться, когда скорость ветра более 3м/с,ветер будет измеряться спомошу самодельмого аннимометра(на катором установлен другой дотчик холла). То есть нужно выдерживать такой угол лопастей, чтобы обороты главного вала не выходили за вышеуказанные пределы.

aXa9MG4JHBM.jpgxYMXTIuHlCE.jpg  2шт

.bNPwZj-bzAU.jpgLojEInJi_ZY.jpg2шт

нужно делать два программных тахометра(анемометр в м/с. ,а второй об./мин.),и вывести эти показания на 2 дисплэя для визуального кантроля и регулировки.

Помагите кто может.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Вопрос: сами готовы разбираться? Писать, вникать в тонкости программирования, тестировать и т.п.?

8505299540
Offline
Зарегистрирован: 16.05.2016

я в программировании вообще не разбираюсь

const int animometrPin = 2; // это номер вход анемометра (первый датчик оборотов-датчик холла) 

const int start_motor_A = 4; // это номер 4 выход на реле-1 привода отк. лопастей 

const int stop_motor_B = 5; // это номер 5 выход на реле-2 привода зак.лопастей 

const int sensorPin = 21; // это номер вход датчик оборотов лопастей (второй датчик оборотов-датчик холла) 

const int motor_windPin_C = 6; // это номер 6 выход на реле-3 двигатель лопастей 

const int motor_windPin_D = 7; // это номер 7 выход на реле-4 двигатель лопастей 

void setup(){ 

pinMode(animometrPin, INPUT); // присвоим вход анемометра: 

pinMode(start_motor_A, OUTPUT); // присвоим выход реле-1 привода отк.лопастей 

digitalWrite(start_motor_A, LOW); // присвоим состаяние привода отк.лопастей: 

pinMode(stop_motor_B, OUTPUT); // присвоим выход реле-2 привода зак.лопастей 

digitalWrite(stop_motor_B, LOW); // присвоим состаяние привода зак.лопастей: 

pinMode(sensorPin, INPUT); // присвоим вход датчик оборотов лопастей: 

pinMode(motor_windPin_С, OUTPUT); // присвоим выход реле-3 двигатель лопастей 

digitalWrite(motor_windPin_С, LOW); // присвоим состаяние двигателя лопастей: 

pinMode(motor_windPin_D, OUTPUT);// присвоим выход реле-4 двигатель лопастей 

digitalWrite(motor_windPin_B, LOW); // присвоим состояние двигателя лопастей: 

void loop(){ если можно добавьте 2шт.- 7и сегментных дисплея для анемометра и для датчик оборотов лопастей для визуального контроля 



// при достижении скорости ветра выше чем 3м./с.(анемометр(первый датчик оборотов-датчик холла) ), включается выход А реле-1 привода отк. лопастей ( концевик прервет ) 

// выход А(реле-1) привода открытия лопастей включается (start)

// при выше указанных условиях (ветер 3м./с.и выше) датчик-2 начнет считывать обороты лопастей 

// необходимо удержать диапазон 230-250 об/мин 

// если обороты > 250,то выход C (реле-3) двигатель лопастей включится на 3 секунды (влево по вращении)

// если обороты < 230,то выход D(реле-4) двигатель лопастей включится на 3 секунды (вправо по вращении) 

// при понижении скорости ветра ниже чем 3м./с.

(анемометр),включается выход В (реле-2) привода зак. лопастей (stop) 

// выход В (реле-4) привода закрытия лопастей включается ( концевик прервет ) 

}

8505299540
Offline
Зарегистрирован: 16.05.2016

вот,что я смог написать

 

8505299540
Offline
Зарегистрирован: 16.05.2016

DIYMan пишет:

Вопрос: сами готовы разбираться? Писать, вникать в тонкости программирования, тестировать и т.п.?

есть огромное желание ,но не дастаточно знаний в этом напровлении.

аппаратура имеется,за исключением дисплэя-жду доставки.

тестировать буду

8505299540
Offline
Зарегистрирован: 16.05.2016

 

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Т.е. вы однозначно сами не можете ничего написать, учиться не хотите или нет времени/желания, а можете только тестировать - я правильно понял? Если да - то вам в раздел: http://arduino.ru/forumy/ishchu-ispolnitelya

8505299540
Offline
Зарегистрирован: 16.05.2016

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

 

8505299540
Offline
Зарегистрирован: 16.05.2016

вы не могли бы мне помочь?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ок, понял. Тогда поступить можно так: раз вы учитесь, то, во-первых, можно поиграться со стандартными примерами, чтобы понять, как и чего работает. Почитать раздел http://arduino.ru/Reference на этом сайте. Потом уже - браться за реализацию проекта, разбив всё на этапы, но перед этим - простым русским языком расписав для себя алгоритм работы всего добра.

Начните реализацию с подсчёта кол-ва оборотов вала - примеров на форуме тонны. Как только это сделаете - сделайте вывод подсчитанного в порт (Serial). После этого - можно потихоньку писать код, который в зависимости от оборотов поворачивает ветряк боком к ветру. На последнем этапе - прикручивать вывод на дисплей или ещё куда.

Всё не так страшно, как кажется ;) Понимаю, что есть вопросы, поэтому давайте начнём с малого - какой конкретный простой вопрос, касающийся какого-либо этапа разработки прошивки, у вас сейчас есть?

8505299540
Offline
Зарегистрирован: 16.05.2016
  //анимометр:
   const int animometrPin = 2;    // это номер вход анимометра
    //привод отк.лопостей:
   const int start_motor_A  = 4;     // это номер выход привода отк.лопостей
    //привод зак.лопостей:
   const int start_motor_B  = 5;     // это номер выход привода зак.лопостей
    //датчик оборотов:
   const int sensorPin = 21;       // это номер вход датчик оборотов лопостей
    //двигатель лопостей:
   const int motor_windPin_A = 6;   // это номер выход двигатель лопостей
    //двигатель лопостей:
   const int motor_windPin_B = 7;   // это номер выход двигатель лопостей
       
  void setup(){
  pinMode(animometrPin, INPUT);                    // присвоим вход анимометра:
  pinMode(start_motor_A, OUTPUT);                  // присвоим выход A привода отк.лопостей
  digitalWrite(start_motor_A, LOW);                // присвоим состаяние привода отк.лопостей:
  pinMode(start_motor_B, OUTPUT);                  // присвоим выход B привода зак.лопостей
  digitalWrite(start_motor_B, LOW);                // присвоим состаяние привода зак.лопостей:
  pinMode(sensorPin, INPUT);                       // присвоим вход датчик оборотов лопостей:
  pinMode(motor_windPin_A, OUTPUT);                // присвоим выход A двигатель лопостей
  digitalWrite(motor_windPin_A, LOW);              // присвоим состаяние двигателя лопостей:
  pinMode(motor_windPin_B, OUTPUT);                // присвоим выход B двигатель лопостей
  digitalWrite(motor_windPin_B, LOW);               // присвоим состаяние двигателя лопостей:
 
}
   void loop(){     
     
                             1                        // при достижении скорсти ветра выше чем 3м./с.(анимометр),включается выход A привода отк.лопостей
                              2                       // выход A привода открытия лопостей включается
                              3                       // при выше указаных условиях датчик оборотов начнет считывать обороты лопостей
                               4                      // необходимо удержать диапозон 250 об/мин
                                5                     // если обороты > 250,то выход A двигатель лопостей включится на 3 секунды
                                6                     // если обороты < 230,то выход B двигатель лопостей включится на 3 секунды
                                 7                    // при понижении скорсти ветра ниже чем 3м./с.(анимометр),включается выход В привода зак.лопостей
                                 8                    // выход В привода закрытия лопостей включается
      }
  
 
    
8505299540
Offline
Зарегистрирован: 16.05.2016

 void loop() вот тут затруднение

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Для начала - при добавлении темы есть кнопочка "Вставить код" - подробнее описано вот здесь: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

Далее: вы неправильно прочитали, что я писал: начните с подсчёта оборотов. На форуме есть поиск, правый верхний угол, ключевые слова - "подсчёт оборотов".

8505299540
Offline
Зарегистрирован: 16.05.2016

void loop() 

 первое система должна считывать обороты аннимометра.1метр в секумду =4 оборота(импульса) в 1000мили секумд

а у нас задача 3м/с-12импульсов в 1000мил.секунд

di_mot
Offline
Зарегистрирован: 12.08.2016

8505299540 пишет:
...void loop() вот тут затруднение...

Ни кто за тебя код программы не будет, тем более по такими не определенным условиям "ТЗ".

1. "при достижении скорсти ветра выше чем".

А кто сказал что вообще ветер есть? А если есть, то кто определил с какая скоростью?
Значит - с начала нужно опеделить скорость ветра.
Где в программе этот фрагмент кода? - Нету.:-)
Без этого, всё остальное - нафих не нужное кноптокоптание.
Как вычислить скорость ветра - примеры и проекты реализации есть.
Находим их, читаем, думает, пробуем на собранном железе закачивая программу "обработки данных с ветромера".
Получаем приемлемый результат и только потом идем дальше к моторам.

8505299540 пишет:
...но я не программист и не знаю язык программирования.

Но кто-то должен написать программу?
Так что 2 варианта: или сам (а значит придется чему-нить научится в программировании), или кто-то это сделает за тебя.

di_mot
Offline
Зарегистрирован: 12.08.2016

8505299540 пишет:

 первое система должна считывать обороты аннимометра.1метр в секумду =4 оборота(импульса) в 1000мили секумд

а у нас задача 3м/с-12импульсов в 1000мил.секунд

Принципиально задачи, что 4 им/сек, что 100 им/сек, ни чем не отличаются.

И таки да! А куда деваются штормы? ;-)

 

8505299540
Offline
Зарегистрирован: 16.05.2016

спасибо за замечание 

у анемометра задача считывать имп/в сек и при указонных условиях т.е. <3м/с то включать Pin 4 на 2 минуты и после выключить,а если >3м/с,то включить Pin 5 на 2 мин. и после этого выключить.

а со штормам будет спровляться другая часть(второй датчик холла)

di_mot
Offline
Зарегистрирован: 12.08.2016

8505299540 пишет:

у анемометра задача считывать имп/в сек ...

Не правльная постановка задачи. Анемометр - внешняя приблуда к Аrduine Mega2560. (Или он к ней прилагался в комплекте?)

Значит задача анемометра - выдавать на-гора "скорость ветра" в им/сек на какое-то устройство.

Задача Mega2560: принять сигнал с анемометра, вычислить "скорость ветра" и по заданным значениям выдать "на-гора" тот или иной управляющий сигнал. А ушь куда и за чем он пойдет дальше - головная боль разработчика проекта. ;-)

Так что, с точки зрения Mega2560, данные с анемометра - обыденная задача "тахометра". Проектов "тахометра" валом в Инете. :-)

8505299540 пишет:
<
а со штормам будет спровляться другая часть(второй датчик холла)

А задлянакуда второй-то?

120 км/час - это шторм или 33,333 м/сек.

Как укзано "3м/с-12импульсов", то 33,33 м/сек равно всего-то навсего 133 им/сек. И что тут мерить?

Главное, что бы анемометр не развалился. :-))

 

evgta
Offline
Зарегистрирован: 02.09.2016

8505299540 пишет:

спасибо за замечание 

у анемометра задача считывать имп/в сек и при указонных условиях т.е. <3м/с то включать Pin 4 на 2 минуты и после выключить,а если >3м/с,то включить Pin 5 на 2 мин. и после этого выключить.

а со штормам будет спровляться другая часть(второй датчик холла)

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

а вообще зачем измерять скорость ветра? в пром ветряках при превышении оборотов (с постоянным шагом винта) когда уже акб немогут его переварить и напряжение переваливает норму включаются балластные резисторы 1, 2, 3 ступеней(зимой в отопление пускать можно) и если это уже непомогает то складывается стабилизатор и лопасти встают на эл тормороз (КЗ)

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

а поделу, зачем считывать импульзы в секунду когда достаточно функцией. 

  • micros() или 
  • millis() 
  • замерить длительность одного импульса  и из этого высчитать обороты
Иван Ру
Offline
Зарегистрирован: 12.02.2022

Здравствуйте, немогли бы вы отправить схему сборки. Буду очень благодарен.