401 (2018-11-19 20:22:19 отредактировано )

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Kusnezov Oleg, сейчас пофиг, эфирное отключают, скороможно хоть на первый канал.  Я когда-то сам собирал такой, там реально пара транзисторов. Можно еще из любой китайской денди вытащить, тоже метров на 20 работает.

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

402

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Иван ©:

тоже метров на 20 работает.

какую антенну сделать ато и на все 500 молотить будет.мне с ВМ-12 с вч выхода получалось уверенный прием на 300 м.организовывать.

Алкоголь не решает проблем, он их усугубляет и отодвигает.

403

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

geha69, направленную согласованную антенну. То есть, сама антенна настраивается приборами.

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

404

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

Алкоголь не решает проблем, он их усугубляет и отодвигает.

405

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

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

406

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

wi-fi  если у роутеров пипетки(антенны)откручиваются то на 1-3 км.смело можно кинуть линк.или к есп направленную антенну,то думаю 500 м.не напрягаясь получится.но антенны для wi-fi придется делать.

Алкоголь не решает проблем, он их усугубляет и отодвигает.

407

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

никогда не опускай руки - пропустишь в бороду
с водкой все идет хорошо... кроме ног

408

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Если я правильно понял, то разговор пошёл о контроле на расстоянии. Поскольку свою автоматику начинал делать на основе AutoSem от Николя (за что большая признательность), а так же он занимался контролем через Wi-Fi(для меня слишком сложно) то предложу вариант контроля через Wi-Fi на смартфон.
Вот скриншот с моего смартфона. Смартфон соединяется с автоматикой через интернет с помощью модуля ESP8266. Сразу скажу, что это заслуга не моя, а программы на смартфоне. Не думаю, что название программы будет рекламой(примеры с программой есть в отладчике IDE), если Иван даст добро, можно кинуть ссылку. Наткнулся на сайт случайно прошлой зимой подключение особых трудностей не составило даже для меня(не специалист в программировании).

  • Wi-Fi.jpg
    size: 198.89Кб type: jpg
Человека губят не принципы, а отступления от своих принципов.

409

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

С уважением, коллеги.

410

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Alexey b4 ©:

файлы на гугл диске давно не существуют

Фантазёр.
Как минимум файлы из первого поста доступны без всяких проблем.

РК 35х1600

411 (2019-11-26 18:32:42 отредактировано Alexey b4)

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

С уважением, коллеги.

412

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Alexey b4, зарегаться надо в гугле, все файлы есть и все на месте

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

413

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Скопировал файл из первого сообщение к себе на ЯндексДиск. Может поможет

https://yadi.sk/d/MSpz0baE8kcCEA

С уважением, Олег Кузнецов.

414

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

а не поделитесь скетчами к которым прикручены дисплеи Nextion?

415

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

Alan

416

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Alan,

// библиотеки
https://github.com/PaulStoffregen/OneWire
https://github.com/milesburton/Arduino-Temperature-Control-Library

// Термостат, до пяти датчиков DS18B20.
// Автоматическое определение количества датчиков на 
// шине, установка температуры и хранение в энергонезависимой 
// памяти на каждый выход. 
// подробнее 

//  v 0.2 beta

#include <EEPROM.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
 
const byte OUT[5] = {13, 12, 11, 3, 2}; // номера выходов 
 
byte pos;
byte tempOUTon[5];  // массив с температурой включения выхода
float tempSensor[5]; // массив куда читается температура
byte qty; // количество градусников на шине 
 
OneWire  oneWire(15); // A1 вход датчиков 18b20
DallasTemperature ds(&oneWire);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

byte gradus[8] = {
  0b00110,
  0b01001,
  0b01001,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
byte on[8] = {
  0b00110,
  0b01111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11110,
  0b01100
};

void readSet(){
  for (byte i = 0; i < qty; i++) tempOUTon[i] = EEPROM.read(i);
}
 
void outOff(){ // выключает выходы
  for (byte i = 0; i < qty; i++) digitalWrite(OUT[i], LOW);
}

void erorr(){ // останавливает работу программы и сигнализирует ошибку
  outOff(); // выключаем выходы    
   while(1){ // крутим бесконечный цикл
      analogWrite(10, 100);
      delay(500);
      analogWrite(10, 255);
      delay(500);
  }
}
////

byte key(){ //// для кнопок ЛСДшилда
  int val = analogRead(0);
    if (val < 50) return 5;
    else if (val < 150) return 3;
    else if (val < 350) return 4;
    else if (val < 500) return 2;
    else if (val < 800) return 1;
    else return 0;  
}
////  

void setMenu(byte pos){ // установка температуры   
 outOff();
 lcd.clear();
  
  while(1){ // крутим бесконечный цикл      
    byte KEY = key(); // читаем состояние кнопок
    
    lcd.setCursor(2, 0); // выводим на экран
    lcd.print("Out:");
    lcd.print(pos+1);
    lcd.setCursor(9, 0);
    lcd.print("Pin:");
    lcd.print(OUT[pos]);
    lcd.print("    ");
     
    lcd.setCursor(0, 1);   
    lcd.print(" PinON: ");
    lcd.print(tempOUTon[pos]);
    lcd.write(1);
    lcd.print("C <>");
    
    if (KEY == 2) { // если нажата кнопка
      tempOUTon[pos]--;   // изменяем значение
        if (tempOUTon[pos] > 125) tempOUTon[pos] = 0;
      EEPROM.write(pos, tempOUTon[pos]); // сохраняем в еепром
     }
     else if (KEY == 5){
       tempOUTon[pos]++;
         if (tempOUTon[pos] > 125) tempOUTon[pos] = 0;
       EEPROM.write(pos, tempOUTon[pos]);    
     } 
 
   delay(200);
  }/////   
}//

void getTemp(){ // читаем температуру и заполняем массив
   ds.requestTemperatures();    
   for (int i = 0; i < qty; i++) tempSensor[i] = ds.getTempCByIndex(i);       
} 

void setup() {
   Serial.begin(9600); 
  ds.begin();  
  
  qty = ds.getDeviceCount(); // количество датчиков на шине

  if (qty > 5) qty = 5; 
//  if (qty < 5) erorr(); //  проверка количества датчиков

  for (int i = 0; i < qty; i++) pinMode(OUT[i], OUTPUT);  
  for (int i = 0; i < qty; i++) digitalWrite(OUT[i], LOW);
  
  lcd.createChar(1, gradus);
  lcd.createChar(2, on);
  lcd.begin(16, 2);
  lcd.clear();
  
  readSet();  // читаем настройки из еепром   
}

void loop() {   
   ///// обработка кнопок
  
  if (key() == 1) setMenu(pos); // если нажата селект, уходим в настройки
  
  else if (key() == 4 && pos < qty-1) pos++; // крутим позицию
  else if (key() == 3 && pos != 0) pos--;
   
  getTemp(); // читаем температуру с датчиков  
 
  //// сверяем температуру и управляем выходами
  for (int i = 0; i < qty; i++) { 
    if (tempSensor[i] < tempOUTon[i]) digitalWrite(OUT[i], HIGH);
    else digitalWrite(OUT[i], LOW);
  } 
  
  /////// вывод инфы на экран
  lcd.setCursor(0, 0); 
  lcd.print(pos+1); 
  lcd.print(". ");
  lcd.print(tempSensor[pos], 1);  // показываем температуру с датчика
  lcd.write(1);
  lcd.print("C  ");
  lcd.setCursor(2, 1);
  lcd.print(tempOUTon[pos]); // показываем установленную температуру
  lcd.write(1);
  lcd.print("C  ");    
  
  lcd.setCursor(11, 0);  // рисуем статус выхода  
    for (int i = 0; i < qty; i++){ 
      if (digitalRead(OUT[i])) lcd.write(2);
      else lcd.print(" ");
    }
  lcd.setCursor(11, 1); // рисуем номера выходов   
    for (int i = 0; i < qty; i++) lcd.print(i+1); 

}
// Термостат, до пяти датчиков DS18B20.
//  

//  v 0.2.1 beta

#include <EEPROM.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
 
OneWire  oneWire(15); // A1 вход датчиков 18b20
DallasTemperature ds(&oneWire);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

const byte OUT[5] = {13, 12, 11, 3, 2}; // номера выходов 
 
byte pos;
byte tempOUTon[5];  // массив с температурой включения выхода
float tempSensor[5]; // массив куда читается температура

byte qty; // количество градусников на шине.

// адреса градусников.
DeviceAddress sensor1 = {0x28, 0xA8, 0x3E, 0xF9, 0x05, 0x0, 0x0, 0x12};
DeviceAddress sensor2 = {0x28, 0xE6, 0xBD, 0x3B, 0x05, 0x0, 0x0, 0xCF};
DeviceAddress sensor3 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
DeviceAddress sensor4 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
DeviceAddress sensor5 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};

byte gradus[8] = {
  0b00110,
  0b01001,
  0b01001,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
byte on[8] = {
  0b00110,
  0b01111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11110,
  0b01100
};

void readSet(){
  for (byte i = 0; i < qty; i++) tempOUTon[i] = EEPROM.read(i);
}
 
void outOff(){ // выключает выходы
  for (byte i = 0; i < qty; i++) digitalWrite(OUT[i], LOW);
}

void erorr(){ // останавливает работу программы и сигнализирует ошибку
  outOff(); // выключаем выходы    
  lcd.clear();
  lcd.print("sensor error");
   while(1){ // крутим бесконечный цикл
      analogWrite(10, 100);
      delay(500);
      analogWrite(10, 255);
      delay(500);
  }
}
////

byte key(){ //// для кнопок ЛСДшилда
  int val = analogRead(0);
    if (val < 50) return 5;
    else if (val < 150) return 3;
    else if (val < 350) return 4;
    else if (val < 500) return 2;
    else if (val < 800) return 1;
    else return 0;  
}
////  

void setMenu(byte pos){ // установка температуры   
 outOff();
 lcd.clear();
  
  while(1){ // крутим бесконечный цикл      
    byte KEY = key(); // читаем состояние кнопок
    
    lcd.setCursor(2, 0); // выводим на экран
    lcd.print("Out:");
    lcd.print(pos+1);
    lcd.setCursor(9, 0);
    lcd.print("Pin:");
    lcd.print(OUT[pos]);
    lcd.print("    ");
     
    lcd.setCursor(0, 1);   
    lcd.print(" PinON: ");
    lcd.print(tempOUTon[pos]);
    lcd.write(1);
    lcd.print("C <>");
    
    if (KEY == 2) { // если нажата кнопка
      tempOUTon[pos]--;   // изменяем значение
        if (tempOUTon[pos] > 125) tempOUTon[pos] = 0;
      EEPROM.write(pos, tempOUTon[pos]); // сохраняем в еепром
     }
     else if (KEY == 5){
       tempOUTon[pos]++;
         if (tempOUTon[pos] > 125) tempOUTon[pos] = 0;
       EEPROM.write(pos, tempOUTon[pos]);    
     } 
 
   delay(200);
  }/////   
}//

void getTemp(){ // читаем температуру и заполняем массив
   ds.requestTemperatures();    
   
   tempSensor[0] = ds.getTempC(sensor1); // немного китайского кода
   tempSensor[1] = ds.getTempC(sensor2); 
   tempSensor[2] = ds.getTempC(sensor3);
   tempSensor[3] = ds.getTempC(sensor4);
   tempSensor[4] = ds.getTempC(sensor5);
} 

void sensorTest(){  // ищим датчики на шине, если количество изменилось, останавливаем работу
   ds.begin();
   if(ds.getDeviceCount() != qty) erorr();
}

void setup() {
 //  Serial.begin(9600); 
  ds.begin();   
  qty = ds.getDeviceCount(); // при включении, сохраняем количество градусников, 
                             // можно и лучше количество указать руками. 
  
  for (int i = 0; i < qty; i++) pinMode(OUT[i], OUTPUT);  
  for (int i = 0; i < qty; i++) digitalWrite(OUT[i], LOW);
  
  lcd.createChar(1, gradus);
  lcd.createChar(2, on);
  lcd.begin(16, 2);
  lcd.clear();
  
  readSet();  // читаем настройки из еепром   
}

void loop() {   
  if (key() == 1) setMenu(pos); // если нажата селект, уходим в настройки
  
  else if (key() == 4 && pos < qty-1) pos++; // крутим позицию
  else if (key() == 3 && pos != 0) pos--;
  
  sensorTest(); // тест наличия градусников на шине
  getTemp(); // читаем температуру с датчиков  
 
  //// сверяем температуру и управляем выходами
  for (int i = 0; i < qty; i++) { 
    if (tempSensor[i] < tempOUTon[i]) digitalWrite(OUT[i], HIGH);
    else digitalWrite(OUT[i], LOW);
  } 
  
  /////// вывод инфы на экран
  lcd.setCursor(0, 0); 
  lcd.print(pos+1); 
  lcd.print(". ");
  lcd.print(tempSensor[pos], 1);  // показываем температуру с датчика
  lcd.write(1);
  lcd.print("C  ");
  lcd.setCursor(2, 1);
  lcd.print(tempOUTon[pos]); // показываем установленную температуру
  lcd.write(1);
  lcd.print("C  ");    
  
  lcd.setCursor(11, 0);  // рисуем статус выхода  
    for (int i = 0; i < qty; i++){ 
      if (digitalRead(OUT[i])) lcd.write(2);
      else lcd.print(" ");
    }
  lcd.setCursor(11, 1); // рисуем номера выходов   
    for (int i = 0; i < qty; i++) lcd.print(i+1); 

// delay(500); // необязательная задержка
}



https://youtu.be/mFtgO3kWA4g

  • 18b20_2.jpg
    size: 259.56Кб type: jpg
У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу.

417

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

десятых там нет

Alan

418

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Alan ©:

десятых там нет

Десятые там как раз есть, сотых нет, но ты же и не метоксихлордиэтиламинометилбутиламиноакридин синтезируешь вроде?  В этом разделе все есть, если повнимательней Электронное оборудование

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

419

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Доброго времени суток всем.Решил сделать подарок отцу(на старости лет он увлекся этим процессом), повторить помощника от   geha69 Автоматика на Arduino для ректификации и дистилляции (схема-прошивки) Но все ссылки на ящик пусты. Может у кого сохранились данные или есть возможность связаться с geha69. Прошу откликнуться.

420

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

alex_sattv ©:

Доброго времени суток всем.Решил сделать подарок отцу(на старости лет он увлекся этим процессом), повторить помощника от   geha69 Автоматика на Arduino для ректификации и дистилляции (схема-прошивки) Но все ссылки на ящик пусты. Может у кого сохранились данные или есть возможность связаться с geha69. Прошу откликнуться.

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