Вам потрібно діапазон сигналу від 0 до 5 В. Не всі ми :-)? Давайте підемо на інший підхід і подивимось, куди це нам дістанеться.
Початкова точка: найдешевше і найпростіше рішення.
Це був би серійний резистор для створення дільника напруги. Це абсолютний мінімум. Я помітив, що люди не замислюються над цим резистором, просто вибирають хороше кругле значення, наприклад 10 . Але я виявив, що для цього є оптимальне значення. Ω
Крива показує різницю напруги між мінімальним та максимальним показанням (9k та 20k Ω респ.) Як функція послідовного резистора (в k Ω ). Розумієте, він справді має максимум. Це легко знайти, якщо ви пам’ятаєте про це ΩΩΩ
(f(x)g(x))′=f′(x)⋅g(x)−f(x)⋅g′(x)g2(x)
Різниця - V M I N має екстремум для VMAXVMIN
ddRX(RMAXRMAX+RX−RMINRMIN+RX)=0
Розв’язування для дає RX
RX=RMIN⋅RMAX−−−−−−−−−−−√
Красуня!
Тож у нашому випадку серійний резистор становитиме 13,42k , ви можете перевірити це на графіку. Якщо розмістити резистори між 0 В і + 5 В, це дасть нам вихідний діапазон [2 В, 3 В]. Це максимальний діапазон, який можна отримати за допомогою 1 резистора (*). Ω
Чи достатньо? У Arduino є 10-бітний АЦП, тому цей діапазон дасть вам діапазон 200 дискретних рівнів. Це повинно дати достатню точність для DIY-датчика. Тому ніяких інших компонентів, таких як opamps, не потрібно.
(*) Прийнята відповідь дає діапазон 1,9 В, але має неправильні рівняння . Неможливо отримати більш високий діапазон, ніж 1 В з 1 резистором і лише напругою + 5 В.