Название: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 09, 2011, 23:16 Что-то я задолбался....
Хочу прикрутить к COM порту (RS232) цифровой термометр LM75 который видает данные по протоколу I2C. Как ето сделать. Для роботы c COM использую QSerialDevice http://gitorious.org/qserialdevice/qserialdevice/archive-tarball/master А как преобразовать в I2C ? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 10, 2011, 06:37 >>А как преобразовать в I2C ?
через адаптер и не слишком простой по конструкции. Лучше использовать термометры работающие по 1-Wire (например, ф.Dallas), там адаптер RS-232 - 1-Wire простейший. (могу дома поискать схему адаптера и програмку для чтения данных с термометра) Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 10, 2011, 11:56 >>А как преобразовать в I2C ? Да, пожалуйста.через адаптер и не слишком простой по конструкции. Лучше использовать термометры работающие по 1-Wire (например, ф.Dallas), там адаптер RS-232 - 1-Wire простейший. (могу дома поискать схему адаптера и програмку для чтения данных с термометра) Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 12, 2011, 23:24 Вот ZIP-архив (http://lit-uriy.narod.ru/temp/1Wire.zip), там html-ное описание (со схемой адаптера), исходники программ (на дельфях вроде) и скомпилированные программки.
П.С. где взял уже не помню, но точно на просторах интернета. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 12, 2011, 23:59 Спасибо. Сейчас в нас отрубился свет, непогода.... Так что сижу с мобилки. Но до этого мне удалось заставить моргать светодиоди, подключеные прям к ком порту.
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 14, 2011, 00:01 Так, там используются два API винди для преобразования стандартов I2C -> RS232. А мне надо кросплатформенний вариант.
Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 14, 2011, 13:20 Изучи код, он не сложный.
Весь обмен по 1Wire осуществляется так: Сигнал "Reset", затем побитная передача команды в устройство, затем побитный ответ устройства. идея преобразования там простая: Один бит информации по 1Wire передаётся одним байтом UARTа при определённой скорости. Выставив только один бит в единичку по UARTу, сигнал становится эквивалентен одному биту 1Wire. Это собственно замысел фирмы Даллас (обеспечить простую аппаратную поддержку их интерфейса. Сигнал "Reset" очень длинный по сравнению с обычным битом 1Wire, для этого этот сигнал передают при меньшей скорости UARTа, чем все оставшиеся биты. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 14, 2011, 14:02 http://www.youtube.com/watch?v=HLOx1LVVhH0
Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 14, 2011, 14:58 к чему эта ссыль?
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 14, 2011, 16:16 моя робота с ком портом.
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 15, 2011, 21:41 Изучи код, он не сложный. Спасибо, чуток прояснилась ситуация. Но все равно не до конца понятно..... там исходники на делфи :(Весь обмен по 1Wire осуществляется так: Сигнал "Reset", затем побитная передача команды в устройство, затем побитный ответ устройства. идея преобразования там простая: Один бит информации по 1Wire передаётся одним байтом UARTа при определённой скорости. Выставив только один бит в единичку по UARTу, сигнал становится эквивалентен одному биту 1Wire. Это собственно замысел фирмы Даллас (обеспечить простую аппаратную поддержку их интерфейса. Сигнал "Reset" очень длинный по сравнению с обычным битом 1Wire, для этого этот сигнал передают при меньшей скорости UARTа, чем все оставшиеся биты. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 17, 2011, 00:29 Почитал, тут даташитов, посмотрел как делают на МК, и сделал вывод, что надо реализовать следующие основные функции:
аналогичные таким: unsigned char w1_init(void); unsigned char w1_read(void); unsigned char w1_write(unsigned char data); unsigned char w1_search(unsigned char cmd,void *p); DS18B20 [rus] http://invent-systems.narod.ru/DS18B20.htm Вот нащупал алгоритм поиска всех устройств на шине. http://www.maxim-ic.com/app-notes/index.mvp/id/187 UART to 1-Wire concept http://pdfserv.maxim-ic.com/en/an/AN74.pdf Цитировать UART attachments There are two ways to create 1-Wire communication through a UART. The traditional way uses the timing capabilities of the UART directly, but has to invest one character to generate one time slot or the reset-/presence-detect sequence. This concept is described in application note 214, "Using a UART to Implement a 1-Wire Bus Master." Although efficient under operating systems such as DOS, modern operating systems make the access to UART registers quite inefficient. For this reason, this type of UART attachment is no longer popular for 1-Wire applications. The new UART attachment uses a special protocol converter chip, the DS2480B, to generate 1-Wire communication. This device increases the efficiency (one character for 8 time slots) and allows 1-Wire overdrive speed. This type of interface is discussed in category 4, Serial Interface Protocol Conversions, of application note 4206 (see above). If properly configured (see application note 4104, "Understanding and Configuring the 1-Wire Timing of the DS2480B"), the DS2480B can drive more than 30 slaves in standard speed and at least nine in overdrive speed. The DS2480B is the only integrated 1-Wire master that can program EPROM devices. serial port to 1-Wire http://asan.gaw.ru/pdf/Dallas_Sem/1-Wire/DS2480B.pdf Только не понятно, как бить если на шине несколько девайсов. Может кто-то подсказать? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 17, 2011, 09:46 >>Только не понятно, как бить если на шине несколько девайсов. Может кто-то подсказать?
Очень просто. идея 1Wire - есть резистор подтяжки к питанию. нам остаётся только коротить линию связи на землю, тем самым формируя сигнал. Другими словами замыкание линии на землю - не криминал. В каждом устройстве есть ID, его считывают в первой фазе обмена. Если устройств несколько, то отвечать они начнут хором. тогда мастер шины (например, компьютер) услышит только то устройство у которого больше нулей (в двоичном коде). В протоколе обмена 1Wire предусмотрена команда "Устройство №*** помолчи". итак мастер считывает ID (услышит только тот, который больше нулей содержит), затем говорит этому устройству "помолчи" и опять запрашивает ID, первое молчит, остальные отвечают. Опять услышит только тот ID, который больше нулей содержит (из числа оставшихся). Затем ему говорит "помолчи" и т.д. пока на запрос ID никто не ответит. Теперь список устройств в сети есть и можно к каждому индивидуально обращаться. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 17, 2011, 11:57 О, точно. :)
Я так понял, что надо,при обмене инфой, послать адрес девайса, а потом команду "дай температуру" ? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 17, 2011, 14:57 >>а потом команду "дай температуру" ?
точно не помню. Но обычно в устройствах 1Wire используют термины - "Читать регистр/память" по такому-то адресу. А в документации по конкретному устройству расписано по каким закромам разложены данные и в каком формате. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 17, 2011, 18:47 >>а потом команду "дай температуру" ? Ну да, ми шлем команду "Читать регистр/память" , а в ответ от конкретного девайса получаем данные о температуре.точно не помню. Но обычно в устройствах 1Wire используют термины - "Читать регистр/память" по такому-то адресу. А в документации по конкретному устройству расписано по каким закромам разложены данные и в каком формате. Но куда вставлять адрес девайса при отправке запроса "Читать регистр/память" ??? тут я не пойму... ПС А что нет либ для компа чтоб работать с 1-wire по com port ? http://martybugs.net/electronics/tempsensor/software.cgi Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 17, 2011, 21:36 >>ПС А что нет либ для компа чтоб работать с 1-wire по com port ?
ну, собственно, я тебе дал исходники :) А дельфи не такой сложный, как Си++. На крайняк можешь ещё здесь (http://www.maxim-ic.com/products/ibutton/software/windowsdk/) посмотреть ;) Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 19, 2011, 00:51 >>ПС А что нет либ для компа чтоб работать с 1-wire по com port ? Решил не парится, а поставить фирменный преобразователь serial<->I2C DS2480 http://nuclear.physics.nmsu.edu/ahoover/2480.pdf ну, собственно, я тебе дал исходники :) А дельфи не такой сложный, как Си++. На крайняк можешь ещё здесь (http://www.maxim-ic.com/products/ibutton/software/windowsdk/) посмотреть ;) А также нарил 1-ware : АЦП DS2450 ЦАП DS2408 Хм, класна штука 1-ware ::) ::) Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 12:35 Есть вот така штука:
(конвертер для серв) http://store.flytron.com/rc-electronics/94-6ch-rs232-servo-driver.html Я подключил к com порту, вернее к переходнику (usb -com), и не могу поменять положения серв.. Делаю я так: Код Что не так?? Название: Re: RS232 to I2C ? Отправлено: kuzulis от Февраль 25, 2011, 12:58 Попробуй сначала в терминале набрать эту команду и отправить этой железяке (жмакнув Enter).
А потом код и/или так: Код
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 13:10 А как отправить команду в терминале?
ПС. С вашим кодом не хочет... Название: Re: RS232 to I2C ? Отправлено: kuzulis от Февраль 25, 2011, 13:17 Эмм...
Ну, если винда - то 1. открываешь гипертерминал/putty (с соответствующими настройками скорости/паритета и т.п.). 2. пишешь в терминале: Цитировать 11500 3. Жмакаешь EnterКак то так. ЗЫ: там же еще нужно заранее настроить железяку на нужную скорость обмена (судя по описанию), может в это проблема? Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 13:21 А если линукс?
Название: Re: RS232 to I2C ? Отправлено: kuzulis от Февраль 25, 2011, 13:29 В линухе тоже есть putty (портирован в линух), или использовать minicom или еще какой терминал... Поищи в гугле.
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 13:41 Хм, что- то не выходит...
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 15:26 Что самое главное, так то что я не могу попробовать на винде, так как не порт не драйвер не работает. Что за винда???- хз.
Припаял к Тх ноге порта светодиод, так он зараза мигает - значит дание передаются... А что дальше делать, прям не знаю. ПС. А какие есть команды для atmeda48 чтоб можно било прочесть какие-то дание (частота МК,....) Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 25, 2011, 20:25 >>ПС. А какие есть команды для atmeda48
никаких. ATmega - микроконтроллер. Всё зависит от его прошивки П.С. Ubuntu_linux, ты отклонился от темы. Последние посты не имеют отношения к преобразователям интерфейсов. Serial Servo Driver - это не конвертер, это контроллер (драйвер) серводвигателя. П.П.С. Самоделкин, родивший этот девайс тебя дезинформировал (видимо по собственной не грамотности). нет там интерфейса RS-232, там обычный UART/TTL, поэтому он через RS-232 работать и не будет (надеюсь он ещё жив после этого). Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 25, 2011, 22:10 Так, а в чем разница между ними?
По моему там разница, только в уровне сигнала, в rs232 +- 15В , в UATR +5. От, попалось на глаза: Сигналы UART'а - 0 -> лог "0", +5В ->лог "1". Сигналы RS232 Com port'a, +3..+15 (лог 0), -3..-15 (лог 1). То есть надо инвертировать бай. ??? А как ето сделать, попроще...??? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 26, 2011, 07:37 >>По моему там разница, только в уровне сигнала
да >>в rs232 +- 15В , в UATR +5. не UART, а TTL. не путай принципиальные понятия: RS-232 и TTL - электрические интерфейсы (физический уровень по ВОС) UART - уровень звена данных (по ВОС), т.е. преобразует звено данных из одной формы (параллельной) в другую (последовательную) >>А как ето сделать, попроще м-м-м, если не жалко расковырять шнурок USB - RS-232, то можно оттуда проводки вывести. Там внутри всё равно два преобразователя: USB - UART/TTL - UART/RS-232 Я не знаю какой у тебя уровень знаний по электронике, сложно советовать. Название: Re: RS232 to I2C ? Отправлено: kuzulis от Февраль 26, 2011, 11:26 Цитировать А как ето сделать, попроще...Непонимающий Купи микруху MAX 232 или ей подобную и пользуйся на здоровье. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 26, 2011, 16:14 Спасибо за розяснение.
Вот смотрю док. К термо датчику и не могу найти команду ”замолчать” ? Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 28, 2011, 02:44 Значит, поставил инвертор на выход порта Тх на микрухе л561ла7 (что било под рукой). Теперь сигнал инвертированный . Но все равно девайс не откликается на команды...
Что не так? ??? Название: Re: RS232 to I2C ? Отправлено: kuzulis от Февраль 28, 2011, 08:22 Цитата: Ubuntu_linux Что не так? ??? ИМХО, л561ла7. :)Ну зачем городить огород и подсовывать всякий хлам? Купи нормальную микруху (MAX 232 и т.п.) , она стоит копейки и есть везде, или у барыг купи древний (очень древний) мобилковый шнурок с аналогичной микрушкой. Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 28, 2011, 11:06 >>Вот смотрю док. К термо датчику и не могу найти команду ”замолчать” ?
уж точно не помню, вроде она в оригинале "Search" называется. Помню, что оригинальное название команды слабо соответствует её смыслу. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 28, 2011, 17:00 То что било под рукой, и прицепил. Так ка в понедельник выходной на радиорынке, а попробтвать охота.
Я решыл делать связ з комп дл ТЕРМ. микруху 2480 от далас, там чуток проще... Сейчас потехоньку пишу либу для етого... Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Февраль 28, 2011, 17:55 Ubuntu_linux, личку глянь
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Февраль 28, 2011, 20:28 Ubuntu_linux, личку глянь Отписался...Вот взял и соединил Tx і Rx между собой на переходнике USB to COM, но данные не принимаются назад! Так же не должно бить ??? ??? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Март 01, 2011, 07:47 >>Так же не должно бить
Это ты просто как с обычным COM-портом работаешь в программе, или как с 1-Wire? Если как с COM-портом, то должно приниматься. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 01, 2011, 11:19 Как с сом портом.
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 01, 2011, 20:33 Прикупил микруху FT232RL чтоб спаять переходник USB -UART. ;D
(http://farm3.static.flickr.com/2176/2325494421_63764af5ab.jpg?v=0) Спаял! :o Соединяю между собой Tx, Rx на выходе UART, и при отправке данных они возвращаются назад, как и должно бить. Но когда подключаю серво контроллер, то нечего не меняется, сервы стоят на месте. Что делать, не пойму..... В чум может бить проблема? ??? Название: Re: RS232 to I2C ? Отправлено: kuzulis от Март 01, 2011, 21:04 Цитата: Ubuntu_linux Но когда подключаю серво контроллер, то нечего не меняется, сервы стоят на месте. Ну а сам сервоконтроллер то настроен? Попробуй перебрать все поддерживаемые сервоконтроллером скорости (в бодах), может оно заведется.Что делать, не пойму..... В чум может бить проблема? ??? Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 01, 2011, 21:36 Цитата: Ubuntu_linux Но когда подключаю серво контроллер, то нечего не меняется, сервы стоят на месте. Ну а сам сервоконтроллер то настроен? Попробуй перебрать все поддерживаемые сервоконтроллером скорости (в бодах), может оно заведется.Что делать, не пойму..... В чум может бить проблема? ??? Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Март 01, 2011, 21:38 Ubuntu_linux, я думаю, что ты всё таки пожог микроконтроллеру порты отрицательным напряжением.
Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 01, 2011, 21:41 Ubuntu_linux, я думаю, что ты всё таки пожог микроконтроллеру порты отрицательным напряжением. Так там на ком порту (через USB) 0...+5В.Название: Re: RS232 to I2C ? Отправлено: lit-uriy от Март 02, 2011, 10:02 >>Так там на ком порту (через USB) 0...+5В.
Уверен? Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 02, 2011, 12:28 >>Так там на ком порту (через USB) 0...+5В. Да, на все 100. И причем я измерял напряженее тестером.Уверен? Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 02, 2011, 14:47 Лучше уже взять вот этот http://www.pololu.com/catalog/product/1350 контроллер для серв. Там два выхода USB и TTL + можно написать скрипт для автономной роботы. Но больше заморочек, а я погнался за простотой и в результате имею не работающий серво контроллер.
:( Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 02, 2011, 18:13 Может взять вместо блютуза файфай модуль?
http://www.sparkfun.com/products/10004 (http://dlnmh9ip6v2uc.cloudfront.net/images/products/10004-04b_i_ma.jpg) Я так понял, что надо написать простенький TCP клиент и можно будет передавать команди + потоковое видео... Но етот модуль дороже блютуза: http://www.sparkfun.com/products/8497 (http://dlnmh9ip6v2uc.cloudfront.net/images/products/RovingNetBlueTooth-02-L_l_th.jpg) А если взять веб камеру, то на виходе там цифра, и можно передавать по вайфай... ??? интересная микруха, юсб хост.. http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_VNC1L.pdf 143.72грн ~ 20y.e. Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 03, 2011, 00:55 Во, блин, чего накопал:
JPEG Color Camera TTL Interface http://www.sparkfun.com/products/10061 (http://dlnmh9ip6v2uc.cloudfront.net/images/products/10061-01_i_ma.jpg) Название: Re: RS232 to I2C ? Отправлено: Ubuntu_linux от Март 07, 2011, 01:02 Потихоньку, реализую либу для роботи под Qt с one-wire девайсами.
Основной клас DallasOneWire для обмена инфой с девайсами написал, теперь провожу тесты. Соответствено девайса отображает клас OneWireDevice. |