Всем привет.
По поводу лимончеллы и дензнаков не переживайте, превращать хобби в работу - самое глупое занятие. Конец хобби. В общем, все 100% халява, было бы за что...
Отмазка.
Все тута собранное делалось из подручных материалов и преследовало целью не столько получить готовый девайс, сколько во время разработки разобраться с программированием и особенностями работы устройств. Собиралось в основном из того, что было. Потому и контроллер - Atmega328P, хотя код можно скомпилировать и под банальную 8-ку (на ней как раз все и отлаживалось).
Плата
Плата разводилась как тестово-отладочная, своего рода такая специализированная "макетка".
Цифровые термометры опрашиваются одновременно (подключены на разные пины, что для даллас-интерфейса - моветон, но позволяет упростить код) Подтяжка ноги данных сделана SMD- резисторами прямо между ногами штепселей. На схеме не указано.
Модуль определения давления, та еще гадость, внезапно работает от 3.3В, в отличие от остальной схемы, питающейся от 5 в. Подозреваю, что можно было запитать все от 3.3, это в рамках спецификации, но мы пошли другм путем и запитали микросборку через отдельный стабилизатор 3,3В, а шины данных SCL и SDA ограничили стабилитронами на те же 3.3 в. Их тоже надо подтянуть по питанию к 3.3В резисторами 4.7К
ЖКИ, какой был в наличии. 2х16 символов на базе чипсета HD44780U, можно выбрать любой дофига их, Экран подключен по схеме 4-х проводов (половина шины)
Питание схемы - через 5-вольтовый стабилизатор. Для программирования разведен стандартный ISP-разъем.
так как плата отладочная, наверняка есть в ней немного косяков, что-то м.б. придется добить проводами поверх. Всего было сделано 2 платы, большинство багов во второй исправлено.
Разводка в Спринте. ЛУТ. Ничего неожиданного.
Принципиальной схемы этого непотребства нет. Все проектировалось левой задней по даташитам. Туда же направлю и за подбором номиналов, что где не указано.
Материалы.
Понадобится:
Atmega328P-PU или аналог, Подойдет и atmega8, но потребует перекомпиляции прошивки. Опционально - в панельке.
4 шт градусников ds18b20 в нерж. стаканчике на проводе. Ищем на али и ибее.На них напаиваем штепсель 3pin (+5B красный провод - по центру) Колхозим с компа или магазина радиотоваров.
Бародатчик BMP085 (микросборка на плате) там же.
ЖКИ-табло 16х2 символов. Обязательно на контроллере HD44780 (это типа промстандарт, так что найти - не проблема).
подстроечник 3362p 100К для контрасности.
стабилизаторы на 3.3 и 5 в (LM1117-3.3 и LM7805 или любые аналоги)
стабилитроны 3.3В (берем самые маломощные, а то дадут с ногой в полмилиметра)
конденсаторы 10мкф и 100пф (даташит на 7805)
SMD-резисторы 4.7К - штук 10. (подтяжка шины данных к 1 для градусников - 4 шт и шины данных SDA/SCL для барометра.
кварц 1-16Мгц и 2 конденсатора 2.2пф - если планируется тактование от внешнего кварца. Все рекомендуют, но оно и без него работает. Не ракету же запускаем.
Гнездо ISP 2х5 ног. Можно впаять 2-рядную гребенку, или вообще не впаивать, а прошить камень отдельно.
Прямую штепсельную гребенку, и папу и маму - для подключения 4-х датчиков, бародатчика и табло.
разъем питания (разведено под 2.5 мм), но с напильником впаяно 3.5 мм.
текстолит 10х10 см.
2 конденсатора в обвязку к 5-вольтовому стабилизатору. 1 на вход потолще 100мкф25В - поддерживающий, и 0,1мкф - сглаживающий.
Стабилизатор 3.3 включен без обвязки.
Табло крепится штепсельной гребенкой (14 или 16 ног) и четко лежит на гнезде питания и ISP-разъеме, так что эти детали лучше соблюсти.
Кнопки, реле 5В, клеммник - опционально для тех, кто придумает, зачем оно ему надо и найдет силы закодить.
Если нет, прямо просится следующее надругательство над схемой:
-убираем все неиспользуемые монтажные пятаки
-перенесем бародатчик под ЖКИ.2 линии данных как раз там и проходят, перемычками опускаясь в нижнюю часть платы. а по высоте если его впаять
-убираем блок кнопок и реле вместе с лишней разводкой.
-блок штепселей термометров переносим под isp-разьем, да еще и разворачиваем их под 90 градусов, чтоб торчало с торца.
-отрезаем нижнюю половину платы и колхозим православный корпус.
UPD: попробовал, вроде все нормуль, развелось - разместилось, даже красиво, куча перемычек ушла, но до железа не проверял, запросто и там косяки. Кинул в архив.
Исходники.
Привожу проект c исходниками на С под AVR-Studio и готовый код для Atmega328P. но лучше туда не лезть
Прошивка в наборе рассчитана на 1 МГц тактовой частоты (т.е. должна заработать на камне с дефолтовыми настройками фьюзов из магазина и встроенном тактовом генераторе. Т.е. кварц и пр можно не впаивать.
Код.
Все примитивно. В основном цикле идет постоянный опрос 4-х термометров DS18B20 и барометра BMP085. Показания температуры выводятся на экран. Дополнительно считается температура кипения чистого спирта при данном атмосферном давлении. Все по-крестьянски, никаких прерываний и прочих излишеств.
На перспективу планировалось запитать от како-го либо термометра релюшку и сделать правильное пользовательское меню с 4-мя кнопками.
Сразу же скажу: 1-2 КВТ на 220 В - это ток порядка 5-10А. Максимально релюка такого типоразмера скоммутирует 1-2А, т.е. для переключения ТЭНов решение никак не прокатит. Или городим некую каскадную схему, или гуглим симисторы соответствующей мощности.А вот рулить клапаном подачи воды и т. п. - научить можно.
Про график кипения. Раз и навсегда.
в сети этот график бродит повсеместно, в виде рисунка-графика, в виде таблицы, до сотых долей градуса, наверняка есть и формулы.
Все это вызывает холивары, которые выносят мозг не только участникам, но и случайным жертвам.
как человек, оттрубившему 5 лет физфака, хочу поставить точку.
Предпосылки следующие:
1. Все физические законы в первом приближении аппроксимируются прямой линией, т.е. графиком вид y=k*x+b.
2. Нет у простых ученых градусника, позволяющего определить температуру с точностью до сотых/тысячных градуса, да оно по большому счету и не нужно.
3. Снять график темпереатуры кипения жидкости от давления с градацией в 1 мм рт ст - тот еще никому не нужный геморрой, учитывая, что зависимость будет типичная, как и для всех остальных жидкостей.
Таким образом, ноги у всех этих графиков растут из одного и того же источника, снятого когда-то кем-то по 2-3 точкам и внесенного в справочники.
Для программы за основу взят рисунок, на котором четко видна температура при 2-х значениях давления. По ним рассчитаны коэффициенты k и b (см п.1)
вышла формула t=p/3555,25+49,6; где p - давление в Паскалях.
для целочисленного вычисления она преобразована в 10t=(press*10-973250)/3555+770 - возвращает температуру в десятых без запятой;
Полученная формула с точностью до сотых покрыла и табличные значения, и тем более совпала с рисунком.
формула не 100% точна, но на заданном диапазоне давлений позволяет рассчитать температуру с точностью, превышающей точность измерения цифрового термометра (0,1С)
И все, нехрен далее лохматить бабушку. Каждый пьет свое.
Перевод из Па в мм рт. ст. - как в Википедии:
Pmm=Ppa*1000/133322
Про градусники
Очень неплохо показывают. Проверяли на талой воде и кипятке. Могут показать и сотые доли градуса, но т. к. заявленная производителем точность - 0,1 градуса, все, что точнее - электронный бред. Каноничное включение устройств на даллас-интерфесе - параллельное, т.е. на 3 контакта можно было бы прицепить целую кучу приборов и опрашивать по-очереди, но есть мнение, что китайцы усиленно штампуя мелкую электронику не брезгуют давать устройствам совпадающие адреса устройств. Так что 4 и все. Зато опрашиваются одновременно. Без особых проблем этой же библиотекой можно увеличить до 8, но с изменением в коде и разводке.
Про бародатчик.
В работе было задействовано 2 одинаковых бародатчика. Алгоритм их вычислений проверялся неоднократно.Тем не менее, результат измерений давления стабильно вызывал недоумение.
Алгоритм там достаточно кривой: в бародатчик на заводе зашита куча калибровочных констант. По непростому алгоритму исходя из них и измеряемых текущих величин происходит рассчет температуры, а потом и давления. Для любознательных - го в даташит.
Данные контрольного примера из даташита, подставленные в алгоритм дали результат из того же даташита, т.е. алгоритм - походу верный. Неделю его чекал, не прикопаешься.
Данные температуры, рассчитанные по реальным значениям более соответствуют космическому вакууму, т.е. минус 100-150 градусов.
Давление, полученное обоими устройствами совпадает до предпоследнего знака, но резко рознится со значениями, характерными для текущей высоты над уровнем моря. От слова "никак". В итоге списав все неурядицы на явно китайское происхождение японского датчика, скорректировали различия показаний сдвигом нуля рассчитанного давления на 20 (!!) мм рт.ст. и последующим "тарировании" прибора по советскому бытовому анероиду.
Вот это все уже серьезно, и как-то дискредитирует доверие к бародатчику. Хотя... работает же.
В архиве:
Схема1.lay - разводка отладочной платы с блекджеком и кнопками
Схема2.lay - аналог, но только табло и датчики
atmega_rs232.hex - прошивка под Atmega328P (фьюзы - по умолчанию, 1МГц)
BMP085 - папка с исходниками
А вот и исходники
Будут вопросы - задавайте.