Подсветка чайника с меняющимся цветом в зависимости от t

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Karl2233
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Сб июн 20, 2015 12:46:58

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Karl2233 »

датчик будет плотно прилегать к корпусу, вчера мерял - при кипении Т на корпусе (он в моём металлический) 85-90.
так что разбег шагов надо делать 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

Сообщение bad2cat »

Karl2233 писал(а):датчик будет плотно прилегать к корпусу, вчера мерял - при кипении на корпусе (он в моём металлический) на корпусе 85-90.
так что вот.
Ну я вот про это и говорю. А кто-то посмотрит на ваше сообщение и также сделает, не зная что у вас металлический корпус чайника, и у него, на пластмассовом корпусе, разница достигнет 30 градусов или даже больше.
Датчик надо хотя бы внутри над жидкостью размещать, если уж в воду не хотите окунать.
Я тоже, в некотором роде, радиоинженер...
Реклама
Аватара пользователя
Karl2233
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Сб июн 20, 2015 12:46:58

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Karl2233 »

ну так у кого из пластика - кто мешает померять? автор прошивки любезно выложил код (правда я ни в зуб ногой в этом) где можно (умея) поправить.

ну или просить автора сделать две прошивки - для металлических и пластиковых корпусов.
ибо совать в кипящую воду (или над ней) мне ничего не хотелось бы - вода и так г... так пусть уж без привкуса корпуса термодатчика будет.
Аватара пользователя
bad2cat
Потрогал лапой паяльник
Сообщения: 379
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение bad2cat »

А какой там термодатчик в схеме? DS-ка?

Если автор хотел простенькую схему, то я уже писал, проще сделать на датчике из любого диода в металлостекле и ничего не будет выделятся.
Пластмасса ABS (из которой чайник) и та вреднее, как я сегодня вычитал.
Последний раз редактировалось bad2cat Вт авг 25, 2015 11:26:18, всего редактировалось 1 раз.
Я тоже, в некотором роде, радиоинженер...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Karl2233
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Сб июн 20, 2015 12:46:58

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Karl2233 »

а DS точнее чем диод...
как по мне, внутрь чайника ничего пихать не стоит(кроме диода будут провода, пайка) так что считаю точность нужно принести в жертву безопасности.
Реклама
Аватара пользователя
bad2cat
Потрогал лапой паяльник
Сообщения: 379
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение bad2cat »

Karl2233 писал(а):а DS точнее чем диод....
Блять, вы на какой степени рекурсии остановитесь ,а ? :))
Это две схемы - с несравнимой сложностью.

И как это "DS точнее чем диод" - вы о чём это вообще?
про 15-20 градусов разницы с водой забыли? :)) Это точнее?
Я тоже, в некотором роде, радиоинженер...
Реклама
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Всем Привет..
Я все это собрал и испытал. Все нормально работает. Единственное что я заметил - немного нужно будет изменить уровни. А так все отлично.. Выкладываю фото внутренности что и как я все разместил.

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
Karl2233
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Сб июн 20, 2015 12:46:58

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Karl2233 »

bad2cat писал(а):
Karl2233 писал(а):а DS точнее чем диод....
Блять, вы на какой степени рекурсии остановитесь ,а ? :))
Это две схемы - с несравнимой сложностью.

И как это "DS точнее чем диод" - вы о чём это вообще?
про 15-20 градусов разницы с водой забыли? :)) Это точнее?
15-20 это коррекция а не точность измерений.

про рекурсию да, второй круг пошел :)))

Nizam вопросы:
1. датчик где разместил?
2. Т на платах(микросхемах) после вскипания какая? всё-таки нагреватель рядом...
а так-то молодец :beer:
Аватара пользователя
bad2cat
Потрогал лапой паяльник
Сообщения: 379
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение bad2cat »

Karl2233 писал(а):15-20 это коррекция а не точность измерений.
Карл, какая "коррекция"? Это погрешность измерения.
Коррекция у вас будет постоянная, а погрешность у вас при размещении снаружи датчика, будет разная. А точность - это точность. Т.е. степень,уровень разрешения аналоговой величины в дискретную.
Я тоже, в некотором роде, радиоинженер...
Аватара пользователя
Karl2233
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Сб июн 20, 2015 12:46:58

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Karl2233 »

если кипит при 100, то на корпусе 85.
если вода в чайнике 60, то на корпусе 45.
если вода 89, то на корпусе 74.
это именно коррекция.

а вот погрешность выглядит так:
кипит при 100, а где-то 80 или 90.
вода 67, где-то 70 или 89.

так что коррекция это константа, зависящая от теплопередачи корпуса.
а погрешность - это отклонение зависящее от многих причин.
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Датчик DS18B20 закрепил между планкой и дном. Подложил кусочек текстолита. На первом фото хорошо видно.
Видео очень тяжелый получился .. время с начало до конца кипения.Попробую облегчить. и выложу сейчас.
Последний раз редактировалось Nizam Вт авг 25, 2015 12:19:18, всего редактировалось 1 раз.
Андрей СШ
Опытный кот
Сообщения: 806
Зарегистрирован: Ср май 06, 2015 06:41:27
Откуда: Благовещенск

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;
--------------------------------
Прошивка не прилепилась

Вторая прошивка для измерения температуры:
красные мигания - десятки градусов
синие - единицы
Вложения
main_test.hex
(1.76 КБ) 283 скачивания
main.hex
(1.76 КБ) 447 скачиваний
Последний раз редактировалось Андрей СШ Вт авг 25, 2015 12:28:14, всего редактировалось 1 раз.
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Андрей сделай пожалуйста изменение в градусах..
Потому что синий по времени горит очень мало.
0-45 Синий
46-75 Зеленый
76-95 Красный
96-110 Пульсирующий красный с пищалкой
Последний раз редактировалось Nizam Вт авг 25, 2015 12:44:14, всего редактировалось 2 раза.
Аватара пользователя
bad2cat
Потрогал лапой паяльник
Сообщения: 379
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение bad2cat »

Nizam писал(а):76-95 Красный
96-110 Пульсирующий красный с пищалкой
В Челябинске (240 метров над морем)
вода кипит в плохую погоду при 92гр.С
Я тоже, в некотором роде, радиоинженер...
Аватара пользователя
bad2cat
Потрогал лапой паяльник
Сообщения: 379
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение bad2cat »

Karl2233 писал(а):если кипит при 100, то на корпусе 85.
если вода в чайнике 60, то на корпусе 45.
это именно коррекция.
а вот погрешность выглядит так:
кипит при 100, а где-то 80 или 90.
так что коррекция это константа, зависящая от теплопередачи корпуса.
а погрешность - это отклонение зависящее от многих причин.
чё троллишь что-ли, по третьему кругу рекурсии? :)) :))
У вас с ног на голову перевёрнуты понятия, по-моему.
Вы метрологию проходили? Или ещё предстоит?

Коррекция в данном случае не будет постоянной - это погрешность, она величина не постоянная, а зависит от внешних факторов.
Вобщем как-хотите считайте, я вижу вы парень упёртый, сделаете всё равно по-своему, дерзайте! :))
Я тоже, в некотором роде, радиоинженер...
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Андрей СШ писал(а):Сделал плавное переключение цветов. В процессе пока отвалился жёлтый.
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;
--------------------------------
Прошивка не прилепилась

Вторая прошивка для измерения температуры:
красные мигания - десятки градусов
синие - единицы


Андрей Эти прошивки обе тестовые.. После заливки начинают моргать
Андрей СШ
Опытный кот
Сообщения: 806
Зарегистрирован: Ср май 06, 2015 06:41:27
Откуда: Благовещенск

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 скачивания
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Залил но пока первое что обнаружил это при запуске пикает и потом когда второй пик он продолжительно
Андрей СШ
Опытный кот
Сообщения: 806
Зарегистрирован: Ср май 06, 2015 06:41:27
Откуда: Благовещенск

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Андрей СШ »

Да это из-за того, что при включении температура неизвестна срабатывает аварийная сигнализация.

Исправил.
Вложения
main.hex
(2.01 КБ) 259 скачиваний
Nizam
Открыл глаза
Сообщения: 60
Зарегистрирован: Сб мар 06, 2010 15:44:00

Re: Подсветка чайника с меняющимся цветом в зависимости от t

Сообщение Nizam »

Андрей СШ писал(а):Да это из-за того, что при включении температура неизвестна срабатывает аварийная сигнализация.

Исправил.
Залил все в норме.. Вот только начинает кипеть выключается .Пульсирующая красная опаздывает.. Надо бы ее порог изменить
Ответить

Вернуться в «AVR»