Передача аналогового сигнала между двумя Arduino

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем magiahead, 23 дек 2011.

  1. magiahead

    magiahead Нуб

    Есть такая задача. На Arduino вычисляем некий аналоговый параметр, масштабируем его в диапазон [0, 255] и выводим на PWM-выход. Считываем этот параметр на другом Arduino и хотим получить его значение, считывание предполагается через аналоговый вход. Значение параметра постоянно в течение долгого времени.
    Вопрос: нужно ли ставить фильтр низких частот между PWM-выходом первого Arduino и аналоговым входом второго для получения стабильного сигнала на входе? Если нужно, то просьба привести схему фильтра и параметры элементов этой схемы.
    Заранее спасибо.
     
  2. Dmitriy Kunin

    Dmitriy Kunin Гик

    Зачем ?
    Цифру для того и придумали, чтоб передавать без потерь, а потом восстанавливать аналог.
     
  3. nailxx

    nailxx Официальный Нерд Администратор

    Дмитрий прав. Разумнее использовать I²C коммуникацию между Arduino и перегонять сигнал без потери информации по проводам условно бесконечной длины.

    Алсо, PWM ≠ Аналог. PWM — это 0 и 5 В туда-сюда, туда-сюда быстро-быстро; а аналог — это 2.3 В, 3.2 В и т.п. Поэтому передавая сигнал через PWM, принять его в лоб через аналоговый вход не выйдет.
     
  4. magiahead

    magiahead Нуб

    I2C - это хорошо, но может ли это соединение изменять направление передачи данных без ресета? Насколько я понял из примеров использования, режимы Master и Slave устанавливаются функцией Wire.begin() однократно, и дальше одна из Ардуин работает только на передачу данных, а другая только на приём. Мне же надо передавать числовые параметры в обе стороны.
    Интерфейс Serial, как я понимаю, позволяет передавать данные туда-обратно, но он не поможет, потому что на Arduino Uno всего один serial-порт и через него я обмениваюсь данными с компьютером.
     
  5. nailxx

    nailxx Официальный Нерд Администратор

    Практически уверен, что двусторонняя комуникация через I²C вполне возможна. Есть обсуждение на официальном форуме и ещё пост в блоге.

    А про Serial всё не совсем так. На Arduino Uno действительно один аппаратный serial-интерфейс. Но с помощью библиотеки SoftwareSerial, ставшей стандартной с версии Arduino IDE 1.0, можно наплодить сразу пачку дополнительных программных serial-портов.

    Я не говорю о SPI-комуникации… В общем, возможностей куча. Дерзайте! :)
     
  6. Dmitriy Kunin

    Dmitriy Kunin Гик

    NewSoftSerial library.
    Вот эта библиотека, решает вашу проблему...
    Я пробовал она работает.
    Делает ещё один Serial port на двух цифровых выходах.
    Давайте подробнее расписывать вашу задачу.
    Первое, что нужно понять, это расстояние между Ардуинами.
    Дальше какого рода данные, как много, как часто ?
    Просто есть ещё одно решение, на которое многие не обращают внимание.
    Правда решение не бесплатное, на IO Shield'ах есть замечательный интерфейс 485.
    Промышленный интерфейс, передназначеный для систем сбора информации.
    Правда, поскольку я всё время забываю купить второй IO Shield, ещё не попробовал в действии...
     
  7. Dmitriy Kunin

    Dmitriy Kunin Гик

    Опять мы синхронным отвечанием занимаемся :)
     
  8. magiahead

    magiahead Нуб

    Спасибо, буду пытаться научить I2C интерфейс передавать данные туда-обратно, а если не получится, использую SoftwareSerial.
    Вообще, задача - это учебный проект по автоматизированному тестированию встроенного ПО. Предполагалось, что есть некое ПО, получающее данные с пары аналоговых датчиков, считающее на их основе несколько выходных числовых параметров и выдающее их на выход, всё это с частотой 10 Гц. Для целей тестирования предполагалось с помощью второй Ардуины эмулировать входные аналоговые сигналы на первую. Ну а раз это невозможно, придётся поменять концепцию и пересылать входы-выходы в цифре через какой-нибудь интерфейс.
     
  9. Dmitriy Kunin

    Dmitriy Kunin Гик

    Да на самом деле, это всё вполне возможно, чуть аналоговой объвязки и будет Ардуина выдавать аналоговый сигнал, и PWM тут не при чём, просто задачу надо описывать в первом посте :)
    Самый частый пример из моей практики, звонит друг и спрашивает, как пользоваться такой-то функцией к примеру Фотошопа? Я всегда прошу начать фразу с: Я Хочу ! И дальше выясняется, что делается, это совершенно другим способом, возможно даже не в Фотошопе...
    А мы тут все увидели в вопросе полько знакомое и родное PWM, и нас унесло от темы, первая мысль, зачем поротить PWM фильтром?
    А как оказалось фильтр нужен, а PWM нет :)
     
  10. в нете,что то подобное видел.даже скетч был,но конкретно не помню.google в помощь