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