Страница 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:
Вставляете код в 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 косякнул, вы проверьте, дальше посмотрим.