Перейти к содержанию
    

Связь МК ATxmega256A3U с MDB монетоприемником / MDB купюроприемником

Доброго времени суток.

 

Заказчик изменил ТЗ. И там появилась такая задача, что надо брать купюры и монеты и выдавать сдачу ими же.

 

Я до этого купюроприемники/монетоприемники в глаза не видел. В ТЗ прописано:

- Купюроприемник ICT V7 DC 24V MDB

- Монетоприемник NRI Currenza C2 Green MDB

 

Пока все что я понял, что MDB - это последовательный протокол (с линиями RX и TX), но в отличие от всяких UART'ов и RS-232'ых - там сигналы по 24V.

 

Так же в ТЗ прописан МК Atmel ATxmega256A3U-AU TQFP64 (либо опционально МК Atmel ATxmega128A1U-AU TQFP100).

 

Возникают вопросы:

1) Вычитал, что используется опторазвязка для линий RX/TX (на каждую своя), чтобы из 24V сделать 3,3V/5V. Можете дать советы, если кто работал с MDB оборудованием, какие микросхемы использовать для опторазвязки (кто чем это реализовывал по личному опыту)? Может у кого какие схемы имеются по подключению МК c MDB устройствами?

2) Как я думаю, после опторазвязки просто завести эти линии RX/TX в любой из USART'ов ATxmega256A3U-AU. Правильно ли это? Можно ли будет перенастроить этот USART под размер пакета и параметры битов команд MDB?

 

Отчет по этапу - показать общение с Купюроприемником и Монетником, по алгоритму ТЗ.

 

Всем заранее спасибо за ответы и любую помощь.

Любые советы, рекомендации, схемы, информация о граблях будет очень ценна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток. Вы на такое серьезное задание подрубились и не знаете ответы на элементарные вопросы??? И любой совет, естественно ценен. Мой ценный совет - извинитесь перед заказчиком, бросьте проект, изучайте матчасть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To prottoss:

 

Вы на такое серьезное задание подрубились и не знаете ответы на элементарные вопросы???

 

Просто хотел посоветоваться. Так я уже заказал оптопары PC814 в DIP-4. Опторазвязку собирался делать на них так и так.

 

Мой ценный совет - извинитесь перед заказчиком, бросьте проект, изучайте матчасть.

MDB протокол настолько сложен, что будет множество граблей и я не смогу наладить обмен команд по MDB c устройствами быстро и без проблем?

 

Ваш ответ заставил мне засомневаться. Но ведь в каждом проекте выстреливает что-то новое, то с чем не работал до этого. То, что осваиваешь на ходу в горячем режиме. Мне кажется, что надо развиваться на живых проектах. Хотя может я и ошибаюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я уже заказал оптопары PC814 в DIP-4. Опторазвязку собирался делать на них так и так.
Вы заказали оптопары сходя из каких соображений?

Чем отличается USART от RS232?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To prottoss:

 

Вы заказали оптопары сходя из каких соображений?

 

1) Где-то было написано (вроде вычитал в спецификации MDB), что устройства Slave (всякие купюроприемники и монетоприемники), которые соединены по MDB с устройством Master (либо готовая плата для работы с узлами типа купюроприемников и монетоприемников (Vending Machine Controller), либо своя разрабатываемая плата, которая также руководит этими узлами) - должны быть оптически разведены.

 

2) Плюс заказчик на словах сказал, что купюрник и монетник, силовые узлы, так как работают на 24V. В теории на них сказал, можно и больше, там сказал диапазон у них от от 18V до 43V. Пытался найти этому подтверждение в спецификации протокола и доках от монетника/купюрника - но пока не нашел подтверждение. Ну так вот, он сказал мне, что должна быть опторазвязка с MDB разъемами на основной плате (разрабатываемой).

 

Чем отличается USART от RS232?

 

Насколько я знаю в RS-232 сигналы от +15 до -15, где НОЛЬ +5V...+15V, а ЕДИНИЦА -5V...-15V. Это для передатчика, а для приемника там диапазоны более большие по вольтам.

 

UART тот же RS-232 - только у него 5 вольтовые TTL уровни сигнала (от 0V до +5V, где 0V - НОЛЬ, а +5V - ЕДИНИЦА).

 

---

 

UART используется для общения двух устройств в пределах одной платы, ну например там ПЛИС с МК обмениваются командами друг с другом.

 

А если надо передать UART на другую плату, например для для МК на этой плате, а другая эта плата стоит на модуле который на 10 метрах под землей например и соединен с первой платой 10 метровым кабелем.

 

То в итоге мы конвертируем UART'ы на обоих платах через какие-нибудь решения, типа MAX232 в RS-232 и по 10 метровому кабелю они общаются по RS-232, так как там высокие уровни сигналов и возможно осуществить без потерь передачу по длинному кабелю.

 

---

 

Пожалуста поправьте меня, если я мыслю неправильно - буду вам благодарен.

 

PS. Я понимаю, что вы подводите меня к какой-то умной мысли о моей ошибке или заблуждении, но пока я не дошел до ответа самостоятельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока все что я понял, что MDB - это последовательный протокол (с линиями RX и TX), но в отличие от всяких UART'ов и RS-232'ых - там сигналы по 24V.

Не правильно Вы поняли.

Спецификация шины приемо-передатчика.

 

Стандарт определяет связь между VMC и Slave, как оптически изолированную токовую петлю с уровнем напряжения 5 В.

 

VMC/Передача:

Минимальный ток (активное состояние): 100 мА (4 В).

Максимальный ток утечки (неактивное состояние): 100 мкА.

 

VMC/Прием:

Минимальный входной ток (активное состояние): 15 мА (1 В).

Максимальный входной ток (неактивное состояние): 1 мА.

 

Slave/Передача:

Минимальный ток (активное состояние): 15 мА (1 В).

Максимальный ток утечки (неактивное состояние): 30 мкА.

 

Slave/Прием:

Максимальный входной ток (активное состояние): 15 мА (4 В).

Максимальный входной ток (неактивное состояние): 100 мкА.

Питание.

 

VMC выходное напряжение:

Минимальное = 20 В постоянного тока (выпрямленное и отфильтрованное).

Номинальное = 34 В постоянного тока (выпрямленное и отфильтрованное) или 24 В (только выпрямленное).

Максимальное = 42,5 В постоянного тока (пиковое значение на уровне пульсаций).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To zombi:

Не правильно Вы поняли.

Спасибо за информацию. Вроде понемногу проясняется.

 

Стандарт определяет связь между VMC и Slave, как оптически изолированную токовую петлю с уровнем напряжения 5 В.

Вопрос: Если это должна быть токовая оптически изолированная петля с уровнем напряжения 5 В, а у меня например вместо готового решения VMC платы, своя плата с МК, который на 3.3 В. Ну например, ATxmega256A3U-AU, то компетентна (или правильнее сказать адекватна), ли схема развязки, как во вложении? Или туда между МК и оптронами надо поставить какой-нибудь преобразователь TTL<=>LVTTL (5V<=>3.3V), чтобы соответствовать требованиям стандарта (с уровнем напряжения 5 В)?

 

Заранее вам спасибо за ответ.

post-80017-1451227506_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заранее вам спасибо за ответ.
Не нужны преобразователи - достаточно правильно рассчитать сопротивления резисторов R3-R7

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток, уважаемое сообщество форума.

 

Столкнулся с "затыком", который побороть самому не получается.

 

Не могу наладить связь между монетоприемником "NRI Currenza C2 Green MDB" и платой с МК ATxmega128A1 протоколу MDB.

 

По советам и рекомендациям пользователя "aleksandr-zh" (за что ему огромное спасибо), сделал 4 варианта опторазвязок для MDB (два варианта для МК с 5 вольтовыми сигналами и два варианта для МК с 3.3 вольтовыми сигналами). Все они работают, я их по двадцать раз перепроверял, гонял туда сюда меандры. Использую вариант, как на схеме во вложении [04_type2_3.3V.pdf].

 

9-ти битный USART сделал из USART-interrupt драйвера из аппнота "AVR1307:Using the XMEGA USART" путем добавления всего необходимого, для записи TXD8 и чтения RXB8. Там тоже все работает, двадцать раз перепроверял, заставляя две платы слать друг другу 9 битные фреймы и сравнивать их потом.

 

Согласно спецификации протокола MDB (использовал версию 4.2 - на всякий случай во вложении [MDB_version_4-2_(february_2011).pdf]), первое, что должен сделать VMC (Vending Machine Controller) при включении питания - это отправить команду RESET на периферийное устройство (монетоприемник). А монетоприемник должен ответить на это подтверждением (ACK). Но в моем случае в качестве VMC выступает MK XMEGA. Выглядит, так:

 

1) VMC отправляет - 0x108 / 1 00001 000 (команда RESET по адресу монетоприемника)

2) VMC отправляет - 0x008 / 0 00001 000 (чек сумма)

3) Монетоприемник отвечает - 0x100 / 1 00000 000 (команда подтверждения ACK от монетоприемника)

 

Т.е. как во многих источниках написано, этими ресетами, VMC не просто сбрасывает всякие периферийные устройства, а проверяет за счет их ответа подтверждения ACK - есть ли они на линии, или их там нет (может вырвали и убежали...).

 

Ну так вот проблема в том, что мне монетоприемник ничего не отвечает на RESET, по вышеописанному алгоритму.

 

==== Проверка опторазвязок ===

 

Чтобы исключить проблемы на стороне опторазвязки, еще раз погонял через оптроны меандры в обе стороны, причем как 3.3 вольтовые с платы с МК XMEGA, так и 5 вольтовые с "ардуино мега" - все работает. Проверил так же с помощью платы с XMEGA, обе стороны, как показано на рисунке во вложении [Optrons_testing.jpg]. Вроде бы все работает, и проблема не в опторазвязке.

 

==== Проверка линий RX и TX на монетоприемнике ====

 

Просто запитал монетник, и решил проверить, что у него твориться на линии RX и TX в режиме бездействия (idle mode). И меня смутило следующее, что я увидел:

- На линии TX - меандр от нуля до 1 вольта;

- На линии RX - какая-то пила от нуля до 24 вольта;

Скриншот двух линий во вложении [TxD_and_RxD_on_coin_accepror.jpg];

 

ВОПРОС 1: Вроде бы как это вовсе не нормально? Разве на линии RX не должно быть подтянуто до 5 вольт (ЕДИНИЦЫ), и характеризовать начало передачи, когда транзистор оптрона утаскивает ее в НОЛЬ? И разве на линии TX не должен быть при простое (молчании) НОЛЬ, а ЕДИНИЦА (5 вольт) характеризует начало передачи? Вроде бы как из спецификации протокола и схемы опторазвязки - это просматривается очевидно?

 

ВОПРОС 2: Может ли быть что-то не то с монетником? Он моргает диодами сериями по 3 моргания в серии (скриншот во вложении [Coin_accepror_leds.jpg]). Сначала 5 серий красного диода, потом 1 серия желтого.

 

Перечитав от корки до корки "User Manual" и "Installation Guide" на монетник, все, что я нашел там про индикацию диодов:

- Если горит красный, то надо вызывать сервисного инженера.

- Если горит желтый, то пользователь сам в состоянии справиться с проблемами.

- Если горит зеленый, то у вам по жизни все нормально и проблем вроде бы как и нету вовсе.

 

PS. Вроде бы все понятно (в теории), но без помощи я не могу сдвинуться с места. Буду благодарен за любые директивы, в каком направлении копать и отлаживать.

04_type2_3.3V.pdf

MDB_version_4_2__february_2011_.pdf

post-80017-1455797646_thumb.jpg

post-80017-1455797656_thumb.jpg

post-80017-1455797672_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот тут, как я понял, подключали монетоприёмник:

http://blog.bouni.de/blog/2012/05/06/the-m...rotocol-part-1/

и вроде-бы, там сигнал TXD идущий от VMC (который у SLAVE будет RXD) инвертируется, а сигнал RXD VMC (тот что TXD у SLAVE) не инвертируется. Т.е. в точности наоборот с приложенной в предыдущем посте схемой.

 

Вот ещё страничка этого автора, и там в комментах выложили схему какого-то MDB устройства (с иероглифами), где тоже исходящий из VMC сигнал инвертируется, а входящий в VMC не инвертируется.

http://blog.bouni.de/blog/2012/07/09/the-m...rotocol-part-2/

И ещё одно обсуждение, где подключают что-то к MDB шине, и инвертируют исходящие от VMC к SLAVE данные

http://forums.parallax.com/discussion/1370...tal-isolator-ic

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

 

Чем лучше инвертировать не посоветую. Как вам удобнее. Или на линию TX контроллера врезать инвертор, или оптрон N5 сделать инвертором (катод на землю, анод на TX контроллера)... в общем как там удобнее в реальной конструкции.

Оптрон N6 предлагаю пока не переделывать, а смотреть там данные осциллографом (хоть на входе, хоть на выходе). Если устройство ответит, тогда уж принимать решение, оставить N6 инвертирующим, или переделать для прямого сигнала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем лучше инвертировать не посоветую

 

У Хмеги можно просто вывод порта настроить на инверсию сигнала

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To controller_m30:

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

 

Чем лучше инвертировать не посоветую. Как вам удобнее. Или на линию TX контроллера врезать инвертор, или оптрон N5 сделать инвертором (катод на землю, анод на TX контроллера)... в общем как там удобнее в реальной конструкции.

Проинвертировал оптрон №5 (что на линии данных от контроллера в сторону MDB Slave / TX контроллера и RX у MDB Slave). Благо было на чем это проделать, у меня на одной текстолитке вытравлено четыре варианта опторазвязок для MDB.

 

Но увы - не заработало. И данных от MDB устройства я так и не увидел.

 

Я дополнительно прицепил на шину MDB кроме монетоприемника "NRI Currenza C2 Green MDB" еще и купюроприемник "ICT V7 DC34Volts MDB" ["6 - Coin_acceptor_and_bill_validator.jpg" во вложении]. Там фишка в том, что все периферийные MDB устройства вставляются друг в друга, а потом уже в VMC (в моем случае микроконтроллер). Стал слать следующие команды в цикле с задержками (описанными в спецификации):

 

1) RESET по адресу монетника;

2) POLL (опрос) по адресу монетника;

3) RESET по адресу купюрника;

4) POLL (опрос) по адресу купюрника;

 

Но ни купюрник, ни монетник мне не ответили.

 

Вот тут, как я понял, подключали монетоприёмник:

http://blog.bouni.de/blog/2012/05/06/the-m...rotocol-part-1/

и вроде-бы, там сигнал TXD идущий от VMC (который у SLAVE будет RXD) инвертируется, а сигнал RXD VMC (тот что TXD у SLAVE) не инвертируется. Т.е. в точности наоборот с приложенной в предыдущем посте схемой.

 

Вот ещё страничка этого автора, и там в комментах выложили схему какого-то MDB устройства (с иероглифами), где тоже исходящий из VMC сигнал инвертируется, а входящий в VMC не инвертируется.

http://blog.bouni.de/blog/2012/07/09/the-m...rotocol-part-2/

 

Что заметил, при детальном рассмотрении этих ссылок. Вы мне дали ссылки на два поста германского товарища Bouni, который управлял старым газировочным автоматом с помощью Arduino Mega2560. Я собственно один из вариантов схемы опторазвязки MDB с него и срисовывал. Но вы указали мне, что у него там оптроны инвертированы с точностью до наоборот. Я внимательно стал вчитываться, и что заметил, что в посте номер 1 у него одна конфигурация оптронов, а в посте номер 2 с точностью до наоборот ["7 - Mistakes_on_first_optoisolator" во вложении]. Ну так я и срисовывал схему со второго его поста. И сейчас как я понимаю, что она действительно неправильна. Так как у VMC состояния бездействия "idle mode" равно 0, а у обычно МК'шного UART состояние бездействия равно 1, то там очевидно инверсия оптрона напрашивается.

 

А другой вариант MDB опторазвязки мне дали на форуме ["8 - Second_optoisolator.jpg" во вложении]. И он полностью эквивалентен варианту без инверсии данных от МК из второго поста германского товарища. Как я выяснил, эта схема из топика здесь на форуме ("MDB интерфейс, схема входной части slave" / http://electronix.ru/forum/index.php?showtopic=101328) - и у человека там, судя по его словам все заработало.

 

---

 

А смущает меня следующее. Я запитываю без подключения к опторазвязке монетник и купюрник (+24V DC), чтобы поcмотреть, что у него (у них) на линиях RX и TX. Но на деле там что-то, что не соответствующее логике ["9 - Oscilloscope_and_multimeter.jpg" во вложении]. Там явно на RX у MDB устройств не может быть пилы от 0 до 24V (ведь мультиметр показывает 0V). Обычно такое бывает (насколько я знаю из своего опыта), когда земляной крокодильчик у щупа осциллографа отрывается от земли, или подключен к не той земле или с землей что-то не то.

 

Вопрос 1: Может надо подключить MDB_GND (Communication Common) к земле микроконтроллера? Т.е. RX/TX развязаны оптически через оптроны, а земли у них соединены напрямую. Вот сижу и думаю. Вроде когда мы подключаем разные UART'ы друг к другу мы же соединяем у них три проводка RX,TX и землю. Может и здесь им земли соединить? Разве смысл отпторазвязки не в том, чтобы у каждого были свои питания и земли?

 

Вопрос 2: Внимательно изучал схему опторазвязки из первого поста германского товарища Bouni - у него там на стороне MDB устройств линии подтянуты до 5V [9 - Oscilloscope_and_multimeter.jpg" во вложении]. У меня же ничего не подтянуто. Просто опираясь на те две схемы, что мне дали, я думал эти подтяжки линий до 5V сделаны внутри моненика и купюрника. Попытался тупо повесить на RX со стороны MDB устройств 5V через резистор 1К от блока питания, но ничего не заработало и сигналов на линиях я так и не увидел. Скорее всего опять у меня что-то не так в плане соединения земель. Возможно мне стоит переделать что-то в схеме, в плане подтяжки до 5V?

 

PS. Не сочтите за наглость столь большое количество текста в сообщении, просто уже очень давно бьюсь над этой задачей.

post-80017-1456148168_thumb.jpg

post-80017-1456148613_thumb.jpg

post-80017-1456148852_thumb.jpg

post-80017-1456149198_thumb.jpg

post-80017-1456151150_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос. Оба устройства MDB есть где проверить? Может они как-то там сконфигурированы не так перемычками или тумблерами (если такое есть), или же самозаблокировались из-за чего-то (я не сталкивался, просто предположения)? Это бы сняло вопросы насчёт пилы 24В и прочих непонятных сигналов на разъёмах MDB устройств.

 

Если проверить негде, то аппаратную часть пока отложим и проверим программную.

С каким BaudRate работает передатчик USART контроллера? Проверьте, соответствует ли скорость паспортной для MDB (9600 если не ошибаюсь).

Сколько стоп-битов (1,2), бит чётности (есть\нет), и бит данных (7,8,9) задано?

Какой порядок бит: LSB первый, или MSB первый? Для MDB как я понимаю, первым идёт LSB бит.

 

Посмотрите осциллографом отправку команды RESET на линии TX: до оптрона и после. Нет ли там каких-либо заваленных фронтов? Насколько сигналы "прямоугольные"?

Если осциллограф может захватить передаваемую команду, посмотрите, насколько передаваемые данные соответствуют требованиям для MDB (скорость передачи, порядок бит, количество бит данных и стоповых). Смотрите на разных тестовых данных: 0x000, 0x1FF, 0x155, 0x0AA, и т.п. Главное удостовериться, что данные формируются верно.

Если есть логический анализатор (хотя бы Saleae Logic), посмотрите передаваемую команду им (на выходе котроллера) - он распознаёт данные USART со всеми настройками, и показывает скорость данных. Тоже полезно для самопроверки.

Если анализатора нет, тогда осциллографом придётся захватывать и смотреть.

Изменено пользователем controller_m30

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По разъёмам.

Согласно даташита "MDB/ICP Version 4.2 " сигналы MDB-устройства TXD и RXD, должны быть подключены наоборот по сравнению с вышеприведёнными схемами.

Потому что например "Line 4 - Master Receive" - значит что это линия приёма RXD у Мастера, т.е. у контроллера или VMC. А в выложенных выше схемах линия 4 обозначена как RXD у MDB устройства.

Предлагаю поменять на схемах, что: 4 - это TXD монетоприёмника, а 5 - это RXD монетоприёмника. И соотв. оптроны подключить, ну и попробовать ещё раз связываться с устройствами.

 

Ещё по "земле" для подключения осциллографа, и сигналу пилы. Там ведь две "земли": одна для сигнальных линий (нога 6), и одна для питания 24В (нога 2). Пила наблюдается относительно обеих "земель"? А мультиметр что показывает относительно одной "земли" и другой?

post-45309-1456233168_thumb.png

Изменено пользователем controller_m30

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...