Вибір 4-бітної адреси шини через аналоговий вхідний контакт: моделювання Монте-Карло показує значення, що перекриваються адресами


16

Я створив невелику плату сенсора для моєї магістерської роботи з мікроконтролером 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 може отримати помилкове читання (з більш високими можливостями для помилкових читання для більш високих адрес).

Я не хотів би додавати інші значення резисторів, ніж ті, які вже використовуються на платі (що стосується тези, яку я хочу оптимізувати для виробництва).

Я не хотів би додавати посилання на напругу (наприклад, діод Зенера) для живлення мережі резисторів ЦАП.

Я не можу більше змінювати плату контролера (і використовувати там більш точний регулятор напруги).

Я все ще можу змінити дизайн / схему друкованої плати плати датчиків!

Як я можу переконатися, що завжди отримують правильні показання за адресою (або за програмою, або за допомогою зміни схеми)?


3
+1 Приємне запитання. Чи можете ви десь надати останній файл asc LTspice у пастбіні? Тож ми можемо перевірити інші комбінації?
тьмяний втратив віру у SE

2
Чудове запитання, приємна робота над з’ясуванням того, що насправді спричинило це, перш ніж тут попросити настанови. Тепер питання і відповідь добре читати для тих, хто проходить мимо, а не лише вас :-)
Mast

Відповіді:


19

Згідно з вашим моделюванням, ваша схема адресації працює нормально, доки не враховуються лише невизначеності значень резистора. Саме невизначеність напруги призводить до виходу з ладу.

Моя порада - скасувати коливання на VCC, використовуючи його як посилання на АЦП. Це можна зробити, запрограмувавши REFSбіти в ADMUXрегістрі, як це пояснено в аркуші :

введіть тут опис зображення

Як тільки ви перейдете на VCC як опорне напруга для АЦП, ви більше не будете вимірювати напругу, а співвідношення між значеннями резистора та тими, що точні до 1%. Ніяких змін в схемі не потрібно (хоча ви, можливо, захочете збільшити значення R7, щоб отримати вимірювання в середині діапазону конверсій ADC), лише оновлення програмного забезпечення Attiny має бути оновлено.

Якщо ви все ще готові переробити плату сенсорів, ви можете замінити схему на сходах R-2R, як запропонував Cano64:

схематичний

імітувати цю схему - Схематично створено за допомогою CircuitLab

Це дозволить оптимізувати роздільну здатність, зробивши всі кроки сходів рівними. 1% резистори досить точні, щоб побудувати монотонні сходи розміром до 5 біт.


До! Я не бачив форсу для дерев. Я був так зафіксований на тому 1.1V ... Дякую! Я спробую це.
КарлКарлсом

1
Випробував це і він працює. Чудово!
KarlKarlsom

Я тестував його на VCC як AREF і резистор 220k для R7. Пізніше я можу спробувати моделювати сходи 100 К, 220 К R-2R і побачити, чи це дає мені ще кращі результати. Знову дякую!
КарлКарльсом

3

Мені довелося один раз вирішити подібну проблему. Мені потрібно було підключити 4 кнопки до одного аналогового штифта на ардуїно, однак мені потрібно було розпізнати одночасні натискання (всі комбінації). Я придумав ту саму схему, що і ви, тоді я написав програму для пошуку всіх можливих комбінацій значень резисторів, щоб кінцеві значення при натисканні кнопок були максимально однаковими. Вгадай що? Нас накрутили, цього зробити не можна. Ось так, приємного дня.

Я дізнався, що оптимальні значення резистора для вимикачів близькі до R, 2R, 4R, 8R, а нижня частина дільника має значення R. Ваша схема вже близька до оптимальної, вам просто потрібно замінити R7 на 10k резистор.

Але є хороша новина для вас. Оскільки вам просто потрібно встановити адресу (ви не будете працювати комутатором під час роботи пристрою), рекомендую замість цього використовувати перемикачі SPDT та сходи R2R .


Чому цього не можна було зробити? Що сталося, коли ви підключили свої перемикачі до (R, 2R, 4R, 8R) резисторів? Які комбінації не спрацювали?
Дмитро Григор’єв

Сходи R-2R - це до речі відмінна пропозиція!
Дмитро Григор’єв

+ Дмитро I мав на увазі те саме, що вихідні напруги занадто близькі, щоб їх надійно розрізнити.
Cano64
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.