Датчики давления и света
Урок про датчики давления (почти линейные) и датчики света (отклик в широком диапазоне яркостей).
Пьезорезистивный датчик давления меняет сопротивление мембраны под нагрузкой; фотодатчик превращает поток света в ток или изменение сопротивления.
Давление и свет — две величины с очень разным «характером». Давление удобно укладывается в линейную модель, а вот свет меняется на много порядков, и человек воспринимает его логарифмически — это диктует выбор датчика и шкалы.
Датчик давления
Пьезорезистивный датчик обычно линеен:
$$ p = \frac{V - V_0}{S} $$
где $V_0$ — выход при нулевом давлении, $S$ — чувствительность.
# 0 кПа -> 0.5 В, 100 кПа -> 4.5 В
V0 = 0.5
S = (4.5 - 0.5) / 100 # В/кПа
def pressure(v):
return (v - V0) / S
for v in (0.5, 2.5, 4.5):
print(v, "В ->", round(pressure(v), 1), "кПа")Вывод:
0.5 В -> 0.0 кПа 2.5 В -> 50.0 кПа 4.5 В -> 100.0 кПа
Датчики света
Освещённость измеряют в люксах, и она охватывает огромный диапазон: от $0{,}1$ лк ночью до $100\,000$ лк на солнце. Поэтому отклик часто описывают в логарифмической шкале — в децибелах или просто через логарифм отношения:
$$ L_{dB} = 10\,\log_{10}\!\frac{E}{E_0} $$
Фоторезистор (LDR) меняет сопротивление степенным образом, фотодиод даёт ток, линейный по потоку; цифровые датчики освещённости отдают сразу люксы по шине I2C.
import math
E0 = 1.0 # опорная освещённость, лк
for E in (10, 1000, 100000):
L = 10 * math.log10(E / E0)
print(E, "лк ->", round(L, 1), "дБ")Вывод:
10 лк -> 10.0 дБ 1000 лк -> 30.0 дБ 100000 лк -> 50.0 дБ
Как работает под капотом
Датчик давления — это мембрана с тензорезисторами в мостовой схеме: давление гнёт мембрану, сопротивления меняются, мост даёт разностное напряжение. Мост хорош тем, что частично компенсирует температурный дрейф. У света проблема в динамическом диапазоне: чтобы видеть и сумерки, и солнце, применяют логарифмический отклик или автоматическую смену усиления (как ISO в камере). Поэтому «линейная калибровка» для света часто заменяется логарифмической или табличной.
Частые ошибки
- Игнорировать смещение $V_0$ датчика давления — нуль уедет на десятки кПа.
- Применять линейную шкалу к свету — потеряете либо тени, либо света.
- Путать абсолютное и относительное давление: датчик может мерить относительно атмосферы.
Итог
- Давление обычно линейно: $p = (V - V_0)/S$.
- Свет охватывает много порядков, поэтому удобна логарифмическая шкала.
- Выбор датчика света диктуется нужным динамическим диапазоном.