Подключение весов по RS232 к Arduino Mega + MAX3232 - нет ответа
- Войдите на сайт для отправки комментариев
Добрый день!
Подскажите пожалуйста, насколько реализация Arduino + COM порт на MAX3232 является 100% COM портом.
Ситуация такая, есть весы, которые хотим подключить по RS232. CAS DB-2
2) Весы + компьютер = OK. Беру терминал, руками отправляю в порт 0х05, получаю ответ 0х06, отправляю 0х12 - ПРОФИТ. Штатный тестер весов делает то же самое.
3) Arduino + компьютер = OK. Беру терминал, из Ардуино отправляю в порт 0х05, пишу ответ 0х06, отправляю из Ардуино 0х12 - ПРОФИТ.
Сравненение лога обмена между: комп+весы и комп + ардуино = отличий нет.
4) Весы + Ардуино = НИЧЕГО. Просто при отправке в порт, ничего не приходит. Serial.read() всегда дает -1. Serial.available()>0 не срабатывает. Весы ничего не отвечают. Переключаю СРАЗУ кабель на комп и все есть.
Все тесты с одним и тем же кабелем, компом, весами и Ардуино.
Просто уже не знаю куда дальше копать.
Помогите пожалуйста, кто в теме!
Вот ссылка на MAX3232 http://ru.aliexpress.com/item/10pcs-lot-MAX3232-RS232-to-TTL-Serial-Port-Converter-Module-DB9-Connector-MAX232/32275851510.html?isOrigTitle=true&isOrig=true#extend
Весы могут использовать еще и другие ноги. Если вы использутете полноценный провод (то есть со всеми 9-ю линиями) посмотрите в настройках весов нет ли там выбора аппаратного/программного управления потоком (DTR, DSR, RTS, CTS). Если таких настроек нет, то возможно, что на вашем преобразователе данные линии как то между собой соединины, если так перережте дорожки или используйте провод только с 3-мя линиями (GND, RX, TX).
Провод собран именно с 3-ми линиями. На Ардуино не увидел никаких настроек Serial кроме скорости. Аппаратного управления потоком там нет точно. DTR, DSR, RTS, CTS = off
А если небольшую задержку после отправки вставить? Весы могут и не сразу ответить.
Думал об этом, поставил delay(5), но возможно надо побольше. Сегодня проверю.
Вы лучше код покажите, который в дуину заливаете.
Судя по логу обмена КОМП <-> Весы, ответ происходит за 15-20мс.
Добавление задержки в 30мс не помогло. От весов не ответа.
Перетыкаю этот кабель в комп - все есть. Мистика.
Для проверки замыкаете на конце провода (который втыкаете в весы) RX с TX и жмете ресет на дуине. Должно приходить то же что и отправляется.
Чем дело кончилось ?
Вопрос решил, но аппаратно.
Как выяснилось, все весы требуют существенно БОЛЬШЕГО напряжения на RS-232 порту.
Более-менее заработало, когда подняли напряжение до 12 V на проводе питания.
COM порт на компе, как оказалось, по умолчанию выдает 12 V на проводе питания, а ардуино только 5 V.
Из-за этого весы не видят сигнал. Похоже там либо отсечка как несущественный сигнал, либо просто такая плата сопряжения RS-232 в весах, что она требует внешнего питания и не работает без него.
Я сам сейчас работаю с CAS PDI, однако мне нужен только вес, поэтому команда не 0x12, а 0x11 и считываю только 15 символов.
Оба кода (см. выше ) в плане приема не работают, они читают отлько один символ и стартуют снова - цикл loop.
Не совсем понял где Вы поднимали питание. На Serial1 ? У COM порта питание отдельно не выводится.
Вы http://ru.aliexpress.com/item/10pcs-lot-MAX3232-RS232-to-TTL-Serial-Port-Converter-Module-DB9-Connector-MAX232/32275851510.html?isOrigTitle=true&isOrig=true#extend применяли ?
Вот рабочий код + плата RS232-to-TTL. Все работает штатно. Ардуино от USB шнурка, CAS PDI включен, и все :).
Старт и прием 15 символов, прием разбит на 3 цикла, 1-й это прием и печать стартовых байтов 0х01 и 0х02 и их вывод в формате Нех, 2-й это показания весов в символьном формате, 3-й это прием и печать контрольной суммы и стоповых байтов 0х03 и 0х04 и их вывод в формате Нех. Скобки для выделения.
Забыл :)
Еще конечно переходной шнурок папа-папа, между мамой шнурка CAS и мамой платы RS232-to-TTL.
Шнур перекресный 2на 3, и 3 на 2, ну и 5 на 5.
Чтобы его убрать в дальнейшем есть платы с разъемом папа https://ru.aliexpress.com/item/MAX3232-RS232-to-TTL-Serial-Port-Converter-Module-DB9-Contor-MAX232/1859067184.html?spm=2114.13010608.0.0.cs0kY1.
Получилось ли подключить весы к arduino ?
Да все работает уже 2 год.
Основная проблема в соглосовании уровней сигнала. RS232-to-TTL
У весов CAS честный RS232 с уровнями -12v и +12v.
У Ардуино уровни TTL 0v и +2,4-5v.
Ну и прикол от CAS - не стандартное расположение нуля в разъеме.
в RS232 разъеме ноль на 7 ноге, у CAS на 5 :)
Ну все что выше ты написал я понял, а как с разностью 12 и 5 вольт проблему решил ? Будь добр на почту напиши плз
Нажмите на ссылку RS232-to-TTL.
На плате 2 разьема
Первый блочный разъем RS232 - 9 пин это для кабеля COM9.
на 2 платном разьеме штырьки 4 шт они идут на Ардуинку (ниже название пинов)
5V
Ноль
TX
RX
Соединяем
весы -> кабель RS232 -> плата согласования уровней RS232-to-TTL -> Ардуино
Нажмите на ссылку RS232-to-TTL.
На плате 2 разьема
Первый блочный разъем RS232 - 9 пин это для кабеля COM9.
на 2 платном разьеме штырьки 4 шт они идут на Ардуинку (ниже название пинов)
5V
Ноль
TX
RX
Соединяем
весы -> кабель RS232 -> плата согласования уровней RS232-to-TTL -> Ардуино
глупый вопрос, но конвертор с ардуино соединять rx - Rx или rx - tx ??
Накрест соединяй. Если не заработает, то прямо.
Я так сегодня уже делал. Подключаю в обратном направлении и вставляю штекер с Выключеными весами и начинаю получать просто нон-стоп ерунду. В когда подключаю напрямую - тишина. Вот и решил узнать. ))
Может весы в активном режиме работают - постоянно данные стримят? Или провод (со стороны RS232) в воздухе болтается и ловит радио Маяк.
глупый вопрос, но конвертор с ардуино соединять rx - Rx или rx - tx ??
конвектор - он же преобразователь уровня сигнала - проходное устройство следовательно
ТХ - ТХ
RX-RX
Хотя ?! :)
Замкните TX на RX на выходе конвектора и прогоните с гипертерминала прохождение сигнала.
Что бы убедиться в работе конвектора
Я так сегодня уже делал. Подключаю в обратном направлении и вставляю штекер с Выключеными весами и начинаю получать просто нон-стоп ерунду. В когда подключаю напрямую - тишина. Вот и решил узнать. ))
Марка весов ?
"начинаю получать просто нон-стоп ерунду" - скорости совпадают ?
Масса-к, скорости пробовал.
Програмный протокол весов знаете ?
скорости пробовал - и как ? Вкусно ? :) подробнее :)
Программный протокол описан в документации, так как я с rs232 общаюсь первый раз, вот и узнаю что и как )
Я так понимаю max3232 подключать к ардуино накрест?
Подключать-то вы можете правильно. Выходы на модуле могут быть подписаны неверно.
У Вас max3232 как отдельная микросхема или плата ?
Плата
Самое простое - в цикле шлите с ардуинки или 1 символ или группу "012345678901234567890"
Только проверяйте готовность регистра передачи
или с интервало 200-300 мс
ТХ разъема платы на RX компьютера
в терминалке должны увидеть то что передаете
Эмммм.... Ладно, буду завтра продолжать курить дзен.
Тоже самое с весами
дайте стабильный вес на весы
и подбирайте скорость
очень редко когда передача двоичная, как правило при совпадении скоростей видны символы как на дисплее весов
если они шлют поток без запроса
если есть мануал ПРОГРАМНОГО обмена т.е. шлем команду птакую - то и получаем ответ такой то
вышлете гляну
Эмммм.... Ладно, буду завтра продолжать курить дзен.
https://massa.ru/upload/iblock/ff8/massa-k-scales-connection-to-pc.pdf - шикарное описание на весы.
Курите с 3 главы :)
Эмммм.... Ладно, буду завтра продолжать курить дзен.
https://massa.ru/upload/iblock/ff8/massa-k-scales-connection-to-pc.pdf - шикарное описание на весы.
Курите с 3 главы :)
Проверили получение на компьютер данных через usb - ttl, все работает нормально.
Мне же не нужен max3232 для получения данных на UNO? если напрямую подключу?
Вставляя стандартный пример с SoftwareSerial и подключая Rx - Tx и следовательно обратно, не получаю ничего в ответ. Что я делаю не так? Есть идеи ?
Если считаете, что не нужен - не используйте. Это же ваш проект, Вы в нём инженер и ведущий разработчик.
Проверили получение на компьютер данных через usb - ttl, все работает нормально.
Мне же не нужен max3232 для получения данных на UNO? если напрямую подключу?
нужен max3232 stogo UNO 5V and scales 12V
Проверили получение на компьютер данных через usb - ttl, все работает нормально.
Что проверили , чем проверили, что подключали ?
Мне же не нужен max3232 для получения данных на UNO? если напрямую подключу?
Что к чему подключите ?
Вставляя стандартный пример с SoftwareSerial и подключая Rx - Tx и следовательно обратно, не получаю ничего в ответ. Что я делаю не так? Есть идеи ?
Откуда не получаете? А что хотите получить? В ответ на что ?
Все вопросы не для того чтобы подколоть :( Вы ставите вопросы так что я должен догадаться, о чем Вы говорите, а не ответить на конкретный вопрос.
Пишите подробно. Тогда и ответить можно точно и главное в тему.
нужен max3232 stogo UNO 5V and scales 12V
А шо такое - stogo ??? :)
Покдлючаю следующее:
Разьем от весов по документации нахожу Tx и подключаю к Rx на Uno.
Rx - подключаю к Tx на Uno.
Подключаю земслю с весов на GND ардуины.
Заливаю в UNO скетч:
После чего любое мое сообщение в мониторе порта не дает никаких отклюков от весов.
Как вы думаете ?
Что произойдет если включить прибор расчитаный на 220 в сеть 110 ?
И наоборот ?
Так если я не ошибаюсь, то с rs232 с весов выходит 5V ? Или я ошибаюсь ?
http://ua.nauchebe.net/i/a/electronics/RadiolubitelSovety2012_image707.jpg
Верхния диаграмма - это сигнал (и его уровни-напряжение) с/на микропроцессор
Нижняя - такой сигнал и его уровни в стандарте RS232
Так если я не ошибаюсь, то с rs232 с весов выходит 5V ? Или я ошибаюсь ?
Почему Вы так думаете ?
А почему к компу через конвертер подключали ?
Если RS232 это +/- 12 вольт
Если пишут RS232 TTL то тогда 0 ---> +5 вольт
И задача ковертера изменить диапазон напряжения в одну и другую стороны.
-12 с RS232 может выбить вход микропроцессора.
Можете тестером глянуть вольтаж на выходе весов TX. Как правило он в минусе.
Я так понимаю тогда собираю делитель напряжения и погнали ?
Нет
конвертер на MAX3232.
+12 в +5 можно делителем,
а +5 в +12 чем ?
еще интереснее 0 в -12
Для согласования приборов на 110 и 220 есть прибор - ТРАНСФОРМАТОР.
он и с 110 на 220 , и с 220 на 110 поможет
Для Вас трансформатор - конвертер на MAX3232
http://ua.nauchebe.net/i/a/electronics/RadiolubitelSovety2012_image707.jpg
Верхния диаграмма - это сигнал (и его уровни-напряжение) с/на микропроцессор
Нижняя - такой сигнал и его уровни в стандарте RS232
Разберитьесь с диаграмой !
Весы передают и принимают по нижней
а процессор по верхней.
между устройствами MAX3232 он и выполняет сдвижку напряжений. Чем он вам не нравиться ?
Кстате в каком протоколе у Вас работают весы ? см. стр. 12 https://massa.ru/upload/iblock/ff8/massa-k-scales-connection-to-pc.pdf
20
void
loop
()
// выполняется циклически
21
{
22
if
(mySerial.available())
23
Serial
.write(mySerial.read());
24
if
(
Serial
.available())
25
mySerial.write(
Serial
.read());
26
}
В этом куске вы ждете 1 символ от весов , и когда он придет - посылаете его на монитор порта
затем ждете ввода символа с монитора для отправки на весы.
Это не верно
Вы не читали или не поняли как весы ведут обмен.
им сначала нужно дать стартовый сигнал, в зависимости от режима (протокола).
а затем принять СЕРИЮ символов.
Кстати весы дают ДВОИЧНЫЙ сигнал. на экране хрень будет. и это при условии правильного старта весов.
В каком городе живете ?
...
глупый вопрос, но конвертор с ардуино соединять rx - Rx или rx - tx ??
конвектор - он же преобразователь уровня сигнала - проходное устройство следовательно
ТХ - ТХ
RX-RX
Хотя ?! :)
Замкните TX на RX на выходе конвектора и прогоните с гипертерминала прохождение сигнала.
Что бы убедиться в работе конвектора
Сегодня проверил в живую
ТХ - ТХ
RX - RX
конвертер и ардуинка соединены одноименными контактами.