Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Аппаратная платформа Arduino для автоматизации наших процессов

Форум самогонщиков Автоматика
1 ... 13 14 15 16 17 18 19 ... 64 16
ace Студент Балашиха 46 23
Отв.300  16 Марта 13, 21:39
Создал отдельную тему ШИМ регулирования тока ТЭНа
[ШИМ регулятор тока ТЭНа ( TRUE_RMS)]
KD Научный сотрудник Танкоград 1.4K 648
Отв.301  16 Марта 13, 22:15, через 36 мин
просьба всем нафлудившим - если есть какие либо хорошие сообщения по ШИМу, перенесите их в тему ace. А тут я несколько позже почищу
ace Студент Балашиха 46 23
Отв.302  16 Марта 13, 22:27, через 13 мин
И это правильно!

Давайте по темам
Rager Специалист Смоленск 162 44
Отв.303  19 Марта 13, 23:10
Rager, а код(скетч) у тебя секретный?
Может быть подвесил бы опробованные тобою примеры.
Я имею ввиду тот кусок скетча, который управляет "силовой частью".
Alex2x, 31 Янв. 13, 12:03
Нет, не секретный Улыбающийся
Я выложу его вместе с полной схемой, как только хотя бы три перегонки пройдут без вопросов. Сейчас пока - отладка. Сырые куски кода, думаю, никому неинтересны.
Затачиваю его (и оборудование заодно) под вторую дистилляцию: разгон, плавный подход к головам, отбор голов, отбор тела, отбор хвостов.Rager, 31 Янв. 13, 13:55
Итак, обещанное.
Обвеска Ардуины:
mega2560.gif
Mega2560. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.

Не нарисованы релюшки (4 штуки, подключены к выводам 22, 24, 26, 28; управляют клапаном подачи воды из водопровода для охлаждения, насосом для откачивания барды после перегонки, двумя клапанами для голов и тела).
Еще не нарисована клавиатура, вот такая. Она подключена к выводам 30, 32, 34, 36, 38, 40, 42, 44.
Принцип регулировки мощности следующий. Датчик перехода сети через 0 подключен к 21 выводу Ардуины, на этот вывод вешается прерывание, возникающее при переходе через 0 (void ZeroCross() в скетче). Часть периодов симисторы открыты, часть периодов закрыты - например, для мощности в 70% они открыты 70 периодов и закрыты 30 периодов.
Дисплей от Нокии 5110, вот такой. Библиотеку для его подключения выкладывать не стал, она запросто находится в инете.
На выводы 51 и 49 заведены датчики уровня воды с гальванической развязкой по питанию (чтобы ТЭНы не сгорели). Один датчик чуть выше ТЭНов, второй - сантиметров на 5 выше первого. Еще к каждому ТЭНу припаяна гильза (кусочек нержовой трубки от телескопической антенны) с датчиком температуры внутри - просто еще одна защита от перегрева ТЭНа из-за выкипания барды. В скетче температура этих трех датчиков не измеряется, просто отслеживается флаг аварийной температуры (есть у DS18B20 такая фишка). Для этого чуть модифицировал стандартную библиотеку OneWire, она в приложении.
Клапаны для голов и тела пока не подключены, меняю банки вручную Улыбающийся Это клапаны от газового автомобильного оборудования Lovato, вот такой.
Скетч старался комментировать по-максимуму.
OneWire.rar 8.1 Кб
distill_v3.ino 21.0 Кб
Grover Бакалавр Москва 88 20
Отв.304  20 Марта 13, 09:42
Rager, А можно gif-ку покрупнее? Не очень хорошо читается. Я вот так и не решился себе ардуину заказать. Уж больно времени надо много, чтобы разобраться. Заказал обычный температурный контроллер + твердотельную релюшку на 40А. А тут ты, с таким подарком. Опять хочу ардуину.)
Rager Специалист Смоленск 162 44
Отв.305  20 Марта 13, 10:12, через 30 мин
Rager, А можно gif-ку покрупнее? Не очень хорошо читается.Grover, 20 Марта 13, 09:42
На открывшейся картинке нажми справа внизу на крестик из 4 стрелочек.
Sambedded Кандидат наук Vancouver 376 87
Отв.306  20 Марта 13, 11:48
Rager
Пару замечаний
- поскольку ноль ты и так детектируешь, то можно вместо 3043 поставить более дешевые оптопары типа 3023
- для уменьшения потребляемого тока открытие симистора можно делать импульсом где-то в 100 мкс.
- я не совсем понял зачем тебе 2 переменных в ZeroCross()? Достаточно одной:
void ZeroCross()
  {
  static byte per=0;    
  if ((per<cur_pwr)
     {
     digitalWrite (PIN_TEN_1, HIGH);
     digitalWrite (PIN_TEN_2, HIGH);
     digitalWrite (PIN_TEN_3, HIGH);
     }
  else
    {  
     digitalWrite (PIN_TEN_1, LOW);
     digitalWrite (PIN_TEN_2, LOW);
     digitalWrite (PIN_TEN_3, LOW);
    }
  ++per;
  if (per>=100) per=0;
  }


А вообще лучше сделать по алгоритму Брезинхема - равномерно распространить пропущенные периоды вдоль всего интервала.
Grover Бакалавр Москва 88 20
Отв.307  20 Марта 13, 11:48, через 1 мин
Rager, Блин, точно. Не заметил. Спасибо.
Rager Специалист Смоленск 162 44
Отв.308  20 Марта 13, 12:10, через 22 мин
Sambedded, согласен. Я еще скетч не оптимизировал вообще, он корявый, но это первый работающий вариант.
Разницы в цене между 3043 и 3023 то ли нет, то ли она очень незначительна, у нас рублей по 25 они. К тому же первые варианты я пробовал без отдельного детектора 0, на ШИМе - в этом случае нужны оптопары со своим детектором. Потом от ШИМа отказался, а узел управления симисторами оставил старый.
ironman Академик Синегорье 5.2K 2.7K
Отв.309  20 Марта 13, 12:17, через 8 мин
В Arduino IDE есть прикол такой, что можно выделить кусок кода и потом правой кнопкой мышки выбрать из меню "Копировать для форума", а потом можно вставить в своё сообщение и получить удобно читаемую красоту.

void ZeroCross()
   {
   // Считаем периоды: per_1 - кол-во периодов, когда выходные тиристоры должны быть открыты; per_2 - соответственно, закрыты.   
   if ((per_1==0) && (per_2==0))
      {
      per_1=cur_pwr;
      per_2=100-cur_pwr;  
      }
   if ((per_1>0) && (per_2>=0))
      {
      per_1=per_1-1;
      digitalWrite (PIN_TEN_1, HIGH);
      digitalWrite (PIN_TEN_2, HIGH);
      digitalWrite (PIN_TEN_3, HIGH);
      }
   if ((per_1==0) && (per_2>0))
      {   
      per_2=per_2-1;
      digitalWrite (PIN_TEN_1, LOW);
      digitalWrite (PIN_TEN_2, LOW);
      digitalWrite (PIN_TEN_3, LOW);
      }
   }

Sambedded Кандидат наук Vancouver 376 87
Отв.310  21 Марта 13, 11:25
В Arduino IDE есть прикол такой, что можно выделить кусок кода и потом правой кнопкой мышки выбрать из меню "Копировать для форума", а потом можно вставить в своё сообщение и получить удобно читаемую красоту.
ironman, 20 Марта 13, 12:17

Спасибо, не знал. Я вообще ардуиновсокой IDE практически не пользуюсь.
Rager Специалист Смоленск 162 44
Отв.311  22 Марта 13, 07:24
Обнаружилась пара принципиальных косяков в скетче.
Нужно поменять temp1 на temp2 в двух местах:
   if (cur_mode == 4 )  // Отбор тела
      {
      if (temp1 > TEMP_TAIL_START)  // Достигнута температура начала хвостов - переключаемся на отбор хвостов
и
   if (cur_mode == 5 )  // Отбор хвостов
      {
      if (temp1>TEMP_FINISH)  // Температура достигла температуры окончания перегонки - останавливаемся
Alex2x Кандидат наук 325 64
Отв.312  28 Марта 13, 23:45
вторую неделю юзаю ACS712 только 30-ти амперную, изумительная вещица. сначала запустил ёё на постоянном токе , точность совместно с авроским ацп +/- 40мА, линейность также укладывается в этот диапазон. сегодня испытал совместно с фазоимпульсным регулятором с подсчётом среднеквадратичного значения тока , результатом доволен - та же ошибка +/- 40мА ( сравнивал с образцовым цифровым rms амперметром). точность можно поднять внешним 12-16 ти разрядым ацп ,но имхо это лишнее , для наших дел этого за глаза.
НО, писал на асме быстрый код и не для ардуины, банальная мега16 с программным фазоимпульсным регулятором , rms амперметром и т.д.m16, 19 Февр. 13, 19:38

Не смог бы для ардуины пример кода?
У меня на 20а.Нагрузка 1квт ТЕН.
Измеряет ток 3.7а. Клещами 4.3а(проконтролировал точность)
Пересчитывает в ваты согласно измеренному току.
Что, где подправить?

#include <LiquidCrystal.h>

LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);
int backLight = 29;
void setup() {
 pinMode(backLight, OUTPUT);
 digitalWrite(backLight, HIGH);
 lcd.begin(20, 4);
}

void loop() {

 float average = 0;
 for(int i = 0; i < 1000; i++) {
   average = abs(average) + abs((0.048875855327468 * analogRead(A0) -25) / 1000);
   delay(1);
 }
 float watt;
 for(int i = 0; i < 1000; i++) {
   watt = 220 * average;
   delay(1);
 }
 
 lcd.setCursor ( 0, 0);
 lcd.print(average);  
 lcd.print("A       ");
 
 lcd.setCursor ( 0, 1);
 lcd.print(watt);  
 lcd.print("W       ");
}

strom.ino 615.0 б
Sambedded Кандидат наук Vancouver 376 87
Отв.313  29 Марта 13, 00:27, через 42 мин
А можно по подробнее - что за клещи и как они подключения к ардуинке?  
Alex2x Кандидат наук 325 64
Отв.314  29 Марта 13, 00:34, через 8 мин
Так тут же было уже.
Вот такая вот фиговина.
Цепляешь последовательно с ТЕНом.
Измерительные клещи-для измерения тока.
sku_148656_1.jpg
sku_148656_1.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
10045.jpg
10045.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
Sambedded Кандидат наук Vancouver 376 87
Отв.315  29 Марта 13, 00:49, через 16 мин
я знаю что такое измерительные клещи. Вопрос какие именно клещи, в каком виде они выдают результат и как именно подключены к ардуине. на картинках номера модели и схемы подключения не видно.
Alex2x Кандидат наук 325 64
Отв.316  29 Марта 13, 00:58, через 9 мин
я знаю что такое измерительные клещи. Вопрос какие именно клещи, в каком виде они выдают результат и как именно подключены к ардуине. на картинках номера модели и схемы подключения не видно.
Sambedded, 29 Марта 13, 00:49

Не совсем понятен вопрос.
Обычные клещи.К ардуине они не подключены ни как. Накинуты на одну жилу идущую на ТЕН.
Да и вообще какое имеют значение клещи? Просто не было под рукой мультиметра, вот и померил клещами.
Sambedded Кандидат наук Vancouver 376 87
Отв.317  29 Марта 13, 01:47, через 49 мин
есть клещи с выходом на внешние устройства.  и до того как ты исправил свое сообщение, можно было понять что ты меряешь подумал данные с клещей.

но все равно остается вопрос - как именно подключения у тебя датчик холла? напрямую к аналоговому входу без дополнительных элементов ?
Брагин Магистр Краснодар 278 76
Отв.318  29 Марта 13, 09:28
Sambedded, перевожу с русского на русский - несовпадение показаний измерительных клещей (без подключения куда-то) и показний ардуины
Alex2x, нужно узнать в чем показывают клещи ток (скорее всего эфективное, а не средневыпрямленное). а раз у тебя ток 3,7А, то скорее всего на тенЕ не 100%, а при фазовой регулировке "(скорее всего эфективное, а не средневыпрямленное)"- не совпадают
Alex2x Кандидат наук 325 64
Отв.319  29 Марта 13, 11:08
есть клещи с выходом на внешние устройства.  и до того как ты исправил свое сообщение, можно было понять что ты меряешь подумал данные с клещей.

но все равно остается вопрос - как именно подключения у тебя датчик холла? напрямую к аналоговому входу без дополнительных элементов ?
Sambedded, 29 Марта 13, 01:47

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

Sambedded, перевожу с русского на русский - несовпадение показаний измерительных клещей (без подключения куда-то) и показний ардуины
Alex2x, нужно узнать в чем показывают клещи ток (скорее всего эфективное, а не средневыпрямленное). а раз у тебя ток 3,7А, то скорее всего на тенЕ не 100%, а при фазовой регулировке "(скорее всего эфективное, а не средневыпрямленное)"- не совпадают
Брагин, 29 Марта 13, 09:28

Понятно.Эффективное.