Авторизация


...

Кто на сайте?

Сейчас 122 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 23005
-Материалы : 209

Пользователь сайта продает...

  PIC18F25K22

Пользователь сайта покупает...

Переходник USB - 1Wire на микроконтроллере PIC18F2550

Автор: Alex Просмотров: 7585

 

 

"Сердцем" устройства является микроконтроллер PIC18F2550 фирмы Microchip, в который зашивается прошивка, лежащая ниже в архиве. Питание берётся с гнезда USB и вполне достаточно для нормальной работы устройства. Светодиод сигнализирует об обмене информации по USB. Когда идёт передача/приём данных, он мигает.
 



Работа с устройством осуществляется через библиотеку mpusbapi.dll и, специально мной написанные файлы USB.cpp и USB.h, которые необходимо добавить в проект с программой. Файлы писались и тестировались в среде C++Builder 6.


Функции для работы с устройством :

void USB_Dev_Init(void)

Инициализирует работу с устройством.
Вызывается в начале программы, перед работой с устройством.

 

unsigned int USB_Get_Device_Count(void)

Возвращает количество подключенных устройств.
Используется для обнаружения подключенного устройства к USB-порту.
1 - устройство подключено. 0 - устройство не подключено.

 

DWORD SendReceivePacket(BYTE *SendData, DWORD SendLength, BYTE *ReceiveData,
DWORD *ReceiveLength, UINT SendDelay, UINT ReceiveDelay);

Передаёт в устройство данные и ждёт от него ответа.

 

SendData Указатель на буфер передаваемых данных
SendLength Длина передаваемых данных в байтах
ReceiveData Указатель на буфер
ReceiveLength Указатель на DWORD-переменную, в которой вернётся длина принятых данных в байтах.
SendDelay Задержка таймаута передачи данных в USB
ReceiveDelay Задержка таймаута приёма данных из USB


Управление линией 1-Wire производится с помощью команд. Команда в пакете всегда идёт первым байтом, затем, если необходимо, идут данные, связанные с этой командой.

Команды для работы с линией 1-Wire :

USB_CMD_RESET (0x01)

Длина пакета = 1 байт.

Посылает на линию импульс сброса и возвращает факт присутствия сенсоров на линии
Возвращаемые значения, 1 байт :
1 - устройства на линии присутствуют.
0 - устройства на линии отсутствуют.

 

USB_CMD_SEND_BYTE (0x02)

Длина пакета = 2 байта.

Посылает в линию байт данных.
Передаваемые значения :
Байт №2 - байт данных, передаваемый в линию.
Возвращаемые значения, 1 байт :
1 - всегда.

 

USB_CMD_GET_BYTE (0x03)

Длина пакета = 1 байт.

Читает байт данных из устройства на линии.
Возвращаемые значения, 1 байт :
Байт №1 - байт, прочитанный с линии.

 

USB_CMD_FIRST_SEARCH (0x04)

Длина пакета = 1 байт.

Начало поиска устройств на линии.
Возвращаемые значения, 9 байт :
Байт №1 - 1, если устройство найдено; 0 - не найдено ни одного устройства
Байты №2...9 - ROM-код найденного устройства.

 

USB_CMD_NEXT_SEARCH (0x05)

Длина пакета = 1 байт.

Продолжение поиска устройств на линии. Использовать только если первый поиск был удачным.
Возвращаемые значения, 9 байт :
Байт №1 - 1, если устройство найдено; 0 - не найдено ни одного устройства
Байты №2...9 - ROM-код найденного устройства.

 



С печатной платой я особо париться не стал и взял готовую в тритоне - TRT-USB. Она идеально подошла под эту задачу.
Вот, собссно, фотки собранного переходника на этой плате:



Установка драйвера устройства :

Установка данного устройства не сложней установки любого простого USB-устройства.
Вставляем устройство в USB. Вылезет мастер нового оборудования. Указываем папку с драйвером и устройство готово к работе.
В диспетчере устройств должно появится следующее:


Если оно появилось - поздравляю Вас - вы стали счастливым обладателем супер-мега-переходника USB - 1-Wire :)



Демо программка :

 Ну и, естественно, я не оставил читателей без "десерта" :)
Подключил к плате датчик температуры DS18B20 и написал небольшу демо-программку, читающую ID датчика и, каждые 1.5 секунды, температуру. Программа с исходниками лежит ниже в архиве.
Скриншоты программы :

 

Устройство не подключено к USB

Устройство подключено, но датчик не обнаружен

Устройство подключено, показан ID датчика, вывод температуры

 


И на последок, фото термометра с этой платкой :

Файлы проекта :

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

Индикатор сети бензоагрегата -электростанции.

03-11-2013 Александр Милевский

Индикатор сети бензоагрегата -электростанции.

Индикатор сети был сделан по просьбе знакомого, проживающего в сельской местности. Частые отключения электричества  до суток,  вынудили его купить бензоагрегат - электростанцию. Все как будто хорошо,  нагрузки работают, но не работает главная нагрузка -электронный газовый котел, что в зимнее время доставляет...

Стробоскоп для измерения скорости вращения

19-01-2012 Super User

Стробоскоп для измерения скорости вращения

  Назначение прибора.Предлагаемый стробоскоп это контрольно-измерительный прибор для наблюдения быстрых периодических движений. Работа стробоскопа основана на стробоскопическом эффекте. Область применения стробоскопа: – измерение числа оборотов механизмов; – измерение частоты колебаний механических и электронных систем, резонанса; – изучение вибраций различных объектов;  

Кодер PAL на CXA1645M

17-04-2011 Николай Викторов

Кодер PAL на CXA1645M

Кодер предназначен для подключения к видеоадаптеру на PIC18F46K20, но может применен и в других устройствах , если на входах R,G,B и sinx поставить переменные сопротивления (2к2) для регулировки уровня этих сигналов. Кодер формирует из сигналов RGB и синхросмеси композитный видеосигнал...

Доработка строительного фена

19-08-2012 Super User

Доработка строительного фена

   Строительный фен, в радиолюбительстве незаменимая вещь. Не буду перечислять все возможности использования, я его купил, когда пришлось упаковывать 3м гибкой шины в термоусадочную трубку. Взял самый дешевый по тому, что использовать его намеревался не в профессиональных, а  любительских целях.  С первой...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru