Схема замещения коммутатора DS2409 шины 1WIRE на микроконтроллер 12F675
Схема замещения коммутатора DS2409 шины 1WIRE на микроконтроллер 12F675
А. А. Шабронов
Приведено описание схемы замещения коммутатора DS2409 на микроконтроллер PIC 12F675 для работы с однопроводным интерфейсом 1WIRE. Основное преимущество данного замещения заключается в применении широкодоступных микроконтроллеров, вместо снятых с производства коммутаторов DS2409 и увеличение линий коммутаций до пяти. Замена микроконтроллером позволяет считывать большее количество датчиков и использовать все ранее подготовленное программное обеспечение интерфейса 1WIRE.
Ключевые слова: DS2409, DS1820, интерфейс 1WIRE, 12F675.
1. Введение
1-WIRE представляет собой информационную сеть, использующую для осуществления цифровой связи одну линию данных и один возвратный (или земляной) провод [1]. Таким образом, для реализации среды обмена этой сети могут быть применены доступные кабели, содержащие неэкранированную витую пару той или иной категории, и даже обычный телефонный провод.
Важным элементом 1WIRE является коммутатор DS2409 [2] для создания различных топологий сети, который в настоящее время снят с производства. Далее рассмотрим предлагаемую схему замещения и его особенности.
2. Схема замещения DS2409
Схема замещения DS2409 для пяти каналов на микроконтроллере 12F675(U1) представлена на рис.
1. Схема и печатная плата замещения DS2409 подготовлена в редакторе печатных плат DipTracce и находиться в каталоге [7] , файл konferen2021_ds2409_zamena_v1.zipМикроконтроллер U1 включен выводом GP5 на вход шины 1WIRE через разъем XP6 [4].
Выводы U1 GP0-GP4 управляют N-канальными MOSFET транзисторами с изолированным затвором. Выбран наиболее доступный и широко распространенный тип транзистора 2N7000, сопротивление канала которого в открытом состоянии составляет единицы Ома[3].
Выводы U1 GP0-GP4 устанавливаются в режим логического нуля или единицы с «подтяжкой» через внутреннее сопротивление микроконтроллера, что позволяет отказаться от внешних элементов. Для фильтрации импульсных помех по шине питания используется конденсатор С1.
Выходные сигналы формируются от пяти транзисторных ключей Q1-Q5. Открытый транзистор создает сквозной канал для своего направления.
Управление состоянием ключей Q1-Q5 меняет информационный поток шины 1WIRE. Предусмотренные состояния IN-1W=OUT-1W-1 до IN-1W=OUT-1W-5 разделяют емкостную нагрузку внешних линий и позволяют подключить большее количество датчиков шины.
Однако, есть возможность включения всех выходных шин вместе, или в любой другой комбинации. Такой вариант может быть востребован, если сумма нагрузок линий не превышает предельной величины в данной конкретной реализации.
Рис. 1. Схема замещения DS2409 для пяти каналов 1WIRE.
Питание схемы замещения выполняется по шине +5 Вольт и не превышает допустимых потребляемых токов микроконтроллера данного типа. Ток потребления всей схемы не превышает двух миллиампер, поскольку управляемые ключи Q1-Q5 не нагружают выходные каскады микроконтроллера.
3. Программное обеспечение схемы замещения
Существующий протокол 1WIRE определяет каждое устройство на шине 1WIRE по первому коду 9 байтной последовательности уникального адреса. В таблице 1 выборочно приведено: первое устройство, последнее и код коммутатора DS2409. Полный список находиться в [5]
Таблица 1. Выборочный перечень устройств интерфейса 1WIRE
Код семейства (HEX) |
Устройство 1WIRE |
Описание |
01 |
DS1990A, DS1990R, DS2401, DS2411 |
Уникальный серийный номер-ключ |
1F |
DS2409 |
Двухканальный адресуемый ключ с возможностью коммутации на возвратную шину |
43 |
DS28EC20 |
20 КБ EEPROM |
Для совместимости программного обеспечения, допустимо использовать код семейства 1F для схемы замещения DS2409. Однако, в этом случае существующее программное обеспечение будет работать только на два канала.
Рекомендуется выбрать свой код семейства, и предоставить описание на переключение пяти каналов 1WIRE.
Автор пошел по второму пути, и использует свой код для управления микроконтроллером и схемой замещения [7].
Необходимо отметить, что можно вообще отказаться от предлагаемой системы адресации интерфейса 1WIRE предусмотренной для схемы DS2409 и использовать свой уникальный код или алгоритм установки ключей Q1-Q5. Но оставить работу в интерфейсе 1WIRE для устройств использующих данный протокол.
Данный подход автор использовал в работе [6] при работе с датчиками DS1820 по радиоканалу для уменьшения времени обмена информацией.
Программное обеспечение автора для объектов с интерфейсом 1WIRE представлено в [7]. Поскольку нижний уровень протокола программного обеспечения для интерфейса 1WIRE подробно описан, приведен широко в Интернете, доступен для повторения, предлагается ознакомиться с программами автора самостоятельно. Программное обеспечение имеет статус «как есть», содержит открытый текст программы и может использоваться любым желающим.
4. Конструкция схемы замещения
Все элементы схемы замещения размещены на печатной плате. На рис. 2 представлена 3D-модель печатной платы в различных проекциях.
Плата содержит шесть коммутационных колодок на три вывода: 1- общий провод, шина 1WIRE и шина +5 Вольт.
Монтаж «под винт» более надежный и удобный в ремонте, чем использование различных разъемов. Хотя он так же обладает недостатками «человеческого фактора».
Рис. 2. Модель печатной платы схемы замещения в проекциях.
Напомним, что на элементах DS2409 российские производители изготавливали двухканальные коммутаторы под маркой ML09 [8]. Внешний вид представлен на рис. 3.
Рис. 3. Двухканальный коммутатор ML09 (сняты с производства)
В связи с прекращением выпуска DS2409 прекращен и выпуск двухканальных коммутаторов ML09 [8].
5. Заключение.
Отличительным признаком предложенной схемы замещения является использование микроконтроллера, который позволяет увеличить число каналов коммутации и использовать не только изделия интерфейса 1WIRE.
Вторым достоинством коммутатора можно считать совместимость с фирменными коммутаторами разработчиков шины 1WIRE, что позволяет использовать наработанное «старое» программное обеспечение.
Литература и источники Интернет
1. Описание протокола 1WIRE https://elin.ru/files/pdf/1-Wire/app148ru_p.pdf
2. Переключатель шины 1WIRE http://www.gaw.ru/pdf/Dallas_Sem/1-Wire/DS2409.pdf
3. Описание 2N7000 http://www.triatron.ru/upload/catalog_photo/elements/pdf/009088.pdf
4. Описание 12F765 http://www.microchip.ru/files/d-sheets-rus/PIC12F629_675.pdf
5. Коды устройств 1wire https://avr.ru/beginer/understand/1wire
6. Журнал «Современная электроника» 2020г, 8, 44-47 стр. «Применение интерфейса 1-Wire в радиоканале 433 МГц на модуле HC11» https://www.soel.ru/rubrikator/
7. Программы автора на «облачном» хранилище https://disk.yandex.ru/d/aKAo_DVD1LzrUQ
8. Сайт производителей коммутаторов 1wire МL-09 (производство прекращено) https://elin.ru/
Шабронов Андрей Анатольевич
Cтарший преподаватель кафедры ТЭ СибГУТИ, тел. +7-913-905-8839, e-mail: [email protected]
Replacement circuit of the DS2409 1WIRE bus switch to the 12F675 microcontroller
A. Shabronov
The description of the replacement circuit of the DS2409 switch to the PIC 12F675 microcontroller for working with a single-wire 1WIRE interface is given. The main advantage of this replacement is the use of widely available microcontrollers, instead of the discontinued DS2409 switches and an increase in the number of switched lines from two to five. Replacing the microcontroller allows you to read more sensors and use all the previously prepared software of the 1WIRE interface.
Keywords: DS2409, DS1820, 1WIRE interface, 12F675.
Практический пример: замок с ключами IButton на 12F675 – Proton PICBasic
DEVICE = 12F675 ‘Выберем микроконтроллер
DECLARE XTAL= 4 ‘Частота генератора
DECLARE REMINDERS NO ‘Отключим предупреждения компилятора
ALL_DIGITAL YES ‘Выключим АЦП
‘Включим защиту данных и программы, выключим внешний вход сброса,
‘включим сброс при включении питания, включим “собаку” для надежности
‘устройства, используем внутренний генератор:
CONFIG CPD_OFF, CP_ON, MCLRE_OFF, PWRTE_ON, WDT_ON, INTRC_OSC_NOCLKOUT
SYMBOL Key = GPIO. 0 ‘Вход считывания ключа
SYMBOL Zamok = GPIO.1 ‘Выход управления замком
SYMBOL OpenButton = GPIO.2 ‘Вход кнопки открытия вручную
SYMBOL Programm = GPIO.4 ‘Джампер для записи ключей
SYMBOL Led = GPIO.5 ‘Светодиод для индикации процесса записи ключа
DIM Flags AS BYTE ‘Переменная для хранения флагов управления
DIM ID[8] AS BYTE ‘ID ключа
DIM D[6] AS BYTE ‘Переменная для считывания ключей из EEPROM
DIM Num AS BYTE ‘Переменная для хранения числа записанных ключей
DIM Count_1 AS BYTE ‘Счетчик 1
DIM Count_2 AS BYTE ‘Счетчик 2
DIM addr AS BYTE ‘Переменная для хранения адреса
DIM date AS BYTE ‘Переменная для хранения данных ключа
SYMBOL Write_OK = Flags. 0 ‘Флаг окончания записи кода ключа в EEPROM
SYMBOL OpenEnable = Flags.1 ‘Флаг разрешения открытия
‘————————–Начало программы—————————–
SET_OSCCAL OSCCAL ‘Загрузим калибровочную константу в регистр OSCCAL
GPIO = %000000 ‘Настроим порты
CMCON = 7 ‘Компаратор нам не нужен, отключим его
TRISIO = %011101 ‘Настроим направление работы портов(см. выше описание портов)
OPTION_REG = %00001100 ‘Разрешим подтягивающие резисторы, прерывание – по спаду
‘предделитель на 16 включим перед WDT
WPU = %011101 ‘Настроим подтягивающие резисторы индивидуально для каждого порта
Flags = 0 ‘Обнулим флаги
Num = EREAD 0 ‘Число записанных ключей располагается по нулевому адресу EEPROM
GOTO Main ‘Все, закончили настройку, начинаем основной цикл
‘———————–Начало основного цикла——————————–
Main:
CLRWDT ‘ Очистим WDT
IF OpenButton = 0 THEN ‘Проверяем, была ли нажата кнопка
OpenEnable = 1 ‘Ставим флаг, разрешающий открытие двери
ENDIF
OWRITE Key, 1, [$33] ‘Отправляем запрос по шине 1-Wire
OREAD Key, 0, [STR ID\8] ‘Читаем шину в массив переменных id
IF ID[0] = $1 THEN ‘Если первый байт считанных значений равен 1(это идентификатор ключа I-Button DS1990),
IF Write_OK = 0 THEN ‘то, если сброшен флаг окончания записи кода ключа
IF Programm = 0 THEN ‘и джампер разрешает запись
GOSUB Writte ‘то переходим на ПП записи кода ключа
ELSE ‘А если джампер установлен не на запись
GOSUB Compare ‘То переходим на сравнение записанных в EEPROM ключей
ENDIF ‘и только что считанного
ENDIF
ELSE
Write_OK = 0 ‘Сбрасываем флаг окончания записи
‘Этот флаг нужен для того, чтобы
‘за время прикосновения не записалось
‘несколько ключей. Он сбрасывается только
‘после того, как ключ был отсоединен
ENDIF
IF OpenEnable = 1 THEN ‘Если установлен флаг, разрешающий открытие двери
GOSUB DoorOpen ‘То переходим на метку открытия замка
OpenEnable = 0 ‘И сбрасываем этот флаг
ENDIF
GOTO Main ‘Идем на начало цикла
‘——————–Подпрограмма записи кода ключа—————————
Writte:
SELECT Num ‘Проверяем переменную Num(число уже записанных ключей)
CASE 5,255 ‘Если там ничего не записано(значение FF), или стоит цифра 5(записано уже 5 ключей)
Num = 1 ‘то записываем туда 1(будем записывать первый ключ)
addr = 2 ‘Устанавливаем адрес для записи этого ключа
CASE 1 ‘Если записан 1 ключ,
Num = 2 ‘то записываем туда 2(второй ключ)
addr = 8 ‘Для записи второго ключа адрес – 8, так как записывать нам надо всего 6 значений
CASE 2 ‘И так далее. ..
Num = 3 ‘Ставим 3
addr = 14
CASE 3
Num = 4 ‘Ставим 4
addr = 20
CASE 4
Num = 5 ‘Ставим 5 – максимальное число ключей
addr = 26
ENDSELECT
FOR Count_1 = 0 TO 5 ‘Так как нам нет надобности записывать байт идентификации
‘и байт CRC, то требуется всего 6 ячеек для
‘хранения непосредственно уникального номера ключа
EWRITE addr + Count_1 , [ID[Count_1 + 1]] ‘При записи каждого байта
‘инкрементируем адрес(с помощью Count_1)
‘и прибавляем единицу к считанному коду(пропускаем байт
‘идентификатора)
NEXT Count_1
EWRITE 0,[Num] ‘Здесь мы записываем число ключей в нулевую ячейку
Write_OK = 1 ‘Ставим флаг, что запись прошла успешно
Led = 1 ‘Зажигаем светодиод, показывая пользователю, что
‘запись окончена и можно убрать ключ
FOR Count_2 = 1 TO 150‘на 1,5 секунды
CLRWDT ‘очищаем WDT в это время
DELAYMS 10 ‘150 раз по 10 мс = 1,5 сек
NEXT Count_2
Led = 0 ‘Гасим светодиод
RETURN
‘————————–Подпрограмма сравнения записанных и считанного ключей
Compare:
FOR Count_1 = 2 TO 26 STEP 6 ‘Мы знаем, что записывали первый ключ во вторую
‘ячейку
FOR Count_2 = 0 TO 5 ‘и нужно считать 6 байт в переменную D[]
D[Count_2] = EREAD Count_1 + Count_2
NEXT
‘После этого мы сравниваем два массива D[] и ID[]
‘Но в ID[0] хранится идентификатор, а в D[0] – первый байт уникального кода
‘Поэтому сравниваем нулевой байт с первым и так далее. ..
IF D[0]=ID[1] AND D[1]=ID[2] AND D[2]=ID[3] AND D[3]=ID[4] AND D[4]=ID[5] AND D[5]=ID[6] THEN
FOR Count_2 = 0 TO 5 ‘Если совпадают комбинации, то сразу
ID[Count_2] = 0 ‘Затираем ID[](считанный ключ), чтобы
NEXT Count_2 ‘в следующем проходе не открыть замок
OpenEnable = 1 ‘И разрешаем открытие двери
ENDIF
NEXT Count_1
RETURN
‘———————Подпрограмма открытия двери—————————
DoorOpen:
Zamok = 1 ‘Подаем 1 на базу транзистора
Led = 1 ‘Зажигмем светодиод
FOR Count_1 = 1 TO 100 ‘Ждем 1 секунду
DELAYMS 10 ‘100 раз по 10 мс
CLRWDT ‘Очищаем WDT
NEXT
Zamok = 0 ‘Закрываем замок
Led = 0 ‘Гасим светодиод
RETURN
END ‘Конец
PIC12F675 Микроконтроллер Распиновка, характеристики и техническое описание
29 октября 2018 – 0 комментариев
PIC12F675 — это 8-битный CMOS-микроконтроллер производства MICROCHIP TECHNOLOGY, разработанный на основе высокопроизводительной RISC-архитектуры. Этот микроконтроллер очень популярен среди любителей и инженеров из-за его стоимости и небольшого размера.
Конфигурация контактов
PIC12F675 представляет собой 8-контактное устройство, и многие из контактов могут выполнять несколько функций, как показано выше Схема контактов PIC12F675 . Описание каждой из этих функций приведено ниже.
Штифт | Функция | Описание |
1 | ВДД | Положительный источник питания |
2 | ГП5/Т1ЦКИ/ОСК1/КЛКИН | GP5: контакт ввода/вывода общего назначения 5 T1CKI: вход внешних часов таймера 1 OSC1: контакт генератора 1 CLKI: вход внешнего источника синхронизации |
3 | ГП4/АН3/Т1Г/ОСК2/КЛКОУТ | GP4: контакт ввода-вывода общего назначения 4 AN3: Аналоговый вход 3 T1G: ворота Timer1 OSC2: контакт генератора 2 CLKO: выход источника синхронизации |
4 | ГП3/МКЛР/ВПП | GP3: контакт ввода/вывода общего назначения 3 MCLR: вход Master Clear Input или контакт сброса VPP: Напряжение программирования |
5 | GP2/AN2/T0CKI/INT/COUT | GP2: контакт ввода/вывода общего назначения 2 AN2: Аналоговый вход 2 T0CKI: Вход часов Timer0 INT: внешнее прерывание COUT: Выход компаратора |
6 | GP1/AN1/CIN-/VREF/ICSPCLK | GP1: контакт ввода/вывода общего назначения 1 AN1: аналоговый вход 1 CIN-: вход компаратора VREF: внешнее опорное напряжение ICSPCLK: часы последовательного программирования |
7 | GP0/AN0/CIN+/ICSPDAT | GP: контакт ввода-вывода общего назначения AN0: Аналоговый вход 0 CIN+: вход компаратора ICSPDAT: последовательный ввод/вывод данных программирования |
8 | ВСС | Земля |
PIC12F675 Особенности и электрические характеристики
ЦП | 8-битный |
Общее количество контактов | 8 |
Программируемые контакты | 6 |
Коммуникационный интерфейс | ICSP или внутрисхемный последовательный интерфейс программирования (13, 14 контактов) [может использоваться для программирования этого контроллера] |
Функция АЦП | 4 канала с 10-битным разрешением |
Функция таймера | Один 8-битный счетчик, один 16-битный счетчик |
каналов ШИМ | Нет в наличии |
Аналоговый компаратор | В наличии-1 |
Внешний осциллятор | До 20 МГц |
Внутренний осциллятор | Внутренний RC-генератор с частотой 4 МГц, откалиброванный на заводе до ±1% |
Память программ / Флэш-память | 2 Кбайт [100000 циклов записи/стирания] |
Скорость процессора | 1MIPS при 1 МГц |
ОЗУ | 64 байта |
ЭСППЗУ | 128 байт |
Сторожевой таймер
| Доступен и входит в состав Independent Осциллятор для надежной работы |
Режимы энергосбережения | В наличии |
Рабочее напряжение | от 2,0 В до 5,5 В |
Максимальный ток на любом контакте ввода/вывода | ВХ: 25 мА ВЫХОД: 25 мА |
Рабочая температура | от -40°C до +125°C |
Максимальный ток на выводе VDD | 250 мА |
PIC12F629
PIC12F675 ОБЗОРPIC12F675 IS A Systemcon Trabletler Applications для Systems. Это хорошо для обучения и экспериментов для инженеров, потому что у него высокий цикл перезаписи флэш-памяти. Контроллер имеет флэш-память объемом 2 КБ, чего достаточно для начинающих разработчиков базовых программ. Кроме того, 6 контактов GPIO предназначены для работы с максимальным током 25 мА, что соответствует порогу многих периферийных устройств и датчиков.
У этого контроллера очень мало функций, и его нельзя использовать для разработки сложных приложений. Его лучше всего использовать для разработки программ новичками, которые хотят войти в платформу микроконтроллера.
Как использовать PIC12F675
Любой микроконтроллер необходимо запрограммировать перед установкой в любую систему или приложение. Итак, сначала нам нужно запрограммировать контроллер PIC12F675.
Весь процесс программирования PIC12F675 выглядит так:
- Сначала перечислите все функции, которые должен выполнять этот контроллер.
- Затем напишите эти функции в «программном обеспечении IDE», используя соответствующий язык программирования (используйте язык «C» в MPLAB IDE).
- MPLAB IDE для Windows можно загрузить с этого веб-сайта: www.microchip.com/mplabx-ide-windows-installer
- После написания нужной программы скомпилируйте ее для устранения ошибок
- Для успешной компиляции приложение IDE генерирует HEX-файл для написанной программы
- Выберите устройство программирования (обычно «PIC kit 3» или «PIC kit 2»), которое устанавливает связь между ПК и PIC12F675
- Правильно подключите программатор к микроконтроллеру
- Запустите программу создания дампа HEX-файла, связанную с выбранным устройством программирования
- Выберите соответствующий HEX-файл программы и запишите этот HEX-файл во флэш-память PIC12F675
- Отключите программатор и подключите соответствующие периферийные устройства для контроллера
После подключения питания контроллер выполняет этот шестнадцатеричный код, сохраненный в памяти (который является записанной программой), и создает ответ в соответствии с инструкциями.
Приложения
- Недорогие приложения, такие как дисплей с прокруткой, монитор температуры и т. д.
- Приложения для начинающих
- Любительские проекты
- Блоки индикации
- Развивающая доска для учащихся
2D-модель
Теги
Микроконтроллер PIC
Встроенный
Номер пьезы | Описание | Фабрикантес | ПДФ |
10HF7402-02 | Гибридные шаговые двигатели | И Т. Д. | ПДФ |
10HF7602-03 | Гибридные шаговые двигатели | И Т.Д. | ПДФ |
11HS1002-14 | Цифровой линейный привод | И Т.Д. | ПДФ |
11HY2401 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY2402 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY3401 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY3402 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY4401 | 2-фазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY4402 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY5401 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
11HY5402 | Двухфазный гибридный шаговый двигатель | Король движения | |
14ХМ2401 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
14ХМ2402 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
14ХМ2403 | Двухфазный гибридный шаговый двигатель | Король движения | ПДФ |
Una ficha técnica, hoja técnica u hoja de datos (datasheet на английском языке), también ficha de characterísticas u hoja de characterísticas, es un documento que резюме el funcionamiento y otras characteristicas de un componente (por ejemplo, un componente electronico) o subsistema por ejemplo, una fuente de alimentación) con el suficiente detalle para ser utilizado por un ingeniero de diseño y diseñar el componente en un sistema. |