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

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

Форум самогонщиков Автоматика
1 ... 51 52 53 54 55 56 57 ... 64 54
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1060  12 Марта 15, 12:46
что бы пересчитать время открытия симистора в мощность достаточно одной формулы
g100m Доцент Самара 1.6K 247
Отв.1061  12 Марта 15, 12:51, через 6 мин
Да не, я работаю пропуском полупериодов, так помех меньше
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1062  12 Марта 15, 12:53, через 2 мин
тогда могу тебе подкинуть идею как увеличить точность установки мощности, но как реализовать ее я не думал
g100m Доцент Самара 1.6K 247
Отв.1063  12 Марта 15, 12:56, через 4 мин
Да ну точность нормальная, у меня сеть хорошая, точность можно повысить просто увеличив массив например до 200

Добавлено через 1мин.:

Но от идеи не откажусь Улыбающийся
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1064  12 Марта 15, 13:44, через 49 мин
массив в 256 значений дает 2,56 секунды период, не знаю - много это для РК или мало, точность получается 0,4% а вот если взять период в 10 тактов то получится точность 10% НО можно использовать переключение между соседними режимами, например 15% можно получить чередуя 10% и 20%, 12% - 4 10% и 1 20% включения, 11% 9 10% и 1 20%.

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

например контроллер установлен на 12%, ближайшее значение  - 10%, ошибка 2%, соседнее - 20%, корректировка 8%. первый такт - ошибка 2%, второй такт - ошибка 4%, третий такт ошибка 6%, четвертый такт - ошибка 8%, включается корректировка 20% 5й такт ошибка 0%, 6й такт ошибка 2% и т.д.
g100m Доцент Самара 1.6K 247
Отв.1065  12 Марта 15, 13:49, через 5 мин
Т.е. как бы двухуровневый брезенхэм получается... Ну надо думать
KD Научный сотрудник Танкоград 1.4K 647
Отв.1066  12 Марта 15, 13:57, через 8 мин
если пропускать по целому периоду (а не полупериодами, дабы не провоцировать появление постоянной составляющей) то получим точность установки 2% на секундном интервале, что более чем достаточно, к примеру изменение сетевого напряжения на 2 В даст ту же погрешность.
Так что хз-хз, нужно ли все это.
Лучше ток/напряжение мерять как делает msg31, больше пользы будет
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1067  12 Марта 15, 14:03, через 7 мин
блок питания с детектором нуля и измерителем напряжения на предыдущей странице: два стабилитрона, два резистора и диод. для защиты от перенапряжения понадобится еще один стабилитрон
KD Научный сотрудник Танкоград 1.4K 647
Отв.1068  13 Марта 15, 08:00
блок питания с детектором нуля и измерителем напряжения на предыдущей страницеdee, 12 Марта 15, 16:03
не нравится он мне Улыбающийся
ну детектор еще прокатит, только поправку надо будет делать
а вот измерять напряжение транса который нагружен переменной (реле включилось/выключилось) нагрузкой не совсем правильно, впрочем выходное напряжение транса работающего на ХХ тоже далеко не в линейной зависимости от входного
правильнее вообще ток в нагрузке контролировать, заказал ACS712, пока в пути
детектор [сообщение #12242572] вчера собрал
работает, не греется Улыбающийся
g100m Доцент Самара 1.6K 247
Отв.1069  13 Марта 15, 08:31, через 32 мин
правильнее вообще ток в нагрузке контролировать, заказал ACS712, пока в путиKD, 13 Марта 15, 08:00
m16 правильно говорит.
я уже месяц думаю над этим, и все больше убеждаюсь, что более качественно, чем пид-регулирование по току нагрузки, нельзя будет стабилизировать мощность.
svarnoy Профессор Жуковский. 8.6K 4.4K
Отв.1070  14 Марта 15, 21:15
Сделал ещё в том году, мысль вроде интересная.
На фотографии, две крутилки снизу слева, это галетный переключатель на 16 позиций слева, и переменный резистор справа. Ручки одинаковые.
img_2112.jpg
Img_2112. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.

Переключатель переключает на режимы: СС/ Ректификация/ Тушёнка/ сыр/ пользовательский.
Резистор, с плавающим числом. В зависимости от режима ему присваиваются разные значения и множители.
Например:
Гоним сырец с браги, нажали старт. Единственный параметр который можно/нужно регулировать, это температура в кубе до которой гоним.
У резистора множитель стоит, что бы весь его ход был в пределах 80-101. Это значение и будет точкой остановки.
Делаем ректификат:
Тут задаваемый параметр, только головы. Я отбираю головы по времени, при фиксированном отборе 50-70 мл/час.
В данном случае, после нажатия старт, кручу до нужного, множитель 0 тоесть до 1023 минуты.
Тушёнка:
При переключении на режим тушёнка, отображается температура готовки. Множитель стоит, что бы было 90-125.
Выставляю температуру, при нажатии старт, резистор работает на время готовки, с множителем 20-150.
С сыром оказалось всё на много сложнее, и готового решения пока нет.
Пользовательский, можно в ручном режиме пользоваться всеми ресурсами.
msg31 Научный сотрудник Барнаул 4.6K 2.5K
Отв.1071  15 Марта 15, 05:08
m16 правильно говорит.
я уже месяц думаю над этим, и все больше убеждаюсь, что более качественно, чем пид-регулирование по току нагрузки, нельзя будет стабилизировать мощность.g100m, 13 Марта 15, 08:31

Коллеги, подскажите, как Вы ПИД будете применять при использовании одного только датчика тока и Брезенхема?

Я понимаю для фазового управления можно: рассчитали угол открытия симистора, затем фактическую мощность через датчик тока замеряли и ПИД применяем если нужная мощность не совпала с требуемой.

А для Брезенхеме по-моему там никакой ПИД вообще не нужен. Измеряете квадрат тока протекающий в сети за полу-период (или за несколько), затем определяете среднеквадратичный ток, из среденеквадратичного тока мощность. Делите требуемую мощность на фактическую и получаете коэффициент для Брезенхема. Как мне кажется, что он кореллирует с пропорциональным коэффициент для ПИД. Остальные коэффициенты в этом случае вырождены, то есть нулевые.

Ну и чтобы не флудить в ветке предлагаю недавно написанную мной функцию извлечения квадратного корня для квадратов чисел от 90 д 255.


#define MAX_TABLE_SQRT 34
unsigned char tableSQRT[MAX_TABLE_SQRT+1];  //Значение корня
unsigned int tableSQ[MAX_TABLE_SQRT+1];     //Значение квадрата

// Функция расчета квадратного корня.
// Значения корней от 0 до 90 и от 256 до 512 считаются по очень приблизительным формулам, поскольку такое значение среднеквадратичного в нормальной сети 220 вольт недопустимо
// Больше 512 значение не определено.
int my_sqrt(unsigned long tsQT)
{  char i;
  unsigned int sQT; // Временная переменная, чтобы поменьше сравнивать 4-битных чисел.
  int res=666;
  // Если попадаем в диапазон
  if (tsQT<tableSQ[0])
  {
    // Если меньше минимального значения, тогда расчет по крайне приближенной формуле
    res=tsQT*tableSQRT[0]/tableSQ[0];
  }
  else
  if (tsQT<=tableSQ[MAX_TABLE_SQRT-1])
  {
    sQT=tsQT;
    for(i=1;i<MAX_TABLE_SQRT;i++)
    {
     
      if (tableSQ[i-1]<=sQT && tableSQ>=sQT)
       {
          if (tableSQ[i-1]==sQT) res=tableSQRT[i-1]; // На крайних значениях берем готовые цифры
            else
              if (tableSQ==sQT) res=tableSQRT; // На крайних значениях берем готовые цифры
               else res=(sQT-tableSQ[i-1])*(tableSQRT-tableSQRT[i-1])/(tableSQ-tableSQ[i-1]) + tableSQRT[i-1] +1; // На промежуточных вычисляем.

          return res;
       }
    }
  }
  else
  {
    // Если больше максимального считаем по крайне приближенной формуле, исходя из максимума значений в 512
    res=(tsQT-tableSQ[MAX_TABLE_SQRT-1])*(512-tableSQRT[MAX_TABLE_SQRT-1])/(262144-tableSQ[MAX_TABLE_SQRT-1]) + tableSQRT[MAX_TABLE_SQRT-1] +1;
  }
 
  return res;
}


Таблицу квадратов сначала необходимо проинициализировать.

   for(i=0;i<MAX_TABLE_SQRT;i++)
   {  tableSQRT=(int) i*5+90;
      tableSQ=(unsigned int) tableSQRT*tableSQRT;
   }

Дятел Доктор наук NA 554 119
Отв.1072  15 Марта 15, 06:34
Я понимаю для фазового управления можно: рассчитали угол открытия симистора, затем фактическую мощность через датчик тока замеряли и ПИД применяем если нужная мощность не совпала с требуемой.

А для Брезенхеме по-моему там никакой ПИД вообще не нужен. Измеряете квадрат тока протекающий в сети за полу-период (или за несколько), затем определяете среднеквадратичный ток, из среденеквадратичного тока мощность. Делите требуемую мощность на фактическую и получаете коэффициент для Брезенхема. Как мне кажется, что он кореллирует с пропорциональным коэффициент для ПИД. Остальные коэффициенты в этом случае вырождены, то есть нулевые.msg31, 15 Марта 15, 05:08
Подобным алгоритмом пользуюсь я.
ПИД как таковой не нужен в нашем случае, только пропорциональная часть. Это не терморегулирование, тут нет  инерционности.
Пользую только датчик тока.
Кроме того таблицу я получаю при первом включении- калибровке, а не расчетным путем интеграла синуса.
Это сводит на нет необходимость определения сдвига фронта датчика нуля от истинного нуля.
Кроме того таблица строится не с определенным шагам по углу включения, а по мощности- это увеличивает точность. Шаг по мощности не постоянный, а изменяется пропорционально мощности.
К  примеру:    100 вт, 110,125,150,180,210 и т.д
g100m Доцент Самара 1.6K 247
Отв.1073  15 Марта 15, 09:41
Коллеги, подскажите, как Вы ПИД будете применять при использовании одного только датчика тока и Брезенхема?msg31, 15 Марта 15, 05:08
а никто про Брезенхема и не говорил в совокупности с датчиком тока, речь шла именно о угле открытия.
если пропускать полупериоды, ты прав абсолютно.
Дятел Доктор наук NA 554 119
Отв.1074  15 Марта 15, 12:01
Ни интегральной, ни дифференциальной части для регулирования мощности на ТЭН-е на обеих алгоритмах ( угол или пропуск полупериодов) не нужно.
сообщения удалены (26)
nakhalovka Научный сотрудник moskva 446 586
Отв.1075  04 Мая 15, 13:37
Нужна помощь в написание скетча, несложного, за написании приз, 10 литров домашнего пива. Плата Arduino Pro Mini . будет четыре кнопки и светодиод. При нажимании одной из низ светодиод будет мигать с разным интервалом. Более подробно расскажу в личку или по телефону.

Добавлено через 8ч. 48мин.:

Ну а если не хватит пива кальвадосика добавлю. Если есть другие варианты то в личку.
Программа не сложная. А то я Arduino не практиковал.
mak Модератор Екатеринбург 6.3K 1.8K
Отв.1076  05 Мая 15, 06:28
Напиши в личку, сделать не сложно, помогу
nakhalovka Научный сотрудник moskva 446 586
Отв.1077  05 Мая 15, 11:18
Напиши в личку, сделать не сложно, помогуmak, 05 Мая 15, 06:28

Написал.
MuxaJIbI4 Студент tsk 12 2
Отв.1078  30 Июня 15, 19:41
вроде разобрался, один вопрос по поводу реле низкого /высокого уровня, можно простыми словами как разобраться  какое у меня реле и какое значение выбирать? KLP_HIGH
Grin52 Бакалавр Нижний Новгород 68 8
Отв.1079  06 Июля 15, 16:18
 Решил замутить пивоварню, по истечению 2-х месяцев вот что вышло, коробок мелкий, пришлось повозиться, проводки в дальнейшим сделаю короче(наверное), хотел сделать кнопки "джойстиком" не вышло, так и не понял почему, поэтому сделал в линию, "гемороя" от этого на корпусе много образовалось пришлось делать наклейку, заказал в типографии еще в процессе. Это сейчас бумага для визуальной наглядности! . )
Вопрос по насосу для прокачки сусла, по литературе читал, что его можно подключить прямо к электромеханическому реле 5V. Вопрос выдержит или нет и подключается аналогичным образом как и реле нагревателя или нет???

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

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

imag0509.jpg
Imag0509. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
IMAG0509.jpg
IMAG0509.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
IMAG0513.jpg
IMAG0513.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
IMAG0514.jpg
IMAG0514.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.