Страница 1 из 1

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 15:56}
Xops
Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 17:53}
Tehnics
Название и модель датчика СО2 в студию

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 18:08}
hrach
Xops писал(а):Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
Я на днях буду  делать видео обзор датчика MQ7 и по питаюсь сделать какой то сигнализатор для СО. Только не понял про считывание данные PWM. Это для чего нужно?

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 22:31}
Xops
Благодарю всех за проявленное внимание! Датчик MH-Z19. Считывание данные по PWM- вижу более простым нежели UART(Tx,Rx)..

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 23:23}
holodaleksey
используйте скоростной счетчик и фильтр среднего значения.

Чтение показаний датчика с выхода PWM

Добавлено: 28.09.2016{, 23:58}
Alex16
У кого есть датчик проверяйте.

Чтение показаний датчика с выхода PWM

Добавлено: 29.09.2016{, 00:42}
Xops
Как посчитать длину импульса? Для перевода в PWM надо 5000*(Th- 2ms)/(Th+ Tl- 4ms) http://www.2150692.ru/images/mh-z19_co2_manual.pdf

Добавлено (29.09.2016, 00:42)
---------------------------------------------
Alex16- подключил как в проекте Tx, Rx. Пытаюсь вывести показания в UART- показывает постоянно 0.

Чтение показаний датчика с выхода PWM

Добавлено: 29.09.2016{, 02:24}
eugeneb
Не майся, освой UART

Чтение показаний датчика с выхода PWM

Добавлено: 29.09.2016{, 15:16}
holodaleksey
Обновите версию программы и почитайте описание блока скоростной счетчик - он умеет немало. И сравнивайте с предуставленной константой.

Чтение показаний датчика с выхода PWM

Добавлено: 04.10.2016{, 11:38}
Xops
Как данный код упаковать в функциональный блок?

#include 

SoftwareSerial mySerial(A0, A1); // RX, TX сенсора

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
// волшебная комманда - смотри мануал
char response[9]; // здесь будет ответ

void setup() {
Serial.begin(9600); //это наш монитор
mySerial.begin(9600); //а это датчик MH-Z19(14) 
}

void loop() 
{
mySerial.write(cmd,9);//запрос PPM CO2
mySerial.readBytes(response, 9);
int responseHigh = (int) response[2];
int responseLow = (int) response[3];
int ppm = (256*responseHigh)+responseLow;
// ну и по мануалу из ответа считаем PPM

Serial.println(ppm);
delay(10000);
}

Чтение показаний датчика с выхода PWM

Добавлено: 04.10.2016{, 13:27}
Dev1
А что там создавать: выбираете вкладку ПОЛЬЗОВАТЕЛЬСКИЕ, жмете на надпись Блоки пользователей чтоб активировать кнопку Создать блок, жмете кнопку Создать блок. 
Выбирает CODE. Вписываете Лейбла и Наименование.
Вставляете код в DeclareSection:


Код: Выделить всё

#include <SoftwareSerial.h>;
SoftwareSerial mySerial(A0, A1); // A0 - к TX сенсора, A1 - к RX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[9];
Вставляете код в SetupSection:


Код: Выделить всё

Serial.begin(9600);
  mySerial.begin(9600);
Вставляете код в LoopSection:



Код: Выделить всё

mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;  for (i = 1; i < 8; i++) crc+=response[i];

  crc = 255 - crc;
  crc++;
if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
  } else {

    unsigned int responseHigh = (unsigned int) response[2];    unsigned int responseLow = (unsigned int) response[3];

    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.println(ppm);
  }

  delay(10000);
Сохраняете как новый блок. Если будет ругаться на отсутствии библиотеки то укажите в блоке где находиться библиотека. Дальше входа, выхода добавляйте как угодно. Готовых примеров полно.

Чтение показаний датчика с выхода PWM

Добавлено: 04.10.2016{, 15:31}
Xops
Проблема в том что я не могу вывести значение на дисплей ТМ1637. При создание нового блока (как написал Dev1) я вижу значения со2 через монитор com порта. на дисплее пусто...

Чтение показаний датчика с выхода PWM

Добавлено: 04.10.2016{, 16:46}
holodaleksey
Скажу сразу - в с+ я дубовый, но в вашем коде : А где в void setupуказано что есть дисплей?... Вижу только компорт
и выложите уже весь проект

Чтение показаний датчика с выхода PWM

Добавлено: 04.10.2016{, 17:23}
Xops
этот функциональный блок имеет выход на котором в моем проекте висит дисплей. по факту на выходе нет нечего. даже если отправлять данные с него в com монитор.

Чтение показаний датчика с выхода PWM

Добавлено: 05.10.2016{, 21:41}
holodaleksey
Xops писал(а):Прикрепления: co2.flp(132Kb)<<
 пасиб, паржал) а как Ваш блок поймет частоту от датчика? )

Чтение показаний датчика с выхода PWM

Добавлено: 05.10.2016{, 22:17}
holodaleksey
пробуйте. такого дисплея у меня нет, поэтому 2-1: это подрезанный ваш, как будет работать не знаю.
2-2: это на FDB. проверяйте по компорту, если пойдет -

сформулируйте ТЗ (или сценарий, алгоритм) - словами, будем думать.

зы: поход вчера чот я с 2-2 косякнул, вы проверьте, дальше посмотрим.