RVL

Проблемы С Работой Uart

14 сообщений в этой теме

RVL    0

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

Исходное:

ATmega16L подключен к ком-порту через MAX232CPE.

Командами из компа управляем ногами контроллера, которые (через транзистор+реле) включают/отключают нагрузку (электродвигатели 12в*4А).

Все это питается от того же блока питания, что и компьютер.

В какие-то моменты времени в момент включения нагрузки комп начинает получать в ответ на команды информацию, что контроллер не разобрал команду (скорость 9600, кабель короткий). Также, комп может получать какие-то левые байтики на ком-порт. А иногда, контроллер вообще выполняет принятую команду с неверным параметром!

Предположения:

- max232cpe начинает "гнать лажу" в одну/обе сторону(ы) из-за колебаний питания;

- мк виснет (глючит) после колебаний питания;

Хотя оба предположения странные - вроде компьютерный блок питания ATX (350W) обеспечивает достаточный ток! Да и комп ведь при этом не виснет!

Может кто сталкивался с проблемами режимов питания мк AVR или max232?

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


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

Все эти вещи вполне нормальны. С этим следует бороться с помощью протокола. То есть формируется посылка, маркёр начала, длина, тело, контрольная сумма, маркёр конца. По контрольной сумме определяется правильность посылки и принимаются соответствующие действия.

Найдите описание какого либо протокола и почитайте, например Modbus.

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


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

Нет. Не нормальны. Я ведь скалаз "иногда".

Выглядит так:

1. сначала долгое время все нормально.

2. в какой-то момент контроллер начинает всякий раз добавлять к своему нормальному ответу мусорный (-ные) байт(ы). И так, пока не "передергну" питание всей платы с контроллером.

3. После передергивания питания контроллера все становится опять просто замечательно (переходим к п.1).

Так что в протоколе здесь ошибок нет. Кроме того, мк имеет парсер команды. И если что-то пришло неправильно, он в ответ выдаст "ERRRO", иначе "ОК".

Но ведь он выполняет команды при этом, но неправильно (ощущение, что параметр команды неправилен).

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


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

А можете показать фото устройства? У вас похоже серьёзные проблемы с фильтрацией сигнала и питания...Всегда когда надо включать и выключать нагрузку более чем 2А надо принимать меры о гащении помех в питании...

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


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

Найдите миллионы труднодоступных

электронных компонентов

RVL    0

Так вроде используется реле для развязки питания мк от питания нагрузки. У них только GND общий.

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


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

При вкл/выкл релюшек тоже могут возникать помехи в питании, на которые, может быть, и обижается Ваш МК...

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


Ссылка на сообщение
Поделиться на других сайтах
RVL    0
При вкл/выкл релюшек тоже могут возникать помехи в питании, на которые, может быть, и обижается Ваш МК...

Обмотки релюшек питаются от +24в.

С мк 4 выхода подключены к дешифратору (ИД3), а о дешифратора к инфертору. От инвертора идет на транзисторный ключ, который включает/отключает обмотку реле (с параллельно включенным диодом в обратку).

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


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

Я бы начал с проверки MAX232.

У меня с ней тоже были глюки. Только я юзал MAX232N и скорость была 115кб/с. При ~3.5В питании оно работало, при 5В - байт нормально, байт бреда...

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


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

Появилось новое подозрение на источник проблемы:

Дело в том, что 4 выхода с мк подключены на вход дешифратора (аналог ИД3). А все его выходы (а они инверторные) подключены на входы инверторов.

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

Выход: все выходы дешифратора подтянуть к +5в через, например, 22к.

Может быть такое???

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

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


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

Последнее легко проверить отключив дешифратор вовсе. Мое мнение совпадает с мнением mazzi - ваш протокол не умеет или не корректно обробатывает ошибки.

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


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

Да протокол явно непричем. Если бы его глючило - глючило бы постоянно.

Скорее всего глюки железа, и стоит попробовать, как сказал Станислав, отключить дешифратор...

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

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


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

Протокол сейчас правлю. До этого вообще не было контроля целостности управляющей строки.

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

Т.е. проверки по сути не было.

Сейчас добавляю CRC16 для проверки, что команда и ее параметры пришли такими, как их отправлял компьютер.

Отключить дешифратор не получится. Мы останемся только с контроллером. Нагрузка отключится вместе с дешифратором.

А так все это у меня собрано на макетке (только мк, max, светодиоды заместо нагрузки и кнопки заместо датчиков).

На макетке все работает как надо. Протокол работает без ошибок.

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


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

трабла очевидна. На релюшках нету диодов в обратном направлении. Это раз. Дальше ключем проблемы является вот эта строчка:

Все это питается от того же блока питания, что и компьютер.

Что сделать:

1) поставить в обратном направлении шунтирующие диоды на реле (обмотка реле)

2) поставить подтяжку на + ресет

3) поставить дроссель по плюсу и конденсатор более чем 470мкф хотя бы.

у меня была довольно таки итересная ситуация: авр 910 сделал, и подключил на выход через транзистор маленькое реле 5В , все это питалось от юсб. Релюшка жрет отсилы 10ма. Так вот иногда в момент включения/выключения реле комп просто зависал и отрубался очень жостко! очень неприятно это было... все это закончилось когда на реле поставил диод. в момент выключения реле на обмотках возникает довольно таки большой отрицательный импульс которого у меня хватало чтобы комп отрубился. У вас же изза этого мк пропускает пару тактов или подвисает или еще хз что с ним происходит. Что сделать я уже написал. Напишите результат

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Хм... Тема же для аудиофилов - выбор носителя в зависимости от жанра музыки.
    • Чисто внешнюю защиту можно сделать и на 555 таймере и на 2х транзисторах . ------------------------------ В моей схеме есть ошибка - R5С1 даст задержку входа в режим стабилизации . Это задержку или специально рассчитывать,  как допустимую или несколько по другому снимать напряжение с датчика тока .
    • Любому усилителю нужна соответствующая акустика - плохому плохая, хорошему хорошая. Только так можно получить неплохое звучание. Приведу пример - друг мне презентовал 4 маленьких динамика с удивительно мягким ходом диффузоров, я соорудил довольно приличные на вид двухполосные (добавил по ВЧ-динамику) и полноразмерные АС для компа. Когда АС были готовы, то решил испытать их и подключил к случайному усилку на TDA2003, подал с плейера сигнал - и обалдел... Такого ужасного звука давно не слышал! Подключил дешевые китайские колонки - звучит приемлемо и несравненно лучше, чем мои самоделки. Расстроился пипец - столько стараний прахом... Принес АС домой и подключил к самодельному усилку, подал с компа сигнал и не поверил - звучит чисто, прозрачно, мягко... Подключил тот же плейер - неплохо! Причина, как мне кажется, оказалась в том, что самодельные АС воспроизводили значительно более широкую полосу частот, особенно снизу и на них стали слышны все огрехи плейера и TDA2003. 
    • Добрый день. Мой бп на другой шим но не об этом хотел спросить. Перемотал трансформатор на +/-24в и та диодная сборка у которой 100в предел сгорает при первом же включении. Сборка диодов с 200в пределом живая. Нагрузочных резисторов нет. Выходит что выбросы напряжения превышают 100в? И они пробивают диоды?
    • Руслан, а вот тут, я на стороне тётки-экстемитки, в конце концов телик покупаю не для того чтобы его тупо везти на дачу, а чтоб его там смотреть! Покупатель может быть и не в курсе тонкостей эфирного вещания. И менеджер должен был все вопросы разъяснить покупателю перед покупкой, вплоть до: есть ли на даче электричество? и какого оно качества ели есть?. Ну и дай то Бог, чтобы тётка отсудила себе бесплатную антенну!! С уважением, Сергей.  
    • Частая разморозка требуется только для "ноу-фроста", для статического охлаждения интервал может быть и больше. Насчёт всяческих "костылей" - как я понял, предполагается коммерческое использование хол-ника. И может возникнуть ситуация, при которой стоимость испорченной продукции на порядок перекроет экономию от "простого и дешёвого решения". Поэтому я всё-таки за полноценный контроллер, позволяющий регулировать t в самом шкафу и контролировать зашубливание испарителя, плюс - управление вентилятором.