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

Подключение нескольких датчиков


rcdimon

Рекомендуемые сообщения

Добрый день.

Нужно сделать устройство, к которому подключаются различные датчики и исполнительные устройства. Датчики и ИУ могут быть самые разные.

Например фоторезистор как датчик освещенности, сервопривод или ЖК дисплей как исполнительное устройство. Понятно, что у них у всех совсем разные интерфейсы. Необходимо максимально упростить процесс подключения датчиков к устройству (подключил к одному из разъемов и работает сразу), поэтому решено сделать один общий цифровой интерфейс, например UART, по которому устройство будет обмениваться данными с датчиками и ИУ (периферийными устройствами).

На устройстве будет стоять несколько одинаковых разъемов для подключения вышеописанной периферии, а каждый датчик будет содержать микроконтроллер, вроде ATTiny13 со своей прошивкой.

Все бы хорошо, но нужно четко знать к какому порту подключено устройство. Например датчиков света будет 5 штук. Они все совершенно одинаковые, но измеряют освещенность в разных местах. В программе своего устройства я должен иметь возможность получить данные с конкретного датчика, для этого я укажу номер порта, к которому подключен нужный датчик.

Но сложность в том, что если на все разъемы вывести один и тот же UART (параллельно соединить все разъемы для подключения периферии), то не будет возможности определить какое из периферийных устройств прислало данные. Но делать 10 отдельных уартов, по одному на каждый разъем, тоже немного попахивает шизофренией.

Использовать I2C в качестве шины тоже не подходящий вариант ведь в ней применяется аппаратная адресация, а если все датчики освещенности одинаковые то и адрес у них одинаковый. Можно, конечно, делать на периферийных устройствах DIP переключатели для выставления их адреса, но это противоречит ТЗ, что периферийное устройство должно просто подключаться и сразу работать.

 

Возможно кто-то из форумчан сталкивался с подобной задачей и знает способы ее красивого решения?

Мне в голову лезет что-то вроде цифрового мультиплексора для переключения одного UART между разными разъемами для последовательного опроса.

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Что-то совсем непонятно, почему нельзя использовать IIC, если в каждом устройстве будет свой МК? 1 байт адреса даст 255 уникальных адресов. В каждой прошивке прописывается свой адрес и все.

Только что, rcdimon сказал:

Но сложность в том, что если на все разъемы вывести один и тот же UART (параллельно соединить все разъемы для подключения периферии), то не будет возможности определить какое из периферийных устройств прислало данные.

Опять же, почему каждое устройство не может иметь свой адрес, жестко задаваемый при прошивке?

Ну и описываемое устройство уже давно придумано, ардуиной зовется.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

И все равно не получится совершенно уникального адреса. На сколько я помню у I2C 7и битные адреса это 127 адресов. У устройства планируется 10 портов. Если все 10 портов занять периферией со случайными адресами, то вероятность совпадения у двух устройств адресов не такая уж и маленькая, грубо говоря 1 к 12и

И нет привязки к порту.

Например программа:

- объявляем, что на порту 2 датчик света. Читать данные об освещенности с порта 2.

В случае с I2C и адресами нужно будет на каждом датчике при производстве еще и написать его адрес и обращаться по адресу.

- Объявляем, что датчик света имеет адрес 0xAC. Читать данные об освещенности с адреса 0xAC

Второй вариант сложнее тем, что

1. Трудно прошивать МК датчиков, каждому подставлять уникальный адрес

2. Трудно производить периферийные устройства, на их корпусах нужно будет писать их адрес

3. Вероятность совпадения адресов высока

 

Изменено пользователем rcdimon
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А нельзя сделать функцию задания адреса с того устройства, к которому они будут подключаться? Например подключаем их по одному и при первом включении в них пишется адрес с сохранением в EEPROM. Хотя все таки удобнее иметь отдельную прошивку под каждый датчик. Только делать их партиями, партия с адресом 1, партия с адресом 2 и т.д. И указывать этот адрес на корпусе. Тогда юзверь сам сможет выбрать такие датчики, чтобы совпадений не было.

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

Да, пожалуй, SPI подойдет. Нужно будет поставить микросхему вроде 595, чтобы по 2 проводам управлять сигналами SS у 10и портов и все.

Правда, количество пинов в разъемах периферии возрастает. Хотелось ограничиться 4мя, а тут питание, земля, ss, mosi, miso, clk.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @vaegor У меня описанная вами неполадка не наблюдается. Но я на всякий случай в профилактических целях подправил немного программу. Проверяйте. Если текущее время при установке будильника будет сбиваться, то мне понадобится более точная информация. Насколько сбивается, и зависит ли отклонение от времени установки будильника.  Желательно сделать следующий опыт: войти в режим установки будильника и выждать некоторое время после установки будильника, например минуты 2. Затем вернуться в режим часов и посмотреть есть ли отклонение текущего времени.   FM_KOMBI_1.3.hex
    • Как это "ни слова"? Самый главный принцип - потенциал неинвертирующего входа является всего-навсего ОПОРНЫМ. Всё управление идёт по инвертирующему входу, охваченному ООС. Вот параметры этой самой цепи ООС и являются главными и единственными, требующими учёта и расчёта.
    • При 12-вольтовом питании можно и BD135/BD136. Можно и пары 137/138 и 139/140, они имеют большее допустимое коллекторное напряжение, а остальные параметры такие же.
    • Мне почему-то вспоминается фильм "Особенности национальной охоты"...
    • Попытка уменьшить проникновение помех от анодного питания, я так думаю... Пульсации с анода лампы первого каскада (по сути с делителя внутреннее сопротивление лампы / анодное сопротивление) попадают на сетку выходной лампы. Если такое же напряжение помехи подать в катод этой лампы, то можно её скомпенсировать. Кроме того, считается, что при переносе блокирующего катодного конденсатора в анодную часть переменный ток в выходном каскаде замыкается по более короткому пути. Причём можно уменьшить ёмкость этого конденсатора. Правда, знал ли об этих ньюансах составитель этой схемы, неизвестно...
    • He3haika, а вы видели его прибор? Я же писал модификаций полно и чтобы выкладывать здесь схему надо знать что у него. А он глубоко это засекретил. Ни фото ни описания на словах. Вот я уверен что у него ТРЕХЭТАЖНЫЙ галетник, а у вас на схеме один.  Ё-МАЁ, лишь бы что то ляпнуть? Питание на элементах чисто для измерения сопротивлений.
×
×
  • Создать...