Нода - счетчик импульсов на DS2423
Нода - счетчик импульсов на DS2423
Представляю Вашему вниманию скетч ноды - счетчика импульсов. Это мой первый опыт работы с MySensors.
Сам счетчик - это микросхема DS2423. Работает по протоколу 1-Wire. Имеет 2 канала подсчета. Код публикую с разрешения автора Berk . Я его использую совместно с механическими счетчиками воды YF-S201 около 2-х лет. Один стоит перед бойлером на подаче и по факту меряет горячую воду , второй на стиральной машине. Точность измерений ( 1 тик ) - 2,5 грамма. На 3-х литровую банку делает в среднем 1280 оборотов. Что бы получить значение в литрах результат делим на 430 . Для других счетчиков подбирается по необходимости.
Зачем это надо , зачем такие сложности ( цена микросхемы 5 долларов и продают на Али минимум 5 штук).
Вся прелесть микрухи - микротоковое потребление. В качестве резервного питания я применяю ионистор на 1 фараду.
Так как это автономное устройство , то можно считывать данные с любым интервалом и не боятся пропадания питания у ноды по любым причинам.
Код тестовый для ознакомления. Если надо знать расход за период ( час , день или месяц ) можно просто один раз прочитать значения. Тогда ноду можно переводить в спящий режим.
Исходные данные взял С этого сайта.
Всех заинтересованных прошу помочь дописать код под спящий режим. Девайс есть в наличии и могу протестировать.
PS/ Изначально применял DS2423 в проекте AMS на ESP32. В качестве приемника шины выступал мост DS2482 - конвертор 1-wire - I2C. К ней подключено 4 DS18B20 и этот девайс. Длинна линии около 30 метров телефонной лапши.
			
							Сам счетчик - это микросхема DS2423. Работает по протоколу 1-Wire. Имеет 2 канала подсчета. Код публикую с разрешения автора Berk . Я его использую совместно с механическими счетчиками воды YF-S201 около 2-х лет. Один стоит перед бойлером на подаче и по факту меряет горячую воду , второй на стиральной машине. Точность измерений ( 1 тик ) - 2,5 грамма. На 3-х литровую банку делает в среднем 1280 оборотов. Что бы получить значение в литрах результат делим на 430 . Для других счетчиков подбирается по необходимости.
Зачем это надо , зачем такие сложности ( цена микросхемы 5 долларов и продают на Али минимум 5 штук).
Вся прелесть микрухи - микротоковое потребление. В качестве резервного питания я применяю ионистор на 1 фараду.
Так как это автономное устройство , то можно считывать данные с любым интервалом и не боятся пропадания питания у ноды по любым причинам.
Код тестовый для ознакомления. Если надо знать расход за период ( час , день или месяц ) можно просто один раз прочитать значения. Тогда ноду можно переводить в спящий режим.
Исходные данные взял С этого сайта.
Всех заинтересованных прошу помочь дописать код под спящий режим. Девайс есть в наличии и могу протестировать.
PS/ Изначально применял DS2423 в проекте AMS на ESP32. В качестве приемника шины выступал мост DS2482 - конвертор 1-wire - I2C. К ней подключено 4 DS18B20 и этот девайс. Длинна линии около 30 метров телефонной лапши.
- Вложения
 - 
			
		
		
				
- My_SensorsDS2423.zip
 - 1-Wire счетчик на DS2423
 - (3.43 КБ) 1966 скачиваний
 
 
MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
Фото с просторов интернета ( их уже больше не продают).
 
			
			
									
						
							MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
Схема
			
			
									
						
							MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
Месяц работы прошел успешно. За это время можно сделать некоторые выводы.
Во первых в коде надо заменить строчку
на
иначе считает до 255 и сбрасывает в 0. При uint16_t считает до 32 768 и при переполнении сбрасывает в - (минус)32 768.
430 это коэффициент преобразования. Водяные в счетчики YF-S201 делают в среднем 1280 оборотов на 3 литра. На электрических пишут сколько импульсов на 1 киловатт-час.
Во вторых скетч позволяет регулировать частоту отправки данных. За это отвечает
Тут можно подставить требуемое число.
И в развитии скетча можно перевести ноду в спящий режим. Это в случае , если интересуют данные за определённый период. Для этого в loop заменить
на
где за время сна отвечает 
PS/ код приведен с разрешения автора.
			
			
									
						
							Во первых в коде надо заменить строчку
Код: Выделить всё
  uint8_t counA = ((ds2423.getCount(DS2423_COUNTER_A)) / 430); 
  uint8_t counB = ((ds2423.getCount(DS2423_COUNTER_B)) / 430);Код: Выделить всё
  uint16_t counA = ((ds2423.getCount(DS2423_COUNTER_A)) / 430);
  uint16_t counB = ((ds2423.getCount(DS2423_COUNTER_B)) / 430);430 это коэффициент преобразования. Водяные в счетчики YF-S201 делают в среднем 1280 оборотов на 3 литра. На электрических пишут сколько импульсов на 1 киловатт-час.
Во вторых скетч позволяет регулировать частоту отправки данных. За это отвечает
Код: Выделить всё
uint16_t const count_interval = 5000;И в развитии скетча можно перевести ноду в спящий режим. Это в случае , если интересуют данные за определённый период. Для этого в loop заменить
Код: Выделить всё
void loop() {
  if (millis() - previousMillis > count_interval) {
    if (flag == 1) {
      ds2423_read_ver1 ();
      flag = 0;
      previousMillis = millis();
    }
    else {
      ds2423_read_ver2 ();
      flag = 1;
      previousMillis = millis();
    }
  }
}Код: Выделить всё
void loop() {
  if (flag == 1) {
    ds2423_read_ver1 ();
    flag = 0;
    }    else {
      ds2423_read_ver2 ();
      flag = 1;
    }
// sleep(count_interval, false);  
 sleep(count_interval, true); 
}Код: Выделить всё
//sleep(count_interval*1000, false) // глупый сон  /// секунды
//sleep(count_interval*1000*60, false) // глупый сон  /// минуты
sleep(count_interval*1000*60*60, false) // глупый сон  /// часы
//sleep(count_interval*1000*60*60*24, false) // глупый сон  /// дни
//sleep(count_interval, true) // умный сон //
//sleep(count_interval*1000*60, true) // умный сон  /// минуты
//sleep(count_interval*1000*60*60, true) // умный сон  /// часы
//sleep(count_interval*1000*60*60*24, true) // умный сон  /// дниMySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
Ооо. Супер ! А где такое продают ? Ссылочку можно ? Где и как используешь ? Сейчас переделал скетч на 485 протокол и до кучи ещё три ds28b20 там же гоняю.
			
			
									
						
							MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
Один сейчас использую для счетчика электроэнергии, фотодиод прикрепил к счетчику (но надо переделать, понял, что на него попадает свет извне и может вносить искажения, уже "потерялось" около 100 импульсов за пару месяцев). Второй протестировал с инфракрасными отражателями TCRT5000 и будет работать на счетчиках воды, нужно придумать как эти датчики прикрепить и закрыть от света. Там же установлю и DS18B20 на стояки.
Напишите мне в приват, скину ссылку, у меня пока нет прав отпрвлять приватные сообщения.
			
			
									
						
										
						Напишите мне в приват, скину ссылку, у меня пока нет прав отпрвлять приватные сообщения.
Re: Нода - счетчик импульсов на DS2423
Люди добрые, поделитесь пожалуйста ссылкой где можно купить?
			
			
									
						
										
						Re: Нода - счетчик импульсов на DS2423
Напиши в личку Honey  , как увидит - ответит. У меня только пара микрух осталась. Но пересылка чертовски дорогая стала. Или Тут.
			
			
									
						
							MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
			
						Re: Нода - счетчик импульсов на DS2423
А это не такой счетчик что с просторов инета, осмелюсь предположить это ваша интерпретация. Насколько эта микра совместима с ds2423?