Подсветка чайника с меняющимся цветом в зависимости от t
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Андрей Огромное Вам СПАСИБО!!!
Проверил на макете все работает прекрасно!!
Проверил на макете все работает прекрасно!!
Последний раз редактировалось Nizam Пн авг 24, 2015 13:31:02, всего редактировалось 2 раза.
- Реклама
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Я, конечно, не модератор, но думаю, не стоит злоупотреблять аршинными шрифтами.
Спойлер
"Холоднокровней, Маня, вы же не на работе" (С) И.БабельRe: Подсветка чайника с меняющимся цветом в зависимости от t
прикольно.
вопрос к Андрей СШ(спасибо за труд созданию прошивки) - хочу датчик примастырить к корпусу чайника. я это к тому, что внутрь пихать как-то не очень хочется, а снаружи аккуратно приделать датчик можно к любому чайнику.
понимаю что вопрос в калибровке, посему вопрос - можно ли градацию сделать так, что бы она учитывала тот факт, что на корпусе температура ниже чем, например, 100 С при кипении? вижу это так же, как bad2cat
вполне здравое рассуждение
зачем плодить сущности сверх меры?
синий - до 40С, желтый(зелёный) - от 40 до 70, красный - от 70, звук - от 90.
таким образом, можно RGB применить и по цветам вроде всё легко узнаваемо и с таким разбросом температуры можно датчик ставить на корпус.
вопрос к Андрей СШ(спасибо за труд созданию прошивки) - хочу датчик примастырить к корпусу чайника. я это к тому, что внутрь пихать как-то не очень хочется, а снаружи аккуратно приделать датчик можно к любому чайнику.
понимаю что вопрос в калибровке, посему вопрос - можно ли градацию сделать так, что бы она учитывала тот факт, что на корпусе температура ниже чем, например, 100 С при кипении? вижу это так же, как bad2cat
По поводу подсветки - на мой взгляд ступенчатая практичнее для пользователя (только цвета должны быть удобны не для программиста, а для пользователя) - почему? Потому что опознать человеку неизвестный цвет обычно трудно. Тем более мгновенно оценить по нему степень нагрева.
Должно быть на первое время 3 ступени - синий, жёлтый (от 45 градусов), красный (кипяток).
вполне здравое рассуждение
синий - до 40С, желтый(зелёный) - от 40 до 70, красный - от 70, звук - от 90.
таким образом, можно RGB применить и по цветам вроде всё легко узнаваемо и с таким разбросом температуры можно датчик ставить на корпус.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Я ещё после написания поста подумал, что моя градация укладывается в степени ожоговKarl2233 писал(а):синий - до 40С, желтый(зелёный) - от 40 до 70, красный - от 70, звук - от 90.
таким образом, можно RGB применить и по цветам вроде всё легко узнаваемо и с таким разбросом температуры можно датчик ставить на корпус.
до 30-холодный. (синий, выше 30 - бирюзовый, тёпленькая, пить можно)
выше 45 - ожог первой степени. (жёлтый, предупреждение)
выше 70 - ожог второй степени. (фиолетовый или оранжевый, кому что)
выше 90 - ожог третьей степени.
Зелёный я исключаю умышленно, как цвет используемый для обозначения отравленных жидкостей (в играх часто и иконках на реактивах).
Хотя кому-то он кажется цветом комфорта.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Про расположение датчика снаружи думал и пришёл к выводу, что нужна специальная процедура калибровки, Сделать можно но настройка муторной станет. Именно поэтому и предпочитаю просто градиент от синего к красному. Такая индикация в отличие от ступенчатой не требует точной калибровки.
Кроме того вообще в этой схеме есть два косяка:
1. Интерфейс "одна проволочка" требует точного соблюдения таймингов, а встроенный RC-генератор может поплыть при нагреве. Вывод: микроконтроллер надо располагать где похолодней (в ручке).
2. Говорят DS18B20 быстро дохнет при высоких температурах.
Исходный код тут. Над плавным переходом подумаю чуть позже, надо немного свои схемки доделать.
One_Wire-AVR_Wiring.ads
Makefile
build.gpr
Кроме того вообще в этой схеме есть два косяка:
1. Интерфейс "одна проволочка" требует точного соблюдения таймингов, а встроенный RC-генератор может поплыть при нагреве. Вывод: микроконтроллер надо располагать где похолодней (в ручке).
2. Говорят DS18B20 быстро дохнет при высоких температурах.
Исходный код тут. Над плавным переходом подумаю чуть позже, надо немного свои схемки доделать.
Спойлер
main.adbКод: Выделить всё
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;
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);
begin
RED := low;
GREEN := low;
BLUE := low;
BEEP := low;
DDRB_Bits := (0..3 => DD_Output, others => DD_Input);
loop
if One_wire.Reset then
One_Wire.Send_command(16#CC#);
One_Wire.Send_command(16#44#);
end if;
Wait_ms(1000);
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;Код: Выделить всё
---------------------------------------------------------------------------
-- The AVR-Ada Library is free software; you can redistribute it and/or --
-- modify it under terms of the GNU General Public License as published --
-- by the Free Software Foundation; either version 2, or (at your --
-- option) any later version. The AVR-Ada Library is distributed in the --
-- hope that it will be useful, but WITHOUT ANY WARRANTY; without even --
-- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR --
-- PURPOSE. See the GNU General Public License for more details. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an --
-- executable this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
---------------------------------------------------------------------------
with AVR; use AVR;
with AVR.MCU;
package One_Wire.AVR_Wiring is
pragma Preelaborate;
OW_Line : constant AVR.Bit_Number := 4;
OW_DD : Boolean renames MCU.DDRB_Bits (OW_Line);
OW_Out : Boolean renames MCU.PortB_Bits (OW_Line);
OW_In : Boolean renames MCU.PinB_Bits (OW_Line);
end One_Wire.AVR_Wiring;
Код: Выделить всё
###########################################################################
## The AVR-Ada Library is free software; you can redistribute it and/or ##
## modify it under terms of the GNU General Public License as published ##
## by the Free Software Foundation; either version 2, or (at your ##
## option) any later version. The AVR#Ada Library is distributed in the ##
## hope that it will be useful, but WITHOUT ANY WARRANTY; without even ##
## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ##
## PURPOSE. See the GNU General Public License for more details. ##
###########################################################################
# This makefile is adapted from the sample Makefile of WinAVR by Eric
# B. Wedington, Jцrg Wunsch and others. As they released it to the
# Public Domain, I could pretend that I wrote it myself. Honestly, I
# removed many (probably useful) parts to better fit the GNAT project makes.
#
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make file.prog = Upload the hex file to the device, using avrdude.
# Please customize the avrdude settings below first!
#
# make filename.s = Just compile filename.adb into the assembler code only.
#
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
-include $(Makefile_pre)
# MCU name
MCU := attiny13
# GNAT project file
GPR := build.gpr
# put the names of the target files here (without extension)
ADA_TARGETS := main
#---------------- GNATMAKE Options ----------------
MFLAGS = -XMCU=$(MCU) -p -P$(GPR)
# -p : Create missing obj, lib and exec dirs
#---------------- Programming Options (avrdude) ----------------
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
#---------------- Programming Options (avrdude) ----------------
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Type: avrdude -c ?
# to get a full listing.
#
AVRDUDE_PROGRAMMER = ftbb
# com1 = serial port.
# programmer connected to serial device, add -b 57600 for Arduinos
AVRDUDE_PORT = ft0 -B 19200
AVRDUDE_WRITE_FLASH = -U flash:w:
AVRDUDE_WRITE_EEPROM = -U eeprom:w:
AVRDUDE_READ_LFUSE = -U lfuse:r:lfuse.hex:i
AVRDUDE_READ_HFUSE = -U hfuse:r:hfuse.hex:i
AVRDUDE_READ_EFUSE = -U efuse:r:efuse.hex:i
AVRDUDE_WRITE_LFUSE = -U lfuse:w:lfuse.hex:i
AVRDUDE_WRITE_HFUSE = -U hfuse:w:hfuse.hex:i
AVRDUDE_WRITE_EFUSE = -U efuse:w:efuse.hex:i
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE_COUNTER = -y
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
#======================
# Define programs and commands.
SHELL := sh
CC := avr-gcc
OBJCOPY := avr-objcopy
OBJDUMP := avr-objdump
SIZE := avr-size
NM := avr-nm
AVRDUDE := C:\program files\ftbb\avrdude
REMOVE := rm -f
COPY := cp
RENAME := mv
WINSHELL := cmd
GNATMAKE := avr-gnatmake
RESET_FTBB := C:\Ada_Projects\release_reset_on_ftbb\release_reset_ftbb.exe
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: build
ADA_TARGETS_ELF = $(addsuffix .elf, $(ADA_TARGETS))
ADA_TARGETS_HEX = $(addsuffix .hex, $(ADA_TARGETS))
ADA_TARGETS_EEP = $(addsuffix .eep, $(ADA_TARGETS))
ADA_TARGETS_LSS = $(addsuffix .lss, $(ADA_TARGETS))
ADA_TARGETS_SYM = $(addsuffix .sym, $(ADA_TARGETS))
ADA_TARGETS_SIZE = $(addsuffix .size, $(ADA_TARGETS))
# Create the necessary sub-directories
SUBDIRS := obj lcdobj lcdlib
build: $(ADA_TARGETS_ELF) $(ADA_TARGETS_HEX) $(ADA_TARGETS_EEP) \
$(ADA_TARGETS_LSS) $(ADA_TARGETS_SYM) $(ADA_TARGETS_SIZE)
%.size: %.elf FORCE
$(SIZE) --format=avr --mcu=$(MCU) $<
# Program the device.
%.prog: %.hex %.eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)$*.hex
# $(AVRDUDE_WRITE_EEPROM)
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
%.eep: %.elf
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
%.lss: %.elf
$(OBJDUMP) -h -S $< > $@
# Create a symbol table from ELF output file.
%.sym: %.elf
$(NM) -n $< > $@
# --- build and link using gnatmake, force rebuilding by gnatmake to
# make sure dependencies are resolved
%.elf: $(GPR) $(SUBDIRS) FORCE
$(GNATMAKE) $(MFLAGS) -XAVRADA_MAIN=$*
# Compile: create assembler files from Ada source files.
%.s : %.adb
$(GNATMAKE) -f -u $(MFLAGS) $< -cargs -S
%.s : %.ads
$(GNATMAKE) -f -u $(MFLAGS) $< -cargs -S
# Assemble: create object files from assembler source files.
%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# create the subdirectories
$(SUBDIRS):
$(REMOVE) -r $@
mkdir $@
# Target: clean project.
clean: clean_gnat clean_list
clean_gnat:
avr-gnatclean -XMCU=$(MCU) -P$(GPR)
clean_gnat_recursive:
avr-gnatclean -r -XMCU=$(MCU) -P$(GPR)
clean_list :
$(REMOVE) *.hex
$(REMOVE) *.eep
$(REMOVE) *.elf
$(REMOVE) *.map
$(REMOVE) *.sym
$(REMOVE) *.lss
$(REMOVE) *.ali
$(REMOVE) b~*.ad?
$(REMOVE) -rf $(SUBDIRS)
program:
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)main.hex
$(RESET_FTBB) FT232R\ USB\ UART
read_fuses:
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_LFUSE)
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_HFUSE)
# $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_EFUSE)
write_fuses:
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_HFUSE)
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_LFUSE)
# $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_EFUSE)
run: all program
FORCE:
# Listing of phony targets.
.PHONY : all finish \
build elf hex eep lss sym clean clean_list program
-include $(Makefile_post)
Код: Выделить всё
---------------------------------------------------------------------------
-- The AVR-Ada Library is free software; you can redistribute it and/or --
-- modify it under terms of the GNU General Public License as published --
-- by the Free Software Foundation; either version 2, or (at your --
-- option) any later version. The AVR-Ada Library is distributed in the --
-- hope that it will be useful, but WITHOUT ANY WARRANTY; without even --
-- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR --
-- PURPOSE. See the GNU General Public License for more details. --
---------------------------------------------------------------------------
project Build extends "avr_app" is
for Object_Dir use "obj";
for Exec_Dir use ".";
for Source_Dirs use (".");
end Build;
- Реклама
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
А кому нужна вообще точная температура воды в чайнике? Ну будет +-5 градусов - чтобы ошпарится будет достаточно любой температуры, но с разным временем, пока не сработает болевой порог. Так что калибровать ничего не нужно.Андрей СШ писал(а):Про расположение датчика снаружи думал и пришёл к выводу, что нужна специальная процедура калибровки, Сделать можно но настройка муторной станет. Именно поэтому и предпочитаю просто градиент от синего к красному. Такая индикация в отличие от ступенчатой не требует точной калибровки.
Насчёт DSки - наверное есть металлические варианты.
Вот для нецифрового варианта всё просто - берётся транзистор или диод в металле и его хоть до 150 градусов нагревай.Хочешь линейную шкалу - берите термопару или медный провод мотайте.
Кстати, нагрев происходит по логарифмической кривой.
Т.е. он замедляется приближаясь к максимуму температуры.
Поэтому как колибровать шкалу - это ещё вопрос.
Кому-то захочется индикации равномерно по температуре через равные промежутки, а кому-то по времени нагрева.
Ну ещё вариант - чисто физическо-биологический - как я предложил.
т.е. холодно, горячо (для человека), кипяток.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
у DS в пластике температура до 125, вроде на 25% выше необходимого, а с учётом того что корпус нагревается явно ниже 100С то с лихвой хватит.
про калибровку - да кому нужна высокая точность в данном аспекте!?
плавное перетекание цвета это конечно прикольно, но если это усложняет задачу, то можно обойтись. думаю три цвета вполне себе годный вариант.
ну можно 7
от холодных к тёплым.
всё равно никто чайник не выключает раньше закипания, а включают, как правило, потрогав его стенку
про калибровку - да кому нужна высокая точность в данном аспекте!?
плавное перетекание цвета это конечно прикольно, но если это усложняет задачу, то можно обойтись. думаю три цвета вполне себе годный вариант.
ну можно 7
всё равно никто чайник не выключает раньше закипания, а включают, как правило, потрогав его стенку
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Пластик не охота макать в кипяток.Karl2233 писал(а):у DS в пластике температура до 125, вроде на 25% выше необходимого, а с учётом того что корпус нагревается явно ниже 100С то с лихвой хватит.
Хотя электрочайники вон полностью из поастика и ничего. Люди пользуются.
Я всё это время думал что речь идёт о электрочайнике с автоматом выключения. А тут эвона как...Karl2233 писал(а):всё равно никто чайник не выключает раньше закипания, а включают, как правило, потрогав его стенку
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
зачем макать?!? я ведь грю - к корпусу приделать снаружи.
в любом удобном месте. можно даже снизу, где нагревательный элемент (в пятке чайника). а по периметру основания RGB ленту пустить...
автомат выключения есть.
но я частенько, если чайник недавно кипел, включаю его на минуту и не дожидаясь выключения снимаю и наливаю кипяток.
в любом удобном месте. можно даже снизу, где нагревательный элемент (в пятке чайника). а по периметру основания RGB ленту пустить...
автомат выключения есть.
но я частенько, если чайник недавно кипел, включаю его на минуту и не дожидаясь выключения снимаю и наливаю кипяток.
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Снизу точно не надо. Там нагреватель. Температура может быть много выше 100°.
По температурам DS18B20 слухи ходят именно о том, что при 125° оно работает, но не долго. Хотя с другой стороны высокая температура в чайнике тоже не постоянно.
У меня был только один случай выхода из строя DS18B20, но температуры там были высокие (иногда больше 100°) и подолгу.
По температурам DS18B20 слухи ходят именно о том, что при 125° оно работает, но не долго. Хотя с другой стороны высокая температура в чайнике тоже не постоянно.
У меня был только один случай выхода из строя DS18B20, но температуры там были высокие (иногда больше 100°) и подолгу.
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Андрей здравствуйте .. Прошу прощения..Андрей СШ писал(а):Про расположение датчика снаружи думал и пришёл к выводу, что нужна специальная процедура калибровки, Сделать можно но настройка муторной станет. Именно поэтому и предпочитаю просто градиент от синего к красному. Такая индикация в отличие от ступенчатой не требует точной калибровки.
Кроме того вообще в этой схеме есть два косяка:
1. Интерфейс "одна проволочка" требует точного соблюдения таймингов, а встроенный RC-генератор может поплыть при нагреве. Вывод: микроконтроллер надо располагать где похолодней (в ручке).
2. Говорят DS18B20 быстро дохнет при высоких температурах.
Исходный код тут. Над плавным переходом подумаю чуть позже, надо немного свои схемки доделать.
Спойлер
main.adbOne_Wire-AVR_Wiring.adsКод: Выделить всё
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; 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); begin RED := low; GREEN := low; BLUE := low; BEEP := low; DDRB_Bits := (0..3 => DD_Output, others => DD_Input); loop if One_wire.Reset then One_Wire.Send_command(16#CC#); One_Wire.Send_command(16#44#); end if; Wait_ms(1000); 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;MakefileКод: Выделить всё
--------------------------------------------------------------------------- -- The AVR-Ada Library is free software; you can redistribute it and/or -- -- modify it under terms of the GNU General Public License as published -- -- by the Free Software Foundation; either version 2, or (at your -- -- option) any later version. The AVR-Ada Library is distributed in the -- -- hope that it will be useful, but WITHOUT ANY WARRANTY; without even -- -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- -- PURPOSE. See the GNU General Public License for more details. -- -- -- -- As a special exception, if other files instantiate generics from this -- -- unit, or you link this unit with other files to produce an -- -- executable this unit does not by itself cause the resulting -- -- executable to be covered by the GNU General Public License. This -- -- exception does not however invalidate any other reasons why the -- -- executable file might be covered by the GNU Public License. -- --------------------------------------------------------------------------- with AVR; use AVR; with AVR.MCU; package One_Wire.AVR_Wiring is pragma Preelaborate; OW_Line : constant AVR.Bit_Number := 4; OW_DD : Boolean renames MCU.DDRB_Bits (OW_Line); OW_Out : Boolean renames MCU.PortB_Bits (OW_Line); OW_In : Boolean renames MCU.PinB_Bits (OW_Line); end One_Wire.AVR_Wiring;build.gprКод: Выделить всё
########################################################################### ## The AVR-Ada Library is free software; you can redistribute it and/or ## ## modify it under terms of the GNU General Public License as published ## ## by the Free Software Foundation; either version 2, or (at your ## ## option) any later version. The AVR#Ada Library is distributed in the ## ## hope that it will be useful, but WITHOUT ANY WARRANTY; without even ## ## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ## ## PURPOSE. See the GNU General Public License for more details. ## ########################################################################### # This makefile is adapted from the sample Makefile of WinAVR by Eric # B. Wedington, Jцrg Wunsch and others. As they released it to the # Public Domain, I could pretend that I wrote it myself. Honestly, I # removed many (probably useful) parts to better fit the GNAT project makes. # # On command line: # # make all = Make software. # # make clean = Clean out built project files. # # make file.prog = Upload the hex file to the device, using avrdude. # Please customize the avrdude settings below first! # # make filename.s = Just compile filename.adb into the assembler code only. # # # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- -include $(Makefile_pre) # MCU name MCU := attiny13 # GNAT project file GPR := build.gpr # put the names of the target files here (without extension) ADA_TARGETS := main #---------------- GNATMAKE Options ---------------- MFLAGS = -XMCU=$(MCU) -p -P$(GPR) # -p : Create missing obj, lib and exec dirs #---------------- Programming Options (avrdude) ---------------- # Output format. (can be srec, ihex, binary) FORMAT = ihex #---------------- Programming Options (avrdude) ---------------- # Programming hardware: alf avr910 avrisp bascom bsd # dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 # # Type: avrdude -c ? # to get a full listing. # AVRDUDE_PROGRAMMER = ftbb # com1 = serial port. # programmer connected to serial device, add -b 57600 for Arduinos AVRDUDE_PORT = ft0 -B 19200 AVRDUDE_WRITE_FLASH = -U flash:w: AVRDUDE_WRITE_EEPROM = -U eeprom:w: AVRDUDE_READ_LFUSE = -U lfuse:r:lfuse.hex:i AVRDUDE_READ_HFUSE = -U hfuse:r:hfuse.hex:i AVRDUDE_READ_EFUSE = -U efuse:r:efuse.hex:i AVRDUDE_WRITE_LFUSE = -U lfuse:w:lfuse.hex:i AVRDUDE_WRITE_HFUSE = -U hfuse:w:hfuse.hex:i AVRDUDE_WRITE_EFUSE = -U efuse:w:efuse.hex:i # Uncomment the following if you want avrdude's erase cycle counter. # Note that this counter needs to be initialized first using -Yn, # see avrdude manual. #AVRDUDE_ERASE_COUNTER = -y # Uncomment the following if you do /not/ wish a verification to be # performed after programming the device. #AVRDUDE_NO_VERIFY = -V # Increase verbosity level. Please use this when submitting bug # reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> # to submit bug reports. #AVRDUDE_VERBOSE = -v -v AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) #====================== # Define programs and commands. SHELL := sh CC := avr-gcc OBJCOPY := avr-objcopy OBJDUMP := avr-objdump SIZE := avr-size NM := avr-nm AVRDUDE := C:\program files\ftbb\avrdude REMOVE := rm -f COPY := cp RENAME := mv WINSHELL := cmd GNATMAKE := avr-gnatmake RESET_FTBB := C:\Ada_Projects\release_reset_on_ftbb\release_reset_ftbb.exe # Combine all necessary flags and optional flags. # Add target processor to flags. ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) # Default target. all: build ADA_TARGETS_ELF = $(addsuffix .elf, $(ADA_TARGETS)) ADA_TARGETS_HEX = $(addsuffix .hex, $(ADA_TARGETS)) ADA_TARGETS_EEP = $(addsuffix .eep, $(ADA_TARGETS)) ADA_TARGETS_LSS = $(addsuffix .lss, $(ADA_TARGETS)) ADA_TARGETS_SYM = $(addsuffix .sym, $(ADA_TARGETS)) ADA_TARGETS_SIZE = $(addsuffix .size, $(ADA_TARGETS)) # Create the necessary sub-directories SUBDIRS := obj lcdobj lcdlib build: $(ADA_TARGETS_ELF) $(ADA_TARGETS_HEX) $(ADA_TARGETS_EEP) \ $(ADA_TARGETS_LSS) $(ADA_TARGETS_SYM) $(ADA_TARGETS_SIZE) %.size: %.elf FORCE $(SIZE) --format=avr --mcu=$(MCU) $< # Program the device. %.prog: %.hex %.eep $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)$*.hex # $(AVRDUDE_WRITE_EEPROM) # Create final output files (.hex, .eep) from ELF output file. %.hex: %.elf $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ %.eep: %.elf -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ # Create extended listing file from ELF output file. %.lss: %.elf $(OBJDUMP) -h -S $< > $@ # Create a symbol table from ELF output file. %.sym: %.elf $(NM) -n $< > $@ # --- build and link using gnatmake, force rebuilding by gnatmake to # make sure dependencies are resolved %.elf: $(GPR) $(SUBDIRS) FORCE $(GNATMAKE) $(MFLAGS) -XAVRADA_MAIN=$* # Compile: create assembler files from Ada source files. %.s : %.adb $(GNATMAKE) -f -u $(MFLAGS) $< -cargs -S %.s : %.ads $(GNATMAKE) -f -u $(MFLAGS) $< -cargs -S # Assemble: create object files from assembler source files. %.o : %.S @echo @echo $(MSG_ASSEMBLING) $< $(CC) -c $(ALL_ASFLAGS) $< -o $@ # create the subdirectories $(SUBDIRS): $(REMOVE) -r $@ mkdir $@ # Target: clean project. clean: clean_gnat clean_list clean_gnat: avr-gnatclean -XMCU=$(MCU) -P$(GPR) clean_gnat_recursive: avr-gnatclean -r -XMCU=$(MCU) -P$(GPR) clean_list : $(REMOVE) *.hex $(REMOVE) *.eep $(REMOVE) *.elf $(REMOVE) *.map $(REMOVE) *.sym $(REMOVE) *.lss $(REMOVE) *.ali $(REMOVE) b~*.ad? $(REMOVE) -rf $(SUBDIRS) program: $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)main.hex $(RESET_FTBB) FT232R\ USB\ UART read_fuses: $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_LFUSE) $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_HFUSE) # $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_READ_EFUSE) write_fuses: $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_HFUSE) $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_LFUSE) # $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_EFUSE) run: all program FORCE: # Listing of phony targets. .PHONY : all finish \ build elf hex eep lss sym clean clean_list program -include $(Makefile_post)Код: Выделить всё
--------------------------------------------------------------------------- -- The AVR-Ada Library is free software; you can redistribute it and/or -- -- modify it under terms of the GNU General Public License as published -- -- by the Free Software Foundation; either version 2, or (at your -- -- option) any later version. The AVR-Ada Library is distributed in the -- -- hope that it will be useful, but WITHOUT ANY WARRANTY; without even -- -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- -- PURPOSE. See the GNU General Public License for more details. -- --------------------------------------------------------------------------- project Build extends "avr_app" is for Object_Dir use "obj"; for Exec_Dir use "."; for Source_Dirs use ("."); end Build;
Я про исходный код . Я не спец в программировании. И мне не понятно то что вы тут выложили.
Может кто разбирается? Прошу вашей помощи.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Слушайте, а что пишет даташит? Хотя там могут и приврать.Андрей СШ писал(а): По температурам DS18B20 слухи ходят именно о том, что при 125° оно работает, но не долго. ...
У меня был только один случай выхода из строя DS18B20, но температуры там были высокие (иногда больше 100°) и подолгу.
Есть два способа (объективно) проверить - теоретически и практически.
Первый - это поискать даташит на ABS. Может корпус DS и не из него сделан, но что-то близкое (мне кажется). Если ABS при 100 С живёт 2 часа, то о чём разговор? Но это я гадаю. Есть ли спецы по ABS?
(вот ведь блин, у меня мама занималась пластмассами, компаундами и клеями всю жизнь и я чуть химиком не стал, с детства её книжки почитывал). А про ABS не знаю ничего - импортный же. А мама оборонкой занималась.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
С ABS проблем нет - размягчается при 170° и больше. Проблема в чипе - при высоких температурах электроника быстрее стареет.
Думаю надо поступить проще - сделать и не париться. Сломается и ладно - невелика потеря. А когда сломается будем думать про другой датчик.
Инструкция как это компилируется здесь
http://geektimes.ru/post/257638/
там есть ошибки, но не критичные.
Плавное изменение сделать не сложно, но это надо пару часов спокойно подумать - а у меня что-то не выделяется столько без перерывов.
Думаю надо поступить проще - сделать и не париться. Сломается и ладно - невелика потеря. А когда сломается будем думать про другой датчик.
Инструкция как это компилируется здесь
http://geektimes.ru/post/257638/
там есть ошибки, но не критичные.
Плавное изменение сделать не сложно, но это надо пару часов спокойно подумать - а у меня что-то не выделяется столько без перерывов.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Заблуждение.Андрей СШ писал(а):С ABS проблем нет - размягчается при 170° и больше. Проблема в чипе - при высоких температурах электроника быстрее стареет.
Отжиг микросхем происходит при 150-170 С. Готовых, перед корпусировкой. Это для них нормальная температура - для кремния.
Деградация быстрее происходит у пластмассы - уже при 60 начинается - потому что это органика. Базовые знания физики вообще-то.
У многих советских мощных биполярных транзисторов рабочая температура кристалла 150гр.С, корпуса 175С.
PS
поглядел свойства ABS - сополимер Акрилонитрила (цианидный винил)-Бутадиена (основа каучуковых резин)-Стирола.
Размягчение начинается от 80-100 градусов. Влагопоглощение 0,3% за 24 часа при 20С. Был лучшего мнения о нём. Но не факт что DS из него.
теперь возьмём советский
Эпоксидный компаунд МБК или КГСМ - Влагопоглощение такое же (это считается проблемой эпоксидки
В него окунают кристаллы советских микросхем перед корпусировкой.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
в даташите написано что диапазон измерений DS в пластике до 125С, значит рабочая Т явно больше.
кипение воды 100С, на корпусе явно меньше чем 100. так что ничего не сгорит.
а на счёт размещения внизу.. да, погорячился я
значит всё можно разместить в ручке
про кремний. рабочая Т у кремния 125 (вспомните усилитель Агеева), максимальная 150-175. так что ничего не сгорит.
кипение воды 100С, на корпусе явно меньше чем 100. так что ничего не сгорит.
а на счёт размещения внизу.. да, погорячился я
значит всё можно разместить в ручке
про кремний. рабочая Т у кремния 125 (вспомните усилитель Агеева), максимальная 150-175. так что ничего не сгорит.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
честно говоря, размещение на корпусе, в ручке и в любом другом месте, кроме воды - это самообман. Никакой корректной температуры не получить. Показания будут зависеть от внешних воздействий - холодно ли в помещении, есть ли сквозняк, насколько долго холодно.Karl2233 писал(а):в даташите на корпусе явно меньше чем 100.
Можно так нехило обмануться и сунуть палец в горячую воду, потому что корпус ещё холодный и не прогрелся, а внутри уже кипяток - электрочайник греется за пару минут.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
да ну!

тащемто, вода кипит при 100С вне зависимости от окружающей Т.
так что если в комнате будет или 18 или 32 градуса вода вскипит всё равно при 100.
а если планируется использовать сабж в лесу (например на зимних шашлыках или катании на лыжах) то чайнику, конечно, вначале придётся размораживать лёд, и только потом вскипать. но всё равно при 100С.
так что окружающая Т на обсуждаемый показометр вряд ли окажет существенное влияние.
А кому нужна вообще точная температура воды в чайнике?
тащемто, вода кипит при 100С вне зависимости от окружающей Т.
так что если в комнате будет или 18 или 32 градуса вода вскипит всё равно при 100.
а если планируется использовать сабж в лесу (например на зимних шашлыках или катании на лыжах) то чайнику, конечно, вначале придётся размораживать лёд, и только потом вскипать. но всё равно при 100С.
так что окружающая Т на обсуждаемый показометр вряд ли окажет существенное влияние.
Последний раз редактировалось Karl2233 Вт авг 25, 2015 11:00:12, всего редактировалось 1 раз.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Хе-хе, подловили , что-ли?Karl2233 писал(а):да ну!А кому нужна вообще точная температура воды в чайнике?
А вы хоть раз в жизни меряли температуру воды при которой у вас палец руки опущенный в воду перестаёт терпеть?
или температуру которую терпит ваша ступня на ноге?
А я в детстве всё промерял. И не по заданию, а из любопытства.
А нынешним детям на всё похер.
Даже слово "хер" не знают откуда пошло есть на Руси.
Ну и вот.
Я тоже, в некотором роде, радиоинженер...
Re: Подсветка чайника с меняющимся цветом в зависимости от t
а зачем мне совать палец в горячую или кипяток?!
болевой порог возникает при 50С (+/-), вода кипит при 100С.
какая связь между пальцем и кипением воды?
я не подлавливаю, я говорю что мы пытаемся сделать показометр(цветомузыкукипение), и особая точность какбэ не нужна.
з.ы. я уже начал чайник курочить для глубокой модернизации(с) иллюминацию вмонтирую в ручку, там же управление и датчик.
болевой порог возникает при 50С (+/-), вода кипит при 100С.
какая связь между пальцем и кипением воды?
я не подлавливаю, я говорю что мы пытаемся сделать показометр(цветомузыкукипение), и особая точность какбэ не нужна.
з.ы. я уже начал чайник курочить для глубокой модернизации(с) иллюминацию вмонтирую в ручку, там же управление и датчик.
Последний раз редактировалось Karl2233 Вт авг 25, 2015 11:07:02, всего редактировалось 1 раз.
- bad2cat
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Пт июн 12, 2015 09:21:56
- Откуда: Челяба-сити
Re: Подсветка чайника с меняющимся цветом в зависимости от t
Не, ну так и я о том же говорю, что особая не нужна.Karl2233 писал(а):а зачем мне совать палец в горячую или кипяток?!![]()
болевой порог возникает при 50С (+/-), вода кипит при 100С.
какая связь между пальцем и кипением воды?
я не подлавливаю, я говорю что мы пытаемся сделать показометр(цветомузыкукипение), и особая точность какбэ не нужна.
Но хоть какая-то - нужна. А какая точность у датчика размещённого в ручке или в корпусе? Разница между водой может достичь 20 градусов.
Причём эта разница не постоянна - я вот о чём говорю.
Когда датчик в воде - то пусть он даже врёт, но врёт с известным отклонением. Можно приспособится.
Я тоже, в некотором роде, радиоинженер...


