Проблемы при работе с UART

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Доброго времени суток!
Исходное:
ATmega16L подключен к ком-порту через MAX232CPE.
Командами из компа управляем ногами контроллера, которые (через транзистор+реле) включают/отключают нагрузку (электродвигатели 12в*4А).
Все это питается от того же блока питания, что и компьютер.
В какие-то моменты времени в момент включения нагрузки комп начинает получать в ответ на команды информацию, что контроллер не разобрал команду (скорость 9600, кабель короткий). Также, комп может получать какие-то левые байтики на ком-порт. А иногда, контроллер вообще выполняет принятую команду с неверным параметром!

Предположения:
- max232cpe начинает "гнать лажу" в одну/обе сторону(ы) из-за колебаний питания;
- мк виснет (глючит) после колебаний питания;
Хотя оба предположения странные - вроде компьютерный блок питания ATX (350W) обеспечивает достаточный ток! Да и комп ведь при этом не виснет!

Может кто сталкивался с проблемами режимов питания мк AVR или max232?
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 170
Зарегистрирован: Пт июл 31, 2009 21:52:18

Сообщение Aiudara »

Можно попробовать соединить корпуса устройст отдельным проводником если схема питания это позволяет.

Если ошибки пропадут то наверно вам поможет оптоизоляция RS232 - простые ПРОВЕРЕНЫЕ схемы опторазвязки есть на страничке - http://pid.by.ru/z4.htm
Реклама
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Корпуса и так соединены. Ведь питания компа, устройств, контроллера от одного блока питания.
С оптоизоляцией - поздно переделывать плату кардинально.
А почему так много разновидностей преобразователя MAX232 ?
Может мне стоит перейти на другой (напр. MAX232A)?
Чем они вообще отличаются?
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Кстати, я использую прерывание таймера Т0 по совпадению.
Где-то сейчас прочитал мысль (вернее вопрос) одного человека другому: "...я ты отключаешься UART на время прерывания?".
И собственно, возникла мысль, а может дело как раз в этом? Может надо UART отключать после входа в прерывания ? А перед выходом - включать.
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 170
Зарегистрирован: Пт июл 31, 2009 21:52:18

Сообщение Aiudara »

Смотря какие там у вас прерывания и какая частота такта.
Реклама
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Aiudara писал(а):Смотря какие там у вас прерывания и какая частота такта.
ATmega16L
используется прерывание TIM0_COMP (compare, Т0).
Таймер Т0: clock: 31,250kHz (прескаллер 256, частота мк 8MHz).
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 170
Зарегистрирован: Пт июл 31, 2009 21:52:18

Сообщение Aiudara »

Если не секретный проект то выкладывайте весь архив.

Иначе понять что-то сложно. Ведь в прерывание бывают понпихают чтолько что в нем МК висит подолгу ...
Прорезались зубы
Сообщения: 231
Зарегистрирован: Пт ноя 16, 2007 13:52:44
Откуда: Рига, Латвия

Сообщение Pe3ucTop »

У меня сразу куча вопросов:
Питание АтМеги 3/5 В ? Питание Мах? Кондеры обвязки Мах ?
Длины проводов питания, фильтрация питания нагрузки от основного питания есть ?
И здесь может даже не столь проблемма в положительном уровне, а может быть уроведь земли плавает..
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Aiudara писал(а):Если не секретный проект то выкладывайте весь архив.

Иначе понять что-то сложно. Ведь в прерывание бывают понпихают чтолько что в нем МК висит подолгу ...
Последний раз редактировалось RVL Ср авг 12, 2009 22:28:35, всего редактировалось 1 раз.
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Pe3ucTop писал(а):У меня сразу куча вопросов:
Питание АтМеги 3/5 В ? Питание Мах? Кондеры обвязки Мах ?
Длины проводов питания, фильтрация питания нагрузки от основного питания есть ?
И здесь может даже не столь проблемма в положительном уровне, а может быть уроведь земли плавает..
- Питание АтМеги: 5В (от ATX)
- Питание Max: 5В (ATX)
- Кондеры обвязки: 5 шт. * 1 мкф (max232cpe - согласно даташиту);
- длины проводов питания: мк и макс на одной плате. длина провода питания=длине провода БП ATX (для IDE).
- фильтрация отсутствует. только между GND и +5в электролит.кондеры (10мк, 0.1мк, 1мк, 1мк - в разных местах).
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

Наличие помех при таком раскладе практически гарантировано. Совет - выкинуть реле и транзистор и заменить оптроном и симистором/тиристором. Или хоть оптически развяжите, хотя с реле и транзистором с этим есть определенные трудности
Контактная информация:
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Если бы это были помехи, то они были бы всегда.
Здесь же получается, что сначала все чисто! А сбои начинаются с определенного момента.
К тому же реле питаются от +24в. Ток через них - где-то 30 мА.
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

Чем этот "определенный момент" определен? (: На самом деле может и от 24 в глючить, не переживайте)
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

RVL писал(а):В какие-то моменты времени в момент включения нагрузки комп начинает получать в ответ на команды информацию, что контроллер не разобрал команду (скорость 9600, кабель короткий). Также, комп может получать какие-то левые байтики на ком-порт. А иногда, контроллер вообще выполняет принятую команду с неверным параметром!
Похоже что выбросы напряжения на релюхах глючат систему, диоды защитные параллельно реле стоят? На каждую микросхему не мешало бы на линии питания повесить блокировочные конденсаторы керамические или танталовые (а не электролиты - электролита одного на всю схему хватит 47-100мкФ). Если все это не поможет, то все таки лучше прислушаться к совету об опторазвязке.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

защитные диоды стоят.
С опторазвязкой сложнее:
Реле применяли потому, что необходимо управлять полярностью напряжения на нагрузке (нужно вращать двигатель в разные стороны).
Выглядит примерно так: отдельной ногой меги меняем полярность (управляем полярностью с помощью полумоста на МОСФЕТах).
4-мя ногами через дешифратор ИД3 включаем одну из 9-ти реле (подключаем контакт, допустим "А" к одному плечу полумоста), другой ногой включаем реле для коммутации второго контакта (допустим "Б") - подключаем к другому плечу полумоста. Нагрузка подключена к "А" и "Б". Всего имеем 36 потребителей.

Опторазвязка, насколько помню, в качестве коммутирующего элемента использует фототранзистор. А он проводит ток только в одну сторону.
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Можно попробовать на контакты реле поставить искрогасящие RC-цепочки, все таки электродвигатель нагрузка индуктивная, возможно искры между контактами реле при коммутации и портят всю картинку.
Оптроны есть и с тиристорами и симисторами, не только с транзисторами.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

DrWatson писал(а):Можно попробовать на контакты реле поставить искрогасящие RC-цепочки, все таки электродвигатель нагрузка индуктивная, возможно искры между контактами реле при коммутации и портят всю картинку.
На контактах реле (те, что питают обмотку) и так стоит диод (катодом к плюсу).
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

Так вы возьмите оптрон не с транзистором, а с оптосимистором. типа MOC3021. А может у вас блокировочные диоды медленные? Там нужно чтото типа 1N5819
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

RVL писал(а): - Питание АтМеги: 5В (от ATX)
- Питание Max: 5В (ATX)
Я так понял что 5 вольт напрямую от БП. Был у знакомого один трабл. МК питаемый от компового БП постоянно ресетился BOD'ом каждую минуту. Причина - слишком грязное напряжение +5V. Лучше возьмите шину +12 и понизьте кренкой до 5 с хорошими кондерами.
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Появилось новое подозрение на источник проблемы:
Дело в том, что 4 выхода с мк подключены на вход дешифратора (аналог ИД3). А все его выходы (а они инверторные) подключены на входы инверторов.
Так вот что получается: пусть в какой-то момент времени дергается питание. И этого хватает, чтобы отключился дешифратор. Когда отключается дешифратор, инверторы на вход получают лог.0 (поскольку вход болтается в воздухе), а на своих выходах выдают лог.1. Это открывает транзисторные ключи (одновременно все!) и включает одновременно все релюшки и нагрузку. Естественно, что это уже перебор.
Выход: все выходы дешифратора подтянуть к +5в через, например, 22к.

Может быть такое???
Ответить

Вернуться в «Интеграция с ПК»