Fantomas
Активный участник
- Регистрация
- 17 Янв 2009
- Сообщения
- 741
- Реакции
- 15
- Местонахождение
- г. МО Ярославка. Пушкино - Софрино - д.Григорково
- Имя
- Алексей
- Техника
- Мотоцыклет Suzuki Boulevard M50, Автомобиль Нива и Соболь, Тайги и квадра теперь нет...
Здравия всем!
Даже не знаю с чего начать... сейчас будет много букав
Вообщем давно давно, еще когда у меня была тайга, родилась идея сделать самодельный термометр не уступающий (ну или уступающий но не сильно) всяким фирменным изделиям. Самое главное это цена. Основное требование это стоимость, она не должна быть более 500-700 (максимум 1000) руб.
До этого много всего было перепробовано, и механические термометры и периодические замеры температуры двигателя с помощью пирометра (инфракрасный измеритель температуры) и всяческие измерители типа скутер`ок (кстати куда то делась тема с его обсуждением) и даже измерение температуры с помощью дешевого мультиметра с выносной термопарой. Потом были и фирменные приборы в создании которых и я принимал участие (как технический консультант).
Время идет, тайгу продал, после был квадроцикл у которого водяное охлаждение и штатный датчик естественно, так что особой нужды не было.
Но не смотря не на что идея сделать именно нормальный самодельный прибор осталась.
Сейчас же удалось найти немного времени и приступить к задуманному.
Вообщем по порядку.
Прибор будет делаться естественно на микроконтроллере. Если еще точнее то на arduino.
Может быть если всё будет ок то позже перепишу код на атмегу8, а может и нет, скорее всего буду использовать ардуино про мини.
Прибор состоит из контроллера, двух датчиков, двух 4 значных семисегментных индикаторов и некоторого количества обвязки.
В данный момент применяются готовые экраны для удобства прототипирования и тестирования. Позже сделаю печатную плату под подходящий корпус.
Схема работы следующая, контроллер с помощью встроенного аналового-цифрового преобразователя считывает сигнал с датчика -> значение сглаживается по формуле "скользящего среднего" -> полученное значение пересчитывается в сопротивление -> по формуле Стейнхарта-Харта вычисляется температура -> полученное значение температуры выводиться на экран.
Датчик
Датчиком является терморезистор MF-58 рабочая температура до 250 (а по некоторым данным до 300) градусов, этот резистор часто используется в 3D принтерах для контроля температуры хотэнда. Данный резистор имеет сопротивление 100 кОм что неплохо, так как на точность измерений не будет влиять сопротивление проводов. Теперь о плохом, терморезистор не линейный элемент, то есть сопротивление по которому процессор потом будет рассчитывать температуру меняется не одинаково. Но для этого у нас и есть формула товарищей Стейнхарта и Харта которая и учитывает эту не линейность. Но для этого в формулу нужно подставить три коэффициента которые обычно есть в технической документации на данный термистор. Но беда в том что эти термисторы я заказывал у китайцев и никакой информации по ним они мне толком не прислали. Отписываются и присылают стандартную документацию на линейку данных термисторов, а какой именно экземпляр у меня не говорят. Так же данные коэффициенты можно вычислить самостоятельно зная сопротивления термистора в двух-трех фиксированных температурах, так же есть табличные значения. Сейчас я именно этим и занят. Датчик является отрицательным плечом в делителе напряжения. Для повышения точности, опорным напряжением делителя и аналового-цифрового преобразователя контроллера является выход стабилизатора 3.3 Вольт.
Экран
Экран (для теста пока один) собран на сдвиговых регистрах 74 серии 74HC595 если кому интересно. Контроллер отправляет по два байта каждые 6 мсек. Первый байт определяет какие сигменты индикатора будут светиться, а второй байт определяет место положение знака. Вообщем одним словом динамическая индикация. Экраном может служить любой LED или ЖК экран. Можно сделать линейную шкалу из светодиодв, вообщем почти все что душе угодно, нужно будет только слегка переписать код программы и прошить его в контроллер.
Доработки (в ближайшее время)
1. Для обеспечения большей точности и надежности в плече делителя вместе с датчиком нужно поставить советский прецизионный резистор например С2-29В, этот резистор очень точный и имеет очень высокие характеристики по точности в большом диапазоне температур, так как все резисторы меняют свое сопротивление в зависимости от температуры окружающий среды, этот же меньше всех.
2. Высоко стабилизированное опорное напряжение. Например на мс TL431 или чего то еще.
3. Возможно придется программно как то корректировать температуру если это не удастся сделать подобрав А, В, С коэффициенты.
4. После прикрутить к коду всякие красивости типа моргания индикаторов при приближении к пороговой температуре, программирование этой пороговой температуры, выход для звуковой сигнализации (пищалка) чего нибудь еще.
Сейчас же показатели такие (результат сравнивался с показателями цифрового датчика DS18B20 и обычного спиртового комнатного термометра)
Комнатная температура полностью совпадает со всеми тремя
Температура за окном так де совпадает.
Температура кипящей воды выше на 10 градусов (вот она не линейность).
В ближайшее время я заполучу лабораторный ртутный термометр от 0 до 160 градусов и произведу новые замеры. В планах добиться точности хотя бы +-5 градусов во всем диапазоне температур. Если не получиться во всем то только для диапазона высоких температур, например от 100 до 200 градусов.
Из приятного то что в последствии к данному термометру можно прикрутить функции например тахометра, измерения температуры окружающего воздуха, часов, счетчика моточасов итд. Главное на сейчас разобраться с точным измерением температуры.
Просьба ко всем кого заинтересовало подключаться к обсуждению. Кому интересно скину вам скетч, он изобилует комментариями и разобраться будет совсем не сложно.
Немного фото
Фото с температурой снятой с цифрового датчика DS18B20
Температура на моем термометре (отлично)
Оба датчика помещены в яйцо от киндер сюрприза и вынесены за окно
Потом оба датчика помещены в термо кружку с кипятком
Показания цифрового датчика (похоже на правду)
Фото показаний моего термометра (перебор)
Даже не знаю с чего начать... сейчас будет много букав
Вообщем давно давно, еще когда у меня была тайга, родилась идея сделать самодельный термометр не уступающий (ну или уступающий но не сильно) всяким фирменным изделиям. Самое главное это цена. Основное требование это стоимость, она не должна быть более 500-700 (максимум 1000) руб.
До этого много всего было перепробовано, и механические термометры и периодические замеры температуры двигателя с помощью пирометра (инфракрасный измеритель температуры) и всяческие измерители типа скутер`ок (кстати куда то делась тема с его обсуждением) и даже измерение температуры с помощью дешевого мультиметра с выносной термопарой. Потом были и фирменные приборы в создании которых и я принимал участие (как технический консультант).
Время идет, тайгу продал, после был квадроцикл у которого водяное охлаждение и штатный датчик естественно, так что особой нужды не было.
Но не смотря не на что идея сделать именно нормальный самодельный прибор осталась.
Сейчас же удалось найти немного времени и приступить к задуманному.
Вообщем по порядку.
Прибор будет делаться естественно на микроконтроллере. Если еще точнее то на arduino.
Может быть если всё будет ок то позже перепишу код на атмегу8, а может и нет, скорее всего буду использовать ардуино про мини.
Прибор состоит из контроллера, двух датчиков, двух 4 значных семисегментных индикаторов и некоторого количества обвязки.
В данный момент применяются готовые экраны для удобства прототипирования и тестирования. Позже сделаю печатную плату под подходящий корпус.
Схема работы следующая, контроллер с помощью встроенного аналового-цифрового преобразователя считывает сигнал с датчика -> значение сглаживается по формуле "скользящего среднего" -> полученное значение пересчитывается в сопротивление -> по формуле Стейнхарта-Харта вычисляется температура -> полученное значение температуры выводиться на экран.
Датчик
Датчиком является терморезистор MF-58 рабочая температура до 250 (а по некоторым данным до 300) градусов, этот резистор часто используется в 3D принтерах для контроля температуры хотэнда. Данный резистор имеет сопротивление 100 кОм что неплохо, так как на точность измерений не будет влиять сопротивление проводов. Теперь о плохом, терморезистор не линейный элемент, то есть сопротивление по которому процессор потом будет рассчитывать температуру меняется не одинаково. Но для этого у нас и есть формула товарищей Стейнхарта и Харта которая и учитывает эту не линейность. Но для этого в формулу нужно подставить три коэффициента которые обычно есть в технической документации на данный термистор. Но беда в том что эти термисторы я заказывал у китайцев и никакой информации по ним они мне толком не прислали. Отписываются и присылают стандартную документацию на линейку данных термисторов, а какой именно экземпляр у меня не говорят. Так же данные коэффициенты можно вычислить самостоятельно зная сопротивления термистора в двух-трех фиксированных температурах, так же есть табличные значения. Сейчас я именно этим и занят. Датчик является отрицательным плечом в делителе напряжения. Для повышения точности, опорным напряжением делителя и аналового-цифрового преобразователя контроллера является выход стабилизатора 3.3 Вольт.
Экран
Экран (для теста пока один) собран на сдвиговых регистрах 74 серии 74HC595 если кому интересно. Контроллер отправляет по два байта каждые 6 мсек. Первый байт определяет какие сигменты индикатора будут светиться, а второй байт определяет место положение знака. Вообщем одним словом динамическая индикация. Экраном может служить любой LED или ЖК экран. Можно сделать линейную шкалу из светодиодв, вообщем почти все что душе угодно, нужно будет только слегка переписать код программы и прошить его в контроллер.
Доработки (в ближайшее время)
1. Для обеспечения большей точности и надежности в плече делителя вместе с датчиком нужно поставить советский прецизионный резистор например С2-29В, этот резистор очень точный и имеет очень высокие характеристики по точности в большом диапазоне температур, так как все резисторы меняют свое сопротивление в зависимости от температуры окружающий среды, этот же меньше всех.
2. Высоко стабилизированное опорное напряжение. Например на мс TL431 или чего то еще.
3. Возможно придется программно как то корректировать температуру если это не удастся сделать подобрав А, В, С коэффициенты.
4. После прикрутить к коду всякие красивости типа моргания индикаторов при приближении к пороговой температуре, программирование этой пороговой температуры, выход для звуковой сигнализации (пищалка) чего нибудь еще.
Сейчас же показатели такие (результат сравнивался с показателями цифрового датчика DS18B20 и обычного спиртового комнатного термометра)
Комнатная температура полностью совпадает со всеми тремя
Температура за окном так де совпадает.
Температура кипящей воды выше на 10 градусов (вот она не линейность).
В ближайшее время я заполучу лабораторный ртутный термометр от 0 до 160 градусов и произведу новые замеры. В планах добиться точности хотя бы +-5 градусов во всем диапазоне температур. Если не получиться во всем то только для диапазона высоких температур, например от 100 до 200 градусов.
Из приятного то что в последствии к данному термометру можно прикрутить функции например тахометра, измерения температуры окружающего воздуха, часов, счетчика моточасов итд. Главное на сейчас разобраться с точным измерением температуры.
Просьба ко всем кого заинтересовало подключаться к обсуждению. Кому интересно скину вам скетч, он изобилует комментариями и разобраться будет совсем не сложно.
Немного фото
Фото с температурой снятой с цифрового датчика DS18B20
Температура на моем термометре (отлично)
Оба датчика помещены в яйцо от киндер сюрприза и вынесены за окно
Потом оба датчика помещены в термо кружку с кипятком
Показания цифрового датчика (похоже на правду)
Фото показаний моего термометра (перебор)