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

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#1

Сообщение Xops » 28.09.2016{, 15:56}

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

Аватара пользователя
Tehnics
Рядовой
Сообщения: 34
Зарегистрирован: 06.09.2015{, 11:18}
Репутация: 0
Откуда: Нововоронеж
Имя: Константин

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

#2

Сообщение Tehnics » 28.09.2016{, 17:53}

Название и модель датчика СО2 в студию

Аватара пользователя
hrach
Сержант
Сообщения: 258
Зарегистрирован: 17.09.2015{, 11:05}
Репутация: 13
Откуда: Самара
Имя: Грачик
Контактная информация:

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

#3

Сообщение hrach » 28.09.2016{, 18:08}

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

Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#4

Сообщение Xops » 28.09.2016{, 22:31}

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

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

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

#5

Сообщение holodaleksey » 28.09.2016{, 23:23}

используйте скоростной счетчик и фильтр среднего значения.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )

Аватара пользователя
Alex16
Рядовой
Сообщения: 70
Зарегистрирован: 05.01.2016{, 01:20}
Репутация: 1
Откуда: Армавир

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

#6

Сообщение Alex16 » 28.09.2016{, 23:58}

У кого есть датчик проверяйте.
Вложения
123.flp
(50.78 КБ) 112 скачиваний
AlexA

Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#7

Сообщение Xops » 29.09.2016{, 00:42}

Как посчитать длину импульса? Для перевода в 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.
Последний раз редактировалось Xops 29.09.2016{, 08:20}, всего редактировалось 1 раз.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

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

#8

Сообщение eugeneb » 29.09.2016{, 02:24}

Не майся, освой UART

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

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

#9

Сообщение holodaleksey » 29.09.2016{, 15:16}

Обновите версию программы и почитайте описание блока скоростной счетчик - он умеет немало. И сравнивайте с предуставленной константой.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )

Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#10

Сообщение Xops » 04.10.2016{, 11:38}

Как данный код упаковать в функциональный блок?

#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);
}
Последний раз редактировалось Xops 04.10.2016{, 13:05}, всего редактировалось 1 раз.

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

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

#11

Сообщение Dev1 » 04.10.2016{, 13:27}

А что там создавать: выбираете вкладку ПОЛЬЗОВАТЕЛЬСКИЕ, жмете на надпись Блоки пользователей чтоб активировать кнопку Создать блок, жмете кнопку Создать блок. 
Выбирает 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);
Сохраняете как новый блок. Если будет ругаться на отсутствии библиотеки то укажите в блоке где находиться библиотека. Дальше входа, выхода добавляйте как угодно. Готовых примеров полно.
Win10-64 FLProg v7.5.2 Portable :fie:

Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#12

Сообщение Xops » 04.10.2016{, 15:31}

Проблема в том что я не могу вывести значение на дисплей ТМ1637. При создание нового блока (как написал Dev1) я вижу значения со2 через монитор com порта. на дисплее пусто...

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

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

#13

Сообщение holodaleksey » 04.10.2016{, 16:46}

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

Xops
Рядовой
Сообщения: 31
Зарегистрирован: 21.12.2015{, 13:32}
Репутация: 0

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

#14

Сообщение Xops » 04.10.2016{, 17:23}

этот функциональный блок имеет выход на котором в моем проекте висит дисплей. по факту на выходе нет нечего. даже если отправлять данные с него в com монитор.
Вложения
co2.flp
(132.46 КБ) 98 скачиваний
Последний раз редактировалось Xops 05.10.2016{, 11:06}, всего редактировалось 1 раз.

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

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

#15

Сообщение holodaleksey » 05.10.2016{, 21:41}

Xops писал(а):Прикрепления: co2.flp(132Kb)<<
 пасиб, паржал) а как Ваш блок поймет частоту от датчика? )
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

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

#16

Сообщение holodaleksey » 05.10.2016{, 22:17}

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

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

зы: поход вчера чот я с 2-2 косякнул, вы проверьте, дальше посмотрим.
Вложения
co2-1.flp
(118.56 КБ) 77 скачиваний
co2-2.flp
(117.94 КБ) 89 скачиваний
Последний раз редактировалось holodaleksey 06.10.2016{, 12:54}, всего редактировалось 1 раз.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )

Ответить

Вернуться в «Спросить у знатоков»