Управление вентиляцией по Ethernet
Re: Управление вентиляцией по Ethernet
коллеги, подскажите как можно в процессе работы менять полярность у автомобильного активатора.
Он имеет два контакта всего, как управлять втягиванием-вытягивнием с МК?
Он имеет два контакта всего, как управлять втягиванием-вытягивнием с МК?
Re: Управление вентиляцией по Ethernet
Смотрите в сторону мостовых схем на транзисторах, как вариант.
Re: Управление вентиляцией по Ethernet
Если внутри электромагнит, то никак. Если мотор, без диодного моста внутри, то реле с двумя группами контактов, т.е. 6 выводов для управления активатором и 2 вывода для питания самого реле. Здесь пример управления шаровыми кранами http://ru.aliexpress.com/item/3-4-DN20- ... 05393.htmlkinord писал(а):коллеги, подскажите как можно в процессе работы менять полярность у автомобильного активатора.
Он имеет два контакта всего, как управлять втягиванием-вытягивнием с МК?
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.
Re: Управление вентиляцией по Ethernet
Мотор там. Он предназначен для работы в обе стороны. Просто переполюсовкой менять. Реализаций масса, хоть на реле, хоть на тразисторах.123ksn писал(а): Если внутри электромагнит, то никак. Если мотор, без диодного моста внутри, то реле с двумя группами контактов, т.е. 6 выводов для управления активатором и 2 вывода для питания самого реле. Здесь пример управления шаровыми кранами http://ru.aliexpress.com/item/3-4-DN20- ... 05393.html
Re: Управление вентиляцией по Ethernet
Вопрос "бывалым": необходима ли плавная регулировка положения воздушной заслонки или достаточно ее положение открыто/закрыто? Сейчас собираю схему управления сервопривода заслонки и возник этот вопрос. По результату буду "мудрить" схему управления. Работаю под бенуксом.
Re: Управление вентиляцией по Ethernet
мне кажется,что регулировка лишняя. Сможете регулировать поток временными интервалами открыто-закрыто, так как тут важна не сила потока, а объем котороый проходит за единицу времени.
Re: Управление вентиляцией по Ethernet
1) Я не "бывалый".
2)Сначала хотел как и Вы, но потом подумал, что заслонка будет стучать в момент переключения.
3)Для случая 1/0 надо делать какой-то фиксатор. Например, пружинку, как в микропереключателях, что бы предотвратить дребезг. Или пружинку, что бы переводить в положение закрыто, когда питание отсутствует.
4)Многое зависит от того, что Вам сложнее. Если проще софт - то 1/0, если универсальность - то сервоприводы.
5)Любое решение имеет свои плюсы и минусы.
2)Сначала хотел как и Вы, но потом подумал, что заслонка будет стучать в момент переключения.
3)Для случая 1/0 надо делать какой-то фиксатор. Например, пружинку, как в микропереключателях, что бы предотвратить дребезг. Или пружинку, что бы переводить в положение закрыто, когда питание отсутствует.
4)Многое зависит от того, что Вам сложнее. Если проще софт - то 1/0, если универсальность - то сервоприводы.
5)Любое решение имеет свои плюсы и минусы.
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.
Re: Управление вентиляцией по Ethernet
Всем форумчанам доброго времени суток!
Сам я в С не особо силён, а нужно управлять 23 серво-заслонками по сети... градусники не нужны, нужны только исполнители. а 15 устройств городить.. мягко скажем глупо, когда в теории хватит двух)
Или может кто расскажет, что нужно допилить/выпилить в коде для нужного результата?
Никто не разрабатывал расширенную версию? Уважаемый ТНК, я так понимаю, просто показал как делать =-), и дальнейшими разработками не занимается.123ksn писал(а):Уважаемый THK, я настолько был вдохновлён Вашей разработкой,...
...Нет ли в Ваших ближайших планах увеличить количество выводов MEGAD-328 для управления сервомашинками штук до ....
Сам я в С не особо силён, а нужно управлять 23 серво-заслонками по сети... градусники не нужны, нужны только исполнители. а 15 устройств городить.. мягко скажем глупо, когда в теории хватит двух)
Или может кто расскажет, что нужно допилить/выпилить в коде для нужного результата?
Re: Управление вентиляцией по Ethernet
К сожалению, в контекте Вашего вопроса ответ дать не могу, но могу дать дополнительную информацию, которая может быть поможет выбрать оптимальное решение. Извините, если повторюсь. Лично я купил у китайцев шестнадцатиканальный контроллер серводвигателей LCSC-16.Dron писал(а):Или может кто расскажет, что нужно допилить/выпилить в коде для нужного результата?
К сожалению продавец приложил мануал на китайском языке. Теперь я с ним "бодаюсь", что бы прислал на английском. Управляющий софт для Windows, но тоже на китайском. Есть преобразователь USB-???(думаю UART), поэтому (предполагаю) протокол обмена узнать не проблема и заставить работать от своего софта. Я планирую этот контроллер поставить возле "сервера", а сигналы к сервоприводам развести по интерфейсу RS485. Управляющая программа по размеру около 3Мб и прикрепить не могу.
Кроме того, k_w_m тоже занимается контроллером.
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.
Re: Управление вентиляцией по Ethernet
Спасибо, 123ksn, за идею.
Но мне нужно управление по http.
Напрограммировать просто контроллер под управлением по USB на 15 устройств из обычной ардуино-нано -- дело одного вечера, и на такое у меня мозгов хватило бы)
Но мне нужно управление по http.
Напрограммировать просто контроллер под управлением по USB на 15 устройств из обычной ардуино-нано -- дело одного вечера, и на такое у меня мозгов хватило бы)
Re: Управление вентиляцией по Ethernet
Тогда вот Вам какой-то пример кода для работы по http. Если Вы способны написать за вечер код для управления 15-ю сервомашинками, то уверен, что Вам не составит большого труда скорректировать код под Вашу задачу (Где скачал код не помню)Dron писал(а):Спасибо, 123ksn, за идею.
Но мне нужно управление по http.
Напрограммировать просто контроллер под управлением по USB на 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
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.
Re: Управление вентиляцией по Ethernet
совсем не то, что нужно. во первых, строка "#include <Ethernet.h>" подразумевает использование дорогущего езернет контроллера, во вторых там поднят 1-wire, дальше даже читать не стал)
я попробую на досуге поковырять исходники от TNK, но не силён в С, да и вообще в низкоуровневых языках. хотя 1й мой язык - асм для z-80)) в конце 80х изучал...
если там достаточно скопипастить и вырезать лишнее, то результат выложу. если нужно будет городить новые функции, то, скорее всего не потяну.
там вроде код прокомментирован, попробую =-)
я попробую на досуге поковырять исходники от TNK, но не силён в С, да и вообще в низкоуровневых языках. хотя 1й мой язык - асм для z-80)) в конце 80х изучал...
если там достаточно скопипастить и вырезать лишнее, то результат выложу. если нужно будет городить новые функции, то, скорее всего не потяну.
там вроде код прокомментирован, попробую =-)
Re: Управление вентиляцией по Ethernet
у меня заслонки сделаны вот так.
использовал "ниппели" для плоских воздуховодов. просто сбоку вырезал отверстие и вклеил двигатель.
небольшой зазор по периметру, на мой взгляд, не критичен.
сейчас сижу ковыряю код. спасибо ТНК за помощь в освоении С, но дело всё равно продвигается недостаточно быстро)
использовал "ниппели" для плоских воздуховодов. просто сбоку вырезал отверстие и вклеил двигатель.
небольшой зазор по периметру, на мой взгляд, не критичен.
сейчас сижу ковыряю код. спасибо ТНК за помощь в освоении С, но дело всё равно продвигается недостаточно быстро)
Re: Управление вентиляцией по Ethernet
Красиво получилось.Dron писал(а):у меня заслонки сделаны вот так.
Не за что. Первый проект всегда идет "туго". Приходится часто в доку заглядывать...Dron писал(а):сейчас сижу ковыряю код. спасибо ТНК за помощь в освоении С, но дело всё равно продвигается недостаточно быстро)
Re: Управление вентиляцией по Ethernet
А можно попросить еще одну фотку - вид изнутри короба на серву, а то как крепление выполненно не очень понятно.
Re: Управление вентиляцией по Ethernet
те, что на фото, уже закреплены на местах. новых ещё не делал, нужно ехать за ниппелями. это была пробная партия.k_w_m писал(а):А можно попросить еще одну фотку - вид изнутри короба на серву, а то как крепление выполненно не очень понятно.
а вообще заслонки на простом герметике вклеены в махонькую прорезь (пропилил сам) в рычаге, что шёл в комплекте с двигателем
Re: Управление вентиляцией по Ethernet
Т.е серва вставлена в штатное отверстие, слегка дороботанное. А заслонка одним концом вставлена в штатное отверстие, а другая сторона приклеена к рычагу?
Re: Управление вентиляцией по Ethernet
абсолютно верно. единственное уточнение: "слегка доработанное" - это высверлено сверлом на 12. в которое очень плотно садится сам серво сквозь стенку. а вот заслонка действительно "слегка" доработана. в ней появился выпил под рычаг.k_w_m писал(а):Т.е серва вставлена в штатное отверстие, слегка дороботанное. А заслонка одним концом вставлена в штатное отверстие, а другая сторона приклеена к рычагу?
буду делать новую партию (нужно 16 штук) сооружу фотоотчёт, если кому-то это действительно интересно...
Re: Управление вентиляцией по Ethernet
Очень интересно. Планируете использовать обратные клапаны только прямоугольного сечения или круглого тоже?
Re: Управление вентиляцией по Ethernet
Интересно. И не только фотоотчет, но и ход мыслей. И где брали и по какой цене?Dron писал(а):k_w_m писал(а): сооружу фотоотчёт, если кому-то это действительно интересно...
Высшая степень уважения к читателям — считать их идиотами. Имеется ввиду, что если своей информацией сможешь донести смысл до идиота - значит информация подана правильно.