В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Лампочкометр возвращается! (vol. 2)

📆19 марта 2011   ✒️Discover   🔎18.022   💬5  
Вдох глубокий. Руки шире.
Не спешите, три-четыре!
Бодрость духа, грация и пластика.
Общеукрепляющая, Утром отрезвляющая,
Если жив пока еще - гимнастика!

В. С. Высоцкий, «Утренняя гимнастика»


Выдох

Ну вот, можно и выдохнуть, очередной «Лампочкометр-2» еще «дымится», есть еще что доделать, дописать, но он уже занял свое рабочее положение на стене вместо прежнего. На самом деле работа над лампочкометром (над программной частью) еще продолжается. До того как я сел за статью, я разрывался между желанием наполнить прибор задуманным функционалом и после этого писать статью или же написать про уже достигнутое. И я решил, что все же начну писать статью про прибор в том виде, в котором он сейчас существует, потому что главную свою функцию прибор уже выполняет.

Нет, нет, не подумайте, от Лампочкометра теперь вряд ли откажусь, я не могу себе представить - как я без него. Некоторое время назад мне понадобился микроконтроллер, и мой бессовестный взгляд упал на Лампочкометр. Я подумал – ну, переживу я полчаса без него. Но в процессе эксперимента я загубил микроконтроллер - отключил SPI. В прихожей было темно и не уютно, никто не светился синим цветом в уголке, сообщая мне о количестве ламп в подъездах, да и вообще мысль о том, что мне придется ходить по подъездам для осмотра как-то не уживалась во мне. Поэтому я зарекся впредь, для чего бы то ни было, брать микроконтроллер из Лампочкометра.

Шурин

Приходит ко мне как то шурин и приносит мне автонавигатор, мол – почини, не видит спутники. Проштудировав многочисленные форумы, поигравшись с различными программами, я резюмировал, что навигатор «ослеп» навсегда, и сию прискорбную весть донес до хозяина. Говорю: «Теперь у тебя есть урезанный КПК, можно игрульки простенькие поставить или что-нибудь полезное, а можно и на запчасти продать, в форумах частенько спрашивают или тач-скрин или дисплей полностью». Шурин сказал: «Забирай себе, делай что хочешь».

Новый Лампочкометр

В общем, идеи было две: сделать на основе автонавигатора бортовой компьютер или новый лампочкометр. Бортовой компьютер по некоторым причинам я не смог (может, не захотел) сделать. А вот сделать новый лампочкометр мне оказалось по силам и по душе.
Цитата из известной песни В.С. Высоцкого в начале статьи не случайна, мне она очень нравится, в особенности фраза «Выполняйте правильно движения». Так вот, движения я выполнял не совсем правильно, вернее порядок, и еще не раз вспомню об этом. Ну, да ладно, хватит переливать из пустого в порожнее, перехожу к сути, по порядку, как было у меня.

Программа

Тут без помощи моих старых друзей не обошлось, нужен был пинок в нужную сторону. Вопрос первый: на чем писать (в какой среде). Выбор пал на Visual Studio 2008, исходя из соображений, что в ней присутствует С++ с синтаксисом СИ, с которым я немного знаком, и есть встроенный эмулятор КПК. Правда, создать программу под Windows CE, который прошит в моем автонавигаторе, на С++, сходу не получилось. Зато получилось на С#. На самом деле проект создавался под .NET Compact Framework Version 2.0 и конечной платформой является Windows CE. В данном случае программа получается кроссплатформенная, то есть с одинаковым успехом работает как на полноценной Windows с установленной .NET Framework так и на Windows CE с .NET Compact Framework.
Вот тут-то пора упомянуть про порядок действий. По уму, надо было сначала для автонавигатора наладить связь с «внешним миром», а уж потом приступать к созданию приложения. На самом деле порядок был соблюден, но только теоретически. То есть было решено для приема/передачи данных использовать микросхему преобразователя USB to COM - FT232RL от FTDI. Есть и другие производители, но FT232RL я как-то уже успел подружиться, и к тому, же на сайте производителя имеются драйвера для Windows CE. Все это притупило бдительность и здравый смысл, и эта часть работы была отложена на потом. Думаю, не лишне будет предупредить всех желающих использовать автонавигатор или КПК для подобных целей, начинать с сопряжениея с внешним оборудованием, ибо могут быть подводные камни.
Как я уже и говорил, без помощи моих друзей не обошлось, или я мог бы и сам попробовать, но скорее всего, получилось бы долго и не совсем правильно. Мягко говоря, программы под Windows пишутся несколько по-иному. Конечно, перед тем как я созрел до серьезной работы, я поигрался с кнопочками, ползунками и прочими элементами управления. Для моего приложения нужно не много, но без освоения этого тоже ничего не получится. Так вот, я понял, что интерфейс и обработку данных я и сам смогу сделать, хотя по некоторым вопросам мне все-таки пришлось консультироваться. А часть программы, которая выполняет прием передачу через COM-порт, мне писал Валера (надо бы его еще раз попытать, чтобы разъяснил мне, чего он там понаписал).
Вкратце остановлюсь на функционале программы. Естественно, интерфейс стал по приятнее, появились изображения лампочек, количество ламп я теперь не отображаю, как показала практика, больше одной лампы за раз никогда не перегорает, и в этом отношении мне достаточно было бы знать, что нагрузка стала меньше номинальной.

На дисплее теперь только картинка лампочки:

1) прозрачная лампа – свет выключен;
2) желтая лампа – свет включен и нагрузка номинальная;
3) красная лампа – авария, свет может быть включен или выключен.
Лампочкометр-2 также унаследовал функцию включения подкачивающего насоса в подвале. О статусе которого сообщает надпись на дисплее «Насос включен» или «Насос отключен». В меню управления пока всего четыре кнопки, разделенные по разным пунктам меню: Пункт «Меню» с подменю «События» и «Выход». Подменю «События» пока неактивно, потому что еще не реализовано, планирую сделать в нем просмотр лог-файла, логирование тоже еще не сделано. Подменю «Выход» - для выхода из программы, выход сделан через окно ввода пароля, это от случайного закрытия программы, доченька (3 года) у меня уже понимает, что на навигаторе и прочих коммуникаторах можно чего-нибудь потыкать и очень это любит.


Пункт меню «Насос» с подменю «Включить» и «Выключить» соответственно для включения или отключения насоса. Также планируется добавить управление насосом по расписанию. Если вы заметили, программа не имеет функции «Сброс» как в старом лампочкометре. На самом деле она есть, осуществляется это теперь нажатием на какую либо лампу – преимущество тач-скрина. В общем-то, это все про основную программу, все настройки программы хранятся в отдельных конфигурационных файлах.

Настройка Лампочкометра осуществляется из отдельной программы - "LampConfig". Пока состоит из трех вкладок.
Вкладка "Калибровка", где производится калибровка нагрузки. По каждому каналу отображается текущее значение АЦП / калибровочное значение (85% от полной нагрузки).
Вкладка "Связь" - для настройки параметров связи.
Вкладка "Насос" - пока не сделана, предполагается настройка работы насоса по расписанию.




На первых порах отладка программы велась полностью на компьютере по следующей схеме:





Аппаратная часть

После того как были реализованы основная функция программы, то есть прием данных через COM-порт я приступил к изготовлению аппаратной части. Но было принято решение сразу не делать необходимую плату, а сделать сначала экспериментальную, на тот случай, если что то не пойдет, а плату можно будет использовать для других целей. Для этого была изготовлена плата вот отсюда Электроника для всех. Собственно тут и преобразователь USB to COM и программатор, во общем пригодится. Единственной доработкой платы был преобразователь RS232 to RS485. Была изготовлена маленькая субплата, которая запаивалась в основную. Следует отметить саму FT232, ничего мудрить для управления приемом передачей RS485го интерфейса не пришлось, микросхема сама все умеет. У микросхемы кроме выходов COM-порта есть пять выходов которые могут конфигурироваться по усмотрению пользователя. На сайте производителя есть конфигурационная программа, но для RS485 уже все сделано, выход CBUS2 определен как «TXEN», когда идет передача на выводе устанавливается высокий уровень.

Преобразователь изготовлен, можно пробовать соединяться с реальным железом, с контроллером нижнего уровня. Протокол был оставлен прежним, что-то менять пока нет нужды. Скрестив пальцы на удачу, и в таком нелепом положении подключаем провода к нашему преобразователю. И о чудо, после загрузки программы, предусмотренный светодиод «TXEN» начинает весело мигать. Для непосвященных, делов то мигает лампочка, и чего тут такого, но Вы то меня понимаете… wink

Итак, программа и преобразователь заработали – я увидел данные АЦП обоих контроллеров нижнего уровня. Но через некоторое время преобразователь стал «затыкаться», светодиод не мигает – опроса нет.

Выполняйте правильно движения

Сначала подумал, что не кисло, было бы сделать гальваническую развязку. Сделал – не помогло. Решение оказалось очень простым – я просто напросто пренебрег установкой согласующего резистора 120 Ом, на выходе трансивера RS485. После установки преобразователь работал без сбоев.

Танцы с бубном

Вот теперь самое интересное, про то, как заставить автонавигатор общаться с внешним миром через FT232.
Во первых нужно выяснить сможет ли USB-порт нашего устройства работать как USB-host. То есть быть управляющим. По умолчанию практически все автонавигаторы настроены как раз, наоборот, для работы в качестве клиента, и не могут управлять, чем либо. Для управления режимом работы порта в автонавигаторе в реестре есть параметр OTGPortMode. Уменя он находится здесь HKEY_LOCAL_MACHINE\Drivers\BuiltIn\USBOTG\OTGPortMode = 2. После переключения OTGPortMode = 1 автонавигатор перестает видится при подключении к компьютеру. Теперь можно пробовать подключить к нему FT232, здесь есть еще один нюанс – автонавигатор не выдает на USB порт питание, а посему придется кормить микросхему снаружи. Подключаем питание к микросхеме, вернее плате преобразователя, втыкаем разъем заранее припаянного шнура к нашей плате в автонавигатор. И если все Ок, то на экране появится диалоговое окно с предложением ввести имя драйвера. Все это означает, что USB порт работает в режиме хоста и более того определяет, что к нему, что-то подключено. Теперь об установке самого драйвера. И тут к гадалке не ходи есть нюанс. В файле README, который поставляется вместе с драйверами сказано, что файлы драйвера будут прочитаны из каталога Windows, то есть необходимо их туда скопировать и ввести имя dll файла. Проверяем, отключаем преобразователь от навигатора, затем подключаем заново, Windows больше не предлагает ввести имя, их этого делаем вывод, что драйвера установились и вероятно, что даже будут работать smile. До того как я успел начать работать со своей программой был проведен еще один эксперимент, в ходе которого выяснилось, что при перезагрузке навигатора, Windows грузится из ROM, и следовательно нашими драйверами теперь и не пахнет. Благо выход нашелся быстро, драйвера были скопированы на встроенную флэш-память, при вводе имени драйвера был указан путь до файла драйвера. Ну и последний нюанс, поскольку у меня в программе еще не реализован поиск портов, и COM-порт указывается в конфигурационном файле, необходимо было знать под каким именем COM-порт «прописался» в Windows, для этого была написана маленькая программка. Которая выдала мне список встроенных портов + мой преобразователь «$device//COM10».

Вдох

Программа частично написана (только отображение данных АЦП), преобразователь собран, драйвера установлены. Ну, вообщем я не сильно удивился, когда все заработало, но радость от того, что все получилось, все-таки была.

Рутина

Куда без нее, даже описывать ее уже лень, но без нее было бы только полдела. Осталось сделать «правильный» преобразователь, источник питания для него и автонавигатора, и затолкать это все в корпус.

Схема преобразователя



Как мы видим, RS485 теперь гальванически развязан, и обрел всю необходимую «обвязку». Как вы наверное уже заметили, по тексту я нигде не упоминал тип приемо/передатчика RS485, по тому, что производителей великое множество, тут уж кому что больше подходит, я использовал ADM485. Питание ADM485 осуществляется через изолированный DC-DC конвертер TMA0505D. Развязка сигналов RX, TX и сигнала переключения «прием/передача» сделана на оптронах – были под рукой. Но тут есть варианты:

Первый – вместо двух оптронов можно поставить ADMUX1301.
Второй – вместо двух оптронов и ADM485 поставить ADM2486.
Datasheets прилагаются, там все понятно.
Как и раньше, питание на Лампочкометр подается по кабелю связи с контроллера нижнего уровня, но поскольку потребление теперь возросло по сравнению со старым лампочкометром, то и стабилизатор пришлось переделать. Стабилизатор сделан на LM2575T-ADJ. Это импульсный стабилизатор напряжения с током нагрузки до 3 Ампер. Схему не привожу, сделана по даташиту.

Ну и напоследок парочка видео.



Заметили, что оптроны припаяны со стороны дорожек. Ни какого хитрого умысла здесь нет - просто ошибся при разводке платы. Но в приложенных файлах плата исправлена.



Про содержимое "черного ящика" Вы наверное догадались. Там показанная выше плата преобразователя и стабилизатор напряжения собранный навесным монтажом. Назначение светодиодов, сверху вниз:

Красный - "Передача"
Зеленый - "Прием"
Желтый - "+5в изолированное", питание ADM485
Зеленый - "+5в", питание навигатора и всей схемы

Мигание желтого светодиода не несет никакой смысловой нагрузки, просто продавец в магазине - редиска, ошибся и продал мне "мигающий" светодиод. Ну не нести же его обратно.

И файлы, можно поиграться.
🎁lampcontrol.zip  3.52 Mb ⇣ 90

P.S.
А как все начиналось...

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 11 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Дистанционный контроллер состояния подъездного освещения с web-интерефейсом: Лампочкометр-WEB... …а вот не видать из Челябинска моего Лампочкометра, я вам скажу больше – его уже и из-за угла не...
Схема на Датагоре. Новая статья Компьютер в домашней лаборатории. Магда Ю.С.... Компьютер в домашней лаборатории. Магда Ю.С. Издательство: ДМК Пресс Год издания: 2008 Страниц: 200...
Схема на Датагоре. Новая статья Опыт переделки пассивной акустики 6АС-511 в активную. «Элегия 102» + TDA2030A... «Элегия 102», 6АС-511 Сказ про Ивана-самоделыча, гусли-самогуды эмпэтришные и колоды...
Схема на Датагоре. Новая статья Пусть всегда будет солнце!... Сегодня День Победы. Мы так долго живём без войны, что начали забывать, что это такое, а без этой...
Схема на Датагоре. Новая статья Со Старым Новым годом!... Старый Новый год — Новый год по юлианскому календарю («по старому стилю»). Наступает в ночь с 13...
Схема на Датагоре. Новая статья Открыт новый форум по компам, сетям и телефонам!... Привет, дрУги! Внемля пожеланиям горожан, создал новый форум. Надеюсь, он не долго будет стоят...
Схема на Датагоре. Новая статья Лампочкометр - контроллер освещения, прибор для отображения количества исправных ламп... ПрологС 2006 года я по совместительству работаю в своем доме электриком. Причины тому у меня были...
Схема на Датагоре. Новая статья Схема подключения электрической печки Zanussi на 220 и 380 Вольт... Привет, дрУги! Прикупил я намедни первую иностранную печку в жизни - Zanussi ZCE561MW. Как выбирал...
Схема на Датагоре. Новая статья Цифровой измеритель остатка топлива и напряжения АКБ для автомобиля (ATMega8 и дисплей от Nokia 1110i)... Не знаю кому как, а мне лично не нравится точность, вернее ее полное отсутствие у автомобильного...
Схема на Датагоре. Новая статья "Кубики" для автолюбителя: ИБП 5В, БП 12В, сенсорный выключатель обгонной камеры... Вообще, любовь — страшная сила. Особенно когда это любовь к машине. Хочется, чтоб твоя ласточка...
Схема на Датагоре. Новая статья Прибор для измерения выходной мощности усилителя на микроконтроллере Attyny13, Attyny45... В поисках чего бы ещё собрать в плане изучения МК, нашел датагорскую статью «Стрелочный индикатор...
Схема на Датагоре. Новая статья Чудо-вилка!... Может, конечно, уже были такие идеи и статьи, но я хочу представить Вашему вниманию одну вещь. Мне...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

alladin

<
Читатель Датагора

Datagor

<
Читатель Датагора

Ryan

<
Читатель Датагора

Discover

<
Читатель Датагора

alex

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой