- Управление внешними девайсами через usb
Принимаются любые пожертвования на Easypay.by на кошелёк 01839457
Управление внешними девайсами через юсб …
Управление с компьютера внешними нагрузками (~220 v) 8 каналов.
А ЗДЕСЬ тема и обсуждение увеличения количества выходов и другие варианты применения PICа
Схемка подключения PICa к usb:
Кнопка Reset нужна для закачки прошивки через usb при помощи проги usboot.exe
Короче сразу собирается программатор..
Этим программатором прошиваем в наш PIC boot.hex при помощи проги WinPic которая находится тут: OUT
(Там же находятся прошивки, настройки для winpic и usboot.exe)>после чего используя usboot.exe и нажав предварительно кнопку reset загружаем в PIC 18F2550.hex и всё, собираем схемку нашего девайса , у метя получилась вот такая борода помещенная в футляр от плёнки:
и начинаем изобретать силовую часть
Для управления силовой частью лучче всего для надежности и защиты порта от высокой напруги использовать оптопары. я брал слаботочные 6N137 и использовал реле, но если кто найдет есть очень отличные оптосиммисторы (или как их там) S201S06V с ними можно обойтись и без реле (держат без проблем до 3-ех ампер)
Короче Вот такая фигня у меня получилась (а PIC у меня отдельно потому как изначально эта хрень управлялась с LPT). Сейчас у меня этим прибамбасом управляется люстра в зале, лампа настольная, усилок и блок питания программатора , и всё это управляется путемнажатия пары кнопок на клаве или пульте. А если еще присовокупить будильник с выводом из спящего режима, предложенный в разделе софт, то можно будить комп в купе со включением внешних девайсов, к примеру в качестве имитатора присутствия в квартире кого-нить на время отъезда..
PS: Распиновка USB >>
| Вывод | Название | Цвет провода | Описание |
|---|---|---|---|
| 1 | VCC | +5В | |
| 2 | D- | Данные - | |
| 3 | D+ | Данные + | |
| 4 | GND | Земля |
А вот и схема силовой части, три канала. и ниже тоже самое до восьми…







3 ноября в 14:57
вот бы еше и исходники с коментариями, ну или разбором кода, былобы просто супер.
3 ноября в 23:00
Выложу но чуть попозже.
5 ноября в 19:06
Ну вот и исходник прошивки для 18f2550 и пример для работы с портом USB
22 ноября в 13:51
каким компилятором компилируется прошивка мк? где его взять? хотелось бы услышать несколько слов о структуре мплабовского проекта, я обычно на асемблере пишу.
условно бесплатный PICC LITE v9.60PL1 пишет:
No installed HI-TECH compiler driver supports device 18F2550 насколько понимаю неподдерживает этот тип мк.
а mplab c18 не находит своего компилятора mcc18.exe те. его просто нет.
посоветуй какую нибуть хорошую книгу по С для мплаба. сам язык С (вернее С++) немного знаю, возникают лишь сложности с применением его мплабу.
23 ноября в 14:04
Компилируется всё в MPLAB Здесь всё –> здесь 46.64 Mb там и немного инфы по MPLAB. Устанавливаем MPLAB и MCHPFSUSB. Создаем на c:\ папку c:\PIC18F2550New в неё скидываем содержимое папки 8bit18F2550_rab выложенной выше («исходник прошивки») и всё в source файлах проекта где мимо, исправляем ссылки в INCLUDE и жмем «Make»
23 ноября в 21:23
за ссылку спасибо. MCHPFSUSB – это бутлодер? кстати поискал инфу про компиляторы на С, и нашел интересный компилятор – МикроС.. очень простой и удобный, кстати со своим бутлодером. там и мануал на русском есть(демо версия имеет ограничения на hex фаил кажется). на сайте микрочипа есть уже 8-я версия мплаба. на счет пути я так и сделал не первый день замужем. просто обычно чисто MASM пользовался. не компилируется потому что нет компилятора мсс18.ехе вот? что пишет.
23 ноября в 21:57
все ok, нашел ентот mcc18 (22мб-демо), установил и скомпилировал проект. если не жаль времени может обьяснишь как это работает, типа разбор полетов (можно в виде новой статьи). насколько я понимаю существует два способа работы через usb: с эмуляцией com порта и без.
24 ноября в 22:10
В принципе тут разбирать особо то и нечего. Сразу скажу я в этой области не мега спец. Просто на Microchipe где-то лежит пример на 2550 для двух каналов, ну я и переписал для восьми, особо не вдаваясь в подробности. В софтине всё делает любезно предоставленноая Microchip-ом mpusbapi.dll через usbdll. Ну а прогу на Delphi уже своял под себя. Если нужна прога на эту тему какого другого назначения, чем смогу помогу
27 ноября в 18:46
ок. спасибо. в ентом MCHPFSUSB тот же пример лежит, тока там с какой-то temperature.c, насколько я понял в этом примере ты по юзал user.c и исключил этот temperature.c. кстати в МикроС который я нашел имеются хорошие примеры использования usb с описанием на русском (можно найти отдельно). там много чего есть. к сожалению перенести код под микрочиповский мсс18.ехе не возможно, по крайней мере, мене не удалось.
9 декабря в 16:29
Здравствуйте! Недавно прочёл эту статью.. Появился один вопрос: а какой чип из PIC 18F2550 можно (и нужно) использовать в данной схеме? Просто тут вот выбор какой-то, больше чем из одного: ChipDip.
Какой из них нужен, а то, честно сказать, в их маркировке совсем не разбираюсь. Заранее спасибо! ))
9 декабря в 23:54
Именно на моей написано PIC18F2550-I/SP 28-ногая, а остальное типа с (DIP28)-это тип корпуса, ну а вот чё такое PBF я чё-то затрудняюсь ответить
10 декабря в 2:34
Спасибо за ответ
Кстати, в магазине подсказали, что PBF – Plumbum Free, т.е. без свинцовая технология изготовления.
10 декабря в 8:16
Ну я так и подозревал
)
18 января в 4:46
Добрался до этой вещицы, собрал. Вроде всё правильно. Подключил, запустил прогу. Думал всё будет легко и просто. Ан нет. Прога не определяет программатор. Ну, думаю, может хоть прошьёт. И тут засада. Ошибка при прошивке. Может какие премудрости есть? Буду благодарен любому совету ))
18 января в 19:20
В общем сразу прошиваем бутлоадер, программатором (через LPT), что выше > 2 ая картинка сверху. Им и прогой WinPic прошиваем в PIC > boot.hex.
мы должны в PICе увидеть результат наших стараний т.е. > boot.hex. И с чувством выполненого долга закрываем WinPic.
!!
В папке (http://newcomerds.blog.tut.by/files/2009/01/out.rar) OUT > winpicpr > pic > находятся картинки с настройками WinPic.
При прошивке WinPic может ругнуться что программирование прошло неуспешно (стрематься не стоит это нормально). после чего закрываем WinPic и снова запускаем и жмем прочитать микросхему. После всего этого шаманства, если был выбран бубен правильной конфигурации
Потом собираем самую верхнюю схемку (вместо кнопки reset можно поставить съёмную перемычку). PIC c прошитым boot.hex втыкаем в эту схемку
и с одетой перемычкой(reset) все это дело втыкаем в юсб. Комп скажет что найдено новое устройство, показываем ему отсюда (http://newcomerds.blog.tut.by/files/2009/01/drv.rar) драйвер для sprut-device. Далее не снимая перемычки запускаем usboot.exe (ЕСЛИ usboot.exe не находит бутлоадера то пробуем втыкать во все доступные usb порты, может даже прийдется попробовать на другом компе (прога весьма капризная)) если же все OK
жмем Upload new firmware и выбираем из папки OUT > 18F2550.hex побежит прогресс и попросит достать перемычку и нажать кнопку reset. После чего winda
обнаружит ещё одно устройство > показываем дрова из DRV на PIC18F2550 Device Switcher и ФСЁ !!! Отпишись чё получится
5 февраля в 0:23
Слушай я тут голову парю и ищу устройство каторое можно бы бло использовать под сигнализацию… Я так понял его можна будеть перепрограмировать под другие предлоги!
5 февраля в 11:57
А обязательно при этом использовать комп? Или проще запрограмить нужным образом какой нить PIC без usb?
5 февраля в 17:32
Да нет! Вот в чём вся складность…. Мне нужно АЦП или чёта того чтобы он мог переделовать импульсы в цифровой код…А этот я так понимаю это делаеть… И плюс к тому написать прграму для того чтобы он мог показывать где быль вскрыть кабинеть или чёта другое… Да и поставить на овтомать для того чтобы он сам включался в такое время когда все уходять и когда уже никого нет…
6 февраля в 1:52
760880 ходим сюда .. http://newcomerds.blog.tut.by/ball/
10 февраля в 14:43
Многоуважаемый NewComer! Очень заинтересовался вашей разработкой и в связи с этим у меня к Вам такой вопрос.А можно ли с помощью вашей программы,которая приведена в качестве примера, вместо фиксированных значений (0 или 1) получить на выходе контроллера импульсы определенной частоты, ну например 1 Гц?Если это возможно, то очень хотелось бы какой-либо пример.Просто в мои годы наверное поздно учиться программированию..Буду благодарен за любую информацию.Заранее благодарю.
10 февраля в 21:21
Т.е. надо с компа изменять на выходе PICа частоту импульсов?
10 февраля в 21:38
Да, вроде того. Мне нужно сымитировать нажатие и отпускание кнопки,как бы объяснить Вам..Чтобы на выходе PICa 1 и 0 чередовались где то раз в секунду.Это можно сделать на программном уровне?Или делать генератор импульсов, а уж им управлять через PIC?
11 февраля в 22:58
Доброго времеи суток. Насколько сложно перекодить под 4550.
14 февраля в 1:00
Re : > Да, вроде того. Мне нужно сымитировать нажатие и отпускание кнопки,как бы объяснить Вам..Чтобы на выходе PICa 1 и 0 чередовались где то раз в секунду.Это можно сделать на программном уровне?Или делать генератор импульсов, а уж им управлять через PIC? <
Вот чё-то сваял, лежит здесь http://newcomerds.blog.tut.by/soft/ , Если чё не устраивает могу попеределать …
14 февраля в 1:03
RE :>Доброго времеи суток. Насколько сложно перекодить под 4550.<
Да собственноя думаю достаточно будет просто пересобрать в MPLAB для 4550, постараюсь в скором времени сделать..
15 февраля в 0:52
RE :>Доброго времеи суток. Насколько сложно перекодить под 4550.<
Ну вот откомпилировался нормально, но проверить работает ли не на чем : PIC18F4550.hex если не заработает попробую ещё ..
15 февраля в 15:55
Да и вот ещё бутлоадер для 4550 : boot 4550.hex ….
и исходник MPLAB проекта (правда проект не переименовывал) для PIC18F4550 Здесь ….
29 июля в 12:31
у меня вот проблема возникла, после прошивки usboot когда ставлю драйвера то пишет неправильная секция установки ини файла и светится восклицательным знаком, в чем может быть проблема?
29 июля в 15:59
я так понял, не ставятся дрова для бутлоадера, для работы с прогой usboot, или как?
Для бутлоадера нужон драйвёр sprut-device.. А как вообще установка происходит?
29 июля в 16:13
Вот на всякий случай еще комплект дровей
30 июля в 8:07
sprut-device определяет нормально, далее usboot прошиваю и бывает sprut-device начинает исчезать то появляться в диспетчере устройств и прошивка до конца не доходит
30 июля в 10:07
А какой длины шнурок? Можно попробовать укоротить.. Или в других юсб портах попробуй..
30 июля в 11:02
да тыкал уже везде и на другой машине, та же хрень, а usb разьем прямо на плате
2 августа в 22:35
Вообщем, немного поэксперементировав с PICом выяснилось, что сие недомогание однозначно зависит от юсба и конструкции(разводки) платы. (Длина дорожек на кварц и к юсб разъёму от PICа, должна быть минимальная) если оно так и есть, то остается искать подходящий комп с подходящим usb портом.
У меня к примеру стац. комп вообще ругался на sprut-device , что «устройство не опознано». А на набуке в двух портах девайс периодически пропадал, ну а на двух оставшихся нормально работал.
28 декабря в 17:48
Какие-то непонятки!!!
на схеме рис 1 – кварц 2 МГц
на схеме подключения к программатору – 4 МГц
на фото в футляре от пленки – 8 МГц
При дизассемблировании начального загрузчика в конфигурационных битах вроде 8 МГц просит.
boot.hex Pic Kit3 прошивается прекрасно,
Далее программатором саму прогу – однако Программа демо прога его не видит, хотя драйвера проставлены самые последние из супер-пупер MCHPFSUSB v1.2 ;
MCC18 MPLAB-C18-Upgrade-v3_30;
прога откомпилирована в среде MPLAB 8.43.
????
30 декабря в 18:34
RE:>grumble
- на схеме рис 1 – это такая восьмёрка,
А в программаторе действительно кварц должен быть 4 Мгц.
Компилировалось в MPLAB 7.52 , а MPLAB-C18 Full v3_10
9 сентября в 23:41
NewComer, большое спасибо! Я конечно эту тему забросил… почти что на два года =) Но вот тут недавно разбирался у себя в файлах, нашёл копию этой статейки, прочёл и вспомнил про это устройство. Прочёл все комментарии здесь касаемо порядка установки драйверов и прошивки и… ОГРОМНОЕ Вам СПАСИБО! Всё заработало, как часы!
Единственное что (если можно, я тут ссылочку оставлю) для прошивки загрузчика использовал более простой программатор под COM-порт с запиткой 5В от USB: http://www.radiokot.ru/forum/download/file.php?id=41374 (тот, что справа). Всё так же легко прошивается. Просто мне кажется, что, например, такому новичку как мне собрать его много проще. Эффект же не хуже. Единственное что, вид PIC нужно будет указать 4550, а также не нужно обращать внимания на ошибку вида «адрес … 0000l» в конце проверки прошивки (ну там настройки на картинке показаны). Это нужно игнорировать, всё заработает – проверено, boot потом определиться =)
Ещё раз ОГРОМНОЕ Вам спасибо! Если бы не Вы, честно признаюсь, никогда бы не мог и представить, что всё «железо» для настройки такого устройства можно сделать своими руками. А то уж тогда хотел идти покупать программатор, но «институт, экзамены, сессия». А потом забыл %)
10 сентября в 10:26
RE:>wildwoodcat
Да наздоровье
! Приятно что хоть кому-то это пригодилось.
9 марта в 1:12
Можно узнать номинал сопротивления на первой схеме.
9 марта в 8:55
10 кило
26 мая в 14:07
NewComer, здравствуйте! А скажите, решение задачи, от части обратной этой, находить не приходилось? Т.е. нужно сделать не USB выключатель, а USB датчик разрыва цепи по нескольким каналам. Скажем, программа через USB с определённым интервалом опрашивает устройство, какие из ножек микросхемы замкнуты на общую. Если какие-то замкнуты, то конкретно для каждой из них программой принимается значение «1″, если какие-то не замкнуты то для каждой из таких – «0″. Заранее спасибо!
26 мая в 15:21
Хм, нашёл. На том же МК, что и Ваше устройство. Просто не сразу сообразил, что то, что я хотел, по своей сути – USB «джойстик». В любом случае, спасибо =)
PS: постепенно, по мере свободного времени, положив на старенький советский вездеход «Электроника ИМ-11″ нэтбук, играюсь в «роботехнику». Так что Ваша схема управления нагрузками очень даже пригодилась =) Ещё к нэтбуку же подключена USB камерка, так что через удалённого админа по Wi-Fi не только можно управлять игрушкой, но и смотреть, куда она едет. На реализацию первоначальной же идеи, чтобы игрушка ещё и сама перемещалась, управляемая всё тем же нэтбуком на основании данных, полученных от разных датчиков, пока времени как всегда не хватает.
27 мая в 20:51
RE:> «А скажите, решение задачи, от части обратной этой, находить не приходилось? Т.е. нужно сделать не USB выключатель, а USB датчик разрыва цепи по нескольким каналам. Скажем, программа через USB с определённым интервалом опрашивает устройство, какие из ножек микросхемы замкнуты на общую. Если какие-то замкнуты, то конкретно для каждой из них программой принимается значение «1″, если какие-то не замкнуты то для каждой из таких – «0″.» -> Сейчас как раз таки работаю над этим…
27 июня в 21:08
Я в итоге в плане обратной связи остановился на наработках по ArtJoy. Смотрел ещё в сторону MJoy, но он с USB2.0 как-то смутно контачит. На компьютере всё ок. А ASUS eee PC 701 видеть его так и не захотел. Пригодится Atmega8 для чего-нибудь более стационарного =)
А по Вашему устройству вот ещё такой вопрос. Можно ли в одном пакете послать в МК команду на одновременную подачу напряжения, скажем, на 2 или более управляющие ноги? Просто из-за некой задержки вариант «по-очереди» дать команды приводит, в моём случае, к тому, что вездеход при старте мотает мордой из-за нескоординированности старта движков. Ну и как результат угол направления его смещается, относительно начального =( При остановке, кстати, то же самое. Сам пакет, я так понимаю, формируется и посылается здесь (usbdll.pas):
send_buf[0] := LED_ONOFF;
send_buf[1] := b;
RecvLength := 1;
if (SendReceivePacket(send_buf, 2, receive_buf, RecvLength, 100, 100) = 1)
Так вот, достаточно ли будет дописать send_buf[2] := LED_ONOFF и send_buf[3] := b2 соответственно, а RecvLength приравнять 2? Приведёт ли это к желаемому полезному результату? Заранее спасибо!
28 июня в 23:41
Кстати да, разобрался. Чуть поменял и пересобрал прошивку. Теперь можно сразу две команды послать за один проход. А там ниже я про код чушь какую-то написал. Можно не обращать внимания =)
12 июля в 14:46
NewComer нужна помощь.
Собрал сей девайс, прошил загрузчик установил драйвера все без особых проблем, но почему-то когда подключаешь устройство включаются сразу все нагрузки (1-8 вых.). В чем может быть проблема???
12 июля в 21:56
re:> Собрал сей девайс, прошил загрузчик установил драйвера все без особых проблем, но почему-то когда подключаешь устройство включаются сразу все нагрузки (1-8 вых.). В чем может быть проблема???
Вообще-то такая аномалия нарисовалась впервые. возможно че-то на программном уровне. а что будет если поменять горячие кнопки в проге? или как все работает дальше если отключить вручную все нагрузки?
13 июля в 10:03
Пробовал отключать нагрузки в ручную, но после нажатия на пятую кнопку ( ) вываливается ошибка….
Взял новый Контроллер и другой программатор (PIC-PG2C). Прошилось и загрузилось все без проблем даже уже ошибки перестали вываливаться, программа работает ок. Но все равно при подключении девайса к разъему усб все каналы включаются.
Может как то можно определить в прошивке, чтоб при подключении и инициализации порты выключались?
13 июля в 13:25
RE:> orion2011..
А какая прога используется для управления? и запущена ли она в момент подключения девайса? Если есть возможность стоило бы попробовать на другом компе.
13 июля в 14:56
Использовал программу BigDeviceSwitcher. Программа запущена не была. Пробовал на трёх компах..
Может что то с контроллером не так?.. И еще одна трабла.. после компиляции исходника выложенного в коментах номер 3
и загрузки его в чип с помощью usboot.ехе устройство перестает опознаваться в девайс менеджере. проверено на всех тех же трех компах..
14 июля в 18:30
Re:> orion2011.
Ну если в момент подключения девайса прога не запущена, а нагрузки все таки сами включаются, то дело скорее всего в прошивке или может чего-то не то с платой. какая прошивка используется?
17 июля в 9:35
Самое Интересное то, что когда комп выключен и я подключаю девайс в усб то он начинает работать
(все нагрузки в положении ОN). прошивка используется та что в статье…. NewComer если конечно не затруднит тебя. Выложи свою прошивку и печатку под сей девайс… Наверняка что-то с контроллерами….. придется их все-таки повыкидывать… несмотря на их цену
)
17 июля в 16:41
Феноменально
… В таком случае чего-то с контроллером. У меня работает прошивка из OUT, Но выбрасывать PIC таки пока не стоит. Вот в этой прошивке – попробовал принудительно скинуть выходы в «0″ , попробуй.. Обкатывал вот на такой тестовой шляпе. фото1 и фото2
19 июля в 14:57
NewComer Спасибо тебе за помощь, но и эта прошивка ничего не изменила
.
и плясать с ними две ночи подряд… Все таки я победил! 
Пришлось взять в руки бубны
Все заработало как надо. Взял исходник с сайта Спрута (спрут.де) внес несколько изменений и все стало ок….
20 июля в 19:30
Re:> orion2011
. А можно твой исходник глянуть, если не секрет. На мыло или сюда … Хотелось бы все-таки разобраться в чем было дело..
Ну и славненько
20 июля в 22:40
Изменения были внесены только в два файла….. io_cfg.h и user.c…
hххp://www.mediafire.com/file/6rpkp0gmdcmq9vq/Demo.zip
NewComer скажи есть ли у тебя возможность помочь мне сделать девайс скажем на 16 выходов?
я только начал заниматься микроконтроллерами… до этого дела с ними не имел…
22 июля в 17:15
NewComer. так есть желание посодействовать в изготовлении девайса на 16…?? сам не справлюсь
(
22 июля в 17:50
Да.. желание посодействовать есть
но нуно подумать. Пытался расширить кол- во выходов силами этого же пика чего-то пока не идет. По началу была мысля задействовать дешифратор , но тогда можно будет включить только одну нагрузку. Скорее всего прийдется написать свой дешифратор на контроллере.
22 июля в 19:22
Mожет можно Сдвиговый регистр попробовать типа 74HC595 приручить.
нашел статью про это но там камень Атмелевский… hххp://avrdevices.ru/sdvigovy-registr-74hc595/#more-478
24 июля в 10:45
Не, сдвиговый регистр тож не совсем то что нуно. Буду всё-таки пробовать изобрести свой дешифратор на контроллере.
26 июля в 11:27
Ну вот кажися чего-то получилось с увеличением количества подключаемых нагрузок к 18f2550. Пока только 24 выхода… На эту тему всё обсуждение будет происходить ТУТ.
3 августа в 22:22
Наконец-то победил проблему отлавливания нажатия кнопок на пике -> на комп. !!! Всем кто в коментариях задавал вопрос на эту тему милости просим в обсуждения на странице темы «увеличение количества выходов для управления нагрузками через usb и др.»
5 декабря в 16:51
http://conture.by/post/347 – тоже самое, только более доходчиво и на большее количество портов