Шести канальный измеритель регулятор с независимыми входами-выходами.

olegoriy
Offline
Зарегистрирован: 08.02.2015

Добрый день.

1)Хочу представить очередной проект: "Измеритель регулятор".

http://www.youtube.com/watch?v=_C4X55Mz1GQ

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

В общем существует глазировочная машина без схем и инструкций и даже без названия:). У этой машины существует шесть зон где должна поддерживаться определенная температура, четыре на нагрев и две на охлаждение. С ТЕНами и насосами подающими холодную воду проблем не возникает, а все проблемы только с контроллерами.

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

Цель у всех контроллеров одна: " Достигли температуры выключить реле - не достигли включить и наоборот.

Так вот. Была поставлена задача минимизировать количество контроллеров.Но так как тот же ОВЕН на шесть каналов за 14 т.р не кто покупать не хотел было предложено что нибудь изобрести.

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

2) Встречайте регулятор " Название еще не придумано ":

В проектировании Не чего особо интересного. Две макетные планки, четыре сдвиговых регистра, шесть реле и светодиодов, индикатор и ардуино нано. Так же шесть километров проводов, три километра термоусадки и куча нервов все припаять.

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

  long p = 0;                // Исходное значение для таймера.
  long i = 1000;              // Интервал для таймера.
  int dat1 = A1;              // Входы датчиков.
  int dat2 = A2;
  int dat3 = A3;
  int dat4 = A4;
  int dat5 = A5;
  int dat6 = A6;
  int rele1 = 6;              // Выходы на реле.
  int rele2 = 4;
  int rele3 = 3;
  int rele4 = 2;
  int rele5 = 13;
  int rele6 = 5;
  int z = 1;                  // Переменная для переключения индикации датчиков.
  int t11;                    // Переменные индикации цифр.
  int t12;
  int t13;
  #define latch_Pin  7
  #define CLOCK_PIN  8
  #define data_Pin  9
  #define knopka1  10
    // Масив цифр.
  byte segments[12] = {                                                 
  0b10001000, 0b11101101, 0b10100010, 0b10100100, 0b11000101, 0b10010100, 
  0b10010000, 0b10101101, 0b10000000, 0b10000100, 0b11111111, 0b11110111
  }; // Масив цифр с точкой.
  byte segment[12] = {
  0b00001000, 0b01101101, 0b00100010, 0b00100100, 0b01000101, 0b00010100, 
  0b00010000, 0b00101101, 0b00000000, 0b00000100, 0b11111111, 0b11110111
  }; // Масив светодиодов.
  byte segmen[8] = {
  0b01111110, 0b00100000, 0b00001000, 0b00010000, 0b00000100, 0b00000010, 
  0b01000000, 0b01111110
  };
 

void setup() {

  pinMode(dat1, INPUT);
  pinMode(dat2, INPUT);
  pinMode(dat3, INPUT);
  pinMode(dat4, INPUT);
  pinMode(dat5, INPUT);
  pinMode(dat6, INPUT);
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
  pinMode(rele3, OUTPUT);
  pinMode(rele4, OUTPUT);
  pinMode(rele5, OUTPUT);
  pinMode(rele6, OUTPUT);
  pinMode(latch_Pin, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(data_Pin, OUTPUT);
  pinMode(knopka1, INPUT_PULLUP);
  }
void loop() {
  int t1 = ((737.7 - analogRead(dat1))/ 6.552)*10; // Формулы вичисления температуры датчиков.
  int t2 = ((737.7 - analogRead(dat2))/ 6.552)*10;
  int t3 = ((737.7 - analogRead(dat3))/ 6.552)*10;
  // Формулы преобразования температуры в цифры на дисплей.
  if(z == 1){
  t11 = (t1/10)/10;
  t12 = (t1/10)%10;
  t13 = t1-(t11*100)-(t12*10);
  }
  if(z == 2){
  t11 = (t2/10)/10;
  t12 = (t2/10)%10;
  t13 = t2-(t11*100)-(t12*10);
  }
  if(z == 3){
  t11 = (t3/10)/10;
  t12 = (t3/10)%10;
  t13 = t3-(t11*100)-(t12*10);
  }
  if(z == 4) {
  t11 = 11;
  t12 = 11;
  t13 = 11;
  }
  if(z ==5) {
  t11 = 11;
  t12 = 11;
  t13 = 11;
  }
  if(z ==6) {
  t11 = 11;
  t12 = 11;
  t13 = 11;
  }
  unsigned long r = millis();  // Таймер исполняюший функции ниже раз  200 м.с
  if(r - p > i){
    p = r;
  digitalWrite(latch_Pin, LOW);                            // Загрузка в регистры.
  shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[t11]);     
  shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segment[t12]);     
  shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[t13]);
  shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segmen[z]); 
  digitalWrite(latch_Pin, HIGH);
 
if(t1 < 350 ) {digitalWrite(rele1, HIGH);} else {digitalWrite(rele1, LOW);}    // Логика срабатывания реле.
if(t1 < 470 ) {digitalWrite(rele2, HIGH);} else {digitalWrite(rele2, LOW);}
if(t2 < 370 ) {digitalWrite(rele3, HIGH);} else {digitalWrite(rele3, LOW);}
if(t2 < 440 ) {digitalWrite(rele4, HIGH);} else {digitalWrite(rele4, LOW);}
if(t3 > 320 ) {digitalWrite(rele5, HIGH);} else {digitalWrite(rele5, LOW);}
if(t3 > 380 ) {digitalWrite(rele6, HIGH);} else {digitalWrite(rele6, LOW);}
  }                        // Окончание таймера.
 
  // Кнопка для переключения между датчиками.
if (!digitalRead(knopka1)) {
z = z + 1;
delay(200);
if(z == 7) z = 1;
}
}
 
 Конечно на данный момент точность измерений скорее всего не выдержит не какой критики, но с использованием более качественных датчиков думаю все получиться

:) и я заменю: "это на это - см. фото"

Всем спасибо за внимание.;););)

vvadim
Offline
Зарегистрирован: 23.05.2012

класненько получилось.

а как настраивать пороговую температуру?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Прекрасно!
Но МГТФ проводом паять ой как нелегко...
Я давно перешёл на ПЭВТЛ-2 ( Л- лудящийся, 2 - два слоя, но можно и ПЭВТЛ-1)
Диаметр оптимальнный - 0.18   Можно 0.2 , он чуть пожёстче будет.
Прижал посильнее горячим паяльником ( а ещё лучше царапнуть изоляцию)- и он залудился.
А так просто паяльника совсем не боится. И монтаж красивее, можно " петлявые " трассы в пучёк прокладывать.
Жалко фото нет.....
Примерно так выглядит http://electronix.ru/forum/index.php?act=attach&type=post&id=86017

olegoriy
Offline
Зарегистрирован: 08.02.2015

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

olegoriy
Offline
Зарегистрирован: 08.02.2015

Спасибо за совет. Обязательно попробую. 

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

inspiritus
Offline
Зарегистрирован: 17.12.2012

У мгтф главная проблема: при снятии изоляции если куснуть посильнее, потом обламывается, иногда на второй год

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Я уже хвалил. Надеюсь это зачтётся. А теперь..........
Доллар......... Да весомый аргумент. Если ваше время так дёшего ценится.... Адский труд!

Аксиома : Шесть отдельных контроллеров и один-два в  запасе надёжнее одного  шестиканального.

А включить-выключить реле не совсем точно поддерживает температуру.
Я бы сделал по другому.  Выбор - сумасшедший и цена не страшная совсем.....
http://www.ebay.com/sch/i.html?_sacat=0&_nkw=pid+temperature+controller&...
Работают с K-type термопарой на высокие температуры, но вам надо или  PT-100 или медный датчик.
В настройках переключается под любой ( но надо внимательно читать, есть и совсем простые).
Ну а коэффициенты ПИДа адаптируются  вручную или автоматически.
Зато температура будет стоять как вкопанная!

art100
Offline
Зарегистрирован: 09.03.2014

Бьем контроллерами по эмбаргерам. :)

 

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

как там внедрение?

olegoriy
Offline
Зарегистрирован: 08.02.2015

К сожалению проект в дело не пошел.((

Все мои мечты о реолизации разбились о вопрос начальника:

" А если я тебя уволю, то другой разбереться с твоим устройством??"

olegoriy
Offline
Зарегистрирован: 08.02.2015

но у меня есть чем заняться:

http://forum.amperka.ru/threads/%D0%A1%D0%B1%D0%BE%D1%80%D0%BD%D0%B0%D1%...

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

olegoriy пишет:

К сожалению проект в дело не пошел.((

Все мои мечты о реолизации разбились о вопрос начальника:

" А если я тебя уволю, то другой разбереться с твоим устройством??"

%(   а разве сложно задокументировать проект?
вы вообще не практикуете такого?

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