Страница 1 из 1
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 15:56
				 Xops
				Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 17:53
				 Tehnics
				Название и модель датчика СО2 в студию 
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 18:08
				 hrach
				Xops писал(а):Нужно вывести показания датчика СО2 на дисплей ТМ1637. С выводом информации на дисплей все ясно. Как считать данные PWM в Flprog не понятно. Хотелось бы создать блок для работы с датчиком- как это сделать?
Я на днях буду  делать видео обзор датчика MQ7 и по питаюсь сделать какой то сигнализатор для СО. Только не понял про считывание данные PWM. Это для чего нужно?
 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 22:31
				 Xops
				Благодарю всех за проявленное внимание! Датчик MH-Z19. Считывание данные по PWM- вижу более простым нежели UART(Tx,Rx)..
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 23:23
				 holodaleksey
				используйте скоростной счетчик и фильтр среднего значения.
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 28 сен 2016, 23:58
				 Alex16
				У кого есть датчик проверяйте.
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 29 сен 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 сен 2016, 02:24
				 eugeneb
				Не майся, освой UART
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 29 сен 2016, 15:16
				 holodaleksey
				Обновите версию программы и почитайте описание блока скоростной счетчик - он умеет немало. И сравнивайте с предуставленной константой.
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 04 окт 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 окт 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 окт 2016, 15:31
				 Xops
				Проблема в том что я не могу вывести значение на дисплей ТМ1637. При создание нового блока (как написал Dev1) я вижу значения со2 через монитор com порта. на дисплее пусто...
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 04 окт 2016, 16:46
				 holodaleksey
				Скажу сразу - в с+ я дубовый, но в вашем коде : А где в void setupуказано что есть дисплей?... Вижу только компорт
и выложите уже весь проект
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 04 окт 2016, 17:23
				 Xops
				этот функциональный блок имеет выход на котором в моем проекте висит дисплей. по факту на выходе нет нечего. даже если отправлять данные с него в com монитор.
			 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 05 окт 2016, 21:41
				 holodaleksey
				Xops писал(а):Прикрепления: co2.flp(132Kb)<<  
 пасиб, паржал) а как Ваш блок поймет частоту от датчика? )
 
			
					
				Чтение показаний датчика с выхода PWM
				Добавлено: 05 окт 2016, 22:17
				 holodaleksey
				пробуйте. такого дисплея у меня нет, поэтому 2-1: это подрезанный ваш, как будет работать не знаю.
2-2: это на FDB. проверяйте по компорту, если пойдет -
сформулируйте ТЗ (или сценарий, алгоритм) - словами, будем думать.
зы: поход вчера чот я с 2-2 косякнул, вы проверьте, дальше посмотрим.