FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Пятница, 09.12.2016, 12:37
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Чтение показаний датчика с выхода PWM (хелп)
Чтение показаний датчика с выхода PWM
Xops
Дата: Среда, 28.09.2016, 15:56 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
 
Tehnics Дата: Среда, 28.09.2016, 17:53 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 23
Награды: 2
Репутация: 0
Статус: Offline
Название и модель датчика СО2 в студию smile
 
hrach Дата: Среда, 28.09.2016, 18:08 | Сообщение # 3
Полковник
Группа: Проверенные
Сообщений: 141
Награды: 10
Репутация: 1
Статус: Offline
Цитата Xops ()
Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?

Я на днях буду  делать видео обзор датчика MQ7 и по питаюсь сделать какой то сигнализатор для СО. Только не понял про считывание данные PWM. Это для чего нужно?
 
Xops Дата: Среда, 28.09.2016, 22:31 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
Благодарю всех за проявленное внимание! Датчик MH-Z19. Считывание данные по PWM- вижу более простым нежели UART(Tx,Rx)..
 
holodaleksey Дата: Среда, 28.09.2016, 23:23 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 1
Репутация: 1
Статус: Offline
используйте скоростной счетчик и фильтр среднего значения.
 
Alex16 Дата: Среда, 28.09.2016, 23:58 | Сообщение # 6
Сержант
Группа: Проверенные
Сообщений: 45
Награды: 6
Репутация: 3
Статус: Offline
У кого есть датчик проверяйте.
Прикрепления: 123.flp(51Kb)


AlexA
 
Xops Дата: Четверг, 29.09.2016, 00:42 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
Как посчитать длину импульса? Для перевода в 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
 
eugeneb Дата: Четверг, 29.09.2016, 02:24 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 90
Награды: 3
Репутация: 1
Статус: Offline
Не майся, освой UART
 
holodaleksey Дата: Четверг, 29.09.2016, 15:16 | Сообщение # 9
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 1
Репутация: 1
Статус: Offline
Обновите версию программы и почитайте описание блока скоростной счетчик - он умеет немало. И сравнивайте с предуставленной константой.
 
Xops Дата: Вторник, 04.10.2016, 11:38 | Сообщение # 10
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
Как данный код упаковать в функциональный блок?

#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
 
Dev1 Дата: Вторник, 04.10.2016, 13:27 | Сообщение # 11
Лейтенант
Группа: Проверенные
Сообщений: 113
Награды: 2
Репутация: 4
Статус: Offline
А что там создавать: выбираете вкладку ПОЛЬЗОВАТЕЛЬСКИЕ, жмете на надпись Блоки пользователей чтоб активировать кнопку Создать блок, жмете кнопку Создать блок. 
Выбирает 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);
Сохраняете как новый блок. Если будет ругаться на отсутствии библиотеки то укажите в блоке где находиться библиотека. Дальше входа, выхода добавляйте как угодно. Готовых примеров полно.


Win7/10-64 FLProg v2.1.1Up IDE 1.6.13
 
Xops Дата: Вторник, 04.10.2016, 15:31 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
Проблема в том что я не могу вывести значение на дисплей ТМ1637. При создание нового блока (как написал Dev1) я вижу значения со2 через монитор com порта. на дисплее пусто...
 
holodaleksey Дата: Вторник, 04.10.2016, 16:46 | Сообщение # 13
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 1
Репутация: 1
Статус: Offline
Скажу сразу - в с+ я дубовый, но в вашем коде : А где в void setupуказано что есть дисплей?... Вижу только компорт
и выложите уже весь проект


Сообщение отредактировал holodaleksey - Вторник, 04.10.2016, 16:47
 
Xops Дата: Вторник, 04.10.2016, 17:23 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 0
Статус: Offline
этот функциональный блок имеет выход на котором в моем проекте висит дисплей. по факту на выходе нет нечего. даже если отправлять данные с него в com монитор.
Прикрепления: co2.flp(132Kb)


Сообщение отредактировал Xops - Среда, 05.10.2016, 11:06
 
holodaleksey Дата: Среда, 05.10.2016, 21:41 | Сообщение # 15
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 1
Репутация: 1
Статус: Offline
Цитата Xops ()
Прикрепления: co2.flp(132Kb)<< hands
 пасиб, паржал) а как Ваш блок поймет частоту от датчика? )
 
Форум » Основной » Спросить у знатоков » Чтение показаний датчика с выхода PWM (хелп)
Страница 1 из 212»
Поиск:

FLProg © 2016
Яндекс.Метрика