ADC:Измерение сопротивлений - технические детали/en: различия между версиями
(Новая страница: «Setting the output current is not supported by the driver, so it is implemented using the userspace application with direct memory access.») |
(Новая страница: «Command <b>lradc-set-current</b> (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance).») |
||
Строка 28: | Строка 28: | ||
Setting the output current is not supported by the driver, so it is implemented using the userspace application with direct memory access. | Setting the output current is not supported by the driver, so it is implemented using the userspace application with direct memory access. | ||
Command <b>lradc-set-current</b> (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance). | |||
<pre> | <pre> |
Версия 11:16, 24 мая 2019
The LRADC channel of the processor that the Wiren Board uses to operate the ADC has an integrated current source. This allows to measure the resistance of the load connected to the outputs of the ADC, i.e., to read values of resistive sensors.
See also the description in the documentation on the processor, p. 1334
Resistance measurement is implemented in the wb-homa-adc driver, see ADC.
The measuring procedure in the manual mode
Make sure the wb-homa-adc daemon is unloaded
Disable output
(only for Wiren Board rev. 2.8)
- For terminals 2-7: close the transistor. See Список GPIO, Low voltage load management.
- For terminal strip 9: set GPIO 2 to input mode (Managing GPIO)
Channel selection
Use wb-adc-set-mux to select a channel(ADC)
Setting output current
Setting the output current is not supported by the driver, so it is implemented using the userspace application with direct memory access.
Command lradc-set-current (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance).
root@wirenboard:~# lradc-set-current Set output current for LRADC1 channel USAGE: ./lradc_current <uA>|off Available currents: 0uA, 20uA, ..., 280uA, 300uA Use "off" to switch off current source. 0uA setting could result in some current
Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА.
Установка тока в 100 мкА:
root@wirenboard:~# lradc-set-current 100
Отключение источника тока:
root@wirenboard:~# lradc-set-current off
Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095.
В примере 40 мкА - оптимальный ток:
root@wirenboard:~# lradc-set-current 100 root@wirenboard:~# wb-adc-get-value 4095 root@wirenboard:~# lradc-set-current 20 root@wirenboard:~# wb-adc-get-value 1663 root@wirenboard:~# lradc-set-current 60 root@wirenboard:~# wb-adc-get-value 4095 root@wirenboard:~# lradc-set-current 40 root@wirenboard:~# wb-adc-get-value 3154
Вычисление результата
Сопротивление вычисляется по формуле:
r = 1.0/(I/V - 1/R1) - R2
r - измеряемое сопротивление, R2 - последовательное сопротивление канала
R1 - параллельное сопротивление (плечо делителя/токи утечки).
V - напряжение на входе LRADC, измеряемое процессором:
V = N / 4095 * 1.85V
где N - сырые показания LRADC, I - выходной ток.
Для разных версий:
- Wiren Board 5 (клеммники R1-R2): R2 = 3150 Ohm, R1 = 1000kOhm.
- Wiren Board 4 (клеммники R1-R2): R2 = 3570 Ohm, R1 = 120kOhm.
- Wiren Board Smart Home rev. 3.5 (клеммники R1-R4): R2 = 600 Ohm, R1 = 93kOhm.
- Wiren Board rev. 2.8. R2 = 12kOhm, R1 = 33.0 kOhm.