Как изменить разрешение DS18B20?
Я использую датчик DS18B20 с этой библиотекой, задержка 750 мс вызывает проблему в части таймера моего кода. приведенный ниже код взят из DallasTemperature.cpp:
// возвращает количество миллисекунд ожидания завершения преобразования (на основе таблицы данных IC)
int16_t DallasTemperature::millisToWaitForConversion(uint8_t bitResolution) {
switch (bitResolution) {
case 9:
return 94;
case 10:
return 188;
case 11:
return 375;
default:
return 750;
}
Я читаю температуру вот так:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A0
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {}
void loop () {
float currentTemp = sensors.getTempCByIndex(0);
sensors.requestTemperatures();
}
датчик не подключен в паразитном режиме, и есть только один датчик.
Как изменить разрешение с 12 на 9 бит?
@ElectronSurf, 👍0
2 ответа
Лучший ответ:
▲ 1
Просто:
sensors.setResolution(9);
Обычно по умолчанию он равен 9, но затем исследует подключенное устройство, чтобы найти максимальное разрешение, которое оно поддерживает, и устанавливает его в это значение. Обычно это делается в sensors.begin ()
, которое вы опустили из приведенного выше фрагмента. Если у вас этого нет, он все равно будет на 9 бит, а также автобус, вероятно, все равно не будет работать.
,
@Majenko
▲ 1
Кажется, работает лучше:
sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
,
@Brandon
Смотрите также:
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Проблема с датчиком температуры и влажности DHT11
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Сокращение времени считывания показаний датчиков температуры DS18B20.
- Проблемы с подключением I2C на ESP8266 — 12F, какие контакты использовать?
- DHT11 возвращает неверные значения
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- BMP280 возвращает 0
спасибо, мне тоже нужно указывать адрес? sensors.begin(); sensors.SetResolution(9); должен быть в настройке void?, @ElectronSurf
'sensors.begin()
определяет количество подключенных датчиков и определяет максимальное поддерживаемое разрешение.
датчики.SetResolution(9) " устанавливает разрешение для всех будущих транзакций для всех подключенных устройств., @Majenko