Перейти к содержанию

Автоматизация затирки пива на модуле STH0024 v3


Рекомендуемые сообщения

Опубликовано (изменено)

Я почему-то не могу редактировать свое первое сообщение. Выкладываю тут проект для Атмел Студио 7 и проект для зашивки Algorithm Builder'ом

 

Пока три программы:

 

1) 35,45,52,65,72,78

    10,10,20,25,30,35

 

2) 72,78

      30,15

 

3) 52,72,78

    30,30,10

 

Выбираются из меню по средней кнопке. Параметр Р.

Сегодня вечером буду отлаживать.

 

Солюшн для Атмел Студии

beer_kita_program_AS70.zip

 

Проект для AB

beer_project_program_AB.zip

 

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

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

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

Изменено пользователем capsolo
  • Ответов 122
  • Создана
  • Последний ответ

Топ авторов темы

  • capsolo

    49

  • 61003

    19

  • Jollier

    14

  • samus

    5

Опубликовано

понятно почему у тебя не хватает памяти)) библиотек всяких поврубал левых. зачем там вообще 1wire, если датчик один?

  • + репутация 1
Опубликовано (изменено)

Ну я планирую потом тот же фреймворк для других разработок использовать. В них будет больше датчиков, ну и наверное больше памяти. Свободной памяти сейчас 500 слов. Один рецепт - 12 слов. Нет смысла все усложнять.

Да и согласись убого 12 величин настраивать. Неудобно.

Изменено пользователем capsolo
Опубликовано (изменено)

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

я опрос 2х датчиков писал. ниже код для 13й тиньки в 1Кб. заняло если не ошибаюсь половину т.е. 500 байт

это старт-стоп по дельте 2х датчиков. из библиотек только задержка и описание портов.

работает как часы как с одним датчиком, так и с двумя.

 

 

#define  F_CPU 1000000UL
#include <util/delay.h>
#include <avr/io.h>
int tempinit;
unsigned char k,kd[8]={1,2,3,4,5,6,8,10};


void w_sendcmd(unsigned char cmd,unsigned char num)
{
  for(unsigned char i = 0; i < 8; i++)
  {
    if((cmd & (1<<i)) == 1<<i)
    {
      DDRB |= 1<<num;
        _delay_us(2);
      DDRB &= ~(1<<num);
        _delay_us(65);
    }
    else
    {
      DDRB |= 1<<num;
        _delay_us(65);
      DDRB &= ~(1<<num);
        _delay_us(5);
    }
  }
}

unsigned char w_receive_byte(unsigned char num)
{
  unsigned char data=0;
  for(unsigned char i = 0; i < 8; i++)
  {
    DDRB |= 1<<num;
    _delay_us(2);
    DDRB &= ~(1<<num) ;
    _delay_us(7);
    if((num & (1<<num)) == 0x00)
      data &= ~(1<<i);
    else
      data |= 1<<i;
    _delay_us(50);
  }
return data;
}

int temp_18b20()
{
  unsigned char data1[2];
  unsigned char data2[2];

  int temp1 = 0;
  int temp2 = 0;

  w_sendcmd(0xcc,0);
  w_sendcmd(0x44,0);
  w_sendcmd(0xcc,1);
  w_sendcmd(0x44,1);

  _delay_ms(750);
  DDRB |= 1<<0;
  DDRB |= 1<<1;
  _delay_us(485);
  DDRB &= ~(1<<0);
  DDRB &= ~(1<<1);
  _delay_us(65);
  w_sendcmd(0xcc,0);
  w_sendcmd(0xbe,0);
  w_sendcmd(0xcc,1);
  w_sendcmd(0xbe,1);

  data1[0] = w_receive_byte(0);
  data1[1] = w_receive_byte(0);
  data2[0] = w_receive_byte(1);
  data2[1] = w_receive_byte(1);

  temp1 = data1[1];
  temp1 = temp1<<8;
  temp1 |= data1[0];
  temp1 = temp1 * 0.625;
  temp2 = data2[1];
  temp2 = temp2<<8;
  temp2 |= data2[0];
  temp2 = temp2 * 0.625;
  if (temp1>temp2)
  {
    return temp1-temp2;
  }
  else
  {
    return temp2-temp1;
  }

}


int main(void)
{

    DDRB |= (1<<5)|(1<<4)|(1<<3)|(0<<2);
    k=((PINB & 0b00111000) >> 3);
    tempinit=temp_18b20();
    while (1)
    {
        if (temp_18b20()-tempinit<kd[k])
        {
            PORTB |= (1 << 2);
        }
        else
        {
            PORTB &= ~(1 << 2);
        }
    }
}
 

Изменено пользователем 61003
  • + репутация 1
Опубликовано (изменено)

Леш твой код выглядит как особая уличная магия :) Как, например, ты подобрал делеи при отсылке команд? Я не критикую, я пытаюсь разобраться почему у тебя нет никаких выбросов по температуре, почему ты не считываешь многократно датчик, оттого, что он не отдает тебе то, что надо :) Почему у тебя нет дребезга релюхи на пороговых температурах.


Пойду домой трехлитрушки греть :)

Изменено пользователем capsolo
Опубликовано

ато :-)  этот код я доводил в районе года. дальше его просто уже нельзя сократить в принципе.

задержки при отсылке следуют из даташита и подобраны на практике (не мной). я чуть менял правда, по сравнению с АСУРом, но это тоже не суть.

главная задержка _delay_ms(750); в теле, обеспечивает гарантированный перерыв между опросами, которого достаточно, чтобы датчик переварил запрос и выдал его обратно.

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

 

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

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

 

на этом коде у меня НИКОГДА не было ни нулей, ни заветной 85гр и прочей херни, а самое главное, что увеличение количества датчиков на других ногах не приводит к существенному увеличению кода.

  • + репутация 1
Опубликовано (изменено)

Ага вот где собака порылась. Я там с плавучкой по прерываниям высчитываю воту меня датчик и отваливается. Хорошо, если я от этой железяки чего-то ещё захочу и не будет хватать памяти - воспользуюсь. Следующая остановка - регулятор мощости со стабилизацией. На входе сигнал детектора нуля и вольтметр. На выходе - угол открытия симистора. Ну и интерфейс простейший: полная напруга, либо выставленная. Кстати код мой оказался с багами как и предполагалось. Банку догрею - выложу корректный.

Изменено пользователем capsolo
Опубликовано

э э тоесть ты хочеш сказать что рм у тебя будит с на базе стхашки

Опубликовано
[member=2garin], пока выбираем модуль. Почему нет?
Ребята я вот что подумал. Это получатся не пивной контроллер, а универсальный контроллер для ПВК. Осталось добавить три программы: затирка солода на вискарь 62 час, затирка солода с несоложенкой 62 два часа и 99 1 минута для перегона сброженного затора. Обычно на рубашечнике второй погон не гоняют, так что я не вижу никаких препятствий. Что скажете?
  • + репутация 1
Опубликовано (изменено)

Что скажете?

Красавчег, я за СТХ всеми конечностями. А ежли еще и рег. мощности прикрутить к ней... :good:

Изменено пользователем ser64

Автоматика для ректификации, дистилляции

Сборка любой сложности "под заказчика"

Опубликовано

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

Опубликовано (изменено)

Леш а что так категорично? Готовый детектор нуля не найти? Чего там такого ?
[member=ser64], Сереж а зачем РМ если мы в ПВК гнать не собираемся на второй раз? Или собираемся?

Изменено пользователем capsolo
Опубликовано
[member=capsolo],тот спирт Парторгу уходит на испытания клюшки моей. У меня есть 90 л браги сазарной, времени нет отжать. Если тольео в выходные привезу. А тебе сколько надо?

"Когда уходят герои, на арену выходят клоуны". (Генрих Гейне)

Опубликовано

Леш а что так категорично? Готовый детектор нуля не найти? Чего там такого ?

вот именно, что ничего такого. РМ2 в 2х магнитах стоит 1500 в корпусе, 2500 в сборе с симистором, радиатром и т.п. вы сделаете дешевле? сомневаюсь. даже если сделаете, ради маржи в 100-200 рублей нафиг надо с этим возиться?

 

и в итоге получится таже срущая в сеть лажа.

 

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

Опубликовано

Проекты некоммерческие. С симистором и радиатором за 1000-1500 в самый раз

Опубликовано

ну если охото повозиться, то можно. изобрести очередной велосипед :-)

Опубликовано (изменено)
[member=capsolo],что-то я туплю. Гене и отдадим. Изменено пользователем Garik80

"Когда уходят герои, на арену выходят клоуны". (Генрих Гейне)

Опубликовано

а взамен ты что получишь? :) у него не совсем корпусированная автоматика :)


Вобщем я вчера все отладил. Програм теперь шесть

1) 35,45,52,65,72,78

    10,10,20,25,30,35

 

2) 72,78

      30,15

 

3) 52,72,78

    30,30,10

 

4) 62 - 60 мин - для затирки солода

5) 62 - 120мин - для затирки солода с несоложенкой

6) 99 - 1 мин - для выгона затора

 

После прохода по паузам контроллер вырубает нагрев.

 

 

beer_kita_program_v1.0.zip - проект в Атмель Студии

beer_project_program_v1.0.zip - проект для Алгоритм Билдера

Опубликовано

Я только теперь после праздников смогу заняться - завтра с женой на дачу мотаем....

Опубликовано

обновил второй пост темы. Прикрепил инструкцию по зашивке контроллера и рекомендации по подключению к мощной нагрузке.

Опубликовано

[b][member=capsolo][/b],Привет Антон .  Я понял , что на варку пива и на ректификацию нужны два модуля СТХ ...? 

Опубликовано

Угу - это два разных устройства.

Опубликовано

Можно и одну, только перешивать охренеешь.

Опубликовано

Да цена вопроса модуль 900 и твердотелка 800. Ну бп 250. Два косых. И автоматика для ПВК готова ;) пиво, затирка, перегонка на СС - все это есть. Была бы на модуле вторая релюха - можно было бы и охлаждение сделать рубахой. В принципе можно переключатель сделать: переключил на клапан воды, выбрал программу охлаждения и вперед. Программу охлаждения я правда пока не запилил, но это не сложно.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...