несколько датчиков на 1 АЦП через транзисторные ключи

ivang

New member
в связи с тем, что у esp8266 1 аналоговый вход есть некоторые сложности в подключении нескольких аналоговых датчиков к этому устройству.
Это конечно можно решить путем подключения дополнительного АЦП или того хуже - ардуины.

но будет ли жизнеспособна схема подключения нескольких датчиков на 1 пин при помощи транзисторных ключей?
т.е. у нас висят датчики без питания, по необходимости подаем питание на каждый датчик по очереди (через транзисторы, а на них питание уже с цифровых пинов, коих на esp8266 уже побольше будет), после получения питания датчик "оживает" и начинает давать данные на АЦП. Считываем данные, выключаем питание с датчика.

общую схему попробовал изобразить тут (да-да это все теория, кривой эмулятор и т.д., но общую схему дает понять): Один аналоговый пин, чтение нескольких датчиков | Autodesk Circuits
upload_2016-9-3_23-50-35.png upload_2016-9-3_23-51-6.png
правда там за основу взята ардуина, т.к. в эмуляторе есть только esp-1, на которой не выведен АЦП.
коротко о принципе работы "устройства" (из эмулятора по ссылке выше).
на ацп ардуины подключен датчик освещения и напряжение (через делитель).
т.е. 2 "датчика" на каждый из них плюс подается через транзистор управляемый с цифрового пина.
Каждую секунду производится переключение: датчик света - напряжение - оба датчика отключены.
При включении одного датчика, другой естественно отключается.
В эмуляторе доступны схемы и код, т.е. все что пожелаете (да, не забудьте на датчике освещенности задать его состояние, иначе по свету тоже выдаст 1023)

В консоль выводятся следующие данные:
No Measure: 1023
Light: 1023
Voltage: 984

Жду отзывов по практическому использованию подобного, а возможно кто-то поделиться более правильными методами использования 1 АЦП для нескольких датчиков.

p.s. радиолюбитель из меня совсем начинающий, возможны логические ошибки в подключении и схеме, буду благодарен за критику и разъяснения ошибок (возможно стоило транзисторы не npn использовать, а связку npn + pnp, чтобы на датчики подавать не минус, а плюс). Резисторы раскидывал методом "тыка", пытаясь получить на выходе необходимый диапазон значений (на ацп) и стараясь сократить потребление.
 
Последнее редактирование:

nikolz

Well-known member
в связи с тем, что у esp8266 1 аналоговый вход есть некоторые сложности в подключении нескольких аналоговых датчиков к этому устройству.
Это конечно можно решить путем подключения дополнительного АЦП или того хуже - ардуины.

но будет ли жизнеспособна схема подключения нескольких датчиков на 1 пин при помощи транзисторных ключей?
т.е. у нас висят датчики без питания, по необходимости подаем питание на каждый датчик по очереди (через транзисторы, а на них питание уже с цифровых пинов, коих на esp8266 уже побольше будет), после получения питания датчик "оживает" и начинает давать данные на АЦП. Считываем данные, выключаем питание с датчика.

общую схему попробовал изобразить тут (да-да это все теория, кривой эмулятор и т.д., но общую схему дает понять): Один аналоговый пин, чтение нескольких датчиков | Autodesk Circuits
Посмотреть вложение 2038 Посмотреть вложение 2039
правда там за основу взята ардуина, т.к. в эмуляторе есть только esp-1, на которой не выведен АЦП.
коротко о принципе работы "устройства" (из эмулятора по ссылке выше).
на ацп ардуины подключен датчик освещения и напряжение (через делитель).
т.е. 2 "датчика" на каждый из них плюс подается через транзистор управляемый с цифрового пина.
Каждую секунду производится переключение: датчик света - напряжение - оба датчика отключены.
При включении одного датчика, другой естественно отключается.
В эмуляторе доступны схемы и код, т.е. все что пожелаете (да, не забудьте на датчике освещенности задать его состояние, иначе по свету тоже выдаст 1023)

В консоль выводятся следующие данные:
No Measure: 1023
Light: 1023
Voltage: 984

Жду отзывов по практическому использованию подобного, а возможно кто-то поделиться более правильными методами использования 1 АЦП для нескольких датчиков.

p.s. радиолюбитель из меня совсем начинающий, возможны логические ошибки в подключении и схеме, буду благодарен за критику и разъяснения ошибок (возможно стоило транзисторы не npn использовать, а связку npn + pnp, чтобы на датчики подавать не минус, а плюс). Резисторы раскидывал методом "тыка", пытаясь получить на выходе необходимый диапазон значений (на ацп) и стараясь сократить потребление.
--------------------------------------
1) Полагаю, что надо начать с параметров датчиков, так как есть варианты уже со встроенным цифровым интерфейсом и надобность в аналоговом входе отсутствует.
-------------------------------------------------
2) В некоторых случаях удобном преобразовать напряжение или ток датчика в интервал. В этом случае можно использовать цифровой вход, вместо аналогового.
----------------------------------------
3) Если несколько датчиков подключены ко входу АЦП, то необходимо обеспечить им третье состояние (высокое выходное сопротивление) при отсутствии питания. Как эта задача решена в этой схеме?
 

ivang

New member
nikolz, спасибо за ответ.

1. в данном варианте рассмотрим принципиальное использование аналоговых датчиков (цифровых нет, либо они не подходят), да и вообще цель то зацепить несколько датчиков на 1 ацп.
2. интересно, выходит за рамки задачи, но тем не менее буду благодарен за пример или информацию, это что-то из разряда rc цепей ?
3. в предложенной схеме если датчик не используется, то в схеме к сожалению наоборот стоит высокий уровень, но если как и предполагал в постскриптуме использовать не npn и pnp транзистор, то будет обеспечено высокое сопротивление (при закрытом транзисторе).
4. в условиях сразу данный вариант исключил, это доп схемы / контроллеры, доп затраты.
5. как уже упоминал, уровень знаний в этой области у меня достаточно низкий, если под "аналоговым коммутатором" подразумевается не какая то сложная схема типа АЦП I2С, то возможно именно это я и хочу реализовать (по факту транзисторами я тоже коммутирую различные датчики на АЦП).
 

nikolz

Well-known member
nikolz, спасибо за ответ.

1. в данном варианте рассмотрим принципиальное использование аналоговых датчиков (цифровых нет, либо они не подходят), да и вообще цель то зацепить несколько датчиков на 1 ацп.
2. интересно, выходит за рамки задачи, но тем не менее буду благодарен за пример или информацию, это что-то из разряда rc цепей ?
3. в предложенной схеме если датчик не используется, то в схеме к сожалению наоборот стоит высокий уровень, но если как и предполагал в постскриптуме использовать не npn и pnp транзистор, то будет обеспечено высокое сопротивление (при закрытом транзисторе).
4. в условиях сразу данный вариант исключил, это доп схемы / контроллеры, доп затраты.
5. как уже упоминал, уровень знаний в этой области у меня достаточно низкий, если под "аналоговым коммутатором" подразумевается не какая то сложная схема типа АЦП I2С, то возможно именно это я и хочу реализовать (по факту транзисторами я тоже коммутирую различные датчики на АЦП).
--------------------
1) Начну с простого - АЦП 4 входа I2C.
ADS1115
Включить его также просто как датчик т е два цифровых пина SDA и SCL
а на четыре входа подключаем наши датчики и получаем значения с точностью в 32 раза лучшей чем на имеющимся в ESP .
------------------------------------------
2) относительно параллельного включения датчиков. Надо смотреть их даташит так как состояние их выхода при отсутствии напряжение питания может быть разным.
Т е они могут нагружать друг друга.
----------------------------------------------------
3) Если Вы будете отключать и включать питание у датчиков, то надо будет ждать выхода датчиков на рабочий режим. Например датчики различных газов выходят на рабочий режим несколько минут.
Полагаю, что такой способ управления датчиками есть результат недостаточного уровня знаний в цифровой схемотехники у автора.
 

TRO

Member
Я делал так: Пускал на вход АЦП каждый сигнал через 2 последовательных сопротивления, в точку между этими сопротивлениями ставил мосфет на землю, и таким образом прибивал сигнал неиспользованного сигнала к земле. Номиналы сопротивлений для получения правильных сопротивлений (получившихся делителей) подбирал в симуляторе. Единственно при этом амплитуда измеряемых сигналов должна как минимум (кратно количеству) превышать диапазон АЦП (ибо вынужденные делители).
 

nikolz

Well-known member
Я делал так: Пускал на вход АЦП каждый сигнал через 2 последовательных сопротивления, в точку между этими сопротивлениями ставил мосфет на землю, и таким образом прибивал сигнал неиспользованного сигнала к земле. Номиналы сопротивлений для получения правильных сопротивлений (получившихся делителей) подбирал в симуляторе. Единственно при этом амплитуда измеряемых сигналов должна как минимум (кратно количеству) превышать диапазон АЦП (ибо вынужденные делители).
Безусловно, для спортивного интереса можно делать и так.
Если Вы на вход ацп ставите делители, то их погрешность 5-20%.
т е Вы будете измерять сигналы с такой же ошибкой.
Вопрос лишь в том зачем эта конструкция на дискретных элементах, если есть готовые чипы.
-----------------------------------------------
Можно конечно и на лампах сделать, если интересен процесс.
 

TRO

Member
@nikolz, вы через чур сильно утрируете, покажите мне более простое и дешевое решение чем четыре резистора и 2 мосфета (кстати в 1 корпусе). Во вторых, ваши надуманные погрешности с делителями элементарно решаются примитивной быстрой калибровкой (к тому же непонятно как вы без делителей собираетесь привязывать ваши сигналы к диапазону АЦП, они все равно понадобятся). В третьих, не надо грузить железку лишним кодом по опросу внешнего АЦП. В четвертых эти ваши готовые чипы стоят денег несравнмых с моей рассыпухой, (а мы ESPшку ведь из за крайней дешевизны пользуем). В пятых, я без офтопа дал ответ в рамках темы топика, а если не нравится сама тема, игнорируйте, а не лезьте в неё со своими ламповыми подколами.

А вот что реально стоит записать в минуса, так это то, что для управления мосфетами нужны выводы проца, которых у нашей железяки в обрез (поэтому я использую часть ног для двойного и или даже тройного назначения).
 
Последнее редактирование:

nikolz

Well-known member
если на не хватает цифровых In/out то ставим чип раcширитель на 8 с I2C. таким способом можно увиличить число цифровых In/Out до 128.
 
Сверху Снизу