Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)

Форум самогонщиков Автоматика
1 2 3 4 ... 9 1
makh Профессор Sаmara 2.1K 1.1K
21 Марта 15, 14:44
Глазенки наглые не успевают считывать показания приборов, извилины закостенелые не складываются в сосредоточенное состояние, логико-аналитическое не различает общее и частное, эмпирика не заводится без визуала, и лень, лень, лень -- так, накладываясь на профессиональные деформации, стремительным домкратом™ подкрадывается старость. Приходится колдырить костыли.

Последний костыль, кризисный, вроде как весьма полезный вышел. Приделал рюшечки и выношу на публику. Вобщем, специально для хдтру -- hdctl-0.1 public beta.

Назначение и возможности, коротко:
- Подключение к ПК всевозможного зоопарка микроконтроллерных самоделок по серийной линии, а так же удаленных устройств по TCP;
- Запись и вывод на десктоп, в реальном времени, данных с указанных устройств;
- Realtime визуализация указанных выше данных;
- Ручное и програмное управление указанными устройствами;
- Экономия времени и упрощение дизайна при прототипировании устройств и/или техпроцессов, исследованиях, постановке экспериментов;

Документация:
Как выяснилось, напрочь нет способности внятно по-русски писать мануалы. Посему ниже следует некий неизбежный минимум букв, и десятиминутный скринкаст, демонстрирующий работу с ПО на некоем примитивном придуманном примере. Имеющий глаза увидит, имеющий мышу -- прокликает. Что-то, вероятно, смогу разъяснить дополнительно.

Терминология:
- Контроллер суть то самое устройство, подключенное по сети или серийной линии. Включает всевозможные arduino и подобные, raspberry pi и подобные одноплатники с GPIO, удаленные ПК или домашние мыльницы-роутеры проксирующие в сеть подключенные к ним серийные устройства, и т.д.
- Периферия -- входы/выходы, АЦП, сенсоры и прочая обвеска контроллера, а также некие настройки/уставки контроллера, которые хочется  мониторить и/или управлять ими удаленно. По своей природе периферийник может быть или входом (ro), или выходом (rw).

Коммуникация:
Комуникация ПО с контроллером реализована посредством отчетов, периодически посылаемых контроллером, и управляющих сообщений, посылаемых в контроллер. Колдырный протокол, пригодный к пользованию из терминала вручную, описан тут, имплементация не представляет сложностей.

Програмирование:
Привычным образом: исходник -> компилятор -> запуск в отладчике или запуск в консоли. Локальный API позволяет устанавливать скорость исполнения, читать/писать периферийники, посылать управляющие сообщения в контроллеры, организовывать звуковую сигнализацию и минималистическую интеракцию с оператором.

Язык -- actionscript 3.0, API девятой версии. Коль название сие неведомо -- можно считать его javascript'ом, без прототайпов и документ-моделей. Мануалы тут, выбрать фильтры Runtime = FP 9, Product = None, как на картинке:

adobe-man-filters.png
Adobe-man-filters. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Одно отличие -- методы, объявленные без namespace-атрибутов, уходят в public, не в internal.

При запуске первым делом будет вызвана метода init(), и, с этого момента, следующим образом: если вызванная метода возвращает референцию на себя или другую public методу, то данная метода будет вызвана, без аргументов, через heartbeat милисекунд. Если вызванная метода вернет 0 -- считаем что программа успешно отработала, если вернет что-либо другое -- завершение работы с ошибкой. Если во время вызова очередной методы из нее была вызвана метода alert(), то вызов следующей методы будет отложен до момента закрытия попапа оператором.

Требования к системе:
Работоспособность проверена на разных вариациях WinXP/SP3, а также на бета-десятке. Минимальное железо, на котором оно запустилось -- доисторический Sony Vaio PCG-C1MAH c 384МБ оперативки и 867МГц трансметой на борту, но очень вяло, для нормальной работы надо что-то мощнее.

Демо:
Для демонстрации работы с ПО использован следующий реквизит: arduino + простенький фирмварь, читающий встроенный температурный сенсор 328-й атмеги и управляющий имеющимся на борту светодиодом; raspberry + простенький скриптец, читающий подключенный DS18B20. В первой половине скринкаста показано подключение контроллеров, настройка периферии и визуализация данных, во второй реализована термостат-автоматика, включающая светодиод при температуре нагреваемого пальцами сенсора более 22°C.

Download:
https://yadi.sk/d/cobSlr7yfPqNS, зеркало http://hdc.hol.es/hdctl/.
hdmon -- версия без компилятора, только мониторинг и ручное управление, на ~100МБ меньше в распакованном виде.

ACHTUNG! Халявный хостинг безвозвратно канул, ссылки выше и ниже по тексту не работают, но все есть на яндексе

Общие моменты:
Не смотря на общую работоспособность, софт крайне сырой. Что-то реализовано проще, чем надо бы, что-то -- необоснованно сложнее. По итогам месяца эксплуатации есть список изменений и дополнений, которые будут реализованы в следующей версии, включающий расширение настроек rrdgraph, оптимизацию работы rrdupdate, ну и прочее по мелочи. Буду рад багрепортам, разумным предложениям по функционалу, и прочим коментариям с целью расширения указанного списка. Сильно тапками не кидайтесь -- для десктопа писал четвертый раз за тридцатилетнюю карьеру, для windows -- в первый.

===

Известные ошибки и методы их устранения:
Отрицательные значения не обрабатываются корректноbigson, 09 Янв. 17, 16:43
Лекарство существует. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170110.zip (или hdmon-0.1-patch-20170110.zip) одноименный файл в установочной директории программы.

При компиляции выдает
defaults: Error: unable to open 'F:\Program Files (x86)\hdctl-0.1\compc\frameworks/localFonts.ser'ser52, 14 Янв. 17, 20:53
Симулировать не смог, но если вдруг, то лечится созданием искомого файла нулевого размера.

На старом маломощном железе может тормозить, вплоть до полной неработоспособности, отрисовка графиков с большим отображаемым интервалом времени.
Лекарство существует. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170130.zip (или hdmon-0.1-patch-20170130.zip) одноименный файл в установочной директории программы.

hdctl.exe медленно растет в размере до 212 мб потом скидывается до 45 мб и по новой растетPOLE, 07 Февр. 17, 17:31
Это про память, и это не критично, но на всякий случай есть лекарство. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170207.zip (или hdmon-0.1-patch-20170207.zip) одноименный файл в установочной директории программы.

Исправлено несколько несущественных ошибок и добавлен новый функционал в програмной песочницеmakh, 05 Июня 17, 12:55
Очень важная для програмистов таблетка, подробности с примерами начиная с цитируемого поста.

---
Заплатки инкрементальные, т.е. самая свежая лечит все предыдущие проблемы в т.ч.
shram1970 Доцент Желтая гора 1.3K 325
Отв.1  21 Апр. 15, 18:46
Тема нужная,есть народный контроллер "Доступная автоматика на Ардуино Мега 2560" [Доступная автоматика на Ардуино Мега 2560.] Вот его бы так компу прикрутить,многие сказали бы спасибо.На тему подписался слежу за развитием.
makh Профессор Sаmara 2.1K 1.1K
Отв.2  23 Апр. 15, 17:11
Вот его бы так компу прикрутитьshram1970, 21 Апр. 15, 18:46

Ну это ж вопрос, скорее, к разработчикам железа. Прикрутят, коль сочтут нужным. По идее, сложностей быть не должно -- протокол простой, от слова очень.
e150580 Специалист Москва 119 49
Отв.3  19 Авг. 15, 18:27
То-ли туплю уже, то-ли не увидел, по чем данные идут? TCP/IP? serial?
makh Профессор Sаmara 2.1K 1.1K
Отв.4  19 Авг. 15, 19:13, через 47 мин
И так, и эдак, софтинке без разницы.
e150580 Специалист Москва 119 49
Отв.5  19 Авг. 15, 21:45
А почему только под винду? flash вроде кроссплатформенный. В целом, действительно прикольно! Эдакий конструктор, где можно по быстрому склепать любой интерфейс на скору руку особо не запариваясь. Охрененное поле деятельности для эксперементаторов. 
сообщение удалено
makh Профессор Sаmara 2.1K 1.1K
Отв.6  30 Дек. 16, 02:01
По просьбе коллеги напишу тут серию постов с развернутым пошаговым описанием подключения ардуины к ПК, рисования графиков, и прочая.

Первая востребованная задача -- чтение цифровых датчиков температуры DS18B20.

Датчик довольно удобный, в диапазоне температур от -55 до 125 цельсиев, разрешение по умолчанию 12 бит. Может быть подключен тремя проводами (земля, питание, данные) или, в режиме с т.н. паразитным питанием, двумя проводами (земля, данные). Паразитное питание рассматривать пока что не будем, поскольку без более сложной схемотехники продемонстрирует сомнительную работоспособность. Простейшее же подключение к ардуине тремя проводами будет выглядеть вот так:

ds18b20_conn.1.jpg hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
ds18b20_conn.1.jpg hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Каждый датчик на шине имеет свой уникальный адрес, по которому будем их идентифицировать. В каждом цикле опроса нашего набора датчиков будем сканировать шину на предмет наличия подключенных датчиков. Это даст нам возможность подключать/отключать датчики по ходу на включенном оборудовании и мониторить работоспосбность всей этой бороды.

Для коммуникации с ПК будем периодически выводить данные в последовательный порт. Согласно спецификации протокола в выводимом отчете нам нужно иметь: начало и конец оного, идентификатор периферийного устройства (датчика), тип периферийного устройства (только чтение для датчиков), и его показания в гуманоидно-читаемом виде.

Устанавливаем среду разработки ардуино. Качаем библиотеку OneWire, архив распаковываем в  C:\Program Files\Arduino\libraries, или где оно там было установлено. Запускаем среду разработки, подключаем ардуину, в меню Инструменты выбираем модель, процессор, и порт к которому оно подключено. Далее копируем туда целиком нижеприведенный код и прошиваем железку (Ctrl-U).

#include <avr/wdt.h> // подключаем библиотеку для работы со сторожевой собакой, или как там оно по-русски
#include <OneWire.h> // подключаем библиотеку для работы с шиной 1-Wire

#define W1_BUS           A3    // эту ножку процессора будем использовать для работы с шиной
#define REPORT_INTERVAL  1000  // отчеты в ПК будем послыать раз в секунду (1000 мс)

void setup()
{
 Serial.begin(115200);  // инициализируем последовательный порт (115200/8/N/1)
 wdt_enable(WDTO_1S);   // инициализируем сторожевого собаку, если где чего подвиснет более чем на секунду, он рестартует процессор
}

void loop()
{
 static OneWire ds(W1_BUS);
 static unsigned long tr = 0, tc = 0;
 
 byte i, cfg, data[5], addr[8];
 int16_t raw;
 unsigned long t = millis();
 
 if (tc <= t) // посылаем всем DS18B20 команду приступить к измерениям
 {
   tc += REPORT_INTERVAL; // сохраняем время начала следующего цикла измерений

   ds.reset_search();
   while (ds.search(addr))
   {
     if (OneWire::crc8(addr, 7) != addr[7]) continue; // ошибка контрольной суммы
     if (addr[0] != 0x28) continue; // не ds18b20
     
     ds.reset();
     ds.select(addr);
     ds.write(0x44); // собственно команда приступить к измерениям
   }

   tr = millis() + 750; // сохраняем время начала чтения измерений, производитель говорит о 750 мс при разрешении 12 бит
 }

 if (tr && tr <= t) // читаем измерения со всех подключенных датчиков
 {
   tr = 0;

   Serial.print('{');  // выводим токен начала отчета

   ds.reset_search();
   while (ds.search(addr))
   {
     if (OneWire::crc8(addr, 7) != addr[7]) continue; // кривой CRC
     if (addr[0] != 0x28) continue; // не ds18b20
     
     ds.reset();
     ds.select(addr);    
     ds.write(0xbe);  // собственно команда чтения
     
     for (i = 0; i < 5; i++) data[i] = ds.read(); // читаем пять байт
     ds.reset();
     raw = (data[1] << 8) | data[0]; // из первых двух собираем результат измерений

     cfg = (data[4] & 0x60); // из пятого байта определяем разрешение датчика, соответственно ровняем цифру
     if (cfg == 0x00) raw = raw&~7;      // 9 бит
     else if (cfg == 0x20) raw = raw&~3; // 10 бит
     else if (cfg == 0x40) raw = raw&~1; // 11 бит
 
     for (i = 1; i < 7; i++) // выводим серийный номер датчика
     {
       if (addr[i] < 0x10) Serial.print(0);
       Serial.print(addr[i], HEX);
     }
     Serial.print('<'); // выводим токен типа устройства  
     Serial.print(((float)raw / 16.0)); // выводим температуру в цельсиях
     Serial.print(' ');
   }

   Serial.println('}');  // токен конца отчета
 }
 
 wdt_reset(); // сбрасываем счетчик сторожевого собачка
}

Запускаем встроенный терминал (Ctrl-Shift-M), и смотрим на результат трудов наших праведных:

out.7.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
out.7.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


На данном этапе наш супер-бюджетный ССД-контроллер готов, можно приступить к записи полученных показаний и рисованию графиков.

--
Вообще-то, опрашивать датчики с такой частотой не есть правильно -- будут греться.
С одной стороны -- пренебрежительно, ибо они у нас как правило в металлических гильзах, и/или прикручены к массивному металлическому оборудованию, и температуры большей частью под 100 цельсиев, но все-же можно представить себе ситуацию, когда эти одна-две десятых цельсия картину испортят.
OldBean Доцент Красноярск 1K 1.4K
Отв.7  30 Дек. 16, 07:32
Вот как бы еще понять связь этого поста с самым первым?
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
makh Профессор Sаmara 2.1K 1.1K
Отв.8  30 Дек. 16, 16:39
Отоспамшись продолжим продолжать, в т.ч. связывать первый пост с предыдущим .)

Качаем софтинку, устанавливаем, запускаем. В опубликованном ранее скринкасте это все наглядно показано, но дополнительно прокоментирую.

Сразу после запуска софта потребует указать некую рабочую директорию для контекста, с которым собираемся работать. В этой папке будут размещены файлы логов (RRD) и датабаза (sqlite3) со всеми нашими настройками. Т.е. если мы с одним и тем же оборудованием решаем разные задачи с разными конфигурациями оборудования, удобно иметь несколько рабочих директорий под каждую задачу.

Далее нужно подключить наш DAQ-контроллер из предыдущего поста. Идем в меню Controller, жмем Create, получаем диалоговое окно с настройками подключения:

conf_ctl.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_ctl.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Даем ему имя. Устанавливаем тип подключения -- последовательный порт, какой именно, скорость. Далее говорим ему подключаться автоматически, и переподключаться в случае аварии тоже автоматически (Auto connect/reconnect). Задаем периодичность получения отчетов в секундах, задаем таймаут (Report interval/timeout). В нашем конкретном случае отчеты посылаются каждую секунду, если ничего не пошлет в течение двух секунд -- таймаут, т.е. событие скорее всего аварийное. Сохраняем настройки (Save). Сразу после этого нам начинает отображаться список контроллеров, а после подключения (автоматического) и получения первого отчета -- список подвешенной к нему периферии:

conf_ctl2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_ctl2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


В списке периферии видим наши градусники. Выделяем любой из них, из контекстного меню, или из меню Peripheral выбираем Configure, получаем диалоговое окно с настройками (помещаю сразу оба, для пущей наглядности):

conf_per.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_per.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
conf_per2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_per2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Настраеваем. Сперва понятное имя, т.е. если речь идет о градуснике в кубе, то так и пишем (используя латинские буквы, ибо это имя в дальнейшем может использоваться в качестве аксессора в наших управляющих программах, то же самое касается и имени контроллера). Далее настройки "монитора", т.е. некоего окошка с текущими показаниями градусника -- цвет текста, цвет фона. Затем тип данных и допустимый диапазон значений. Остальные настройки касаются записи логов и рисования из оных графиков -- цвет, способ отображения, толщина линии, прозрачность. Тип данных, с точки зрения RRD, и размер (длительность) сохраняемой RRD-датабазы в днях. Ну и собственно включение или отключение логирования (при отключении ранее записанные данные стираются). Лучше допонительно почитать про RRD как и с чем оно работает, сильно облегчит понимание в дальнейшем.

Сохраняем настройки, видим следующую картину:

conf_per3.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_per3.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


На данном этапе можно немного поэскпериментировать с нештатными ситуациями -- отключить и снова подключить градусники, отключить и снова подключить контроллер, посмотреть на реакцию софтины. Значение показаний отвалившегося периферийника будет NaN (Not a Number), состояние offline, состояние отвалившегося контроллера -- disconnected, и т.д., весь этот непорядок не повлияет ни на работу софтины, ни на работу неких наших управляющих программ, когда и если они у нас будут написаны.

Вобщем-то конфигурация нашей ССД-системы на этом завершена -- данные идут, логи пишутся, в случае непорядков ПК ругается с помощью звуковых сигналов.

Сильно неудобно писать длинные посты, обустройство пользовательского интерфейса с рисованием графиков будет в следующем.
makh Профессор Sаmara 2.1K 1.1K
Отв.9  31 Дек. 16, 22:16
Ну, теперь можно сделать глазам удобно -- вытянуть на десктоп большие цифры с цветовым кодированием. Выделям сенсор в списке периферийников, в меню Peripheral, или в контекстном меню, выбираем Monitor, или просто жмем Ctrl-M -- выскочит окошко с настроенными ранее цветовыми параметрами, которое можно растянуть до нужного размера и переместить в нужное место:

mon.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
mon.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Далее идем в меню Graph и создаем (Create) новую конфигурацию графика. В диалоговом окне с настройками даем ему имя, выбираем отображаемые источники данных (из тех, для которых включена запись логов), выбираем наличие и тип легенды, параметры шкалы:

conf_graph.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
conf_graph.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Выделяем сохраненную конфигурацию в появившемся списке, в меню Graph, или в контекстном меню, выбираем Grapher, или просто жмем Ctrl-G -- появляется окошко с графиком, настройками отображаемого интервала времени и интервала перерисовки:

graph2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
graph2.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


На графике видим показания наших двух градусников в интервале от 20:00 до 21:00. Рассмотрим настройки отображаемого. Отображаемый интервал времени (Span) установлен 1 час, конец интервала (End, правый конец горизонтальной оси) -- 21:00, перерисовка автоматическая с нтервалом 1 сек (что в данном случае смысла никакого не имеет, ибо весь отображаемый интервал времени в прошлом). Передвинем отображаемый диапазон на час вперед:

graph3.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
graph3.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Теперь конец отображаемого диапазна времени находится в будущем, и каждую секунду показания градусников дорисовываются. Расширим отображаемый диапазон до двух часов:

graph4.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
graph4.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Думаю, логика работы в этом режиме на данном этапе должна быть понятна. Более употребимый режим -- с окончанием диапазона отображаемого времени сейчас (Now):

graph5.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
graph5.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


В этом режиме, при включенной автоматической перерисовке, мы всегда видим состояние дел за установленный интервал времени начиная с текущего момента (последний час в данном случае). Теперь один градусник утопим в чашке горячего чая, а второй в стакане холодной водки:

graph6.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
graph6.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Вобщем-то, с рисованием картинок все на этом.
Почтенную читающую публику с наступающим, или уже наступившим, простым 2017-м.
Пойду под елку накидаюсь казенкой по этому поводу.
makh Профессор Sаmara 2.1K 1.1K
Отв.10  01 Янв. 17, 05:58
OldBean, кстати, прямой предшественник десктопной софтины из данного топика был концептуально идентичен "Ненавязчивой автоматизации". Отличалось веб-фронтендом с практически аналогичным топик-софтине функционалом, заточкой под более длительные техпроцессы (2-3-4 месяца), и необходимыми мерами по части безопасности (работа через публичные сети с обеспечением анонимности оператора).

На фоне того, как тут любят закидать тапками за словосочетание автоматика + компутер, очень приятно встретить единомышленника
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
ser52 Специалист Москва 164 39
Отв.11  08 Янв. 17, 18:50
Скетч при компиляции выдает ошибку stray 302 in program
Arduino 1.6.7
makh Профессор Sаmara 2.1K 1.1K
Отв.12  08 Янв. 17, 22:02
Это, видимо, при копировании из бровзера что-то где-то умничает. В аттаче юникод.
ds18b20_aq.ino 3.5 Кб
ser52 Специалист Москва 164 39
Отв.13  09 Янв. 17, 09:25
Спасибо теперь все нормально
bigson Доктор наук Ярославль 633 326
Отв.14  09 Янв. 17, 16:43
Отрицательные значения не обрабатываются корректно... пишет NaN в Peripherals, на графике соответственно пустоту рисует и статус ставит оффлайн... Вывожу пять температур с датчиков и дельту между двумя датчиками, так вот с дельтой и есть косячек она то положительная то отрицательная... температуры пока отрицательные не пробовал...
monitor.jpg
Monitor. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
makh Профессор Sаmara 2.1K 1.1K
Отв.15  10 Янв. 17, 09:07
Ой
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)
hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Лекарство тут, переписать содержимым hd***-0.1-patch-20170110.zip одноименный файлик в ApplicationDirectory.

P.S. Два года регулярно и по-разному пользуюсь софтиной, а отрицательных чисел не придумал себе ни разу. Забавно, бывает же.
ser52 Специалист Москва 164 39
Отв.16  11 Янв. 17, 20:20
не получается выбрать несколько датчиков на одном графике?
makh Профессор Sаmara 2.1K 1.1K
Отв.17  11 Янв. 17, 20:36, через 17 мин
ser52, с кнопками Shift и Ctrl.
ser52 Специалист Москва 164 39
Отв.18  12 Янв. 17, 10:33
Спасибо

Добавлено через 9мин.:

как подключить датчик давления  MPX5010DP
makh Профессор Sаmara 2.1K 1.1K
Отв.19  12 Янв. 17, 14:29
ser52, если совсем по-быстрому -- плюсом на ножку 5V ардуины, минусом на ножку GND, выходом на любую аналоговую ножку, A1 например.
Но лучше сделать ему минимальную обвеску как на картинке номер три в даташите два в AN1646.

Код для ардуинки может выглядеть, например, вот так:

#include <avr/wdt.h>

#define ADC_PIN          A1    // к этой ножке подключен сенсор
#define ADC_SAMPLES      10    // боремся с шумом -- выводим среднее из нескольких измерений
#define MPX_OFFSET       0     // постоянное значение на выходе сенсора при одинаковом давлении на обоих портах
#define REPORT_INTERVAL  1000  // отчет выводим ежесекундно

void setup()
{
 wdt_enable(WDTO_500MS);
 Serial.begin(115200);
}

void loop()
{
 static unsigned long tr = 0;

 uint8_t i;
 float adc, volt, kpa, torr;
 
 wdt_reset();

 if (tr <= millis()) // генерим отчет
 {
   tr += REPORT_INTERVAL; // время генерации следующего отчета

   adc = 0;
   for (i = 0; i < ADC_SAMPLES; i++) // читаем АЦП сколько-то раз
   {
     adc += analogRead(ADC_PIN);
     delay(1);
   }
   adc /= ADC_SAMPLES; // усредняем
//    Serial.println(adc); // при первом запуске выведем значение постоянной составляющей MPX_OFFSET
   volt = (adc - MPX_OFFSET) * (5.0 / 1023.0); // вольты
   kpa = volt / 0.045;  // килопаскали, MPX5100DP 100 KPa
//    kpa = volt / 0.45;  // килопаскали, MPX5010DP 10 KPa
   torr = kpa * 7.501;
   
   Serial.print('{');    // начало отчета
   Serial.print('P');    // идентификатор устройства
   Serial.print('<');    // тип устройства  
   Serial.print(torr);   // показания в мм.рт.ст.
   Serial.println('}');  // конец отчета
 }
}

А еще можно к датчику цифровой интерфейс присобачить, чтоб не тянуть шланги от оборудования к коробкам с электроникой -- [сообщение #12629483] .