Я разработал небольшую сенсорную плату для моей магистерской работы с микроконтроллером ATtiny44 . Мне нужно около 200 таких плат для моего приложения, и 16 всегда локально подключены к плате контроллера. Вся сеть выглядит так:
Для связи между контроллером и сенсорными платами я написал собственную 1-контактную шину (на основе синхронизации). Единственная проблема заключается в том, что сенсорная плата должна иметь адрес, чтобы знать ее местоположение в сети, когда я отправляю свои данные на плату контроллера.
Поскольку на ATtiny остался только 1 контакт, я разработал схему ЦАП с перемычкой, которая должна генерировать аналоговое напряжение на основе установки четырех перемычек. Поскольку схема датчика использует значения (47, 470, 1k, 3k, 4k7, 10k, 100k и 220k), и я хотел оптимизировать работу, я использовал следующие значения для ЦАП (в основном 100k, 50k, 20k и 10k ). Что должно дать мне хорошее значение между 0 В и 760 мВ в зависимости от положения перемычки. Именно то, что мне нужно было прочитать как аналоговое напряжение с внутренним эталоном 1.1 В ATtiny. При запуске ATtiny считывает это напряжение и должно знать его положение.
смоделировать эту схему - схема, созданная с использованием CircuitLab
В теории это работает нормально. Я даже сделал анализ Монте-Карло в LTspice, чтобы подтвердить, что я не получаю перекрывающихся областей, принимая во внимание допуск резисторов (все они 1% BTW). Ниже вы можете найти фотографии этого анализа.
Теперь я создал несколько (к счастью, не 200) этих плат, но некоторые из них не смогли получить правильные показания по их адресу (особенно в регионах с более высокими адресами, где все допуски вступают в действие сразу). Я измерил все возможные решения и наконец выяснил свою проблему. Мой первоначальный анализ не включал допуск напряжения питания 5 В, которое локально генерируется из 12 В с MC7805 на каждой плате контроллера. Согласно спецификации, MC7805 имеет выходное напряжение от 4,8 до 5,2 В.
После того, как я понял это, я изменил анализ Монте-Карло. Теперь это выглядит так:
Как вы можете видеть, есть хорошие области перекрытия, где я не могу точно сказать, что это напряжение может означать только этот адрес. В основном все адреса начинаются с no. 8 может получить ложное чтение (с более высокими возможностями для ложных чтений для более высоких адресов).
Я не хотел бы добавлять значения резисторов, отличные от тех, которые уже использовались на плате (что касается тезиса, который я хочу оптимизировать для производства).
Я бы не хотел , чтобы добавить источник опорного напряжения (например, диод Зенера) , чтобы питать сеть DAC резистора.
Я больше не могу изменять плату контроллера (и использую там более точный регулятор напряжения).
Я все еще могу изменить дизайн / схему печатной платы сенсорной платы!
Как я могу быть уверен, что всегда получаю правильные показания по адресу (либо по программе, либо путем изменения схемы)?