capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 (изменено) Я почему-то не могу редактировать свое первое сообщение. Выкладываю тут проект для Атмел Студио 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. программа - пока три программы затирки, можно добавить еще по желанию. Изменено 2 марта, 2016 пользователем capsolo
61003 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 понятно почему у тебя не хватает памяти)) библиотек всяких поврубал левых. зачем там вообще 1wire, если датчик один? 1
capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 (изменено) Ну я планирую потом тот же фреймворк для других разработок использовать. В них будет больше датчиков, ну и наверное больше памяти. Свободной памяти сейчас 500 слов. Один рецепт - 12 слов. Нет смысла все усложнять. Да и согласись убого 12 величин настраивать. Неудобно. Изменено 2 марта, 2016 пользователем capsolo
61003 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 (изменено) каждый датчик можно повесить на отдельный вход, это упрощает в дальнейшем их подключение, замену и т.д. я опрос 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); } }} Изменено 2 марта, 2016 пользователем 61003 1
capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 (изменено) Леш твой код выглядит как особая уличная магия Как, например, ты подобрал делеи при отсылке команд? Я не критикую, я пытаюсь разобраться почему у тебя нет никаких выбросов по температуре, почему ты не считываешь многократно датчик, оттого, что он не отдает тебе то, что надо Почему у тебя нет дребезга релюхи на пороговых температурах. Пойду домой трехлитрушки греть Изменено 2 марта, 2016 пользователем capsolo
61003 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 ато этот код я доводил в районе года. дальше его просто уже нельзя сократить в принципе. задержки при отсылке следуют из даташита и подобраны на практике (не мной). я чуть менял правда, по сравнению с АСУРом, но это тоже не суть. главная задержка _delay_ms(750); в теле, обеспечивает гарантированный перерыв между опросами, которого достаточно, чтобы датчик переварил запрос и выдал его обратно. на самом деле нам это знать это все вовсе не обязательно, бери функцию и гарантированно получишь результат. есть конечно нюанс. если в программе будут прерывания, то на время исполнения функции temp_18b20() лучше их отключать, если они длинные, чтобы не рушить задержки. также эту функцию не надо вставлять в прерывание, пусть она будет в теле программы. на этом коде у меня НИКОГДА не было ни нулей, ни заветной 85гр и прочей херни, а самое главное, что увеличение количества датчиков на других ногах не приводит к существенному увеличению кода. 1
capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 (изменено) Ага вот где собака порылась. Я там с плавучкой по прерываниям высчитываю воту меня датчик и отваливается. Хорошо, если я от этой железяки чего-то ещё захочу и не будет хватать памяти - воспользуюсь. Следующая остановка - регулятор мощости со стабилизацией. На входе сигнал детектора нуля и вольтметр. На выходе - угол открытия симистора. Ну и интерфейс простейший: полная напруга, либо выставленная. Кстати код мой оказался с багами как и предполагалось. Банку догрею - выложу корректный. Изменено 2 марта, 2016 пользователем capsolo
2garin Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 э э тоесть ты хочеш сказать что рм у тебя будит с на базе стхашки
capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 [member=2garin], пока выбираем модуль. Почему нет? Ребята я вот что подумал. Это получатся не пивной контроллер, а универсальный контроллер для ПВК. Осталось добавить три программы: затирка солода на вискарь 62 час, затирка солода с несоложенкой 62 два часа и 99 1 минута для перегона сброженного затора. Обычно на рубашечнике второй погон не гоняют, так что я не вижу никаких препятствий. Что скажете? 1
ser64 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 (изменено) Что скажете? Красавчег, я за СТХ всеми конечностями. А ежли еще и рег. мощности прикрутить к ней... Изменено 2 марта, 2016 пользователем ser64 Автоматика для ректификации, дистилляции Сборка любой сложности "под заказчика"
61003 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 про регулятор мощности забудьте. дешевле, чем рм2 не сделаете никогда.
capsolo Опубликовано 2 марта, 2016 Автор Опубликовано 2 марта, 2016 (изменено) Леш а что так категорично? Готовый детектор нуля не найти? Чего там такого ?[member=ser64], Сереж а зачем РМ если мы в ПВК гнать не собираемся на второй раз? Или собираемся? Изменено 2 марта, 2016 пользователем capsolo
Garik80 Опубликовано 2 марта, 2016 Опубликовано 2 марта, 2016 [member=capsolo],тот спирт Парторгу уходит на испытания клюшки моей. У меня есть 90 л браги сазарной, времени нет отжать. Если тольео в выходные привезу. А тебе сколько надо? "Когда уходят герои, на арену выходят клоуны". (Генрих Гейне)
61003 Опубликовано 3 марта, 2016 Опубликовано 3 марта, 2016 Леш а что так категорично? Готовый детектор нуля не найти? Чего там такого ? вот именно, что ничего такого. РМ2 в 2х магнитах стоит 1500 в корпусе, 2500 в сборе с симистором, радиатром и т.п. вы сделаете дешевле? сомневаюсь. даже если сделаете, ради маржи в 100-200 рублей нафиг надо с этим возиться? и в итоге получится таже срущая в сеть лажа. если и заморачиваться с регулятором, то нужно смотреть в сторону инвертора или диммера как Запал писал
capsolo Опубликовано 3 марта, 2016 Автор Опубликовано 3 марта, 2016 Проекты некоммерческие. С симистором и радиатором за 1000-1500 в самый раз
61003 Опубликовано 3 марта, 2016 Опубликовано 3 марта, 2016 ну если охото повозиться, то можно. изобрести очередной велосипед
Garik80 Опубликовано 3 марта, 2016 Опубликовано 3 марта, 2016 (изменено) [member=capsolo],что-то я туплю. Гене и отдадим. Изменено 3 марта, 2016 пользователем Garik80 "Когда уходят герои, на арену выходят клоуны". (Генрих Гейне)
capsolo Опубликовано 3 марта, 2016 Автор Опубликовано 3 марта, 2016 а взамен ты что получишь? у него не совсем корпусированная автоматика Вобщем я вчера все отладил. Програм теперь шесть 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 - проект для Алгоритм Билдера
capsolo Опубликовано 3 марта, 2016 Автор Опубликовано 3 марта, 2016 Я только теперь после праздников смогу заняться - завтра с женой на дачу мотаем....
capsolo Опубликовано 3 марта, 2016 Автор Опубликовано 3 марта, 2016 обновил второй пост темы. Прикрепил инструкцию по зашивке контроллера и рекомендации по подключению к мощной нагрузке.
alexmor 55 Опубликовано 3 марта, 2016 Опубликовано 3 марта, 2016 [b][member=capsolo][/b],Привет Антон . Я понял , что на варку пива и на ректификацию нужны два модуля СТХ ...?
hardvik Опубликовано 3 марта, 2016 Опубликовано 3 марта, 2016 Можно и одну, только перешивать охренеешь.
capsolo Опубликовано 3 марта, 2016 Автор Опубликовано 3 марта, 2016 Да цена вопроса модуль 900 и твердотелка 800. Ну бп 250. Два косых. И автоматика для ПВК готова пиво, затирка, перегонка на СС - все это есть. Была бы на модуле вторая релюха - можно было бы и охлаждение сделать рубахой. В принципе можно переключатель сделать: переключил на клапан воды, выбрал программу охлаждения и вперед. Программу охлаждения я правда пока не запилил, но это не сложно.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти