Еще раз о STM32 и DS18B20 (подправлено)

Решил подцепить DS18B20 к STM32 по двухпроводной шине. Задача несложная, благо и 1-wire уже не раз ковырял (первый раз лет 15 назад, еще на PIC, цеплял и ключи-идентификаторы и термометр), да и на STM32 тема сейчас избитая, примеров навалом. Прицепил термометр к известной плате STM32 Mini, и, хоть и не люблю копипастить, но все же взял готовую библиотеку от steel_ne из его статьи «Stm32 + 1-wire + DMA» и ее продолжения — мне понравилось это решение. Подправил чуть-чуть на свободный у меня USART3 и, после устранения ВСЕХ моих ошибок )), все заработало, за что автору большое спасибо.
К чему это я? А вот — главной моей ошибкой было то, что цеплял я термометр по двухпроводной схеме. И температура не измерялась, +85 градусов, хоть удавись… У меня термометры уже работают по двухпроводной схеме на AT91SAM7SE512 и раньше на PIC16F84 работали, поэтому вопрос для меня о схеме подключения особо не стоял, в даташиты я на эту тему давно не смотрел и схему автора вышеупомянутой статьи тоже глянул одним глазом. Посмотрел повнимательнее на схему в статье, а там термометр подключен по трем проводам. Подключил и я питание – работает. Проверил на Атмеле – но там несколько тех же DS18B20 на двух проводах стоят и подцеплены резистором 4,7 К к питанию, но правда там к 5 В. Ага, понятно, надо разбираться, ведь работает же оно на 5 вольтах… Вот тут-то и пригодилось свойство альтернативности выводов в STM32.


Читать дальше

Часы на микроконтроллере msp430. Вундервафля с термометром, будильником и управлением нагрузкой.

Ранее я описал методы работы микроконтроллера от Texas Instruments, msp430g2553 с различными устройствами. Это были устройства индикации (на контроллерах hd44780 и tm1638), датчик температуры ds18b20, и часы реального времени ds1394. Теперь настало время объединить эти девайсы. Так уж получилось, что у меня уже была плата, на которой добрыми китайцами собран 7-сегментный индикатор, управляемый контроллером tm1638, и, недолго думая, я решил изготовить плату, которая бы конструктивно подходила к плате индикации от добрых китайцев. Вот, что из этого у меня вышло:




Читать дальше

Эмулятор DS18b20 на ATTiny2313

Мне несколько раз приходилось делать устройства, которые должны были так или иначе реагировать на изменение температуры (а не просто отображать), и пару раз я нарывался на ошибки уже при работе устройства, потому что не достаточно хорошо протестировал работу с температурой при отладке. Поэтому, когда oss попросил меня изобразить волшебную коробочку с кнопками и дисплеем, которая прикидывалась бы градусником, идея пришлась мне по нраву.

Коробочка снабжена индикатором на три разряда, который показывает установленную температуру, двумя кнопками для установки нужного значения и портом 1-wire. Температуру можно выставлять в диапазоне от -55 до +99 градусов. Внутре у ней ATTiny2313.

Так-как задачка полной эмуляции всех фич градусника передо мной не стояла, коробочка обделена многими крутыми штуками. Проще сказать, что она умеет:
— Команду пропуска адреса (Skip ROM)
— Команду чтения адреса (Read ROM)
— … сравнения адреса (Match ROM)
— Чтение памяти (той, где температура)

Иначе говоря, эмулятор покрывает базовый функционал датчика. А вот работать с порогами температуры, командой поиска (Search ROM) и сохранением настроек, он не умеет.

Серийный номер (он-же адрес 1-wire) выставляется при прошивке, и без программатора сменить его нельзя. Это конечно большой минус, но для устройств, в которых всего один термометр, адрес не важен.

Исходники (AVR Studio 4 + WinAVR)
Схема
А под катом, небольшой спич о том, как это работает


Читать дальше
  • +14
  • 12 февраля 2013, 01:23
  • dcoder
  • 2

Подключение ds18b20 к msp430 (Launchpad)

Долго ли коротко ли...

Заказал я себе халявных сэмплов от maxim (C), — датчиков температуры "ds18b20",  они мне довольно шустро были доставлены благодаря FedEx, и начал я с ними разбираться
запись в блоге
вы18и20-рв44780
ds18b20


далее

STM32F1, STM32F2, LPC1768 + 18B20 + ow_search от MAXIM.

Ну, раз пошла такая пьянка (на многих форумах оживился интерес к ds1820), выкладываю свое, типа творчество.
Для умного дома понадобилось измерение температуры. А так как дом большой, датчиков получается до 2-х десятков. Датчики простые, но очень капризные. Поэтому решил под работу с ними выделить отдельный МК. Он будет их опрашивать, формировать строку с данными и слать ее по уарту в головной модуль, который уже займется отображением и управлением.


Читать дальше