Запустил автоматику пока в режиме наладке, все разбросано по столу. Автоматика заработала. Всем спасибо. Но есть некоторые ньюансы.
1. Взял термос залил кипяток, все три датчика пучком опустил по гильзы в воду, закрыл и окутал термос есть разброс в показаниях, табличку с температурами прилагаю. Что делать, есть ли возможность калибровки?
2. А также китайская готовая клава, кнопки верх- вниз работают в правильном направлении, а вправо-влево как бы перепутаны, если заходить допустим для регулировки конкретного значения, то заходит левой, а выход вправо, думаю что это не правильно?
Попытка автоматизации пленочной колонны с паровым отбором
Igorr67
Бакалавр
Збараж
52 7
Отв.660 12 Февр. 19, 14:02
abc32
Студент
Брянск
19 14

Отв.661 12 Февр. 19, 14:44 (через 43 мин)
Igorr67 замени в скетче следующие строки:
byte Key() { // проверяем кнопки шилда
if (analogRead(0) < 10) return 3; // вправо
else if (analogRead(0) < 50) return 2; //вверх
else if (analogRead(0) < 100) return 4;// вниз
else if (analogRead(0) < 180) return 1; // влево
else if (analogRead(0) < 400) return 5; //select
else if (analogRead(0) < 1023) return 0;
byte Key() { // проверяем кнопки шилда
if (analogRead(0) < 10) return 3; // вправо
else if (analogRead(0) < 50) return 2; //вверх
else if (analogRead(0) < 100) return 4;// вниз
else if (analogRead(0) < 180) return 1; // влево
else if (analogRead(0) < 400) return 5; //select
else if (analogRead(0) < 1023) return 0;
Igorr67
Бакалавр
Збараж
52 7
Отв.662 12 Февр. 19, 16:01
Igorr67 замени в скетче следующие строки:abc32, 12 Февр. 19, 14:44Заменил работает правильно, спасибо.
сообщение удалено
Igorr67
Бакалавр
Збараж
52 7
Отв.663 12 Февр. 19, 20:48
Главное чтобы их показания не скакали больше 0.1- 0.2 градусовnorem, 12 Февр. 19, 16:40Это показания одного термометра в конкретное время или трьох между собой в тоже время, я приводил таблицу температур, так пойдет или нужно какой то датчик менять, если можна разъяснить конкретнее. у меня есть кроме этих еще два датчики. Температура снималась на протяжении полтора часа, иногда прыгали только десятки т.е 90,1 -90,0, но редко
karu77
Специалист
Земля
119 32

Температура снималась на протяжении полтора часа, иногда прыгали только десятки т.е 90,1 -90,0, но редкоОдного термометра. Если в течении 1.5 часа прыгали десятки это нормально, вода в термосе все-таки остывала. А в царге будет постоянная поддерживаться температура и дельту ты выставишь 0.3÷0.5°С.
dee
Научный сотрудник
Минск
8.6K 2.3K

Отв.665 13 Февр. 19, 10:09
в ds18b20 есть два энергонезависимых регистра Tl и Th (нижнее и верхнее значение температуры при которой выставляется какой то флаг) можно попробовать хранить поправочные коэффициенты там, можно приделать костыль в виде поправочных коэффициентов для конкретного датчика в программе.
шаг у датчика 0,0625 0,125 0,25 0,5 так что ориентироваться лучше на него
округление:
0,0000 - 0,0
0,0625 - 0,1
0,0125 - 0,2
0,1875 - 0,2
0,2500 - 0,3
0,3125 - 0,3
0,3750 - 0,4
0,4375 - 0,4
0,5000 - 0,5
0,5625 - 0,6
0,6250 - 0,6
0,6875 - 0,7
0,7500 - 0,8
0,8125 - 0,8
0,8750 - 0,9
0,9375 - 0,9
шаг у датчика 0,0625 0,125 0,25 0,5 так что ориентироваться лучше на него
округление:
0,0000 - 0,0
0,0625 - 0,1
0,0125 - 0,2
0,1875 - 0,2
0,2500 - 0,3
0,3125 - 0,3
0,3750 - 0,4
0,4375 - 0,4
0,5000 - 0,5
0,5625 - 0,6
0,6250 - 0,6
0,6875 - 0,7
0,7500 - 0,8
0,8125 - 0,8
0,8750 - 0,9
0,9375 - 0,9
Igorr67
Бакалавр
Збараж
52 7
Отв.666 13 Февр. 19, 11:23
Еще раз для тех кто не понял. Все три датчики связаны в пучок и находятся в термосе. Замеры проводились полтора часа и за это время температура в термосе упала с 91 градуса до 77. При верхних температурах показания темп. куба 89,6, царги 90,8 это уже + 1,2 гр. и дефа 90.3 это +0,6 по отношению кубу и минус 0,5 по отношению царги и такая зависимость идет до 80 градусов, а дальше разница в показаниях немного меньше. Вот и я не пойму что мне делать?
можно попробовать хранить поправочные коэффициенты там, можно приделать костыльdee, 13 Февр. 19, 10:09В програмировании увы я не силен. Могу только выполнять конкретные указания типа
Igorr67 замени в скетче следующие строки:
byte Key() { // проверяем кнопки шилда
if (analogRead(0) < 10) return 3; // вправо
else if (analogRead(0) < 50) return 2; //вверх
else if (analogRead(0) < 100) return 4;// вниз
else if (analogRead(0) < 180) return 1; // влево
else if (analogRead(0) < 400) return 5; //select
else if (analogRead(0) < 1023) return 0;abc32, 12 Февр. 19, 14:44
norem
Студент
Москва
39 30

Отв.667 13 Февр. 19, 15:10
если тебя не радуют показания сделай под свои нужды
tempSensor[0] = sensor[1]+1,5;//царга
tempSensor[1] = sensor[2]-0,9;//деф
tempSensor[2] = sensor[0]+0,1;//куб
dee
Научный сотрудник
Минск
8.6K 2.3K

Отв.668 13 Февр. 19, 15:24 (через 15 мин)
вот в этой процедуре массив tempSensor[] набивается значениями температуры,
void tempa (byte u)
{
ds.reset();
ds.select(addresa);
ds.write(0xBE); // Команда датчику, чтобы он начал отдавать данные.
temp = (ds.read() | ds.read() <<
; //так и не понял как оно там считается, главное работает
temp = (float)temp / 16.00;
sensor = temp;//______________________________________________________________________________
// tempSensor[0] = sensor[2];//царга
// tempSensor[1] = sensor[0];//деф
// tempSensor[2] = sensor[1];//куб
tempSensor[0] = sensor[1];//царга
tempSensor[1] = sensor[2];//деф
tempSensor[2] = sensor[0];//куб
}
абсолютная поправка:
tempSensor[2] = sensor[0] + 0,01 ;//куб
относительная поправка:
tempSensor[2] = 0.99998 * sensor[0] ;//куб
Добавлено через 5мин.:
temp = (ds.read() | ds.read() <<
; //так и не понял как оно там считается, главное работает
возможно вот так будет понятнее:
ds.reset(); //сбросить линию
ds.select(Thermometer1); //обратиться к датчику 1
ds.write(0xBE); // запустить чтение температуры из датчика
data[0] = ds.read();
data[1] = ds.read();
temperatyra_kuba = ((data[1]<<
+data[0]) * 10 / 16 + 6; // два байта складываются в одно число плюс поправка по температуре кипения воды
ds.reset(); //сбросить линию
ds.select(Thermometer1); //обратиться к датчику 1
ds.write(0x44); // запустить преобразование температуры в датчике
void tempa (byte u)
{
ds.reset();
ds.select(addresa);
ds.write(0xBE); // Команда датчику, чтобы он начал отдавать данные.
temp = (ds.read() | ds.read() <<

temp = (float)temp / 16.00;
sensor = temp;//______________________________________________________________________________
// tempSensor[0] = sensor[2];//царга
// tempSensor[1] = sensor[0];//деф
// tempSensor[2] = sensor[1];//куб
tempSensor[0] = sensor[1];//царга
tempSensor[1] = sensor[2];//деф
tempSensor[2] = sensor[0];//куб
}
абсолютная поправка:
tempSensor[2] = sensor[0] + 0,01 ;//куб
относительная поправка:
tempSensor[2] = 0.99998 * sensor[0] ;//куб
Добавлено через 5мин.:
temp = (ds.read() | ds.read() <<

возможно вот так будет понятнее:
ds.reset(); //сбросить линию
ds.select(Thermometer1); //обратиться к датчику 1
ds.write(0xBE); // запустить чтение температуры из датчика
data[0] = ds.read();
data[1] = ds.read();
temperatyra_kuba = ((data[1]<<

ds.reset(); //сбросить линию
ds.select(Thermometer1); //обратиться к датчику 1
ds.write(0x44); // запустить преобразование температуры в датчике
makh
Профессор
Sаmara
2.1K 1K

Отв.669 13 Февр. 19, 20:07
что мне делать?Igorr67, 13 Февр. 19, 11:231. Повесить все градусники на свои места.
2. Провода от каждого в месте установки намотать под теплоизоляцию, витка два-три или более.
3. Вскипятить воду, посмотреть на цифры.
4. Вскипятить спирт, посмотреть на цифры.
5. И только потом, возможно, вносить поправки.
anddin
Магистр
Астрахань
259 121

Не надо ничего делать с датчиками температуры, не нужно вносить поправки, при работе мы следим только за изменениями температуры, у нас нет задачи определить точное показание, мы же не температуру больного мерием, после первого перегона каждый определяет сугубо свои значения температур для своего аппарата.
Не надо на этом зацикливаться
Не надо на этом зацикливаться
makh
Профессор
Sаmara
2.1K 1K

Отв.671 14 Февр. 19, 06:27 (через 43 мин)
anddin, есть смысл что-то делать с градусниками, есть.
Прятать провода под изоляцию в месте установки -- уменьшаем влияние внешней среды на показания.
Смотреть разницу между водой и спиртом на всей гирлянде -- сразу быстро выбраковывать сильно отличные от других.
Дело в том, что по-разному они работают в диапазоне до 85 и после. До все красиво, после может быть резкий наклон, и предлагаемыми выше способами это не корректируется. Лучше просто взять другой датчик в этом случае.
Прятать провода под изоляцию в месте установки -- уменьшаем влияние внешней среды на показания.
Смотреть разницу между водой и спиртом на всей гирлянде -- сразу быстро выбраковывать сильно отличные от других.
Дело в том, что по-разному они работают в диапазоне до 85 и после. До все красиво, после может быть резкий наклон, и предлагаемыми выше способами это не корректируется. Лучше просто взять другой датчик в этом случае.
norem
Студент
Москва
39 30

Отв.672 15 Февр. 19, 08:57
Взялся за редактирования текста программы.
Изменения:
1. Код немного оптимизирован на 300 строк
2. Изменил переменные используемые в программе на удобочитаемые
3. добавил барометр BMP180. Показания атмосферного давления на стартовом экране. И скорректированную температуру кипения спирта на главном.
4. Использовал экран и подключение по l2c в тексте закоментировано
5. Использовал джойстик вместо шилда кнопок в тексте закоментировано
6. Автоматический выход из меню если не нажата кнопка в течении 10 сек
7. Добавил возможность отображения дополнительного датчика температуры (у меня он служит для отображения воды из дефа). По возможности можно старое раскоментировать
8. На сколько сих хватило, сделал описание к программе
9. в меню настройки весов добавил скорость отбора
и куча мелких изменений которых уже и не вспомнить
Изменения:
1. Код немного оптимизирован на 300 строк
2. Изменил переменные используемые в программе на удобочитаемые
3. добавил барометр BMP180. Показания атмосферного давления на стартовом экране. И скорректированную температуру кипения спирта на главном.
4. Использовал экран и подключение по l2c в тексте закоментировано
5. Использовал джойстик вместо шилда кнопок в тексте закоментировано
6. Автоматический выход из меню если не нажата кнопка в течении 10 сек
7. Добавил возможность отображения дополнительного датчика температуры (у меня он служит для отображения воды из дефа). По возможности можно старое раскоментировать
8. На сколько сих хватило, сделал описание к программе
9. в меню настройки весов добавил скорость отбора
и куча мелких изменений которых уже и не вспомнить
Igorr67
Бакалавр
Збараж
52 7
Отв.673 15 Февр. 19, 11:58
Да, я ни разу не программист,но на печатной плате выложеной Anddin выход Узо это 24, а не 26 как у всех скетчах или есть другая распечатка??
norem
Студент
Москва
39 30

Отв.674 15 Февр. 19, 12:55 (через 58 мин)
вот тут есть косяк за мной. у меня уже много что переделано и контакты я уже понаитию восстанавливал как было у автора. Простите!
сама плата и датчики температуры представлены на фото
сама плата и датчики температуры представлены на фото
Igorr67
Бакалавр
Збараж
52 7
Отв.675 15 Февр. 19, 13:18 (через 23 мин)
Так и у автора темы в скетче 26, а на плате 24
karu77
Специалист
Земля
119 32

Наступил день испытаний автоматики от Андрея. Автоматика работает четко, по датчикам температуры в автомате перешли с режима "разгон" на режим отбор голов. Головы, по рекомендации Андрея отбираю на 200 Вт, при этом расход воды капля в 2÷3, а то и 4секунды, деф длинный (рабочая часть 46 см по трубочкам подачи/отвода воды), наверно помогает воздушное охлождение наружной трубы, при этом отбор голов капля в сек. Приятный бонус - это блютус, с др.комнаты можно проверить состояние колонны...
Добавлено через 1ч. 48мин.:
А вот инфо по блютус
Добавлено через 1ч. 48мин.:
А вот инфо по блютус
Igorr67
Бакалавр
Збараж
52 7
Отв.677 20 Февр. 19, 20:52
Собрал все в корпус
Александр Волков
Магистр
Хабаровск
208 80

Отв.678 21 Февр. 19, 00:47
Если магнитофон еще и играет тогда полный зачет
norem
Студент
Москва
39 30

Отв.679 24 Февр. 19, 00:54
Сегодня посидел над "сглаживанием" значений поступаемых от весов. Исходя из графика, который взял с ком порта и вывел в эксель минимальное значение без выравнивания -0,49 максимальное 0,34 дельта 0,34 + 0,49 =0,83(Скачки температуры) минимальное значение без выравнивания -0,05 максимальное 0,05 скачки соответственно 0,1 грамм !! Но время реакции увеличилось, видно из второго графика на который я кидал небольшой вес
ps оптимальным значением альфы является значение 0,9 при этом значении при моментальном изменении веса на весах выход с учетом поправок составляет 10 сек. При 0,92 - 15 сек.
ps оптимальным значением альфы является значение 0,9 при этом значении при моментальном изменении веса на весах выход с учетом поправок составляет 10 сек. При 0,92 - 15 сек.