Чтение показаний датчика с выхода PWM
Чтение показаний датчика с выхода PWM
Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
- Tehnics
- Рядовой
- Сообщения: 34
- Зарегистрирован: 06 сен 2015, 11:18
- Откуда: Нововоронеж
- Имя: Константин
Чтение показаний датчика с выхода PWM
Название и модель датчика СО2 в студию
- hrach
- Сержант
- Сообщения: 258
- Зарегистрирован: 17 сен 2015, 11:05
- Откуда: Самара
- Имя: Грачик
- Контактная информация:
Чтение показаний датчика с выхода PWM
Я на днях буду делать видео обзор датчика MQ7 и по питаюсь сделать какой то сигнализатор для СО. Только не понял про считывание данные PWM. Это для чего нужно?Xops писал(а):Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
Чтение показаний датчика с выхода PWM
Благодарю всех за проявленное внимание! Датчик MH-Z19. Считывание данные по PWM- вижу более простым нежели UART(Tx,Rx)..
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Чтение показаний датчика с выхода PWM
используйте скоростной счетчик и фильтр среднего значения.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Чтение показаний датчика с выхода PWM
У кого есть датчик проверяйте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
AlexA
Чтение показаний датчика с выхода PWM
Как посчитать длину импульса? Для перевода в 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.
Добавлено (29.09.2016, 00:42)
---------------------------------------------
Alex16- подключил как в проекте Tx, Rx. Пытаюсь вывести показания в UART- показывает постоянно 0.
Последний раз редактировалось Xops 29 сен 2016, 08:20, всего редактировалось 1 раз.
- eugeneb
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
Чтение показаний датчика с выхода PWM
Не майся, освой UART
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Чтение показаний датчика с выхода PWM
Обновите версию программы и почитайте описание блока скоростной счетчик - он умеет немало. И сравнивайте с предуставленной константой.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Чтение показаний датчика с выхода PWM
Как данный код упаковать в функциональный блок?
#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);
}
#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 окт 2016, 13:05, всего редактировалось 1 раз.
Чтение показаний датчика с выхода PWM
А что там создавать: выбираете вкладку ПОЛЬЗОВАТЕЛЬСКИЕ, жмете на надпись Блоки пользователей чтоб активировать кнопку Создать блок, жмете кнопку Создать блок.
Выбирает CODE. Вписываете Лейбла и Наименование.
Вставляете код в DeclareSection:
Вставляете код в SetupSection:
Вставляете код в LoopSection:
Сохраняете как новый блок. Если будет ругаться на отсутствии библиотеки то укажите в блоке где находиться библиотека. Дальше входа, выхода добавляйте как угодно. Готовых примеров полно.
Выбирает 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];
Код: Выделить всё
Serial.begin(9600);
mySerial.begin(9600);
Код: Выделить всё
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:](./images/smilies/ucoz_fie.gif)
![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
Чтение показаний датчика с выхода PWM
Проблема в том что я не могу вывести значение на дисплей ТМ1637. При создание нового блока (как написал Dev1) я вижу значения со2 через монитор com порта. на дисплее пусто...
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Чтение показаний датчика с выхода PWM
Скажу сразу - в с+ я дубовый, но в вашем коде : А где в void setupуказано что есть дисплей?... Вижу только компорт
и выложите уже весь проект
и выложите уже весь проект
Последний раз редактировалось holodaleksey 04 окт 2016, 16:47, всего редактировалось 1 раз.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Чтение показаний датчика с выхода PWM
этот функциональный блок имеет выход на котором в моем проекте висит дисплей. по факту на выходе нет нечего. даже если отправлять данные с него в com монитор.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Xops 05 окт 2016, 11:06, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Чтение показаний датчика с выхода PWM
пасиб, паржал) а как Ваш блок поймет частоту от датчика? )Xops писал(а):Прикрепления: co2.flp(132Kb)<<
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
-
- Лейтенант
- Сообщения: 566
- Зарегистрирован: 10 янв 2016, 13:47
Чтение показаний датчика с выхода PWM
пробуйте. такого дисплея у меня нет, поэтому 2-1: это подрезанный ваш, как будет работать не знаю.
2-2: это на FDB. проверяйте по компорту, если пойдет -
сформулируйте ТЗ (или сценарий, алгоритм) - словами, будем думать.
зы: поход вчера чот я с 2-2 косякнул, вы проверьте, дальше посмотрим.
2-2: это на FDB. проверяйте по компорту, если пойдет -
сформулируйте ТЗ (или сценарий, алгоритм) - словами, будем думать.
зы: поход вчера чот я с 2-2 косякнул, вы проверьте, дальше посмотрим.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось holodaleksey 06 окт 2016, 12:54, всего редактировалось 1 раз.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )
Кто сейчас на конференции
Сейчас этот форум просматривают: Слимпер и 2 гостя