Я думал что ПИД регулятор хоть кого нибудь заинтересует!?.
А ещё говорили ветку заводить надо, самогонщики у вас у всех есть ПИД?
Не пить а PID!
Аппаратная платформа Arduino для автоматизации наших процессов
Отв.960 03 Авг. 14, 16:03
ys1797
Доцент
Санкт-Петербург
1K 339
Отв.961 03 Авг. 14, 18:18
Я себе делал, в ветке про мегу даже писал.
Все работает, только мне это для затора пивасика требовалось. Нужность этого дела для ректификации и дистилляции сомнительна.
Главное подобрать коэффициенты, чтоб перелеты были минимальными.
Отв.962 04 Авг. 14, 06:51
Ну как же?
Ректификацию не знаю, а дистилятору очень нужно мощность нагревателя регулировать. Вот у меня в гараже стоит аппарат,
если ночью похолодание процесс просто остановится, охлаждение дефлегматора более чем мощность нагревателя. А если ночь тёплая то при константе мощности может и захлёб пройти.
А тут голова не болит.
Ректификацию не знаю, а дистилятору очень нужно мощность нагревателя регулировать. Вот у меня в гараже стоит аппарат,
если ночью похолодание процесс просто остановится, охлаждение дефлегматора более чем мощность нагревателя. А если ночь тёплая то при константе мощности может и захлёб пройти.
А тут голова не болит.
Брагин
Магистр
Краснодар
278 76
Отв.963 04 Авг. 14, 20:52
SUA, зря ты так сразу,- не нужен ни кому. интересна передача данных в комп - некоторых заинтересует. ПИД хорош для поддержания температуры. то что ты рассказываешь
Вот у меня в гараже стоит аппарат,может относиться к отбору голов при плохом утеплении куба. Про захлеб - тогда яя не знаю что у тебя за аппарат. так что рисуй или хоть опиши чем и как управляпеться твоя железяка.
если ночью похолодание процесс просто остановится, охлаждение дефлегматора более чем мощность нагревателя. А если ночь тёплая то при константе мощности может и захлёб пройти.
Отв.964 05 Авг. 14, 05:44
Апарат труба нержавейка. Выше на фото есть. Если кто пидом занимался то или синусоиду режут или считают периоды сети. У меня период около 2 секунд. Инерционность тэна это легко переносит. Этот период управляется от 0 до 100%. Китайская SSR включается через ноль исключая помехи. Возможно что у профессионалов колонны,и им не требуется пид. Но поверьте дефлегматору это нужно.
Отв.965 06 Авг. 14, 06:47
Давай уже схему
Отв.966 06 Авг. 14, 10:32
Схемы нет, ни думал что она нужна. Я взял ардуину с шилдом клавиатуры и дисплея готовые изделия.
В скетче ардуины расписаны вывода, просто подключаем. Если написан пин 10 в скетче, написан на плате ардуины ещё
его нарисовать нужно? Выше на третьей фотографии видны провода и клемник соединяющие ардуину и твёрдотельные реле.
В скетче ардуины расписаны вывода, просто подключаем. Если написан пин 10 в скетче, написан на плате ардуины ещё
его нарисовать нужно? Выше на третьей фотографии видны провода и клемник соединяющие ардуину и твёрдотельные реле.
LVit
Специалист
город на Даугаве
126 59
Отв.967 06 Авг. 14, 21:27
Ну да, ну да. Конечно схема подключений не нужна.Тем более Вы декларируете стандартный шилд дисплея и кнопок, а в нём PIN 10- управление подсветкой дисплея, а у Вас согласно скетча, нагрев тэна. Где сермяжная правда?Кстати, представленный скетч у меня на калибровку кнопок не выходит
shram1970
Доцент
Желтая гора
1.3K 325
Отв.968 06 Авг. 14, 21:56, через 30 мин
Вы декларируете стандартный шилд дисплея и кнопокLVit, 06 Авг. 14, 21:27Мне попадались три разных шилда,причем внешне почти не отличимых друг от друга.
LVit
Специалист
город на Даугаве
126 59
Отв.969 07 Авг. 14, 01:27
Все китайские платы что я видел имеют на Пин10 управление подсветкой
Отв.970 07 Авг. 14, 03:37
По шилду дисплея: у меня несколько плат разного времени покупки и только две модификации отличающиеся номиналом резисторов.
Ниже код определяющий мои платы. Я записываю в ячейку 200 некий маркер платы. Значения клавиш определяю таким скетчем Test_LCD_and_Button.
Конечно присутствует ручная работа, зато отсутствует лишний код в скетче. Это я так думаю.
void setup()
{
// EEPROM.write(200,100); // плата нового сам.аппарата
// EEPROM.write(200,101); // плата лабораторная
if(EEPROM.read(200)==100) // выбор типа платы индикатора
{
butval[1]=130; // UP 1 - вверх
butval[2]=472; // LEFT 2 - влево
butval[3]=712; // SELECT 3 - ок
butval[4]=0; // RIGTH 4 - вправо
butval[5]=303; // DOWN 5 - вниз
}
else if(EEPROM.read(200)==101)
{
butval[1]=102; // UP 1 - вверх
butval[2]=416; // LEFT 2 - влево
butval[3]=646; // SELECT 3 - ок
butval[4]=0; // RIGTH 4 - вправо
butval[5]=262; // DOWN 5 - вниз
};
Десятый пин у меня удалён из дисплея, это следствие первичной разработки, думал не хватит пинов. Так как о подсветке я не задумываюсь то так и осталось.
А то что вы без схемы знаете о десятом пине подтверждает необязательность схемы.
При перегрузке контроллера, можно войти в один из пяти режимов настроек. Без нажатия кнопок контроллер уходит в рабочий режим.
Ещё думаю сказать об переделке тэнов. Номинальная мощность тэна для моего апарата 800 ват. Я взял два тэна "Аристон" по 1.5квт.
Распаял одну просверлил в другой отверстие и вставил крест на крест. Последовательно соединил и получил 750 ватт.
Ниже код определяющий мои платы. Я записываю в ячейку 200 некий маркер платы. Значения клавиш определяю таким скетчем Test_LCD_and_Button.
Конечно присутствует ручная работа, зато отсутствует лишний код в скетче. Это я так думаю.
void setup()
{
// EEPROM.write(200,100); // плата нового сам.аппарата
// EEPROM.write(200,101); // плата лабораторная
if(EEPROM.read(200)==100) // выбор типа платы индикатора
{
butval[1]=130; // UP 1 - вверх
butval[2]=472; // LEFT 2 - влево
butval[3]=712; // SELECT 3 - ок
butval[4]=0; // RIGTH 4 - вправо
butval[5]=303; // DOWN 5 - вниз
}
else if(EEPROM.read(200)==101)
{
butval[1]=102; // UP 1 - вверх
butval[2]=416; // LEFT 2 - влево
butval[3]=646; // SELECT 3 - ок
butval[4]=0; // RIGTH 4 - вправо
butval[5]=262; // DOWN 5 - вниз
};
Десятый пин у меня удалён из дисплея, это следствие первичной разработки, думал не хватит пинов. Так как о подсветке я не задумываюсь то так и осталось.
А то что вы без схемы знаете о десятом пине подтверждает необязательность схемы.
При перегрузке контроллера, можно войти в один из пяти режимов настроек. Без нажатия кнопок контроллер уходит в рабочий режим.
Ещё думаю сказать об переделке тэнов. Номинальная мощность тэна для моего апарата 800 ват. Я взял два тэна "Аристон" по 1.5квт.
Распаял одну просверлил в другой отверстие и вставил крест на крест. Последовательно соединил и получил 750 ватт.
shram1970
Доцент
Желтая гора
1.3K 325
Отв.971 07 Авг. 14, 05:41
только две модификации отличающиеся номиналом резисторовSUA, 07 Авг. 14, 03:37Бывают еще I2c.
Отв.972 07 Авг. 14, 07:54
Сейчас почесал репу по поводу калибровки клавиатуры. Ничего путнего.
Всё таки удобней получается прочитать сторонним скетчем коды клавиш и поправить в рабочем скетче.
Иначе как выйти на калибровку в совмещённом скетче, ждать после перезагрузки какое то время для входа в калибровку, не есть хорошо.
Калибровать нужно один раз а перегружаться много раз и постоянно ждать время.
Если после перезагрузки сразу нажать клавишу, тогда пять режимов работы уже запрограммированных пропадут.
Я поправил скетч для вывода чисел клавиш, убрал лишнее.
Всё таки удобней получается прочитать сторонним скетчем коды клавиш и поправить в рабочем скетче.
Иначе как выйти на калибровку в совмещённом скетче, ждать после перезагрузки какое то время для входа в калибровку, не есть хорошо.
Калибровать нужно один раз а перегружаться много раз и постоянно ждать время.
Если после перезагрузки сразу нажать клавишу, тогда пять режимов работы уже запрограммированных пропадут.
Я поправил скетч для вывода чисел клавиш, убрал лишнее.
mr_hait
Кандидат наук
Краснодар
429 116
Отв.973 21 Сент. 14, 15:19
Парни, мозг закипел... есть два датчика давления которые должны будут работать с ардуино, не могу понять какой предпочтительнее, пособите пожалуйста....
https://drive.google.com/...dit?usp=sharing
https://drive.google.com/...dit?usp=sharing
измерять они будут разряжение в вакуумном дистилляторе.
https://drive.google.com/...dit?usp=sharing
https://drive.google.com/...dit?usp=sharing
измерять они будут разряжение в вакуумном дистилляторе.
Брагин
Магистр
Краснодар
278 76
Отв.974 23 Сент. 14, 21:06
mr_hait, а на картинке сам аппарат? дистиллят откуда капать будет )?
по факту - однояйцевые, смотри последний абзац - хав ту ордер - там ньюансы при заказе того чего тебе надо.
по факту - однояйцевые, смотри последний абзац - хав ту ордер - там ньюансы при заказе того чего тебе надо.
mr_hait
Кандидат наук
Краснодар
429 116
Отв.975 24 Сент. 14, 00:15
Прошу прощения
что-то, ни как с прикреплением фоток/файлов подружиться не получается.... хрень какая-то...уже не первый раз пробую, и в этом случае несколько раз патался... и после обновления страницы ни чего не было... по тому и пришлось через гугл... а эта фотка вообще ни сюда...
еклн как её убрать-то...
Спасибо, понял, думал - уже сам завис после нескольких дней выбора датчиков.
что-то, ни как с прикреплением фоток/файлов подружиться не получается.... хрень какая-то...уже не первый раз пробую, и в этом случае несколько раз патался... и после обновления страницы ни чего не было... по тому и пришлось через гугл... а эта фотка вообще ни сюда...
еклн как её убрать-то...
Спасибо, понял, думал - уже сам завис после нескольких дней выбора датчиков.
dee
Научный сотрудник
Минск
8.1K 2.1K
Отв.976 24 Сент. 14, 15:08
копаюсь в ардуине для своего проекта, долго мучался с датчиком ds18b20 который не хотел выдавать разрешение в 12 бит, выдавал только в 9 т.е с разрешением в 0,5С. оказалось он с завода был запрограмирован на 9 бит. ниже приведен код, который я втавил в void setup() т.е он выполняется один раз при инициализации контроллера, переводит датчик в 12 битный режим и больше не нужен, пусть тут висит, мало ли кому понадобится
/* код переводит датчик в 12 битный режим
ds.write(0xCC); // Для обращения ко всем 1-Wire устройствам, подключенным к шине, используется команда skip rom. Например, эту команду можно применять, чтобы запустить температурное преобразование сразу всех датчиков DS18B20
ds.write(0x4E); // записывать в ОЗУ датчика DS18B20 три байта – Th, Tl и конфигурационный регистр (2, 3, 4 байты ОЗУ соответственно).
ds.write(0x4B); // то, что прочиталось по адресу data[2] в процессе чтения for ( i = 0; i < 9; i++) { data[ i ] = ds.read();},
ds.write(0x46); // то, что показало по адресу data[3], по идее это верхняя и нижняя границы измерений
ds.write(0x7F); // конфигурационный байт, по дефолту 000111111, становиться 01111111. две первые еденицы отвечают за разрядность ацп
ds.write(0xCC); // сбрасывается память
ds.write(0x48); // Эта команда копирует 2, 3 и 4 байты ОЗУ (Tl, Th и конфигурационный регистр соответственно) в EEPROM датчика.
*/
/* код переводит датчик в 12 битный режим
ds.write(0xCC); // Для обращения ко всем 1-Wire устройствам, подключенным к шине, используется команда skip rom. Например, эту команду можно применять, чтобы запустить температурное преобразование сразу всех датчиков DS18B20
ds.write(0x4E); // записывать в ОЗУ датчика DS18B20 три байта – Th, Tl и конфигурационный регистр (2, 3, 4 байты ОЗУ соответственно).
ds.write(0x4B); // то, что прочиталось по адресу data[2] в процессе чтения for ( i = 0; i < 9; i++) { data[ i ] = ds.read();},
ds.write(0x46); // то, что показало по адресу data[3], по идее это верхняя и нижняя границы измерений
ds.write(0x7F); // конфигурационный байт, по дефолту 000111111, становиться 01111111. две первые еденицы отвечают за разрядность ацп
ds.write(0xCC); // сбрасывается память
ds.write(0x48); // Эта команда копирует 2, 3 и 4 байты ОЗУ (Tl, Th и конфигурационный регистр соответственно) в EEPROM датчика.
*/
slony
Магистр
Сочи
246 63
Отв.977 29 Сент. 14, 10:24
Никто ethernet shield не пробовал подключать ? Поиском не находится.
У меня примерно так получилось.
Правда это пока не совсем система автоматики, а скорее просто показометр. Из автоматики только старт-стоп по первому датчику температуры.
У меня примерно так получилось.
Правда это пока не совсем система автоматики, а скорее просто показометр. Из автоматики только старт-стоп по первому датчику температуры.
_k0t_
Бакалавр
Санкт-Петербург
56 22
Отв.978 06 Окт. 14, 22:35
Пользуюсь для дистилляции скетчем с самого старта темы, все устраивает.
Но на днях, сделал хардовую индикацию разгона и пр. с помощью светодиодов.
Теперь экранпотерял для меня актуальность. Буду выводить на него температуру в кубе, температуру
пара и таймер. Очень хочу, чтобы на этом экране у меня отображалась текущая крепость
в струе, но ни как не могу представить - КАК это сделать? Прошу у гуру помощи.
Есть у меня такая закономерность, по отношению температуры в паре к крепости:
проверял на разных материалах - примерно, по температуре пара можно определить крепость.
Может быть сделать двумерный массив, определять температуру пара округлять, искать похожее
число и выдирать из массива? Я сам не программист, надеюсь на помощь. Готовый пример
был бы идеальным вариантом, или что нибудь похожее. Из кусков чужого кода я смогу сделать
то что мне нужно.
Но на днях, сделал хардовую индикацию разгона и пр. с помощью светодиодов.
Теперь экран
else {
if (P1) {lcd.print(" T1");}
if (P2) {lcd.setCursor(6,0); lcd.print("T2+");}
if (P3) {lcd.setCursor(11,0); lcd.print("WATER");}
lcd.setCursor(0,1);
lcd.print(T[0]); lcd.setCursor(5,1); lcd.print("`C"); //если не русский дисплей будет "градус Цельсия" )
lcd.setCursor(10,1);
if (running) {printTimer();} else {lcd.print("OFF");}
if (butPush == 1) {menu--; Menu(0);}
if (butPush == 5) {menu++; Menu(0);}
}
break;
пара и таймер. Очень хочу, чтобы на этом экране у меня отображалась текущая крепость
в струе, но ни как не могу представить - КАК это сделать? Прошу у гуру помощи.
Есть у меня такая закономерность, по отношению температуры в паре к крепости:
T в кубе | T пара | Крепость % |
74,3 | 73 | 92 |
81,06 | 77,12 | 90 |
81,44 | 77,69 | 88 |
82,97 | 78,06 | 87 |
84,31 | 78,37 | 86,5 |
85,56 | 78,81 | 85,5 |
87,69 | 82,81 | 82 |
88,5 | 84,12 | 78 |
90,06 | 87,37 | 73 |
91,12 | 88 | 68 |
93,75 | 92,56 | 52 |
94,06 | 93 | 50 |
95 | 94,12 | 45 |
95,31 | 94,56 | 42 |
95,75 | 95 | 40 |
96,5 | 95,5 | 38 |
96,94 | 95,87 | 36 |
97,44 | 96,25 | 32 |
98,06 | 96,87 | 27 |
98,19 | 97 | 25 |
98,56 | 97,31 | 20 |
98,81 | 97,44 | 18 |
99 | 97,62 | 15 |
проверял на разных материалах - примерно, по температуре пара можно определить крепость.
Может быть сделать двумерный массив, определять температуру пара округлять, искать похожее
число и выдирать из массива? Я сам не программист, надеюсь на помощь. Готовый пример
был бы идеальным вариантом, или что нибудь похожее. Из кусков чужого кода я смогу сделать
то что мне нужно.
Брагин
Магистр
Краснодар
278 76
Отв.979 06 Окт. 14, 23:38
а что ее думать если этот экран уже есть, показывает спиртуозность в двух местах. а эту часть меню выкинуть если надо
[сообщение #11880825]
[сообщение #11880825]