Подсветка чайника с меняющимся цветом в зависимости от t
Re: Подсветка чайника с меняющимся цветом в зависимости от t
датчик будет плотно прилегать к корпусу, вчера мерял - при кипении Т на корпусе (он в моём металлический) 85-90.
так что разбег шагов надо делать 15-17С.
логика простая:
1. >= 90 зуммер +красный цвет.
2. >= 85 красный.
3. >= 60 (желтый или какой другой)
4. <= 40 синий.
так что разбег шагов надо делать 15-17С.
логика простая:
1. >= 90 зуммер +красный цвет.
2. >= 85 красный.
3. >= 60 (желтый или какой другой)
4. <= 40 синий.
Последний раз редактировалось Karl2233 Вт авг 25, 2015 11:14:57, всего редактировалось 1 раз.
- Реклама
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Ну я вот про это и говорю. А кто-то посмотрит на ваше сообщение и также сделает, не зная что у вас металлический корпус чайника, и у него, на пластмассовом корпусе, разница достигнет 30 градусов или даже больше.Karl2233 писал(а):датчик будет плотно прилегать к корпусу, вчера мерял - при кипении на корпусе (он в моём металлический) на корпусе 85-90.
так что вот.
Датчик надо хотя бы внутри над жидкостью размещать, если уж в воду не хотите окунать.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
ну так у кого из пластика - кто мешает померять? автор прошивки любезно выложил код (правда я ни в зуб ногой в этом) где можно (умея) поправить.
ну или просить автора сделать две прошивки - для металлических и пластиковых корпусов.
ибо совать в кипящую воду (или над ней) мне ничего не хотелось бы - вода и так г... так пусть уж без привкуса корпуса термодатчика будет.
ну или просить автора сделать две прошивки - для металлических и пластиковых корпусов.
ибо совать в кипящую воду (или над ней) мне ничего не хотелось бы - вода и так г... так пусть уж без привкуса корпуса термодатчика будет.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
А какой там термодатчик в схеме? DS-ка?
Если автор хотел простенькую схему, то я уже писал, проще сделать на датчике из любого диода в металлостекле и ничего не будет выделятся.
Пластмасса ABS (из которой чайник) и та вреднее, как я сегодня вычитал.
Если автор хотел простенькую схему, то я уже писал, проще сделать на датчике из любого диода в металлостекле и ничего не будет выделятся.
Пластмасса ABS (из которой чайник) и та вреднее, как я сегодня вычитал.
Последний раз редактировалось bad2cat Вт авг 25, 2015 11:26:18, всего редактировалось 1 раз.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
а DS точнее чем диод...
как по мне, внутрь чайника ничего пихать не стоит(кроме диода будут провода, пайка) так что считаю точность нужно принести в жертву безопасности.
как по мне, внутрь чайника ничего пихать не стоит(кроме диода будут провода, пайка) так что считаю точность нужно принести в жертву безопасности.
- Реклама
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Блять, вы на какой степени рекурсии остановитесь ,а ?Karl2233 писал(а):а DS точнее чем диод....
Это две схемы - с несравнимой сложностью.
И как это "DS точнее чем диод" - вы о чём это вообще?
про 15-20 градусов разницы с водой забыли?
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
15-20 это коррекция а не точность измерений.bad2cat писал(а):Блять, вы на какой степени рекурсии остановитесь ,а ?Karl2233 писал(а):а DS точнее чем диод....![]()
Это две схемы - с несравнимой сложностью.
И как это "DS точнее чем диод" - вы о чём это вообще?
про 15-20 градусов разницы с водой забыли?Это точнее?
про рекурсию да, второй круг пошел
Nizam вопросы:
1. датчик где разместил?
2. Т на платах(микросхемах) после вскипания какая? всё-таки нагреватель рядом...
а так-то молодец
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Карл, какая "коррекция"? Это погрешность измерения.Karl2233 писал(а):15-20 это коррекция а не точность измерений.
Коррекция у вас будет постоянная, а погрешность у вас при размещении снаружи датчика, будет разная. А точность - это точность. Т.е. степень,уровень разрешения аналоговой величины в дискретную.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
если кипит при 100, то на корпусе 85.
если вода в чайнике 60, то на корпусе 45.
если вода 89, то на корпусе 74.
это именно коррекция.
а вот погрешность выглядит так:
кипит при 100, а где-то 80 или 90.
вода 67, где-то 70 или 89.
так что коррекция это константа, зависящая от теплопередачи корпуса.
а погрешность - это отклонение зависящее от многих причин.
если вода в чайнике 60, то на корпусе 45.
если вода 89, то на корпусе 74.
это именно коррекция.
а вот погрешность выглядит так:
кипит при 100, а где-то 80 или 90.
вода 67, где-то 70 или 89.
так что коррекция это константа, зависящая от теплопередачи корпуса.
а погрешность - это отклонение зависящее от многих причин.
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Датчик DS18B20 закрепил между планкой и дном. Подложил кусочек текстолита. На первом фото хорошо видно.
Видео очень тяжелый получился .. время с начало до конца кипения.Попробую облегчить. и выложу сейчас.
Видео очень тяжелый получился .. время с начало до конца кипения.Попробую облегчить. и выложу сейчас.
Последний раз редактировалось Nizam Вт авг 25, 2015 12:19:18, всего редактировалось 1 раз.
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Сделал плавное переключение цветов. В процессе пока отвалился жёлтый.
1-30 - синий
31-70 - зелёный
70-95 - красный
96-110 - пульсирующий (не мигающий) красный с пищалкой.
Добавил писк при включении чайника.
Плавное изменение цвета с температурой не получается. ШИМ-программный, OneWire тоже и оба с высоким приоритетом. Проц поделить не получается.
С жёлтым тоже фигня. Поскольку он имитируется двумя светодиодами, то его яркость соответственно выше чем у чистых цветов. Надо шимить на 50% красный и зелёный постоянно, а это невозможно из-за конфликта с OneWire.
Теоретически можно конечно красный и зелёный повесить на аппаратный ШИМ, но это не позволяет получить другие промежуточные цвета. Кроме прочего аппаратный ШИМ имеет небольшой баг в виде коротких вспышек при переходе через 0.
--------------------------------
Прошивка не прилепилась
Вторая прошивка для измерения температуры:
красные мигания - десятки градусов
синие - единицы
1-30 - синий
31-70 - зелёный
70-95 - красный
96-110 - пульсирующий (не мигающий) красный с пищалкой.
Добавил писк при включении чайника.
Плавное изменение цвета с температурой не получается. ШИМ-программный, OneWire тоже и оба с высоким приоритетом. Проц поделить не получается.
С жёлтым тоже фигня. Поскольку он имитируется двумя светодиодами, то его яркость соответственно выше чем у чистых цветов. Надо шимить на 50% красный и зелёный постоянно, а это невозможно из-за конфликта с OneWire.
Теоретически можно конечно красный и зелёный повесить на аппаратный ШИМ, но это не позволяет получить другие промежуточные цвета. Кроме прочего аппаратный ШИМ имеет небольшой баг в виде коротких вспышек при переходе через 0.
Спойлер
Код: Выделить всё
with
AVR,
AVR.MCU,
AVR.Wait,
Interfaces,
One_Wire;
use AVR, AVR.MCU,Interfaces;
procedure Main is
RED_pin: constant := 0;
GREEN_pin: constant := 2;
BLUE_pin: constant := 1;
BEEP_pin: constant := 3;
black_pin: constant := 7;
RED: boolean renames PORTB_Bits(RED_pin);
GREEN: boolean renames PORTB_Bits(GREEN_pin);
BLUE: boolean renames PORTB_Bits(BLUE_pin);
BEEP: boolean renames PORTB_Bits(BEEP_pin);
low_byte, high_byte, t: Unsigned_8 := 0;
procedure Wait_ms is
new AVR.Wait.Generic_Busy_Wait_Milliseconds(Crystal_hertz => 1_200_000);
state: Bit_Number := 7;
procedure switch_color(e: Bit_Number) is
begin
if e=state then return; end if;
for i in 0..255 loop
for j in 1..255 loop
PORTB_Bits(state) := (j>i);
PORTB_Bits(e) := (j<=i);
end loop;
end loop;
state := e;
red := red_pin = state;
blue := blue_pin = state;
green := green_pin = state;
end switch_color;
begin
RED := low;
GREEN := low;
BLUE := low;
BEEP := low;
DDRB_Bits := (0..3 => DD_Output, others => DD_Input);
BEEP := true;
wait_ms(700);
BEEP := false;
wait_ms(700);
BEEP := true;
wait_ms(700);
BEEP := false;
loop
if One_wire.Reset then
One_Wire.Send_command(16#CC#);
One_Wire.Send_command(16#44#);
end if;
case t is
when 1..30 => switch_color(blue_pin); beep := false;
when 31..70 => switch_color(green_pin); beep := false;
--when 51..70 => red := true; green := true; blue := false; beep := false;
when 71..95 => switch_color(red_pin); beep := false;
when 96..110 => if state=RED_pin then switch_color(black_pin); else switch_color(red_pin); end if; PINB_Bits(BEEP_pin) := true;
when others => red := true; green := true; blue := true; beep := true; Wait_ms(800);
end case;
if One_wire.Reset then
One_Wire.Send_command(16#CC#);
One_Wire.Send_command(16#BE#);
low_byte := One_wire.Get;
high_byte := One_wire.Get;
end if;
high_byte := shift_left(high_byte,4) and 2#0111_0000#;
low_byte := shift_right(low_byte,4) and 2#0000_1111#;
t := high_byte or low_byte;
--case t is
-- when 1..30 => red := false; green := false; blue := true; beep := false;
-- when 31..50 => red := false; green := true; blue := false; beep := false;
-- when 51..70 => red := true; green := true; blue := false; beep := false;
-- when 71..95 => red := true; green := false; blue := false; beep := false;
-- when 96..110 => PINB_Bits(RED_pin) := true; green := false; blue := false; PINB_Bits(BEEP_pin) := true;
-- when others => red := true; green := true; blue := true; beep := true;
--end case;
end loop;
end Main;
Прошивка не прилепилась
Вторая прошивка для измерения температуры:
красные мигания - десятки градусов
синие - единицы
- Вложения
-
- main_test.hex
- (1.76 КБ) 283 скачивания
-
- main.hex
- (1.76 КБ) 447 скачиваний
Последний раз редактировалось Андрей СШ Вт авг 25, 2015 12:28:14, всего редактировалось 1 раз.
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Андрей сделай пожалуйста изменение в градусах..
Потому что синий по времени горит очень мало.
0-45 Синий
46-75 Зеленый
76-95 Красный
96-110 Пульсирующий красный с пищалкой
Потому что синий по времени горит очень мало.
0-45 Синий
46-75 Зеленый
76-95 Красный
96-110 Пульсирующий красный с пищалкой
Последний раз редактировалось Nizam Вт авг 25, 2015 12:44:14, всего редактировалось 2 раза.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
В Челябинске (240 метров над морем)Nizam писал(а):76-95 Красный
96-110 Пульсирующий красный с пищалкой
вода кипит в плохую погоду при 92гр.С
Я тоже, в некотором роде, радиоинженер...
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 379
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
чё троллишь что-ли, по третьему кругу рекурсии?Karl2233 писал(а):если кипит при 100, то на корпусе 85.
если вода в чайнике 60, то на корпусе 45.
это именно коррекция.
а вот погрешность выглядит так:
кипит при 100, а где-то 80 или 90.
так что коррекция это константа, зависящая от теплопередачи корпуса.
а погрешность - это отклонение зависящее от многих причин.
У вас с ног на голову перевёрнуты понятия, по-моему.
Вы метрологию проходили? Или ещё предстоит?
Коррекция в данном случае не будет постоянной - это погрешность, она величина не постоянная, а зависит от внешних факторов.
Вобщем как-хотите считайте, я вижу вы парень упёртый, сделаете всё равно по-своему, дерзайте!
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Андрей СШ писал(а):Сделал плавное переключение цветов. В процессе пока отвалился жёлтый.
1-30 - синий
31-70 - зелёный
70-95 - красный
96-110 - пульсирующий (не мигающий) красный с пищалкой.
Добавил писк при включении чайника.
Плавное изменение цвета с температурой не получается. ШИМ-программный, OneWire тоже и оба с высоким приоритетом. Проц поделить не получается.
С жёлтым тоже фигня. Поскольку он имитируется двумя светодиодами, то его яркость соответственно выше чем у чистых цветов. Надо шимить на 50% красный и зелёный постоянно, а это невозможно из-за конфликта с OneWire.
Теоретически можно конечно красный и зелёный повесить на аппаратный ШИМ, но это не позволяет получить другие промежуточные цвета. Кроме прочего аппаратный ШИМ имеет небольшой баг в виде коротких вспышек при переходе через 0.
--------------------------------Спойлер
Код: Выделить всё
with AVR, AVR.MCU, AVR.Wait, Interfaces, One_Wire; use AVR, AVR.MCU,Interfaces; procedure Main is RED_pin: constant := 0; GREEN_pin: constant := 2; BLUE_pin: constant := 1; BEEP_pin: constant := 3; black_pin: constant := 7; RED: boolean renames PORTB_Bits(RED_pin); GREEN: boolean renames PORTB_Bits(GREEN_pin); BLUE: boolean renames PORTB_Bits(BLUE_pin); BEEP: boolean renames PORTB_Bits(BEEP_pin); low_byte, high_byte, t: Unsigned_8 := 0; procedure Wait_ms is new AVR.Wait.Generic_Busy_Wait_Milliseconds(Crystal_hertz => 1_200_000); state: Bit_Number := 7; procedure switch_color(e: Bit_Number) is begin if e=state then return; end if; for i in 0..255 loop for j in 1..255 loop PORTB_Bits(state) := (j>i); PORTB_Bits(e) := (j<=i); end loop; end loop; state := e; red := red_pin = state; blue := blue_pin = state; green := green_pin = state; end switch_color; begin RED := low; GREEN := low; BLUE := low; BEEP := low; DDRB_Bits := (0..3 => DD_Output, others => DD_Input); BEEP := true; wait_ms(700); BEEP := false; wait_ms(700); BEEP := true; wait_ms(700); BEEP := false; loop if One_wire.Reset then One_Wire.Send_command(16#CC#); One_Wire.Send_command(16#44#); end if; case t is when 1..30 => switch_color(blue_pin); beep := false; when 31..70 => switch_color(green_pin); beep := false; --when 51..70 => red := true; green := true; blue := false; beep := false; when 71..95 => switch_color(red_pin); beep := false; when 96..110 => if state=RED_pin then switch_color(black_pin); else switch_color(red_pin); end if; PINB_Bits(BEEP_pin) := true; when others => red := true; green := true; blue := true; beep := true; Wait_ms(800); end case; if One_wire.Reset then One_Wire.Send_command(16#CC#); One_Wire.Send_command(16#BE#); low_byte := One_wire.Get; high_byte := One_wire.Get; end if; high_byte := shift_left(high_byte,4) and 2#0111_0000#; low_byte := shift_right(low_byte,4) and 2#0000_1111#; t := high_byte or low_byte; --case t is -- when 1..30 => red := false; green := false; blue := true; beep := false; -- when 31..50 => red := false; green := true; blue := false; beep := false; -- when 51..70 => red := true; green := true; blue := false; beep := false; -- when 71..95 => red := true; green := false; blue := false; beep := false; -- when 96..110 => PINB_Bits(RED_pin) := true; green := false; blue := false; PINB_Bits(BEEP_pin) := true; -- when others => red := true; green := true; blue := true; beep := true; --end case; end loop; end Main;
Прошивка не прилепилась
Вторая прошивка для измерения температуры:
красные мигания - десятки градусов
синие - единицы
Андрей Эти прошивки обе тестовые.. После заливки начинают моргать
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Угу. Не тот файл положил.
Подправил пороги.
Подправил пороги.
Спойлер
Код: Выделить всё
with
AVR,
AVR.MCU,
AVR.Wait,
Interfaces,
One_Wire;
use AVR, AVR.MCU,Interfaces;
procedure Main is
RED_pin: constant := 0;
GREEN_pin: constant := 2;
BLUE_pin: constant := 1;
BEEP_pin: constant := 3;
black_pin: constant := 7;
RED: boolean renames PORTB_Bits(RED_pin);
GREEN: boolean renames PORTB_Bits(GREEN_pin);
BLUE: boolean renames PORTB_Bits(BLUE_pin);
BEEP: boolean renames PORTB_Bits(BEEP_pin);
low_byte, high_byte, t: Unsigned_8 := 0;
procedure Wait_ms is
new AVR.Wait.Generic_Busy_Wait_Milliseconds(Crystal_hertz => 1_200_000);
state: Bit_Number := 7;
procedure switch_color(e: Bit_Number) is
begin
if e=state then return; end if;
for i in 0..255 loop
for j in 1..255 loop
PORTB_Bits(state) := (j>i);
PORTB_Bits(e) := (j<=i);
end loop;
end loop;
state := e;
red := red_pin = state;
blue := blue_pin = state;
green := green_pin = state;
end switch_color;
begin
RED := low;
GREEN := low;
BLUE := low;
BEEP := low;
DDRB_Bits := (0..3 => DD_Output, others => DD_Input);
BEEP := true;
wait_ms(700);
BEEP := false;
wait_ms(700);
BEEP := true;
wait_ms(700);
BEEP := false;
loop
if One_wire.Reset then
One_Wire.Send_command(16#CC#);
One_Wire.Send_command(16#44#);
end if;
case t is
when 1..50 => switch_color(blue_pin); beep := false;
when 51..80 => switch_color(green_pin); beep := false;
when 81..95 => switch_color(red_pin); beep := false;
when 96..110 => if state=RED_pin then switch_color(black_pin); else switch_color(red_pin); end if; PINB_Bits(BEEP_pin) := true;
when others => red := true; green := true; blue := true; beep := true; Wait_ms(800);
end case;
if One_wire.Reset then
One_Wire.Send_command(16#CC#);
One_Wire.Send_command(16#BE#);
low_byte := One_wire.Get;
high_byte := One_wire.Get;
end if;
high_byte := shift_left(high_byte,4) and 2#0111_0000#;
low_byte := shift_right(low_byte,4) and 2#0000_1111#;
t := high_byte or low_byte;
end loop;
end Main;
- Вложения
-
- main.hex
- (2.01 КБ) 253 скачивания
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Залил но пока первое что обнаружил это при запуске пикает и потом когда второй пик он продолжительно
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Да это из-за того, что при включении температура неизвестна срабатывает аварийная сигнализация.
Исправил.
Исправил.
- Вложения
-
- main.hex
- (2.01 КБ) 259 скачиваний
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Залил все в норме.. Вот только начинает кипеть выключается .Пульсирующая красная опаздывает.. Надо бы ее порог изменитьАндрей СШ писал(а):Да это из-за того, что при включении температура неизвестна срабатывает аварийная сигнализация.
Исправил.


