Датчик импульсов IN-Z61 для газового счетчика ELSTER BK – Сфера

Датчик импульсов IN-Z61 для газового счетчика ELSTER BK - Сфера Анемометр

Датчик импульсов in-z61 – купить в москве и рф. звоните!

Назначение датчика импульсов IN-Z61Датчик импульсов IN-Z61 используется в автоматизированных системах сбора информации. Предназначен для установки на газовые счетчики ELSTER модификации BK. Подходит для счетчиков ELSTER BK с любым номинальным расходом от G1.6 до G40.

Устанавливается без вмешательства в конструкцию счетчика и не требует вызова газовой службы.

Внутри имеет два геркона. Один из них сраба…

Датчик импульсов IN-Z61 используется в автоматизированных системах сбора информации. Предназначен для установки на газовые счетчики ELSTER модификации BK. Подходит для счетчиков ELSTER BK с любым номинальным расходом от G1.6 до G40.

Устанавливается без вмешательства в конструкцию счетчика и не требует вызова газовой службы.

Внутри имеет два геркона. Один из них срабатывает от магнитной вставки, встроенной в ролик младшего разряда отсчетного устройства – это импульсный выход для контроллера (зеленый и коричневый проводники). Второй предназначен для сигнализации влияния на счетчик внешним магнитным полем (желтый и белый проводники).

Количество литров которые соответствуют одному импульсу определяются моделью счетчика. Данный параметр написан на циферблате счетчика.

Датчик имеет 0.5 метровый 2х жильный кабель, который при необходимости можно удлинить до 50 метров. Можно использовать стандартный кабель типа витая пара или кспв. Для одного датчика достаточно однопарной витой пары. Используя, например, четырехпарную витую пару можно проложить трассу сразу для 4х датчиков или 2х счетчиков воды и 2х датчиков.

ООО “ЭЛЬСТЕР Газэлектроника”, Россия, г. Арзамас.

Самодельный датчик импульсов газового или водяного счетчика

/* GazCounter http://blog.regimov.net/diy-gaz-counter/
* Author: Istomin Evgeny / aka Gena
* 01.12.2022
* Use: – Hall Effect Switches Sensor IC: U18 http://www.utc-ic.com/uploadfile/2022/0331/20220331125747992.pdf
* – (optional) Temperature sensor IC: DS18B20 http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
* – Arduino board Pro Micro (atmega32u4) https://www.arduino.cc/en/Main/ArduinoBoardMicro
*/
Про анемометры:  Инструкция на газовый котел Bosch Gaz 4000 W

// _______
#define OUT 2 // —-| | //
#define GND 3 // —-| U18 | |
#define VCC 4 // —-|_______|/
#define BAUDRATE 115200
#define DS18B20 0 // use DS18B20
#define LOWPOW 0 // not use library LowPower for atmega32u4. Just for 328p
#define LOOP_PERIOD_MS 60 // must be equal LOOP_PERIOD
#if LOWPOW
#include < LowPower.h >
#define LOOP_PERIOD SLEEP_60MS
#endif
#if DS18B20
#define TEMP_PERIOD_MS 1000
#define TEMP_MAX_PERIOD_MS 15*60*1000 // 15 min
// _______
#define DS18B20_GND 5 // —————-| | //
#define DS18B20_OUT 6 // —–*———-| 18B20 | |
#define DS18B20_VCC 7 // —| |–[4k7]-*-|_______|/
// |__________|
#define TEMP_BIT 0x7F // 12 bit
#define TEMP_H 0xFF
#define TEMP_L 0x00
#define WRITESCRATCH 0x4E // Write to EEPROM
#define SKIPROM 0xCC // Skip ROM
#define STARTCONVO 0x44 // Tells device to take a temperature reading and put it on the scratchpad
#define READSCRATCH 0xBE // Read EEPROM
#include < OneWire.h >
OneWire ds(DS18B20_OUT);
uint32_t dTime = 0;
#else
#define TEMP_AVERAGE_COUNT 3
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
// Set the internal reference 2.56 and mux[5:0] = 100111 for atmega32u4
#define ADC_ADMUX ((1<<REFS1) | (1<<REFS0) | (1<<MUX2)| (1<<MUX1)| (1<<MUX0))
// http://www.atmel.com/Images/Atmel-8108-Calibration-of-the-AVR’s-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf
#define T_OFFSET 266.17
#define T_K 0.807
#else // for 328p
// Set the internal reference 1.1 V
#define ADC_ADMUX ((1<<REFS1) | (1<<REFS0) | (1<<MUX3))
#define T_OFFSET 324.31
#define T_K 0.819
#endif
#endif

uint32_t T=0;
uint32_t imp_count=0;
float Temperature=0;

void wait()
{
#if LOWPOW
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
LowPower.idle(LOOP_PERIOD, ADC_OFF, TIMER4_OFF, TIMER3_OFF, TIMER1_OFF,
TIMER0_OFF, SPI_OFF, USART1_OFF, TWI_OFF, USB_OFF);
#else // works on 88 / 168 / 328
LowPower.idle(LOOP_PERIOD, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
SPI_OFF, USART0_OFF, TWI_OFF);
#endif
#else
delay(LOOP_PERIOD_MS);
#endif
T ;
}

void mprintf(String s)
{
Serial.begin(BAUDRATE);
while (!Serial); // wait for serial port to connect. Needed for native USB port only
Serial.println(s);
Serial.flush();
Serial.end();
}

Про анемометры:  Огромные российские утечки метана требуют чрезвычайных мер? Так ли это? - ИА REGNUM

void setup() {
pinMode(VCC, OUTPUT);
pinMode(GND, OUTPUT);
pinMode(OUT, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(VCC, HIGH);
digitalWrite(GND, LOW);
digitalWrite(OUT, HIGH);
#if DS18B20
pinMode(DS18B20_GND, OUTPUT);
pinMode(DS18B20_VCC, OUTPUT);
pinMode(DS18B20_OUT, INPUT);
digitalWrite(DS18B20_GND, LOW);
digitalWrite(DS18B20_VCC, HIGH);
digitalWrite(DS18B20_OUT, HIGH);
ds.reset();
ds.write(SKIPROM);
ds.write(WRITESCRATCH);
ds.write(TEMP_H);
ds.write(TEMP_L);
ds.write(TEMP_BIT); // set maximum resolution 12 bit
#endif

ADMUX = ADC_ADMUX;
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADCSRB |= (1 << MUX5);
#endif
ADCSRA |= (1<<ADEN); // enable the ADC

PRR0 |= (1 << PRTIM2)|(1 << PRTIM1)|(1 << PRTIM2)|(1 << PRTWI)|(1 << PRSPI)|(1 << PRADC)|(0 << PRUSB); //
PRR1 |= (1 << PRTIM3)|(1 << PRUSART1);
mprintf(“Vm3tdTsectTsectTemp”);
}

void loop() {
uint16_t dt=T;
while (digitalRead(OUT) == 1) wait();
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
imp_count ;
GetTemp();
while (digitalRead(OUT) == 0) wait();
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
String s = String(imp_count * 0.01) char(9) String((T-dt)*LOOP_PERIOD_MS/1000.0) char(9)
String(T/1000.0*LOOP_PERIOD_MS) char(9) String(GetTemp());
mprintf(s);
}

float GetTemp()
{

#if DS18B20

if ((T-dTime)*LOOP_PERIOD_MS >= TEMP_PERIOD_MS) {
if ((T-dTime)*LOOP_PERIOD_MS < TEMP_MAX_PERIOD_MS) {
ds.reset();
ds.write(SKIPROM);
ds.write(READSCRATCH);
byte data[2];
data[0] = ds.read();
data[1] = ds.read();
Temperature=((data[1]<< 8) data[0]) * 0.0625; // one bit = 0,0625 celsius
dTime=T;
}
ds.reset();
ds.write(SKIPROM);
ds.write(STARTCONVO);
}

#else
// To use the built-in temperature sensor you need to use LowPower library,
// because it is a measurement of core temperature (plus ~10°C to the air temperature).

PRR0 &= ~(1<<PRADC);
wait();
ADCSRA |= (1<<ADSC); // Start the ADC
while ((ADCSRA & (1<<ADSC)) != 0); // Detect end-of-conversion
uint16_t wADC = ADCW; // Reading register “ADCW” takes care of how to read ADCL and ADCH.
Temperature = Temperature * (TEMP_AVERAGE_COUNT-1)/TEMP_AVERAGE_COUNT
((float)wADC – T_OFFSET ) * T_K / TEMP_AVERAGE_COUNT;
PRR0 |= (1<<PRADC);

#endif

Про анемометры:  Аварийное обслуживание

return Temperature;
}

Оцените статью
Анемометры
Добавить комментарий

Adblock
detector