Управление вентиляцией по Ethernet

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
kinord
Сообщения: 99
Зарегистрирован: 24 фев 2012, 10:08

Re: Управление вентиляцией по Ethernet

Сообщение kinord » 23 ноя 2014, 21:05

коллеги, подскажите как можно в процессе работы менять полярность у автомобильного активатора.
Он имеет два контакта всего, как управлять втягиванием-вытягивнием с МК?

ROM
Сообщения: 63
Зарегистрирован: 15 май 2013, 12:44

Re: Управление вентиляцией по Ethernet

Сообщение ROM » 23 ноя 2014, 21:06

Смотрите в сторону мостовых схем на транзисторах, как вариант.

123ksn
Сообщения: 42
Зарегистрирован: 09 авг 2014, 02:29
Откуда: почти из Минска

Re: Управление вентиляцией по Ethernet

Сообщение 123ksn » 24 ноя 2014, 08:36

kinord писал(а):коллеги, подскажите как можно в процессе работы менять полярность у автомобильного активатора.
Он имеет два контакта всего, как управлять втягиванием-вытягивнием с МК?
Если внутри электромагнит, то никак. Если мотор, без диодного моста внутри, то реле с двумя группами контактов, т.е. 6 выводов для управления активатором и 2 вывода для питания самого реле. Здесь пример управления шаровыми кранами http://ru.aliexpress.com/item/3-4-DN20- ... 05393.html
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.

zero
Сообщения: 57
Зарегистрирован: 28 фев 2013, 14:56

Re: Управление вентиляцией по Ethernet

Сообщение zero » 24 ноя 2014, 10:50

123ksn писал(а): Если внутри электромагнит, то никак. Если мотор, без диодного моста внутри, то реле с двумя группами контактов, т.е. 6 выводов для управления активатором и 2 вывода для питания самого реле. Здесь пример управления шаровыми кранами http://ru.aliexpress.com/item/3-4-DN20- ... 05393.html
Мотор там. Он предназначен для работы в обе стороны. Просто переполюсовкой менять. Реализаций масса, хоть на реле, хоть на тразисторах.

D D D
Сообщения: 56
Зарегистрирован: 26 авг 2013, 22:32

Re: Управление вентиляцией по Ethernet

Сообщение D D D » 24 ноя 2014, 22:06

Вопрос "бывалым": необходима ли плавная регулировка положения воздушной заслонки или достаточно ее положение открыто/закрыто? Сейчас собираю схему управления сервопривода заслонки и возник этот вопрос. По результату буду "мудрить" схему управления. Работаю под бенуксом.

kinord
Сообщения: 99
Зарегистрирован: 24 фев 2012, 10:08

Re: Управление вентиляцией по Ethernet

Сообщение kinord » 25 ноя 2014, 09:53

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

123ksn
Сообщения: 42
Зарегистрирован: 09 авг 2014, 02:29
Откуда: почти из Минска

Re: Управление вентиляцией по Ethernet

Сообщение 123ksn » 25 ноя 2014, 10:28

1) Я не "бывалый".
2)Сначала хотел как и Вы, но потом подумал, что заслонка будет стучать в момент переключения.
3)Для случая 1/0 надо делать какой-то фиксатор. Например, пружинку, как в микропереключателях, что бы предотвратить дребезг. Или пружинку, что бы переводить в положение закрыто, когда питание отсутствует.
4)Многое зависит от того, что Вам сложнее. Если проще софт - то 1/0, если универсальность - то сервоприводы.
5)Любое решение имеет свои плюсы и минусы.
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 06 дек 2014, 00:05

Всем форумчанам доброго времени суток!
123ksn писал(а):Уважаемый THK, я настолько был вдохновлён Вашей разработкой,...
...Нет ли в Ваших ближайших планах увеличить количество выводов MEGAD-328 для управления сервомашинками штук до ....
Никто не разрабатывал расширенную версию? Уважаемый ТНК, я так понимаю, просто показал как делать =-), и дальнейшими разработками не занимается.

Сам я в С не особо силён, а нужно управлять 23 серво-заслонками по сети... градусники не нужны, нужны только исполнители. а 15 устройств городить.. мягко скажем глупо, когда в теории хватит двух)
Или может кто расскажет, что нужно допилить/выпилить в коде для нужного результата?

123ksn
Сообщения: 42
Зарегистрирован: 09 авг 2014, 02:29
Откуда: почти из Минска

Re: Управление вентиляцией по Ethernet

Сообщение 123ksn » 06 дек 2014, 11:16

Dron писал(а):Или может кто расскажет, что нужно допилить/выпилить в коде для нужного результата?
К сожалению, в контекте Вашего вопроса ответ дать не могу, но могу дать дополнительную информацию, которая может быть поможет выбрать оптимальное решение. Извините, если повторюсь. Лично я купил у китайцев шестнадцатиканальный контроллер серводвигателей LCSC-16.
К сожалению продавец приложил мануал на китайском языке. Теперь я с ним "бодаюсь", что бы прислал на английском. Управляющий софт для Windows, но тоже на китайском. Есть преобразователь USB-???(думаю UART), поэтому (предполагаю) протокол обмена узнать не проблема и заставить работать от своего софта. Я планирую этот контроллер поставить возле "сервера", а сигналы к сервоприводам развести по интерфейсу RS485.
LCSC-16-.jpg
фото LCSC - 16
LCSC-16-.jpg (61.24 КБ) 12758 просмотров
LCSC-162.jpg
преобразователь USB-???
LCSC-162.jpg (1.26 КБ) 12758 просмотров
Управляющая программа по размеру около 3Мб и прикрепить не могу.
Кроме того, k_w_m тоже занимается контроллером.
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 06 дек 2014, 12:16

Спасибо, 123ksn, за идею.
Но мне нужно управление по http.
Напрограммировать просто контроллер под управлением по USB на 15 устройств из обычной ардуино-нано -- дело одного вечера, и на такое у меня мозгов хватило бы)

123ksn
Сообщения: 42
Зарегистрирован: 09 авг 2014, 02:29
Откуда: почти из Минска

Re: Управление вентиляцией по Ethernet

Сообщение 123ksn » 06 дек 2014, 13:59

Dron писал(а):Спасибо, 123ksn, за идею.
Но мне нужно управление по http.
Напрограммировать просто контроллер под управлением по USB на 15 устройств из обычной ардуино-нано -- дело одного вечера, и на такое у меня мозгов хватило бы)
Тогда вот Вам какой-то пример кода для работы по http. Если Вы способны написать за вечер код для управления 15-ю сервомашинками, то уверен, что Вам не составит большого труда скорректировать код под Вашу задачу (Где скачал код не помню)

Код: Выделить всё

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DS2406.h>
#include <DallasTemperature.h>
#include <avr/wdt.h>

// Data wire is plugged into pin 9 on the Arduino (can be any digital I/O pin)
#define ONE_WIRE_BUS 9
#define TEMPERATURE_PRECISION 9
#define DS2413_ONEWIRE_PIN (9)
#define DS2413_ACCESS_WRITE 0x5A
#define DS2413_ACK_SUCCESS 0xAA
  
  boolean pumpstate=false;
  int tankmax = 90;
  int diff = 16;
  int werethere = 8;
  boolean ok = false;



OneWire oneWire(DS2413_ONEWIRE_PIN);
uint8_t address[8] = { 0x3A, 0x91, 0xB7, 0x1A, 0x00, 0x00, 0x00, 0x24 };
         
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

char* myRooms[]={"Улица box:", "Инверторная:", "Кладовая:", "Мастерская", "Комната 1 этаж:",
"Улица:","Выход из котла:","Обратка на котёл:","На батареи:","Электро-бойлер вода:","Комбо-бойлер вода:","Солнечный коллектор выход:"};

DeviceAddress Thermometr[]= {{ 0x28, 0xB8, 0xFC, 0xA0, 0x04, 0x00, 0x00, 0x08},{ 0x28, 0x33, 0x12, 0xA1, 0x04, 0x00, 0x00, 0xED}, 
{ 0x28, 0x51, 0xF1, 0xA0, 0x04, 0x00, 0x00, 0x5B},{ 0x28, 0x95, 0xA2, 0xA1, 0x04, 0x00, 0x00, 0x4C},
{ 0x28, 0xEB, 0xBD, 0xA1, 0x04, 0x00, 0x00, 0xD4},{ 0x28, 0x58, 0xF1, 0xBD, 0x04, 0x00, 0x00, 0x68},
{ 0x28, 0xCC, 0x29, 0x5D, 0x04, 0x00, 0x00, 0x2C},{ 0x28, 0x31, 0x02, 0xBE, 0x04, 0x00, 0x00, 0x5D},
{ 0x28, 0x89, 0x03, 0x5D, 0x04, 0x00, 0x00, 0xF7},{ 0x28, 0x35, 0xBB, 0xBD, 0x04, 0x00, 0x00, 0xB5},
{ 0x28, 0xDE, 0xC7, 0x3C, 0x05, 0x00, 0x00, 0xD5},{ 0x28, 0x81, 0x30, 0x3C, 0x05, 0x00, 0x00, 0x28}};

bool write(uint8_t state)
{
  uint8_t ack = 0;
  
  /* Top six bits must '1' */
  state |= 0xFC;
  
  oneWire.reset();
  oneWire.select(address);
  oneWire.write(DS2413_ACCESS_WRITE);
  oneWire.write(state);
  oneWire.write(~state); /* Invert data and resend */
  ack = oneWire.read(); /* 0xAA=success, 0xFF=failure */
  if (ack == DS2413_ACK_SUCCESS)
  {
    oneWire.read(); /* Read the status byte */
  }
  oneWire.reset();
    
  return (ack == DS2413_ACK_SUCCESS ? true : false);
}

//Initialising Arduino web server part
byte mac[] = {   0x90, 0xA2, 0xDA, 0x00, 0x71, 0x94 }; // Arduino Ethernet board physical mac address (use any MAC address)
byte ip[] = {   192, 168, 1, 111 };        // Arduino Ethernet board web server IP address
byte gateway[] = {   192, 168, 1, 1 };     // Gateway IP address for internet access via router (optional)
byte subnet[] = {   255, 255, 255, 0 };    // Subnet mask 
EthernetServer server(8181);               // Web server port


void setup(){
  wdt_disable();
  //Ethernet shield initialisator
  Ethernet.begin(mac, ip, gateway, subnet);
  //Initialising sensors library
  sensors.begin();
 wdt_enable (WDTO_8S);
  } //Initialisation end


//Starting Main program loop 
void loop(){
  //Refreshing sensors temperature values
  sensors.requestTemperatures();
  
  float Temper[11];
 for (int i=0; i<12; i++ ){
   Temper[i]=  sensors.getTempC(Thermometr[i]);
    }
      
if (pumpstate)
  {
  if (((Temper[11] - werethere) < Temper[10] ) ) 
    {
    ok = write(0x1);
    pumpstate =false;
    delay(500);
    
   }
   else {
        ok = write(0x0);
        pumpstate =true;
        delay(500);
                      }
  }
else
  {
  if (((Temper[11] - diff) > Temper[10] ) )       
    {
   ok = write(0x0);
   pumpstate = true;
   delay(500);
     
    }
  }  
   
   
  // Creating a Arduino web client connection to arduino board web server
  EthernetClient client = server.available();
  if (client) { 
    while (client.connected()) 
    {
      if (client.available())
      {
        
        // Creating HTML page
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();       //
        client.println("");     // Начало страницы
        client.println("");     //
        client.println("<head>");
        client.println("<meta charset=utf-8 />");
        client.println("<meta HTTP-EQUIV=refresh CONTENT=60>");
        client.println("<title>Температура на даче</title>");
        client.println("<style> body {background-color: #EEDD82} </style>");
        client.println("</head>");
      
        //client.println("<hr/>");

          
          client.print("<table width=400 bgcolor=darkseagreen border=1 align=center cellspacing=0 cellpadding=10>");
          client.print("<caption><font color=red size=+2>Точки измерения температуры, дача: </caption>");
          client.print("<tr><th>Датчик</th><th>Место</th><th>Температура,°C </th></tr>");
          
        
          
          for(int i=0; i < 6; i++) {
          
          
          
          if (Temper[i]== -127.00) 
           {client.print("<tr><td align=center>T");client.print(i);client.print("</td><td align=right>");client.print (myRooms[i]);client.print("</td><td align=center>");
          client.print("N/A"); client.print("</td></tr>");}
          else {client.print("<tr><td align=center>T");client.print(i);client.print("</td><td align=right>");client.print (myRooms[i]);client.print("</td><td align=center>");
          client.print(Temper[i]); client.print("</td></tr>");}
          }
          client.print("</table>");


        client.println("<hr/>"); 
       // client.println("<input type=button onclick=document.location.reload() value=Обновить />");     
       
        client.print("<table width=400 bgcolor=darkseagreen border=1 align=center cellspacing=0 cellpadding=10>");
          client.print("<caption><font color=red size=+2>Контрольные температуры котла: </caption>");
          client.print("<tr><th>Датчик</th><th>Место</th><th>Температура,°C </th></tr>");
       
        for(int i=6; i < 12; i++) {
          
          
          if (Temper[i]== -127.00) 
           {client.print("<tr><td align=center>T");client.print(i);client.print("</td><td align=right>");client.print (myRooms[i]);client.print("</td><td align=center>");
          client.print("N/A"); client.print("</td></tr>");}
          else {client.print("<tr><td align=center>T");client.print(i);client.print("</td><td align=right>");client.print (myRooms[i]);client.print("</td><td align=center>");
          client.print(Temper[i]); client.print("</td></tr>");}
          }
          
          client.print("</table>");
        

        
        client.println("<hr/>");
        client.print("<center>Статус насоса:"); client.print(pumpstate);
        client.println("<hr/>");
        client.println("<center><input type=button onclick=document.location.reload() value=Обновить /></center>");   
        delay (500);
        client.println("");  //
        client.println("");  // Конец страницы

        //stopping client
        client.stop();
      }

    }
  }
  wdt_reset();
}
// Main Loop end  

Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 06 дек 2014, 14:21

совсем не то, что нужно. во первых, строка "#include <Ethernet.h>" подразумевает использование дорогущего езернет контроллера, во вторых там поднят 1-wire, дальше даже читать не стал)
я попробую на досуге поковырять исходники от TNK, но не силён в С, да и вообще в низкоуровневых языках. хотя 1й мой язык - асм для z-80)) в конце 80х изучал...
если там достаточно скопипастить и вырезать лишнее, то результат выложу. если нужно будет городить новые функции, то, скорее всего не потяну.
там вроде код прокомментирован, попробую =-)

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 21 янв 2015, 11:59

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

сейчас сижу ковыряю код. спасибо ТНК за помощь в освоении С, но дело всё равно продвигается недостаточно быстро)

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

Re: Управление вентиляцией по Ethernet

Сообщение THK » 21 янв 2015, 15:28

Dron писал(а):у меня заслонки сделаны вот так.
Красиво получилось.
Dron писал(а):сейчас сижу ковыряю код. спасибо ТНК за помощь в освоении С, но дело всё равно продвигается недостаточно быстро)
Не за что. Первый проект всегда идет "туго". Приходится часто в доку заглядывать...

k_w_m
Сообщения: 98
Зарегистрирован: 19 июл 2013, 13:41

Re: Управление вентиляцией по Ethernet

Сообщение k_w_m » 22 янв 2015, 10:50

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

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 22 янв 2015, 11:38

k_w_m писал(а):А можно попросить еще одну фотку - вид изнутри короба на серву, а то как крепление выполненно не очень понятно.
те, что на фото, уже закреплены на местах. новых ещё не делал, нужно ехать за ниппелями. это была пробная партия.
а вообще заслонки на простом герметике вклеены в махонькую прорезь (пропилил сам) в рычаге, что шёл в комплекте с двигателем

k_w_m
Сообщения: 98
Зарегистрирован: 19 июл 2013, 13:41

Re: Управление вентиляцией по Ethernet

Сообщение k_w_m » 22 янв 2015, 12:38

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

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Управление вентиляцией по Ethernet

Сообщение Dron » 22 янв 2015, 15:21

k_w_m писал(а):Т.е серва вставлена в штатное отверстие, слегка дороботанное. А заслонка одним концом вставлена в штатное отверстие, а другая сторона приклеена к рычагу?
абсолютно верно. единственное уточнение: "слегка доработанное" - это высверлено сверлом на 12. в которое очень плотно садится сам серво сквозь стенку. а вот заслонка действительно "слегка" доработана. в ней появился выпил под рычаг.
буду делать новую партию (нужно 16 штук) сооружу фотоотчёт, если кому-то это действительно интересно...

k_w_m
Сообщения: 98
Зарегистрирован: 19 июл 2013, 13:41

Re: Управление вентиляцией по Ethernet

Сообщение k_w_m » 22 янв 2015, 16:06

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

123ksn
Сообщения: 42
Зарегистрирован: 09 авг 2014, 02:29
Откуда: почти из Минска

Re: Управление вентиляцией по Ethernet

Сообщение 123ksn » 22 янв 2015, 17:53

Dron писал(а):
k_w_m писал(а): сооружу фотоотчёт, если кому-то это действительно интересно...
Интересно. И не только фотоотчет, но и ход мыслей. И где брали и по какой цене?
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.

Ответить