RS-485 (MAX 485 в корпусе Dip) + 5 Arduino Nano!!!! Тайм опрос.

Тема в разделе "Arduino & Shields", создана пользователем Rabil', 11 май 2016.

  1. Rabil'

    Rabil' Нерд

    Добрый день уважаемые коллеги. Есть идея соединить 5 Arduin Nano с интерфейсом MAX 485.

    ----> 1 Arduino Master.

    -----> 2, 3, 4, Slave (Приемник).

    Алгоритм работы простой. Мастер опрашивает все слейвы (приемники), А приемники отправляют 4 байта информации. Но столкнулся с рядом проблем.
    Приемники почему то в первое время работают нормально, а потом отправляют не те байты которые мы должны были получить. Иногда приемники зависают просто не происходит тайм опрос. Расстояния между приемниками и мастером 20-30 см.

    Внизу есть скетчи мастера и приемника и фото используемого оборудования. Если хоть кто то сталкивался с такой проблемой то прошу помочь. Срочно!!!!!! 001.jpg
     

    Вложения:

    • Master.ino
      Размер файла:
      3,1 КБ
      Просмотров:
      380
    • Slave.ino
      Размер файла:
      2,9 КБ
      Просмотров:
      354
  2. Onkel

    Onkel Гуру

    на таких расстояниях все должно работать как часы. Скорее всего несинхронизация в переключении 485 шлюзов, например, сразу два встают на передачу. Можете попробовать растяжку, может поможет. И еще бывает что если хоть один 485 чип ёк, то ложится вся сеть. Тут кстати кто-то жаловался - у него съедался первый байт. Подключите к пк через usb интерфейс и терминалом посмотрите, что по шине ходит.
     
  3. ostrov

    ostrov Гуру

    У вас каждый раз читается весь пакет, что будет работать, но не долго. До ближайшей помехи или того, что система распознает за кусок от байта. Рекомендую использовать кольцевой буфер: байты считываются по одному и "пропихивают" друг друга по массиву длиной в ваш пакет. После приема каждого байта массив проверяется на начальный и концевой байт, если все соответствует, то середина то что вам надо. Для пущей надежности можно еще и байт с контрольной сумой приделать. А перед пакетом отправлять незначащий байт, т.к. исследования показали, что иногда он не воспринимается цельно. И еще, между приемом и ответом хорошо бы делать небольшую паузу (для скорости 9600 примерно 2-3 мс, размер 2-3 байт), это позволит дополнительно избавить пакеты от накладок.

    Ну и проверьте схему соединения шины данных - должна быть прямая линия, никаких перекрестий. У меня в эксперементальном режиме сейчас работает 6 модулей на сегментах метр каждый, один главный, три ведомых и два ведомых ведомых, ну вот так надо. Все хорошо даже без концевых резисторов и притяжек линии к земле и питанию.
     
    Rabil' нравится это.
  4. Rabil'

    Rabil' Нерд


    Вы не могли скинуть мне ваши скетчи??
     
  5. Rabil'

    Rabil' Нерд

    Что за растяжка???
     
  6. ostrov

    ostrov Гуру

    Вот тут хороший рабочий пример организации сети через RS485 с описанием и кодами.
     
  7. Rabil'

    Rabil' Нерд

    Я вот ни как не пойму что такое кольцевой буфер??? И все таки вы не могли бы ваши скетчи мне скинуть???
     
  8. ostrov

    ostrov Гуру

    У меня они довольно большие и заточенные под конкретную задачу, а именно сеть двухуровневая. Если вы с примером не разобрались, то тут еще сложнее. Все таки попробуйте еще раз вникнуть или задать вопрос более конкретный. Или уж написать в ветку "закажу проект".
     
  9. Rabil'

    Rabil' Нерд

    а вы не могли бы посмотреть мои скетчи они в самом вверху моей темы)) может есть кое какие ошибки..
     
  10. Faberge

    Faberge Administrator Администратор

    Что-то я по фотографии не понял - где обвязка михросхемы, где резистор-терминатор, где все остальные резисторы? Вот рабочая схема от ардуино-шилда:
    [​IMG]
     
  11. Onkel

    Onkel Гуру

    R3R6R8 на схеме. Можно еще подтянуть резисторами по 1 к