Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 204 сообщений
Cообщения с меткой

датчики - Самое интересное в блогах

Следующие 30  »
VidSovet

Диагностика ремонт электрооборудования автокондиционера

Вторник, 17 Мая 2016 г. 14:50 (ссылка)
elektrikavto.by/zapravka-re...onera.html

Диагностика и ремонт электрооборудования автокондиционера в Минске
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Оделайна

Как устранить ложные срабатывания охранных датчиков

Среда, 20 Апреля 2016 г. 14:02 (ссылка)




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



Однако бывает, что датчики эти срабатывают по всяким пустякам. Птичка, например, сядет. Или кошка пробежит рядышком где-то. Ложные тревоги, особенно часто повторяющиеся, способны изрядно вымотать нервы хозяев офиса или производственного здания. Порой приходится вскакивать среди ночи и выезжать на объект. Или просыпаться от телефонного тревожного звонка.



Чтобы избежать подобных казусов, производители разработали радикально новые устройства - датчики комбинированные (иначе, двойной технологии). В одном таком элементе применяются сразу два метода выявления проникновения постороннего на объект. Например, микроволновой детектор плюс инфракрасный. Или ультразвуковой плюс инфракрасный. Тревожный сигнал зазвучит лишь тогда, когда оба способа покажут, что явно что-то не так. Это более надежно и достоверно.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Автосенсей

Установка парктроника своими руками — Avtosensei

Вторник, 01 Марта 2016 г. 13:18 (ссылка)
avtosensei.ru/novosti/ustan...?_utl_t=li


Установка парктроника своими руками — Avtosensei

Комментарии (0)КомментироватьВ цитатник или сообщество
Автосенсей

Устройство, принцип работы климат контроля в автомобиле — Avtosensei

Вторник, 16 Февраля 2016 г. 14:13 (ссылка)
avtosensei.ru/novosti/ustro...?_utl_t=li


Устройство, принцип работы климат контроля в автомобиле — Avtosensei

Комментарии (0)КомментироватьВ цитатник или сообщество
NetFact

Электронные самоделки / А. Кашкаров (2007) PDF » NetFact.Ru: Скачать бесплатно – Популярная Интернет Библиотека

Суббота, 08 Ноября 2015 г. 01:50 (ссылка)
netfact.ru/electronic/2604-...7-pdf.html


Электронные самоделки / А. Кашкаров (2007) PDF




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



Название: Электронные самоделки

Год выпуска: 2007

Издательство: БХВ-Петербург

Автор: Андрей Кашкаров

Язык: Русский

Страниц: 259

Качество: Хорошее

Формат: PDF

Размер: 17,82 Mb



Скачать: Электронные самоделки / А. Кашкаров (2007) PDF



Скачать | Download | TurboBit.net

http://turbobit.net/r4tlqcku44hi/Kashkarov_Elektronnyie_samodelki.7z.html



Скачать | Download | HitFile.net

http://www.hitfile.net/4MRk/Kashkarov_Elektronnyie_samodelki.7z.html



Скачать | Download | Файлообменник.рф

http://файлообменник.рф/0yvw67scg8bj/Kashkarov_Elektronnyie_samodelki.7z.html

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] Блеск и нищета HTML5 — доступ к датчикам

Среда, 28 Октября 2015 г. 10:09 (ссылка)

Недавно я увидел статью на Хабре и очень удивился, что она вообще находиться на ресурсе для IT-специалистов. Но ещё больше меня шокировало то, что никто в комментариях не указал на очевидные грубые ошибки описанные в той статье. Хабр, что с тобой случилось? Когда всё пошло не так?





Эх вы, горе-IT-специалисты.



DeviceOrientationEvent — как видно из названия, это событие изменения ориентации девайса. Не DeviceCompassEvent, не DeviceGiroscopeEvent, а именно DeviceOrientationEvent.



Значения для DeviceOrientationEvent вычисляються браузером (на практике — значения бурутся у операционной системы) на основе многих параметров. Значения вычисляються на основе данных от компасса, гироскопа и акселерометра. Но проведите простой эксперимент. Положите смартфон (планшет и тому подобные устройства оборудованные соответствующими датчиками) на стол, включите любую демонстрацию работы DeviceOrientationEvent и поднесите к устройству магнит. Очевидно, что гироскоп и акселерометр не изменяют свои показания т.к. устройство не двигается, но при перемещении магнита демонстрационная программа будет реагировать на это. Это доказывает, что компас играет главенствующую роль в формировании значений DeviceOrientationEvent (а может и вообще — исключительную роль, т.к. значения других датчиков не учитываются). Да, прошу прощения, но я не разрабатываю ОС и браузеры и не знаю, как конкретно формируются те или иные значения. Но проведя такой эксперимент, можно предположить, что это просто данные с компаса, без какой либо обработки (compassneedscalibration ещё на это намекает).



А данные поступающие от гироскопа и акселерометра можно получить с помощью DeviceMotionEvent. DeviceMotionEvent.acceleration и DeviceMotionEvent.accelerationIncludingGravity содержат данные акселерометра, а с помощью DeviceMotionEvent.rotationRate можно получить данные от гироскопа.



К сожалению такая путаница с названиями датчиков — это только вершина айсберга не дающая возможности полноценно использовать датчики. Подводная часть айсберга в том, что не всегда возможно получить точные времена получения данных. Т.е. сам датчик делает измерения каждые 100 мс (условно для примера, т.к. разные датчики имеют свои времена). Дальше вмешивается API (ОС, браузер и т.к.) и вносит случайную погрешность во время. Таким образом написанная нами программа получает данные не каждые 100 мс, а 100+n мс где n — случайное число. И при этом нет возможности узнать реальное время каждого измерения. К сожалению, это обстоятельство не дало мне возможности создать несколько приложений связанных с indoor-навигацией (навигацией внутри зданий, где не работает GPS) и коррекцией значений получаемых от GPS приемника.



Ещё один пример проблемы отсутствия точного времени в получаемых значениях. Значения от GPS приемника так же приходят со случайной задержкой. При этом GPS приемник знает и сообщает в своих NMEA сообщениях точное время каждого измерения, но после обработки несколькими API эта информация теряется. Наверное создатели этих API ограничивали количество информации с целью упрощения, но при этом они невольно ограничили пользователей. Пример, когда это создало много проблем: forum.openstreetmap.org/viewtopic.php?id=31779



Так же проблем добавляет то, что при физическом отсутствии датчика, значения событий будут нулевыми и не будут обновляться. А вдруг устройство действительно лежит на идеально горизонтальной поверхности и не двигается, а может просто система тормозит и не успела пока прислать нужные данные?



Сомневаюсь, что создатели различных API читают этот текст, но все же напишу им свою просьбу: пожалуйста, сделайте так что бы можно было получать сырые данные с датчиков (nmea сообщения с GPS приемника в частности) или хотя бы получать точные времена каждого измерения. И наличие датчика тоже бы как-то проверять.



А ещё скоро появятся (я все ещё надеюсь, что появятся) модульные устройства (Project Ara, OpenBlocks и тп.). Разных датчиков станет значительно больше, появятся массивы одинаковых датчиков и существующий способ получения данных о датчиках и получения данных с датчиков станет не жизнеспособен. Но это тема совсем для другой статьи.

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/269669/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Автосенсей

Советы по выбору сигнализацию для автомобиля — Avtosensei

Воскресенье, 25 Октября 2015 г. 19:10 (ссылка)
avtosensei.ru/voditelyu-na-...?_utl_t=li


Советы по выбору сигнализацию для автомобиля — Avtosensei

Комментарии (0)КомментироватьВ цитатник или сообщество
SoftLabirint

Изготовление электрогитары / Мартин Кох (2001) PDF, DjVu » SoftLabirint.Ru: Скачать бесплатно и без регистрации - Самые Популярные Новости Интернета

Понедельник, 14 Сентября 2015 г. 13:51 (ссылка)
softlabirint.ru/book/9282-i...-djvu.html


Изготовление электрогитары / Мартин Кох (2001) PDF, DjVu

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



Содержание:

Введение

Единицы измерения

Подготовка

Введение

Части электрогитары

Частоты струн

Классики гитары

Древесина

Фурнитура

Струны

Гитарная электроника

Датчики

Потенциометры

Выходные гнезда

Правила схемотехники

Конденсаторы

Переключатели

Активная электроника

Проектирование Гитары

Длина мензуры

Разметка гитары

Дизайн гитары

Анкеры

Примеры проектов

Изготовление шаблонов

Рабочее место

Базовое оборудование

Электроинструмент

Фрезеры

Рубанки

Пилы

Скребки

Заточка

Техника безопасности

Изготовление деки

Установка грифа

Сборка гитары

Отделка

Полировка

Обработка ладов

Установка струн

Комментарии



Название: Изготовление электрогитары

Издательство: Интернетиздание

Автор: Мартин Кох

Год: 2001

Страниц: 141

Формат: pdf, djvu

Язык: русский

Размер: 124 Мб



Скачать: Изготовление электрогитары / Мартин Кох (2001) PDF, DjVu



Скачать | Download | TurboBit.net

http://turbobit.net/5dwd2dsgzfjy/Izgotovlenie_elektrogitary.rar.html



Скачать | Download | HitFile.net

http://www.hitfile.net/5IOP/Izgotovlenie_elektrogitary.rar.html



Скачать | Download | Файлообменник.рф

http://файлообменник.рф/s7dm4z3zfrpd/Izgotovlenie_elektrogitary.rar.html



Скачать | Download | BornCash.org

http://borncash.org/load/1734000296



Скачать | Download | StartFiles.org

http://startfiles.org/load/1734000296



Скачать | Download | GoldFiles.org

http://goldfiles.org/load/1734000296



Скачать | Download | BornCash.net

http://borncash.net/load/1734000296

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Датчики и микроконтроллеры. Часть 3. Измеряем ток и напряжение

Пятница, 20 Июня 2015 г. 02:44 (ссылка)



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

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

Содержание



Часть 1. Мат. часть. В ней рассматривается датчик, не привязанный к какому-то конкретному измеряемому параметру. Рассматриваются статические и динамические характеристики датчика.

Часть 2. Датчики климат-контроля. В ней рассматриваются особенности работы с датчиками температуры, влажности, давления и газового состава

Часть 3. Датчики электрических величин. В этой части я рассмотрю датчики тока и напряжения



ВНИМАНИЕ: Не вставляйте спицы в розеткуНе лезьте в сеть 220В без необходимых на то навыков!






Бывает постоянный ток, бывает переменный. Бывает все и сразу, что иногда приносит много проблем. Но об этом позже. Для начала, разберемся с терминологией.



Рисунок 1: напряжение в цепях переменного тока

При измерении переменного тока мы имеем 4 различных величины, которыми будем руководствоваться при проведении измерений. Все нижеприведенные формулы и термины применимы и к измерителю тока.

1. Мгновенное значение напряжения — это разность потенциалов между двумя точками. Измеренная в определенный момент времени. Это значение является базовым во всех остальных вычислениях. Фактически, наша задача будет заключаться в считывании последовательного набора мгновенных значений напряжения через равные промежутки времени, чтобы впоследствии с их помощью получить некие другие данные.

u = u(t) (1)

Получится примерно следующий график:



Рисунок 2: Измерение серии мгновенных значений напряжения

При выборе частоты опроса датчиков мы руководствуемся теоремой Котельникова-Шеннона, когда для того, чтобы восстановить сигнал с частотой f необходимо производить считывание с частотой Больше чем 2f. Отмечу необходимость строгого неравенства, т. е. если нам надо оцифровать сигнал с частотой 50Гц, то считывание необходимо производить с частотой, не менее 101 Гц. Но, понятное дело, чем больше тем лучше.

Если вспомнить ГОСТ на показатели качества электроэнергии, в раздел Гармоник, то там мы найдем, что интересными для нашего измерения являются гармоники вплоть до 40, т. е. до 2кГц. И микросхемы счетчиков электроэнергии производят считывание с частотой 4096 раз в секунду. Степень двойки выбрана для того, чтобы можно было применять быстрые алгоритмы преобразования Фурье.

Имея этот большой набор данных, собранный за единицу времени, например, 1с переходим к следующим:

2. Амплитудное значение напряжения — которое определяется как максимальное по модулю значение из нашей выборки:

(2)

где [u(t)] – массив с данными.

Для гармонических колебаний это значение используется в следующей формуле:

(3)

3. Среднее значение напряжения, т. е. Среднее арифметическое, т. е. постоянная составляющая переменного напряжения.

(4)

Где — период дискретизации аналогового сигнала. Я намеренно пишу сумму вместо интеграла. В промышленной сети переменного тока среднее значение должно быть равно нулю. Если это условие не выполняется, могут быть определенные проблемы, так как постоянный ток подмагничивает трансформаторы, вводя их в насыщение, либо подогревает питающую линию. Последнее кстати может быть полезно для решения проблемы намерзшего льда на проводах — провод подогревают и лед отваливается.

В слаботочных аналоговых цепях постоянная составляющая присутствует сплошь и рядом и может быть очень полезна. А если она нам будет мешать, то мы от нее быстро избавимся, но об этом позже.

4. Среднеквадратичное значение напряжения. — известное также как действующее значение напряжения — на линейной активной нагрузке оно совершает ту же самую работу, что и постоянное напряжение аналогичного уровня. Определяется по следующей формуле:

(5)

При измерении напряжения в розетке нас, как правило, интересует именно это самое действующее напряжение, которое составляет 230/380В.

Амплитудное и действующее значения синусоидального напряжения связаны между собой через. Во время проектирования измерительной системы нас будет интересовать в первую очередь именно амплитудное значение напряжения и тока.

Во время измерений будем руководствоваться одной из следующих схем:



Рисунок 3: Подключение измерительных приборов

Загадка для ума — обе схемы подключения правильные, но при каких обстоятельствах важно правильно выбрать одну из них? Ответы в комментариях.



Датчики напряжения







Первым делом произведем измерение напряжения. Все нижесказанное относится к напряжениям не менее напряжения питания АЦП нашего контроллера. Таким образом, нам необходимо измерить напряжение с амплитудой большей, чем АЦП способен прожевать. Следовательно, уровень напряжения необходимо понизить — т.е. произвести ослабление сигнала.

Для малых напряжений (например как термоЭДС термопары из прошлой статьи) нужна обратная задача — усиление сигнала. Это более сложная задача и мы обязательно к ней вернемся в следующих статьях.

Поставим условие для расчета наших датчиков:

Измеряемое напряжение: переменное, 0-1000В, частота 50/60Гц. Для трехфазного напряжения в 380В амплитудное составляет почти 600В, а ведь есть сети и на 660В. Так что пусть будет. На самом деле этот расчет я взял из своей железки и переделывать его мне лень.

Выходное напряжение ± 1,65В — половина от питающего +3,3В

Делитель напряжения


Самым простым способом будет делитель напряжения.



Рисунок 4: Делитель напряжения

Напряжение на нашем измерительном приборе будет определяться как входное напряжение, умноженное на коэффициент делителя:

(6)

При выборе сопротивления резисторов необходимо определиться со следующими требованиями:

1. Ток через цепь резисторов должен быть на 1-2 порядка больше, чем ток нашего измерительного прибора для того, чтобы этот ток не влиял на показания. Измеритель имеет конечное значение сопротивления и получается, что к резистору R2 подключен еще один резистор. Чем внутреннее сопротивление больше, чем ближе общее сопротивление к сопротивлению R2. Сопротивление внутренних цепей АЦП ATmega, к примеру, 100 МОм.

2. Мощность, выделяемая на нашем делителе не должна быть слишком большой

3. Приложенное входное напряжение должно быть меньше напряжения пробоя резистора.

Пусть ток через наш делатель составит 1мА. Тогда, общее сопротивление резисторов будет равно:

(7)

Определим требуемый коэффициент передачи нашего делителя:

(8)

По ряду номиналов резисторов E24 выберем ближайшее значение, дающее около 1МОм:

R1 = 990 кОм (три резистора по 330 кОм)

тогда резистор R2 = K·R1 = 1,63 кОм

Из ряда Е24 выбираем второй резистор R2 = 1,6 кОм

Проверим коэффициент:

(9)

Погрешность с ранее расчетным 2,3%, что нас вполне устроит. Вообще-то можно точно подобрать резисторы из ряда Е192, но это не обязательно.

Выглядеть измерительная цепь будет следующим образом(кусок из рабочей схемы):



Рисунок 5: Цепь измерителя напряжения

На базе цепочки R17-C22 собран фильтр низких частот, чтобы никакие помехи нам не были страшны. Можем кстати быстренько посмотреть что делает этот фильтр:



Рисунок 6: Частотная характеристика фильтра

Как видно из графика ЛАЧХ, для рабочего диапазона частот от 0 до 2000Гц фильтр практически не портит амплитуду и фазу сигнала. А вот помехи на частотах порядка 100кГц и выше, исходящие от ВЧ преобразователей, надежно давятся. Так что все супер.

Достоинства:


  • широкий диапазон напряжений и частот, определяемый номиналами резисторов;

  • высокая точность, опять таки определяемая точностью и термостабильностью резисторов;

  • измеряет постоянное и переменное напряжение.



Недостатки:


  • отсутствует гальваническая развязка — при взаимодействии с промышленной сетью необходимо предусмотреть защиту пользователя от электрических цепей, либо использовать гальваническую развязку;

  • низкий КПД — весь ток делителя уходит в тепло;



Трансформатор напряжения




Рисунок 7: Трансформатор напряжения

Для случаев, когда нужно измерить очень высокие напряжения, 6/10кВ и выше, используется трансформатор напряжения Фактически, он представляет собой обычный трансформатор, основным режимом работы которого является режим холостого хода.

Класс точности такого трансформатора зависит от рабочего участка характеристики намагничивания. Ведь нам надо пропустить через него не просто сигнал с определенной амплитудой, но и не испортить ее форму. Здесь как раз проблема — трансформатор практически не пропускает гармоники ввиду больших индуктивностей. Так что для измерения гармонических искажений большинство трансформаторов напряжения не подойдет.

Обычный класс точности трансформатора — 0,5, 1, 3

Достоинства:


  • огромный диапазон рабочих напряжений — до сотен киловольт и выше;

  • столь необходимая гальваническая развязка.



Недостатки:


  • работает на определенной полосе частот;

  • работает только с переменным напряжением;



Последний недостаток слегка надуман, так как если надо, можно воспользоваться измерительным трансформатором постоянного тока. Да, трансформаторы постоянного тока «существуют», но правильное название устройства — магнитный усилитель. Точность и линейность таких приборов оставляет желать лучшего — работа происходит на участке насыщения сердечника подмагничиванием.

Выглядит это вот так:



Рисунок 8: Измерение постоянного тока с помощью магнитного усилителя

Почитать об этом чуде техники можно здесь: analogiu.ru/6/6-2-2.html

Если тема будет интересна, то запилю обзор этих старинных регуляторов.

Электронный изолированный датчик


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



Рисунок 9: Структурная схема электронного изолированного датчика

Мне попадались на глаза только промышленные датчики с выходом по напряжению 0-10В или по току 0-10мА. В отличие от предыдущих датчиков выдает однополярный сигнал. В принципе, такую схему можно разработать и самостоятельно.

Достоинства:

гальваническая развязка;

высокая точность;

широкий диапазон напряжений и частот;

измеряет постоянное и переменное напряжение.


Недостатки:

дорого;

сложная схемотехника.


Дополнительные ссылки


www.power-e.ru/2006_03_56.php

www.sensorica.ru/pdf/LEM.pdf

Измерители электроэнергиии STMP32 www.compel.ru/lib/ne/2015/4/2-dlya-odnofaznyih-i-mnogofaznyih-schetchikov-novyie-izmeritelnyie-mikroshemyi-ot-st

ru.wikipedia.org/wiki/Электрическое_напряжение

Датчики тока







Измерительный шунт


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



Рисунок 10: Датчик тока токовый шунт

Падение напряжения на шунте пропорционально пропускаемому току:

(10)

Соответственно в зависимости от требуемого напряжения на выходе датчика подбираем нужное сопротивление шунта. Но! Падение напряжения на шунте приведет к потерям и теплу, соответственно при больших токах мы вынуждены довольствоваться малыми значениями входного напряжения, дабы ограничить потери. Вот эти выпускаемые промышленностью ребята обеспечивают стандартное выходное напряжение в 75мВ:



Рисунок 11: Токовый шунт типа ШСМ

На напряжение в 75мВ откалибровано большинство измерительных головок для шунтов. Обратите внимание на вторую пару винтов — они предназначены специально для подключения к измерительному прибору для снижения потерь.

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

Получим следующую схему:



Рисунок 12: Использование ОУ в качестве усилителя

Следует учитывать, что при измерении переменного тока, выходной сигнал будет биполярный и операционный усилитель требуется запитать от двухполярного источника питания.

Глянем на всякий случай, как работает наша схема:



Рисунок 13: Моделирование усилителя датчика тока

На вход подаем 75мВ, умножаем на 20, на выходе имеем сигнал с амплитудой 1,5В для тока в 10А. В следующем материале мы разберемся чем плох биполярный сигнал.

Достоинства:


  • высокая точность;

  • широкий диапазон напряжений и частот;

  • измеряет постоянный и переменный ток.



Недостатки:


  • отсутствует гальваническая развязка;

  • низкий КПД.



Измерительный трансформатор тока


Измерительный трансформатор тока представляет собой трансформатор, первичная обмотка которого подключается к источнику тока, а вторичная замыкается на измерительные приборы или устройства защитной автоматики.

Трансформаторы тока используются для измерения токов в сильноточных цепях, зачастую я высоким потенциалом. Например, нам захотелось измерить ток в сети 10кВ. Либо, мы хотим получить простой и относительно дешевый способ гальванической развязки измеряемой цепи тока нашего устройства на 220В. Основная проблема трансформаторов тока заключается в том, что они умеют измерять только переменное напряжение.

Трансформатор тока всегда нагружается. Если вторичная обмотка трансформатора тока окажется разомкнутой, то на ней возникнет потенциал в пару тысяч киловольт, который покалечит персонал и выведет из строя прибор, пробив его изоляцию.

Трансформаторы бывают со встроенной первичной обмоткой. Например такие:



Рисунок 14: Трансформатор тока серии CS2106L от Coilcraft

Либо вот такие слоники, имеющие подобие первичной обмотки в виде огромной шины, либо вовсе окно для пропускания через него провода



Рисунок 15: Промышленный трансформатор тока на много ампер

Основной недостаток трансформатора тока — это работа только на определенной частоте. Шаг влево-шаг вправо — расстрел. Виной всему металлический сердечник.

А вот если мы его удалим, то получим воздушный трансформатор, или, т. н. Катушку Роговского:



Рисунок 16: Схема подключения катушки роговского

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

Некоторые измерительные приборы комплектуются такими датчиками:



Рисунок 17: Датчик катушка роговского

Диапазон измеряемых токов — от десятков до тысяч ампер, но они страдают от невысокой точности.

Достоинства:


  • гальваническая развязка;

  • работа с большими токами в тысячи Ампер;



Недостатки:


  • измеряет только переменный ток в определенном диапазоне частот(кроме катушки Роговского);

  • изменяет фазу сигнала и требует компенсации



Датчики тока на эффекте Холла


Датчики этого типа используют эффект возникновения разности потенциалов при помещении проводника с током в магнитное поле.



Рисунок 18: Эффект Холла

При создании датчика мы берем магнитопровод, пропускаем через него провод измеряемой цепи и в разрез магнитопровода помещаем датчик Холла, получая датчик тока открытого типа:



Рисунок 19: Датчик тока на эффекте Холла открытого типа

Достоинством такого датчика является простота. Недостатком — наличие подмагничивания сердечника, следовательно, повышение нелинейности показаний.

Добавим на сердечник обмотку и пустим по ней ток, пропорциональный измеряемому току:



Рисунок 20: Датчик тока на эффекте Холла компенсационного типа

С нулевым подмагничиванием сердечника мы повышаем линейность датчика и его класс точности. Однако по своей конструкции такой датчик приближается к трансформаторам тока, соответственно его стоимость повышается в разы.

Как и трансформаторы, бывают разновидности датчиков, позволяющие пропустить через себя силовой провод:



Рисунок 22: Датчик тока на эффекте Холла

Существуют датчики с разделяемым сердечником — однако их стоимость просто зашкаливает.

Датчики с интегрированной силовой цепью на базе эффекта Холла с гальванической развязкой 2,1кВ и 3кВ выпускаются компанией Allegro. Ввиду своих малых размеров они не обеспечивают высокой точности, но зато компактны и просты в использовании.



Рисунок 23: датчик тока Allegro ACS754


  • Датчик ACS712 – измерение постоянного и переменного тока до 30А с точностью ± 1,5%

  • Датчик ACS713 – оптимизирован для измерения постоянного тока до 30А. Имеет вдвое большую чувствительность чем его универсальный собрат.

  • Датчик ACS754 – измерение постоянного и переменного тока до 200А с точностью ± 1,5%

  • Датчик ACS755 – оптимизирован для измерения постоянного тока.

  • Датчик ACS756 – датчик для измерения постоянного и переменного тока до 100А с напряжением питания 3-5В.





Рисунок 24: Зависимость выходного напряжения датчика от тока

Достоинства:


  • широкий диапазон измеряемых токов с частотой до 50-100кГц и выше;

  • измеряет постоянный и переменный ток.

  • гальваническая развязка



Недостатки:


  • Дорого



Дополнительные ссылки:


Измерительные трансформаторы постоянного тока analogiu.ru/6/6-2-2.html

Катушки Роговского www.russianelectronics.ru/leader-r/review/2193/doc/54046

Эффект Холла в википедии: ru.wikipedia.org/wiki/Эффект_Холла

Датчики Холла robocraft.ru/blog/electronics/594.html

Данилов А. Современные промышленные датчики тока www.soel.ru/cms/f/?/311512.pdf

Проектирование схем на базе аналогового усилителя HCPL-7851 www.kit-e.ru/assets/files/pdf/2010_04_26.pdf



Заключение





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

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/260639/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Датчики и микроконтроллеры. Часть 2. Климат-контроль

Суббота, 06 Июня 2015 г. 21:46 (ссылка)

Продолжим рассказ о датчиках и в этой части рассмотрим разнообразные датчики самых востребованных DIY-сообществом типов — это многочисленные датчики температуры и датчики влажности. Кроме того, затронем датчики давления воздуха и присутствия газов. Приведем описание номенклатуры датчиков и сошлемся на полезную литературу.

Содержание



Часть 1. Мат. часть. В ней рассматривается датчик, не привязанный к какому-то конкретному измеряемому параметру. Рассматриваются статические и динамические характеристики датчика.

Часть 2. Датчики климат-контроля. В ней рассматриваются особенности работы с датчиками температуры, влажности, давления и газового состава

Часть 3. Датчики электрических величин. В ней я коснусь измерения электрических параметров: напряжения, тока, мощности, частоты, коэффициента мощности и искажений



5. датчики температуры







Ни один проект по автоматике системы климат-контроля не обходится без датчика температуры, главная задача которого — с необходимой точностью выдавать температуру требуемого объекта, будь то воздух в помещении, охлаждающая жидкость, прожаренный стейк или расплавленный металл(В климат-контроле, ага).

5.1 Термопары


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

Главное преимущество термопар — их широкий диапазон температур. Ограниченный, по сути, абсолютным нулем и температурой плавления металлов — т. е. способен измерять там. Где другие датчики просто бессильны — от -270 до +1800 градусов цельсия и выше.

Термопары бывают разные и в зависимости от типа используемых материалов имеют различный диапазон рабочих температур.

Их конструкция также зависит от применения. Например, в одной из лабораторий моей родной кафедры валялись вот такие 200-300мм дрыны:



Рисунок 1 Термопара типа К для печей сопротивления

А вот так выглядят всеми известные термопары типа К, которые идут в комплекте с мультиметрами(фото из моей коллекции):



Рисунок 2: Термопары типа К для мультиметров.

В ГОСТ Р 8.585-2001 перечисляются следующие типы термопар с их составом, буквенным обозначением и рабочим диапазоном (в скобках указан коэффициент термоЭДС для 25 градусов):


  • платинородий-платиновые — ТПП13 — Тип R, диапазон -50 +1600 С (9мкВ/С).

  • платинородий-платиновые — ТПП10 — Тип S, диапазон -50 +1600 С(6мкВ/С).

  • платинородий-платинородиевые — ТПР — Тип B, диапазон 0 +1800 С

  • железо-константановые (железо-медьникелевые) ТЖК — Тип J, диапазон -210 +1200 С(52мкВ/С)

  • медь-константановые (медь-медьникелевые) ТМКн — Тип Т, диапазон -270 +400 С(41мкВ/С)

  • нихросил-нисиловые (никельхромникель-никелькремниевые) ТНН — Тип N, диапазон +270 +1300 С(27мкВ/С)

  • хромель-алюмелевые — ТХА — Тип K, диапазон -270 +1372 С(41мкВ/С).

  • хромель-константановые ТХКн — Тип E, диапазон -270 +1000 С(61мкВ/С).

  • хромель-копелевые — ТХК — Тип L, диапазон -200 +800 С

  • медь-копелевые — ТМК — Тип М, диапазон -200 +100 С

  • сильх-силиновые — ТСС — Тип I (не представлена в ГОСТ, есть в википедии)

  • вольфрам и рений — вольфрамрениевые — ТВР — Тип А-1, А-2, А-3, диапазон 0 +1800, (+2500 для А-1) С.



Сами по себе являются высокоточными датчиками (точность вплоть до ±0,01 градусов), но такую точность весьма непросто получить.

В основе работы датчиков термоэлектрический эффект, открытый в 1821 году немецким физиком Томасом Зеебеком. Его суть заключается в том, что если спаи двух разнородных материалов, образующих замкнутую электрическую цепь имеют разную температуру T1 и T2, то в цепи появляется электрический ток, направление которого зависит от знака разности температур.



Рисунок 3: Термопара.

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

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



Рисунок 4: Программная компенсация холодного спая

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

Если абсолютного датчика под рукой нет, а измерять надо, возьмем еще одну термопару, подключим ее последовательно в противофазе и поместим в среду, температура которой нам известна — например вода со льдом:



Рисунок 5: Аппаратная компенсация холодного спая



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

К слову, термостатированный элемент — не такая редкость.
Например, генераторы опорного сигнала «гиацинт», стоящие в советской измерительной аппаратуре представляют собой кварцевый резонатор, обмотанный проволокой высокого сопротивления и помещенный в маленький сосуд Дюарда, в котором поддерживается определенная температура. В результате достигается стабильность частоты до 7-8 знака после запятой.





С проблемой относительности разобрались, теперь попробуем снять показания с термопары. И тут нас поджидают еще две проблемы:

Проблема номер раз — термоЭДС измеряется в микровольтах. Например, для термопары типа K температурный коэффициент составляет 41мкВ/градус. Это означает, что милливольтами запахнет только градусов через 25 разницы температур.

Напомню из прошлой части, что 12-разрядный АЦП при опорном напряжении 3,3В имеет чувствительность 800мкВ. т. е. В нашем случае 20 градусов/деление. Неплохая однако погрешность. Конечно нужно учитывать малый рабочий диапазон выходного напряжения термопары и ставить усилители на базе ОУ, или включать усиление в самом АЦП.

Там возникнут другие сложности вроде точности оцифровки АЦП, собственных шумов аналоговых трактов ОУ и АЦП и т. п. В последующих главах мы подробно рассмотрим вопрос отношения сигнал/шум, а пока можете почитать книгу Data Conversation Handbook, глава 2

Будем следовать одной истине — использовать прецизионные и малошумящие ОУ и АЦП. В списке дополнительной литературы есть множество различных вариантов схем подключения. Однако одна из наиболее распространенных схем в большинстве массовых измерительных приборов — с использованием терморезистора:



Рисунок 6: Использование терморезистора для компенсации температуры холодного спая

Проблема номер два — термопара нелинейна. Нелинейность выглядит следующим образом:



Рисунок 7: Нелинейность термопары

Но благо все в курсе этой нелинейности, каждые поверенные измерения аккуратно занесли в табличку и высчитали точные коэффициенты полиномов вида

(1)

Для расчета температуры исходя из значения ЭДС и наоборот:

(2)

Для каждого типа термопары в ГОСТ 8.585-2001 заботливо приведены все необходимые коэффициенты аппроксимирующих полиномов для температур относительно 0 градусов цельсия. Вот список коэффициентов полинома для распространенной термопары типа К:



Рисунок 8: Список полиномов для термопары типа К в диапазоне температур от 0 до 500 градусов цельсия

В принципе, особой проблемы посчитать итоговое значение труда не составит, однако если ваш холодный спай болтается в воздухе при неизвестной температуре — кому это надо?

Как итог — термопара — один из лучших датчиков для точного измерения очень горячих, либо очень холодных вещей.



А в моей любимой книге детства — «Радиоэлектронные игрушки» Войцеховского, можно найти описание конструкции термогенератора, от которого предлагается запитать, например, транзисторный радиоприемник. А на марсе от термогенератора аналогичной конструкции, только самую малость потехнологичнее, питается марсоход Curiosity – На Geektimes есть обзорный пост про РИТЭГи



Рисунок 9: Темроэлектрическая батарея 0,6В 8мА



Минутка бессмысленной и беспощадной практики.


У нас есть отладочная плата на микроконтроллере ATmega1280, пара термопар и желание измерить температуру с хорошей точностью. И у нас это не получится.

АЦП контроллера — 10-разрядный, минимальное опорное напряжение может быть выставлено в 1,1В.

Тогда, чувствительностью АЦП составит:

(3)

Аналоговые входы АЦП позволяют работать в дифференциальном режиме с максимальным усилением в 200 раз. Правда с таким усилением опорное напряжение может быть только 2,56В, да и эффективных остается лишь 7 разрядов. Тогда чувствительность АЦП составит:

(4)

Что примерно в 2,5 раза меньше чем чувствительность термопары типа К(41мкВ). т. е. Теоретически, точность измерительного тракта составит не лучше ± 2,5 градусов. Практически, нам помешают шумы. А их согласно таблице 31-8 датащита целых +-10 знаков — т. е. итоговая точность составит не лучше +-25 градусов. Хе-хе. Это мы еще не учли два полуметровых провода до термопар, отсутствие должной фильтрации аналогового питания и питание всей системы от неплохо шумящего USB. Дай скотче хотя бы в ± 50 градусов уложиться.

Напишем программу, которая будет работать на прерываниях (я набросал ее для одного из комментариев). Средой Arduino воспользуемся как загрузчиком:



Рисунок 10: Натурный эксперимент с двумя термопарами, стаканами и скрепками

Исходный код:
void setup()
{
autoadcsetup();
}


void loop()
{

}
float coeff[] = {0,
2.508388e1,
7.860106e-2,
-2.503131e-1,
8.315270e-2,
-1.228034e-2,
9.804036e-4,
-4.413030e-5,
1.057734e-6,
-1.052755e-8
};

void autoadcsetup(){
//set up TIMER0 to 61Hz
//TIMER0_OVF will be the trigger for ADC
/*normal mode, no prescaler
16MHz / 256 /1024 = 61 Hz*/
TCCR0B = (1 << CS02) | (1 << CS00);//timer frequency = clk/1024
//set ADC.
ADMUX = (1 << MUX3) | (1 << MUX1)| (1 << MUX0) | (1 << REFS1)| (1 << REFS0);//10-bit mode, ADC9-ADC8 channel, Gain 200, 2.56V ref
ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2)| (1 << ADPS1)| (1 << ADPS0);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/128=125kHz_ADC_clk=9.6kHz conv freq(13ticks per conversion)
ADCSRB = (1<< ADTS2) | (1 << MUX5);//Auto trigger source
//set UART to 8-n-1 1Mbod:
UBRR0H = 0;//9600(use Examples of Baud Rate Setting table from datasheet)
UBRR0L = 103;//9600
UCSR0B = (1</enable Transmitter
UCSR0C = (3</8-bit mode
}
int32_t result=0;
float t=0;
ISR(ADC_vect){

if( ( UCSR0A & (1</calc:
t=0;
result = (ADCH >>1)*2560/512;//calc voltage in mV
float edc = static_cast(result);//convert to float
for (uint8_t i = 0; i < 10; i++){
t += coeff[i] * pow (edc, i);
}
UDR0 = static_cast(t);
}
}




Для кипятка вокруг одной термопары и стакана с тающим льдом вокруг другой на выходе сплошная каша со средним значением первых двух строк 124 градуса, что очень даже хороший результат — будем считать что в точность +-25 градусов мы уложились.



Рисунок 11: Сырой вывод данных

Разумеется, практической значимости данная халтурка не представляет и для измерения температуры с помощью термопары нужно использовать более точные АЦП. Хорошим встроенным АЦП обладает к примеру микроконтроллер ADuCM360, причем он рассчитан именно на столь малые входные сигналы.

5.2 Термометры сопротивления и терморезисторы


Как известно, сопротивление металла изменяется от температуры окружающей среды. Этот эффект используется для проведения высокоточных (до тысячных долей градуса) измерений температуры с помощью термометров сопротивления. Будучи сделанным не из металла, а из полупроводника, мы получим терморезистор.



Рисунок 12: Платиновые RTD от Honeywell

Термометры сопротивления позволяют работать в достаточно широком диапазоне температур — от -200 до 850 градусов.

У термометра сопротивления имеется две основные характеристики:


  1. Базовое сопротивление при определенной температуре. Рекомендуемое — 10, 50, 100, 500, 1000 Ом…

  2. Температурный коэффициент сопротивления в тысячных в пропромилле на градус кельвина (ppm/K).



Температурный коэффициент сопротивления — это отношение относительного изменения сопротивления к изменению температуры:

(5)

Таким образом, зная текущее сопротивление терморезистора и зная его ТКС и номинальную температуру, можно вычислить текущую температуру:

(6)

На термометры сопротивления имеется ГОСТ Р 8.625-2006, в котором нормируются термометры из платины (ТКС = 0,00385 и 0,00391), а также из меди(ТКС 0,00428) и никеля (ТКС 0,00617). Номинальным сопротивлением для термометров является сопротивление при температуре 0 градусов. Также как и термопары термометры сопротивления имеют некоторую нелинейность, но в ГОСте заботливо приведены коэффициенты полинома. К слову — гораздо более простые, чем для термопар.

Например, для платинового термометра с ТКС = 0,00385 и диапазона измерений от -200 до 0 градусов будет уравнение вида:

(7)

А для диапазона 0-850 градусов вида:

(8)

Со следующими значениями коэффициентов:

(9)

Одни из популярных — эталонные платиновые термометры серии 700 от Honeywell. Хотя по стоимости платиновые термометры не из дешевых — от 5$ и выше в зависимости от диапазона температур и точности прибора.

Измерить сопротивление можно различными методами. Наиболее простой и рекомендуемый ГОСТ-ом — измерительный мост с источником напряжения. С другой стороны, подключение к источнику тока и использование дифференциального входа АЦП даст линейность измерений.



Рисунок 13: Различные способы подключениях двухпроводных RTD

Процитирую тов Stross из комментариев к предыдущей части:

Мост можно рассмотреть как два резистивных делителя, включенных параллельно. Один из них задает «опорное напряжение» для второго. И таким образом, при использовании моста вы будете своим дифференциальным АЦП измерять напряжение на делителе не относительно нуля, а относительно некой опоры. Это хорошо скажется на чувствительности — вы сможете задать АЦП больший коэффициент предусиления и добиться того, что рабочий диапазон АЦП будет соответствовать узкому диапазону сопротивлений.


С другой стороны Ваш АЦП в режимах усиления входного сигнала не должен шуметь как одинокий ручей текущий с горы фудзи трактор

В приложении к разделу есть множество полезных ссылок по подключению RTD и способам повышения точности.

Одна из проблем металлических термометров сопротивления — низкий ТКС, за счет чего необходим измерительный тракт с высокой чувствительностью. Но это лишь конструктивная проблема — измерить сопротивление с высокой точностью в отличие от очень малых токов и напряжений не представляет особого труда.

Если нам не нужна высокая точность и достаточно ±1-2 градусов, то можно воспользоваться полупроводниковыми терморезисторами, имеющими на порядки более высокий ТКС. Например терморезисторы серии KTY84 от NXP имеют ТКС=0,61. С другой стороны термисторы имеют меньший диапазон рабочей температуры порядка -40=300 градусов.

А еще терморезисторы гораздо более нелинейны. Но в датащитах опять таки заботливо приводятся значения ТКС и номинального сопротивления для различных значений температуры:



Рисунок 14: Таблица соответствия ТКС, номинального сопротивления и температуры

По этой таблице не составит особого труда построить кусочно-линейную функцию и использовать ее для определения сопротивления.

5.3 Линейные аналоговые преобразователи




Рисунок 15: линейный аналоговый датчик LM35DZ

Перейдем к более интегрированным решениям. Рассмотрим микросхему аналогового линейного датчика температуры. Эта микросхема подключается к источнику напряжения и дает на выходе аналоговый сигнал, линейно зависящий от температуры с наклоном 10-20мВ/К. Диапазон измеряемых температур намного уже чем у ранее представленных датчиков и составляет в среднем -40+125 градусов. Так как наш простенький 10-разрядный АЦП имеет чувствительность 1мВ, его с лихвой хватит, чтобы считать показания с данного датчика.

Еще одно полезное свойство данных датчиков — их выходное напряжение не зависит от питающего напряжения, которые может изменяться в широких пределах — например, для датчика LM35 от National Semi диапазон питающих напряжений — 4-30В. Точность датчиков — 1-2 градуса. Так выглядит график точности датчика в зависимости от температуры:



Рисунок 16: Точность датчика в зависимости от температуры

Больше про этот датчик особо сказать нечего, так что расходимся.

5.4 Цифровые датчики температуры


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

Как правило, цифровые датчики температуры подключаются по интерфейсам SPI и I2C. Что касается меня — датчики температуры — это низкоскоростные устройства и тратить на них SPI расточительство.

В качестве примера рассмотрим комбинированный датчик температуры и влажности SHT10



Рисунок 17: Датчик SHT10 общий вид



Рисунок 18: Погрешность датчика

Но и этот датчик не без косяка — его интерфейс «оптимизирован». Типа для того, чтобы его было удобнее считать. А еще к нему нельзя адресоваться как к I2C устройству.



Благо датчик позволяет подключать себя совместно с другими устройствами и нужно лишь программное переключение протокола общения. На нем остановимся чуть подробнее:

Для старта передачи команды необходимо передать стартовую последовательность:



Рисунок 19: Стартовая последовательность

После стартовой последовательности передается байт команды, состоящий из 0 бит адреса (поддерживается только адрес 000) и 5 бит команды.



Рисунок 20: Список команд

После отправки команды на измерение температуры или влажности, в зависимости от разрядности измерений 8, 12 или 14 бит, процедура измерения займет 20, 80 или 320мс. По завершению процесса измерений датчик притянет линию DATA в ноль и уйдет спать. Как только контроллер получает данный сигнал, путем тактирования линии SCK можно получить два байта данных и байт контрольной суммы(если она активирована), причем по окончанию приема каждого байта необходимо притягивать контроллером притягивать землю в ноль. Дапнные передаются с правым вырваниванием, т. е. Для 14-разрядного значения старший бит данных появится только на 5 тик линии SCK. За подробностями отправляю к датащиту.

Датчик температуры имеет линейную характеристику и полученное значение датчика пересчитывается с учетом напряжения питания и наклона характеристики:



Рисунок 21: Расчет температуры

Разумеется, есть датчики температуры с нормальным I2C интерфейсом. Например, LM75A от NXP.

Его диаграмма считывания данных подчиняется базовым принципам I2C:



Рисунок 22: Считывание данных температуры с датчика LM75

Это 11-разрядный датчик, с разрешением 0,125 градуса цельсия, выходные данные хранятся в двух регистрах данных, имеющих определенный адрес. С помощью команд прогтокола I2C для нашего устройства, имеющего адрес 1001XXX (три младших бита выставляются пользователем и позволяют подключать к одной шине до 8 таких датчиков) выставляем указатель адреса регистра с которого начнем производить считывание и с помощью команды чтения считываем два регистра. Полученное знаковое значение умножаем на 0,125 и получаем итоговое значение температуры в градусах цельсия. Удобно.

5.5 DS18B20




Рисунок 23: Цифровой датчик DS18B20

Данному датчику стоит уделить особое внимание. Это 12-разрядный датчик температуры с рабочим диапазоном -55 + 125 градусов цельсия, подключаемый по протоколу 1-wire. Его главное преимущество — этих датчиков можно на одну линию навешать многие десятки штук и все они будут работать. Датчик весьма точный ± 0,5 градуса, однако медлительный — время измерения составляет 750мс.

Внутри датчика 9 регистров, в регистрах 0 и 1 хранится значение измеренной температуры, в регистрах 2 и 3 могут быть использованы как память общего назначения, 4 регистр хранит конфигурацию согласно следующей таблице:



Рисунок 24: Назначение бит конфигурационного регистра

Девятым байтом регистровой памяти идет CRC. Рассчитываемый по следующей формуле на основании первых 8 регистров:

(10)

Для того, чтобы запустить команду вычисления температуры необходимо отправить команду 0x44. По завершению процесса измерения данные будут лежать в первых двух байтах регистровой памяти вплоть до следующего измерения. Считывание 9 байт данных регистровой памяти осуществляется путем подачи команды 0xBE

В целом данный датчик, имея весьма демократичную цену, позволяет, используя длинные линии связи, организовать сеть датчиков, покрывающую ту или иную площадь. Например, можно сеткой разместить датчики в теплице и контролировать температурный градиент внутри нее.

5.6 ИК-датчик температуры


Данный обзор был бы неполным без бесконтактных ИК датчиков температуры. Я вскользь упомянул о нем когда рассказывал о плате CC3200-launchxl - там установлен именно такой датчик.



Рисунок 25: ИК-термодатчик

Эти датчики состоят из тонкой пластинки. Поглощающей ИК излучение, вследствие чего происходит ее нагрев, который детектируется описанными выше термодатчиками. Например в датчике TMP006 от Texas Instruments судя по изображению внутри набор последовательно-включенных термопар, сигнал с которых снимается и преобразуется в цифровой с доступом по I2C. Хозяйке на заметку — этот датчик измеряет температуру от -40 до +125 градусов с точностью ± 1,5 градуса. Я, как обладатель этого датчика на отладочной плате, понемногу с ним играюсь.

Есть и аналоговые решения. Например датчики TPS333 от Excelitas имеют внутри себя встроенный термистор.



Рисунок 26: датчики TPS333 от Excelitas

Наиболее интересны конечно же бесконтактные ИК матрицы, на основе которых делаются тепловизоры. Например датчик D6T-44L-06 от Omron за 35 долларов представляет собой матрицу 4х4 бит, с помощью которой можно измерить температуру от 5 до 50 градусов на расстоянии до 3метров.



Рисунок 27: Область детектирования

Вот тут есть классная видеопрезентация от производителя





Разрешение датчика конечно так себе, да и диапазон температур не шибко большой, но свою нишу такая матрица имеет, да и цена лично меня порадовала. Можно взять на заметку.

5.7 Дополнительная литература




6 Датчики влажности







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



Рисунок 28: Зона комфорта в помещении

В России допустимые значения температуры и влажности в жилых помещениях регламентируются СанПиН 2.1.2.2645-10 «Санитарно-эпидемиологические требования к условиям проживания в жилых зданиях и помещениях»(Приложение 2).

Задача датчиков влажности — определить относительную влажность воздуха. Относительная влажность воздуха — это отношение парциального давления водяного пара в воздухе к равновесному давлению насыщенных паров при данной температуры:

(11)

Где — парциальное давление паров воды в воздухе, — равновесное давление насыщенного пара.

Есть несколько способов измерить влажность воздуха.

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



Рисунок 29: Психрометр

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

Но нам больше интересны решения с электрическим сигналом на выходе.

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



Рисунок 30: Структура датчика влажности. не загрязняйте верхний слой — просят нас.

6.1 Датчики влажности с емкостным выходом


Самый простой по своей сути датчик. Представляет собой конденсатор с изменяемой емкостью. Емкость такого конденсатора в первую очередь зависит от влажности. Но не последним показателем является температура воздуха. Например, для датчика серии HCH-1000 от Honeywell чувствительность датчика составляет в среднем 0,6 пФ/%RH. При этом температурный коэффициент составляет 0,16пФ/градус. Наглядно, график изменения емкости выглядит следующим образом:



Рисунок 31: Изменение емкости датчика HCH-1000

В отличие от сопротивления. Емкость измерить гораздо сложнее. Точные профессиональные приборы — измерители иммитанса (RLC-метры) — не самое дешевое оборудование.

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



Рисунок 32: заряд конденсатора

Так как наша емкость изменяется в пределах 300-360пФ, для получения постоянной времени в 1-2мс (что будет легко поймать большинством таймеров и АЦП) потребуется сопротивление . При таком методе измерений нам требуется с необходимой точностью измерять текущий уровень заряда конденсатора, а также отмечать время, за которое конденсатор достигнет значения 63,2%. Процедуру для надежности можно повторить несколько раз.

Есть еще один способ, правда менее стабильный: раз мы измеряем период, то пусть у нас будет импульсный сигнал. Пусть емкостной датчик отвечает за частоту генерации сигнала. Изменяется влажность — изменяется выходная частота. На выходе буферного элемента D1.3 будет сигнал, частота которого зависит от емкости нашего датчика. Единственный вопрос к точности пороговых напряжений логических элементов. К слову, точность самого датчика HCH-1000 ±2%



Рисунок 32: Простой генератор на логике

Не забудем, что для повышения точности показаний необходимо учитывать текущие показатели температуры.

6.2 Датчики влажности с выходом по напряжению


Электронная промышленность уже поработала за нас и создала приборы, выдающие готовый аналоговый сигнал. Примером таких датчиков являются датчики HIH-4010 от Honeywell, с точностью ± 8%



Рисунок 33: Датчики влажности с выходом по напряжению. Общий вид

Для таких датчиков в датащите указываются графики зависимости выходного напряжения от влажности:



Рисунок 34: Зависимость выходного напряжения датчика от влажности

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

6.3 Датчики влажности с цифровым выходом


Последним нашим датчиком в этой категории будет цифровой датчик влажности.

Один из них мы уже рассмотрели в секции датчиков температуры — это SHT1x. Однако, существует множество комбинированных датчиков влажности и температуры и честно говоря мне не попадались цифровые чисто датчики влажности, что впрочем неудивительно — одно без другого никуда.

Продолжим наш дискус касаемо расчета влажности с датчика SHT1x. Получаемые с этого датчика необходимо преобразовать. В датащите указаны необходимые формулы:

(12)

И коэффициенты полинома:



Рисунок 35: Коэффициенты полинома для версии V4

Следует отметить, что относительная влажность зависит от температуры и требует корректировки по следующей формуле:



Рисунок 36: Корректировка относительной влажности в зависимости от температуры

7 Датчики давления







Датчик давления — это датчик, регистрирующий давление измеряемой среды, которой может быть воздух, газ или жидкость.

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



Рисунок 37: Давление.

В технических характеристиках датчиков могут быть указаны разные единицы измерения:


  • миллиметры ртутного столба — mm Hg;

  • Паскаль — Па, Pa;

  • Фунт-сила на кв. дюйм — Psi

  • Бар — bar

  • Физическая атмосфера — атм



Для оценки рабочего диапазона датчика следует помнить, что 1 атм — это примерно 1 бар или 100 кПа; аналогична 760 мм ртутного столба и 15psi. Вторым после kPa в датчиках встречается psi, так что просто запомним, что 100psi – это примерно 7 атм.

В википедии присутствует замечательная таблица с точными коэффициентами перевода из одной единицы измерения в другую: https://ru.wikipedia.org/wiki/Единицы_измерения_давления



Датчик давления представляет собой чувствительный элемент, помещенный между двумя камерами — в одной присутствует измеряемое давление, в другой — опорное. В абсолютных датчиках воздействие на кристалл идет только с одной стороны. Рассмотрим схему датчика MPX2100 от Freescale в разрезе:



Рисунок 38: Конструкция относительного и абсолютного датчика давления

На рисунке показан чувствительный элемент, который под разницей давлений изменяет свои свойства. Есть несколько видов чувствительных элементов. Один из самых распространенных — тензорезистивный — изменение сопротивления материала под воздействием деформации. Часто в качестве материала такого датчика берется монокристалл кремния. Одной из проблем является зависимость сопротивления датчика от температуры, но, как правило, во всех датчиках присутствует термокомпенсация.

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

Также есть пьезоэлектрический эффект, где чувствительный элемент генерирует напряжение под воздействием определенного давления. У меня кстати есть один такой — он установлен в зарядной станции ЗД-6 комплекта индивидуальных дозиметров ИД-1. Зарядное устройство содержит 4 параллельно соединенных пьезоэлемента и механический усилитель, давящий на пьезоэлементы; давление создается вращающейся ручкой. Он используется для генерации напряжения в 180-250В для заряда дозиметра.



Рисунок 39: Измеритель дозы ИД-1

Есть датчики и других типов — индуктивные, резонансные и прочие, но они встречаются в очень промышленных объектах и мы их рассматривать в рамках данной статьи не будем.

7.1 Аналоговые датчики давления


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

Сделаем небольшое лирическое отступление и упомянем датчики с промышленными уровнями аналогового сигнала 0-10В и 4-20мА, предназначенные для подключения к промышленной автоматике. Суровые промышленные датчики видно сразу:



Рисунок 40: Суровые промышленные датчики давления

Однако схема их включения аналогична всему тому, что было описано в разделе 3:



Рисунок 41: Подключение промышленного датчика

Установив делитель напряжения, либо подобрав шунтирующее сопротивление так, чтобы уровень выходного сигнала соответствовал входному диапазону АЦП, эти датчики можно подключать и к обычным микроконтроллерам.

С датчиками давления построенными по мостовой балансной схеме часто имеется та же проблема, что и с термопарами — многие датчики выдают всего порядка 40мВ на весь свой диапазон. Например вот так выглядит зависимость выходного напряжения от давления для датчика MPX2100



Рисунок 42: Зависимость выходного напряжения датчика от давления

Так что вооружаемся дифференциальным малошумящим АЦП и вперед.

С другой стороны существуют более удобные, но и более дорогие датчики, имеющие на выходе сигнал 0-5В, или 0-3.3В и подобные в зависимости от напряжения питания.

К таким датчикам относится 40PC от Honeywell



Рисунок 43: датчик серии 40PC от Honeywell

Оцифровать выходной сигнал такого датчика может любой микроконтроллерный АЦП. Вот только при своей точности в 0,2% его стоимость на рынке — порядка $40-50.

7.2 Цифровые датчики давления


Цифровой датчик давления позволяет получать все данные более технологичным способом. Суть его та же — пьезорезистивный мост, дифференциальный АЦП и интерфейс.

Вот так выглядит внутри MEMS-датчик LPS331 от ST в корпусе 3х3х1мм:



Рисунок 44: Структурная схема датчика давления LPS331

Все цифровые датчики давления имеют встроенный датчик температуры и, соответственно, термокомпенсацию. Чувствительность конкретно этого датчика давления — ± 200Па. Разумеется температуры с этого датчика также доступна, с точностью ± 2 градуса.

Одно из применений датчика давления — это барометрическая альтиметрия — т. е. определение относительной высоты. Как известно, с изменением высоты уменьшается давление воздуха. Так что выставим на земле нулевую высоту и поднявшись ввысь, или опустившись внизь можно определить пройденный путь.

Зависимость давления воздуха от высоты выглядит следующим образом:



Рисунок 45: зависимость давления воздуха от высоты

Для поиграться могу порекомендовать часы-отладочный комплект EZ430-Chronos от Texas instruments на базе контроллера CC430F6137. На хабре есть описание этих часов

В них встроен цифровой датчик давления Bosh BMP085 стоимостью $4. Он имеет рабочий диапазон 30-110кПа и размеры 5х5х1.2мм.



Рисунок 46: Через несколько минут они покажут 4500. Метров.

8 Датчики присутствия газов







Ранее описанные датчики позволяют измерить то, что мы можем ощутить самостоятельно. Но в воздухе может оказаться еще кое-что, что способно убить нас совершенно незаметно.



Рисунок 47: датчик присутствия газа

Это газ. CO2, CO, метан, пропан, аммиак, водород, этанол, хладагенты и прочие газы., большинство из которых проблематично учуять, но которые приведут к серьезным последствиям.

Датчик определенного типа рассчитан, как правило, только на один конкретный газ, так что если вы хотите контролировать различные газы, то нужно использовать несколько датчиков.

Наибольшее распространение имеют различные датчики FIGARO, так что именно их и рассмотрим на примере датчика угарного газа TGS2442. Чувствительным элементом таких датчиков является оксид олова (SnO2). Датчик имеет многослойную структуру.



Рисунок 48: Структура датчика газа

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

Подключение датчика производится следующим образом:



Рисунок 49: Подключение датчика газа

Точность определения концентрации напрямую зависит от точности времени подогрева и времени снятия сигнала. Обе цепи подключаются к питанию на короткое время чтобы предотвратить перегрев чувствительного материала.

На нагреватель подается напряжение в 4.8В каждую секунду, длительностью 14мс. Средний ток нагревателя 200мА. За 5мс до включения нагревателя на 5мс включается схема измерителя и производится замер сопротивления.



Рисунок 50: Цикл работы датчика газов

Итоговая концентрация газа определяется в зависимости от отношения измеренного сопротивления к сопротивлению при концентрации газа 100 пропромилле. Зависимость хорошо видно на следующем графике:



Рисунок 51: Чувствительность к газам. Ro = Rs при 100 ppm CO



PS



Данная часть получилась больше справочной чем практической, но я надеюсь что этот материал поможет в выборе типа датчиков для вашей будущей системы климат-контроля.

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

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/259203/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Датчики и микроконтроллеры. Часть 1. Матчасть

Пятница, 30 Мая 2015 г. 00:51 (ссылка)

В эпоху готовых отладочных плат и тысяч готовых модулей к ним, где достаточно взять пару блоков, соединить их вместе, и получить нужный результат, далеко не каждый понимает основы схемотехники, почему и как это работает, а главное — что надо делать, если это работает не так.

Как раз открылся хаб Схемотехника, так что, как говорил Бьюфорд Бешеный Пёс Таннен
Здание суда уже строят, значит пора кого-то вешать.



В этом цикле я расскажу о датчиках — как о немаловажном элементе системы управления неким объектом или тех. процессом.

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

Руководство не претендует на всеобщий обхват вопроса.

Хотя после того, как мой конспект перелез за 20 страниц текста, я решил разбить статью на следующие части:


  • Часть 1. Мат. часть. В ней мы рассмотрим датчик, не привязанный к какому-то конкретному измеряемому параметру. Рассмотрим передаточные функции и динамические характеристики датчика, разберемся с его возможными подключениями.

  • Часть 2. Датчики климат-контроля. В ней я рассмотрю особенности работы с датчиками температуры, влажности, давления и газового состава

  • Часть 3. Датчики электрических величин. В ней я коснусь измерения электрических параметров: напряжения, тока, мощности, частоты, коэффициента мощности и искажений





Введение







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

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



Рисунок 1. Типовая схема замкнутой системы регулирования

На рисунке 1 представлена типовая схема системы регулирования. Имеется сигнал задания , который сравнивается с сигналом на выходе, получаемым с помощью датчика, имеющего передаточную функцию Wд(p). Ошибка управления подается на регулятор, который, в свою очередь, формирует сигнал управления исполнительным узлом, формирующим выходной сигнал Y.[1]

Простой пример — центробежный регулятор частоты вращения двигателя, где датчиком является платформа с шарами, которая, вращаясь, устанавливает то или иное положение топливной рейки. Заслонка, управляемая этой рейкой, регулирует количество топлива, подаваемое на двигатель. Сигналом задания будет являться требуемое значение скорости.



1.1 Классификация датчиков



Классификация датчиков очень разнообразна. Ограничимся рамками настоящего пособия.

Все датчики делятся на два основных класса:


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

  • Активные, которые требуют для своей работы внешний сигнал, называемой сигналом возбуждения. Поскольку, такие датчики меняют свои характеристики в ответ на изменение внешних сигналов, их называют параметрическими. Примерами активных датчиков являются терморезисторы, сопротивление которых можно вычислить путем пропускания через них электрического тока.



Другим важным критерием для нас является выбор точки отсчета данных. Таким образом датчики бывают


  • Абсолютные, измеряемое значение физической величины которых не зависит от условий измерения и внешней среды.

  • Относительные, когда выходной сигнал такого датчика в каждом конкретном случае трактуется по разному.



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

При разработке радиоэлектронного оборудования важным фактором характеристик датчика также является характер выходного сигнала.


  • Аналоговые датчики на выходе имеют непрерывный выходной сигнал, для снятия которого необходимо использовать аналого-цифровой преобразователь, после чего необходимо произвести преобразования значения АЦП в формат измеряемой величины.

  • Цифровые датчики, информация с которых снимается с помощью различных цифровых интерфейсов. Как правило, информация доступна непосредственно в формате измеряемой величины и не требует проведения дополнительных преобразований.

  • Дискретные датчики, имеющие только два варианта сигнала на выходе канала датчика — лог 0. и лог. 1. Примером такого датчика является конечный выключатель, имеющий состояния замкнут и незамкнут. Дискретный датчик может иметь несколько выходных каналов, каждый из которых находится в одном из двух состояний. Например, 12-разрядный абсолютный датчик положения.

  • Импульсные датчики, формирующие импульсы выходного сигнала, амплитуда или длительность которых зависит от измеряемой величины. Например, инкрементальный датчик положения формирует на выходе код Грея. При этом, чем выше частота вращения вала датчика, тем большая частота сигнала будет на выходе, что позволит с высокой точностью определить частоту вращения вала.



2 Характеристики датчиков







Большинство датчиков имеют сложную процедуру преобразования измеряемой величины в электрический сигнал. Например, в тензорезисторном датчике давления измеряемая величина воздействует на чувствительный элемент, изменяя его сопротивление. После подачи сигнала возбуждения, падение напряжения на резисторе позволит косвенно определить его сопротивление и, на основании зависимости сопротивления от давления, вычислить измеряемую величину.

Для разработчика, датчик представляет собой черный ящик с известными соотношениями сигналов между входами и выходами.

2.1 Диапазон измеряемых и выходных значений


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

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

Диапазон выходных значений датчика — это минимальное и максимальное напряжение, которое датчик способен выдать при минимальном и максимальном внешнем воздействии. Так как мы рассматриваем датчики, преобразующие входной сигнал в электрический, то диапазон выходных значений датчика будет определяться в вырабатываемом им напряжении, или пропускаемом через него токе. Одной из наших задач при подключении датчика будет согласование выходного диапазона датчика со входным диапазоном измерительного тракта.

2.2 Передаточная функция и динамические характеристики


При работе с датчиком требуется знать соотношение уровней сигналов на входе и выходе. Это соотношение, Y = f(X) будет представлять собой передаточную функцию и однозначно определять выходное состояние при определенном входном воздействии.

Передаточная функция может быть линейной и будет определяться как

(1)

Где a – наклон прямой, определяемый чувствительностью датчика и b – постоянная составляющая(т.е. уровень выходного сигнала при отсутствии сигнала на входе)



Рисунок 2. Линейная зависимость

Помимо датчиков с линейной зависимостью, могут быть датчики с логарифмической зависимостью, с передаточной функцией вида

(2)

Экспоненциальной:

(3)

Или степенной:

(4)

Где k – постоянное число.

Существуют датчики с более сложными передаточными функциями. Но на то есть документация.

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

(5)

В теории автоматического управления существует два тестовых входных сигнала. Это единичная функция — подача в нулевой момент времени единицы, и дельта-функция — подача сигнала бесконечной амплитуды и бесконечно малой длительности.



Рисунок 3. Единичная и дельта функции

Безынерционный, то бишь идеальный датчик в точности повторит форму входного сигнала. Реальный датчик, описанный формулой (5) выдаст следующую реакцию:



Рисунок 4. Реакция апериодического звена первого порядка на тестовые сигналы

Следует отметить, что значение на выходе датчика будет соответствовать поданному на входе только после завершения переходного процесса, которое будет длиться 3-4

http://habrahabr.ru/post/258967/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

SiLabs Sensor Puck: два датчика — пять параметров

Среда, 27 Мая 2015 г. 13:48 (ссылка)

Этот обзор появился благодаря статьям (раз, два) от abrakada об устройстве пульсометра с Bluetooth.



Плата Sensor Puck от Silicon Labs пришла мне на ум ещё при прочтении названия первой статьи. Причина проста: Sensor Puck — это готовый демонстрационный набор, который, среди прочего, имеет те же функции пульсометра и Bluetooth-приемопередатчика. Когда в конце второй публикации был упомянут датчик Si114x, который как раз установлен на Sensor Puck, уже нельзя было сдержаться и не сделать обзор платы Sensor Puck и датчиков на его борту.







Сразу оговорюсь: плата, описанная ниже – не альтернатива серьезным медицинским или околомедицинским устройствам. Это даже не полноценный отладочный набор, скорее готовый прототип пульсометра (или, например, карманной метеостанции), который полезно поковырять для уменьшения количества велосипедов в собственном проекте.



Обзор Sensor Puck



Итак, миниатюрная плата Sensor Puck появилась на волне популяризации портативных устройств вроде фитнес-браслетов, умных часов, да и вообще Internet Of Things. Плата работает в паре с мобильным приложением.

Пользователю, установившему приложение и включившему питание платы, доступно пять параметров:


  • температура окружающего воздуха, °C / F

  • относительная влажность окружающего воздуха, %

  • освещенность, lux

  • УФ-индекс (UV index)

  • если к контактной площадке приложен палец, частота сердцебиения, BPM



Мобильное приложение доступно для смартфонов и планшетов Apple c iOS 7 или выше, а также для Android-девайсов с версией ОС 4.3 и выше. Устройство, естественно, должно поддерживать Bluetooth 4.0. Приложение ищется по запросу “Silicon Labs Sensor Puck”, файл .apk доступен и по прямой ссылке.

В версии приложения для iOS доступно только главное окно приложения со значениями измеряемых показателей и пара вспомогательных функций, например, для работы с несколькими платами одновременно. В Android-версии доступен дополнительный biometric screen – экран с кардиограммой псевдокардиограммой. Точности и стабильности работы пульсометра не хватит для серьезных задач (или я неправильно палец прикладываю?), хотя для игрушек вроде Nikon-овской камеры для собак должно отлично подойти.







На плате расположены датчик температуры и относительной влажности Si7021 и оптический датчик Si1147. Оба поддерживают интерфейс I2C, средствами которого и «общаются» с микроконтроллером. Для обмена информацией со смартфоном используется модуль Bluetooth Low Energy, он взаимодействует с контроллером через интерфейс LEUART (Low Energy UART). Приемопередатчик расположен на оборотной стороне платы, там же установлен разъем для батарейки CR2032. Описанная система управляется малопотребляющим микроконтроллером EFM32G210. Для управления питанием служит повышающий DC/DC преобразователь TS3310.







Функциональность мобильного приложения сводится к поддержанию канала связи с платой / платами Sensor Puck и отображению результатов измерений.



Как говорилось выше, Sensor Puck правильнее назвать демо-платой, а не отладочным комплектом. Чтобы получить готовую-модную-портативную систему достаточно получить комплект в руки, включить питание платы и запустить приложение на телефоне или планшете. Но чтобы использовать SiLabs Sensor Puck для разработки, придется заиметь дополнительный отладчик, т.к. на плате

а) отсутствует интегрированный J-link или что-то подобное,

б) выведен только «сокращенный» 9-выводный отладочный интерфейс.



Сам SiLabs предлагает использовать связку [Плата Sensor Puck] <–> [Адаптер J-Link 9-pin Cortex-M для перехода на 20-выводный разъем] <–> [Любая отладочная плата для EFM32 starter kit в качестве отладчика (во все киты встроены J-Link и 20-выводный отладочный разъем)]. В качестве программного обеспечения предлагается Simplicity IDE, которая входит в состав программной платформы Simplicity Studio. Она бесплатная и имеет разные специальные плюшки для малопотребляющих EFM32, например вот эту.



Однако подойдут и другие программаторы-отладчики с поддержкой интерфейса SWD. В порядке эксперимента, наряду с первым вариантом, был опробован программатор-отладчик I-jet в паре со средой IAR. Полёт нормальный. Использование «сторонних» средств разработки облегчается тем, что все проекты для МК EFM32, включая оригинальный проект для Sensor Puck, портированы производителем на IAR / keil / Atollic / Rowley – кому что больше нравится.



Теперь, собственно, о датчиках.



Оптический датчик



Оптические датчики Si11xx — это интегральные микросхемы размером 2 x 2 мм (!), предназначенные для выполнения одной или нескольких функций из следующего списка:


  • детектирование приближения;

  • детектирование движений объекта (жестов руки или пальца) по одной оси, в 2D или в 3D.

  • детектирование уровня освещенности;

  • детектирование уровня ультрафиолета с автоматическим расчетом УФ-индекса;





компоненты, входящие в состав микросхемы Si1147 ограничены пунктирной линией



Все датчики поддерживают интерфейс I2C для обмена данными с другими узлами системы. Посмотреть на протокол и управляющие регистры можно в разделе Programming Guide документации, на реализацию взаимодействия с хостом (микроконтроллером) — в исходниках Sensor Puck или другого демо-проекта.



Для простых задач, связанных с детектированием движения в определенной области или для измерения расстояния для статичного объекта достаточно использовать интегрированный на микросхему инфракрасный светодиод. В паре с инфракрасным фотодиодом они образуют активный инфракрасный датчик. Активные датчики, в отличие от пассивных, используют не излучение объекта, а измеряют характеристики отраженного от объекта излучения. Такая конфигурация подходит для детектирования объектов несложной формы на расстоянии до 50 см от датчика.



Для более сложных задач, например, для детектирования жестов, используются дополнительные светодиоды. На различных микросхемах Si114x доступно от 1 до 3 драйверов светодиодов. Количество и расположение дополнительных светодиодов относительно микросхемы датчика выбираются в зависимости от характеристик объекта, требуемой дальности измерений и др. Так, с использованием трех «внешних» светодиодов, можно реализовать детектирование движения, например, руки, в трех осях.



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

Отклик фотодиодов в зависимости от длины волны




УФ-индекс, который вычисляется на некоторых датчиках линейки Si114x — это коэффициент, выражающий интенсивность влияния солнца на человека. Он линейно зависит от интенсивности солнечного света, достигающего земли. УФ-индекс является стандартом ВОЗ и используется для определения степени опасности солнечного излучения.

Таблица УФ-индекс - уровень воздействия

























Уровень солнечного воздействия Значение УФ-индекса
низкий 2 и менее
средний (требуется защита) 3-5
высокий (требуется защита) 6-7
очень высокий (требуется повышенная защита) 8-10
экстремальный (требуется повышенная защита) 11 и более




Если вернуться к задачам пульсометрии, то нужно сказать что возможностей датчика хватит и для работы на просвет, и для работы на отражение. Очевидно на Sensor Puck используется принцип отражения с использованием встроенного инфракрасного светодиода, поэтому вменяемые результаты получаются только при измерении частоты сердцебиения (BPM, beats per minute). По хорошему, с использованием инфракрасного, зеленого и желтого светодиодов можно снимать кардиограмму с приемлемым качеством.





В биометрических приложениях на оптических датчиках Si114x используются и другие свойства кожи и крови. Например, насыщенность крови кислородом можно измерить благодаря разнице в поглощении красного и инфракрасного света кровью, насыщенной и ненасыщенной кислородом. Оксигенированный гемоглобин больше абсорбирует инфракрасный свет, деоксигенированный гемоглобин больше абсорбирует красный свет — для получения разницы между понадобится две пары светодиод-фотодиод.



Датчик температуры и относительной влажности



Для измерения температуры и влажности в различных областях техники используются компоненты самой разной природы, история измерительных приборов — дело довольно увлекательное. Цифровые (полупроводниковые) датчики температуры / температуры и относительной влажности используются в приложениях, не предполагающих экстремальных температур и условий использования, и не требующих повышенной точности измерений. Если говорить коротко, для приложений типа умных часов и браслетов миниатюрные и недорогие ($4-5 в розницу) цифровые датчики подходят лучше термисторов, термопар и т.п.



Датчик Si7021, также как оптический Si1147, вполне оправдывает название Интегральная микросхема. В составе кристалла два датчика (имеются в виду первичные преобразователи), АЦП, управляющая логика, энергонезависимая память, содержащая калибровочные значения, и I2C интерфейс.



Типовая погрешность при измерении относительной влажности составляет ±2%, при измерении температуры — ±0.3 °С, максимальные значения погрешностей чуть выше: ±3% RH и ±0.4 °С.



Заводская калибровка и интерфейс I2C решают проблемы с управлением и настройкой датчика. Но главная сложность в использовании подобных компонентов — защита от внешних воздействий при эксплуатации и от высоких температур при пайке. Эта сложность связана с природой датчика: для измерения уровня влажности используется полимерная пленка между двух диэлектриков. При увеличении количества водяного пара в воздухе (а значит на диэлектрике) изменяется её диэлектрическая проницаемость (Er). Изменение Er в диапазоне от 3.0 до 4.0 пропорционально изменению относительной влажности от 0 до 100%. Чтобы влажность воздуха соответствовала влажности на чувствительной пленке корпус микросхемы фактически содержит отверстие. Эта «уязвимость» может быть частично исправлена установкой защитной пленки (Si70219 поставляется как раз с предустановленным защитным фильтром). Роль фильтра выполняет мембрана, пропускающая водяной пар, но защищающая от загрязнения и других воздействий. В документации также упоминается защита от конденсата на поверхности датчика — некий on-chip heater. Пайку микросхем Si70xx производитель рекомендует производить с использованием печи конвекционного оплавления с использованием бессмывного флюса — тут защитный фильтр помочь не сможет.



Окончательно отвлекаясь от пульсометрии и платы Sensor Puck, добавлю несколько слов о том, почему температура и влажность измеряются совместно. Во-первых, удобно, когда на плате один компонент вместо двух :) Но главное — прямая зависимость относительной влажности от температуры. Напомню, относительная влажность — это процентное содержание водяных паров в воздухе, причем 0% — отсутствие этого пара, а 100% — полное насыщение. Точка насыщения, она же точка росы и точка конденсации не является постоянной величиной, изменяясь от температуры, а также от давления и состава воздуха. Взаимозависимость температуры и влажности требует их измерения в одной точке и использования схем температурной компенсации. Нестабильность точки росы влечет типовую погрешность измерений, которая упоминалась выше.



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



Заключение



Если вы грезите разработкой устройств для умного дома, носимых девайсов, и вообще любых штуковин на базе датчиков, имеет смысл дважды проверить какие интегральные решения существуют на современном рынке. Если к устройству не предъявляется нестандартных требований вроде работы в -70 °С, под водой, над открытым огнем, если не требуется точность измерения до десятых градуса или что-то подобное, то велика вероятность, что ваша схема уже упакована в корпус площадью 4 мм^2 и стоит пять баксов.



Всем спасибо за внимание и удачи!

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/258839/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
VidSovet

Проходные выключатели или бистабильные реле – чему отдать предпочтение

Воскресенье, 26 Апреля 2015 г. 11:11 (ссылка)
jelektrik.by/osveshchenie/5...tenie.html

Монтаж управления освещением в доме +375 29 998 19 36
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Имитация показаний датчиков с помощью массива точек пути

Суббота, 11 Апреля 2015 г. 18:11 (ссылка)





Структура публикации




  • Оговорка про крен

  • Подготовка GPS-трека

  • Как из массива векторов получить углы Крылова-Эйлера

  • Имитация показаний гироскопа

  • Вектор ускорения свободного падения и направление «на север»

  • Имитация показаний акселерометра, компаса и барометра





Для отладки алгоритма, работающего с датчиками инерциальной навигации, может потребоваться имитировать показания этих самых датчиков. Например, вы имеете отладочную последовательность точек пути, имитирующую определённую ситуацию. Вы можете иметь некий GPS-трек, имеющий особенности, или напротив их не имеющий. В моём случае результат полевых испытаний есть, а плата ещё не готова — нужно чем-то заняться.





Оговорка про крен



Стоит сразу отметить, что перемещаясь, 3D точка не даёт нам информации о положении тела относительно оси перемещения. Если представить, что между точками пути натянута нитка, а наш объект — это бусинка, то вдоль нитки она будет двигаться чётко, а вокруг оси движения может свободно вращаться. В качестве направления движения будем использовать вектор скорости и будем помнить оговорку про крен в результате.







Подготовка GPS-трека



Если у вас в качестве исходных данных GPS-трек, то нужно его сначала подготовить. Требуется преобразовать имеющийся файл к формату, из которого можно получить данные. Я преобразовывал к GPX (так как внутри это XML).




839





. . .

837







Далее берём любую доступную БД (например MySQL), создаём табличку и заполняем её данными из полученного XML. Формат XML может отличаться — главное найти широту, долготу, высоту и время. Создаём первую табличку, например 'xml_src'. Все столбцы для простоты загрузки делаем строковыми.







Немного причешем данные. Для удобства создадим вторую табличку, например 'points'. Код для MySQL:

insert into points (lat,lon,h,dt)
SELECT cast(xx.lat AS DECIMAL(11, 6))
, cast(xx.lon AS DECIMAL(11, 6))
, cast(xx.ele AS DECIMAL(11, 6))
, cast(replace(replace(xx.`time`, "T", " "), "Z", "") AS DATETIME)
FROM
xml_src AS xx;


В результате имеем следующее:





Затем переводим широту и долготу в метры (см. статью «Занимательная геодезия» или используем средства БД, например в MSSQL см. метод ShortestLineTo). Конвертировать в метры можно следующим образом. Мы считаем что координаты первой точки равны X = 0, Y = 0. Координаты каждой последующей точки считаем относительно первой. Определяем расстояние между точками сначала по вертикали, затем по горизонтали в метрах. Функция для рассчёта растояния есть в статье «Определение расстояния между географическими точками в MySQL».







Время переводим в секунды так, чтобы в первой строке получилось 0 секунд (просто вычитаем значение первой строки из остальных).



Запрос для MySQL
Для удобства создадим третью табличку 'track' и функцию 'geodist' по координатам двух точек возвращающая расстояние в метрах.

FUNCTION geodist(src_lat DECIMAL(9, 6),
src_lon DECIMAL(9, 6),
dst_lat DECIMAL(9, 6),
dst_lon DECIMAL(9, 6)
)
RETURNS decimal(11,3)
DETERMINISTIC
BEGIN
SET @dist := 6371000 * 2 * asin(sqrt(
power(sin((src_lat - abs(dst_lat)) * pi() / 180 / 2), 2) +
cos(src_lat * pi() / 180) *
cos(abs(dst_lat) * pi() / 180) *
power(sin((src_lon - dst_lon) * pi() / 180 / 2), 2)
));
RETURN @dist;
END


Затем выберем начальную точку и используем её координаты в запросе. Мы будем мерить расстояние от этой точки до каждой следующей по вертикали и горизонтали в метрах.



INSERT INTO track (x, y, z, dt)
SELECT if(42.302929 > pp.lat, 1, -1) * geodist(42.302929, 18.891985, pp.lat, 18.891985)
, if(18.891985 > pp.lon, -1, 1) * geodist(42.302929, 18.891985, 42.302929, pp.lon)
, h
, dt
FROM
points AS pp;




В результате имеем следующее:





Теперь нам нужно получить координаты точки в равные промежутки времени. То, что вторая точка появились через 4 секунды после первой, третья через 2 секунды, а следующая через секунду – нас так не устраивает. Мы же собираемся имитировать датчики? А они измеряют значения в равные промежутки времени.



Для получения координат точки в равные промежутки времени используем интерполяцию. В качестве инструмента интерполяции используем одномерный кубический сплайн. У меня под рукой был Excel, я в нём макрос написал (см. спойлер). На этом этапе мы решаем с какой частотой будет работать каждый «датчик». Например, все «датчики» будут давать значения 10 раз в секунду. То есть интервал между измерениями равен 0,1 секунды.

Кубический сплайн на VB
Public Sub interpolate()

'------------------------
Dim i As Integer

Const start_n As Integer = 0
Const n As Integer = 1718

Dim src_x(n) As Double
Dim src_y(n) As Double
Dim spline_x(n) As Double
Dim spline_a(n) As Double
Dim spline_b(n) As Double
Dim spline_c(n) As Double
Dim spline_d(n) As Double

For i = start_n To n - 1
spline_x(i) = Application.ActiveWorkbook.ActiveSheet.Cells(i + 1, 1).Value
spline_a(i) = Application.ActiveWorkbook.ActiveSheet.Cells(i + 1, 2).Value
src_x(i) = spline_x(i)
src_y(i) = spline_a(i)
Next

spline_c(0) = 0

Dim alpha(n - 1) As Double
Dim beta(n - 1) As Double
Dim a As Double
Dim b As Double
Dim c As Double
Dim F As Double
Dim h_i As Double
Dim h_i1 As Double
Dim z As Double
Dim x As Double

alpha(0) = 0
beta(0) = 0

For i = start_n + 1 To n - 2
h_i = src_x(i) - src_x(i - 1)
h_i1 = src_x(i + 1) - src_x(i)
If (h_i = 0) Or (h_i1 = 0) Then
MsgBox ("ОШИБКА! Строка " + CStr(i + 1) + " Нет изменения по координате X! Это одномерный сплайн!")
Exit Sub
End If
a = h_i
c = 2 * (h_i + h_i1)
b = h_i1
F = 6 * ((src_y(i + 1) - src_y(i)) / h_i1 - (src_y(i) - src_y(i - 1)) / h_i)
z = (a * alpha(i - 1) + c)
alpha(i) = -b / z
beta(i) = (F - a * beta(i - 1)) / z
Next

spline_c(n - 1) = (F - a * beta(n - 2)) / (c + a * alpha(n - 2))
For i = n - 2 To start_n + 1 Step -1
spline_c(i) = alpha(i) * spline_c(i + 1) + beta(i)
Next

For i = n - 1 To start_n + 1 Step -1
h_i = src_x(i) - src_x(i - 1)
spline_d(i) = (spline_c(i) - spline_c(i - 1)) / h_i
spline_b(i) = h_i * (2 * spline_c(i) + spline_c(i - 1)) / 6 + (src_y(i) - src_y(i - 1)) / h_i
Next

'-------------------------------
' my

Dim dx As Double
Dim j As Integer
Dim k As Integer
Dim y As Double
row_num = 1

For x = 0 To 3814 Step 0.1
i = 0
j = n - 1
Do While i + 1 < j
k = i + (j - i) / 2
If x <= spline_x(k) Then
j = k
Else
i = k
End If
Loop

dx = x - spline_x(j)
y = spline_a(j) + (spline_b(j) + (spline_c(j) / 2 + spline_d(j) * dx / 6) * dx) * dx
Application.ActiveWorkbook.ActiveSheet.Cells(row_num, 3).Value = x
Application.ActiveWorkbook.ActiveSheet.Cells(row_num, 4).Value = y
row_num = row_num + 1
Next

End Sub




Интерполируем парами:


  1. Время – X

  2. Время – Y

  3. Время – Z







В итоге получается таблица с координатами точек «объекта», в котором находятся наши «датчики». Временной интервал между точками составляет 0,1 секунды. Время появления координат конкретной точки вычисляется по формуле t = n / 10, где n — это номер строки.







Как из массива векторов получить углы Крылова-Эйлера



Возьмём перемещение носа самолёта из моей предыдущей статьи:









Координаты точки, означающей нос равны:





Давайте определим все три поворота. Для этого получим ось первого вращения v и угол первого поворота alf вокруг оси. Пусть точки пути – это вершины векторов. Тогда ось получим путём умножения соседних векторов.



v12 = v1 * v2 = (1; 0; 0) * (0; 1; 0) = (0; 0; 1)



Угол вычисляется следующим образом:

Public Function vectors_angle(v1 As TVector, v2 As TVector) As Double
v1 = normal(v1)
v2 = normal(v2)
vectors_angle = Application.WorksheetFunction.Acos(v1.x * v2.x + v1.y * v2.y + v1.z * v2.z)
End Function


Alf12 = 90. Теперь создаём кватернион на основе полученных осей и углов:

Public Function create_quat(rotate_vector As TVector, rotate_angle As Double) As TQuat
rotate_vector = normal(rotate_vector)
create_quat.w = Cos(rotate_angle / 2)
create_quat.x = rotate_vector.x * Sin(rotate_angle / 2)
create_quat.y = rotate_vector.y * Sin(rotate_angle / 2)
create_quat.z = rotate_vector.z * Sin(rotate_angle / 2)
End Function


Получаем первый кватернион:



(w=0,7071; x=0; y=0; z=0,7071)



Из кватерниона получим компоненты поворота:

    sqw = w * w
sqx = x * x
sqy = y * y
sqz = z * z

bank = atan2(2 * (w * x + y * z), 1 - 2 * (sqx + sqy))
altitude = Application.WorksheetFunction.Asin(2 * (w * y - x * z))
heading = atan2(2 * (w * z + x * y), 1 - 2 * (sqy + sqz))


Результат определения первого поворота: курс = 90, тангаж = 0, крен = 0.



Остальные повороты мы так посчитать не можем, так как после первого поворота локальная система координат самолёта перестала совпадать с глобальной системой координат. Для определения второго поворота от положения носа самолёта №2 к положению №3 нужно сначала отменить первый поворот, то есть вернуть систему отчёта на место и вместе с ней развернуть новый результирующий вектор. Для этого требуется получить обратный кватернион первого разворота и применить его на вектора №2 и №3 (получение обратного кватерниона и поворот вектора кватернионом – см. в статье).

Обратный кватернион первого разворота (поворот против часовой вдоль оси Z):



(w=0,7071; x=0; y=0; z=-0,7071)



После применения данного кватерниона второй и третий вектора равны:

v2 = (x=1; y=0; z=0)

v3 = (x=0; y=0; z=-1)







Когда локальная система координат совмещена с глобальной, можно вышеописанным способом вычислить второй кватернион и компоненты второго поворота:



(w=0,7071; x=0; y=0; z=-0,7071),

курс = 0, тангаж = 90, крен = 0.



Дальше мы должны запоминать совершённые развороты в локальной системе координат. Для этого заведём отдельный кватернион и в него будем умножать кватернионы поворотов:





Затем из кватерниона серии совершённых разворотов будем получать обратный кватернион для совмещения систем отчёта.



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



' кватернион "нет поворота"
q_mul.w = 1
q_mul.x = 0
q_mul.y = 0
q_mul.z = 0

For row_n = M To N

' текущее положение поворачиваемого вектора
v1.x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 1).Value
v1.y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 2).Value
v1.z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 3).Value

' следующее целевое положение вектора
v2.x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 1).Value
v2.y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 2).Value
v2.z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 3).Value

' совмещаем системы отчёта для чего разворачиваем вектора
q_inv = myMath.quat_invert(q_mul) ' получение обратного кватерниона
v1 = myMath.quat_transform_vector(q_inv, v1) ' разворот вектора кватернионом
' в этом примере для всех шагов получим (1; 0; 0) – его исходное положение
v2 = myMath.quat_transform_vector(q_inv, v2) ' разворот вектора кватернионом

' ищем кватернион нового разворота
r12 = myMath.vecmul(v1, v2) ' умножение векторов
alf = myMath.vectors_angle(v1, v2) ' получаем угол между векторами
q12 = myMath.create_quat(r12, alf) ' создаём кватернион на основе оси и угла разворота

' получаем компоненты углов
ypr = myMath.quat_to_krylov(q12)

Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 4).Value = ypr.heading
Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 5).Value = ypr.altitude
Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 6).Value = ypr.bank

' добавляем поворот в серию
q_mul = myMath.quat_mul_quat(q_mul, q12) ' умножение кватернионов

Next


В данном макросе для Excel-я вектора считываются с первых трёх столбиков. Результат пишется в 4, 5, 6 столбик.



Имитация показаний гироскопа



Как вы понимаете, координаты точек в качестве входных данных не годятся — нам нужны вектора скорости.



Получить скорость и ускорение из подготовленных данных легко – разница между соседними строчками таблицы координат точек – это скорость, разница между соседними строчками скорости – это ускорение. Только нужно помнить про частоту замеров. В данном случае у нас 10 «измерений» в секунду. Это значит, чтобы получить, например, скорость в метрах в секунду, нужно значение соответствующей ячейки умножить на 10.







Берём вектора скорости и получаем компоненты поворота.







Теперь про гироскоп. Гироскоп показывает угловую скорость. Поэтому берём разницу между соседними значениями углов и получаем угловую скорость.



Кроме получения угловой скорости, нужно ещё прибавить шум. В шуме гироскопа присутствует два ощутимых компонента — собственный шум датчика (равномерное распределение) и влияние вращения земли (если ваш «датчик» не в космосе). Уровень собственного шума датчика описан в спецификации (изучаем datasheet на имитируемый датчик). Мой датчик имеет разрешение 16 бит и имеет 4 режима измерения. У каждого режима свой максимум: у первого ±250o/сек,… у четвёртого ±2000o/сек. Чувствительность для первого режима 131 LSB/(o/s). Чтобы посчитать это в градусах, нужно воспользоваться формулой:



Чувствительность = Чувствительность_LSB * Максимум / Разрешение = 131 * ±250 / (2 ^ 16) = 131 * ±250 / 65536 = ±0,49972534 o/сек.



То есть величина шума в пределах одного градуса. Формула для Excel-я:

=(СЛЧИС()-0,5)/N, где N — это число имитируемых «измерений» в секунду.



Земля вращается со скоростью 15 градусов в час. Это 0,0041667 градусов в секунду, что сильно меньше погрешности измерения. Забавы ради можно рассчитать и это.



Предположим, что ось вращения Земли совпадает с осью Z. Предположим также, что тело находится на экваторе и ось Y тела ориентировано строго на север (по касательной). Тогда ось Х тела совпадает с касательной направления вращения. В этом случае ось вращения Земли и тела вместе с ним совпадает с осью Z тела. Зрительно представим смещение по широте нашего тела к северу. Тогда ось вращения повернётся вокруг оси Х по часовой стрелке на число градусов, равное значению новой широты. При смещении в северное полушарие — это знак плюс, в южное — знак минус. Когда тело свободно ориентировано в пространстве, нам поможет вектор ускорения свободного падения — g.







Для вычисления оси вращения Земли в локальной системе координат нужно:


  1. Умножить вектор g на вектор показания компаса «на север».

  2. Создать кватернион на основе получившегося вектора и угла. В качестве значения угла берём широту.

  3. Развернуть получившимся кватернионом вектор компаса «на север».





Для получения значений разворота нашего тела планетой в момент каждого замера делаем:


  1. Вычисляем вектор оси вращения планеты используя текущую широту из исходных данных.

  2. Вычисляем на сколько повернулась планета с момента последнего измерения. В нашем случае при измерении 10 раз в секунду это будет 0,0041667 / 10 = 0,00041667.

  3. Строим кватернион на основе вектора оси и угла разворота.

  4. Получаем три компоненты разворота (курс, тангаж, крен) и прибавляем к показаниям «датчика».





В общем в итоге всего получим таблицу:





Последние три столбца — это «показания гироскопа».



Вектор ускорения свободного падения и направление «на север»



Предположим, что есть единичный вектор С, который совпадает с касательной к меридиану и направлением «юг» -> «север». Пусть ось Y нашей глобальной системы координат совпадает с вектором С = (0, 1, 0). А вектор ускорения свободного падения g направлен вдоль оси Z, но в противоположную сторону. g = (0, 0, -1). Тогда, если явно указать вектор скорости тела в начальный момент времени как Н = (1, 0, 0), то все развороты, полученные на основе вращений вектора скорости будут применимы и для вращений векторов g и С. Вращать эти вектора нужно обратным кватернионом. Обратный от кватерниона, который накапливает все совершённые повороты вектора скорости (q_mul).



Достаточно добавить пару строк в процедуру расчёта углов поворота. Теперь она выглядит так:

Public Sub calc_all()

Dim v1 As myMath.TVector
Dim v2 As myMath.TVector
Dim r12 As myMath.TVector
Dim m12 As myMath.TMatrix
Dim q12 As myMath.TQuat
Dim q_mul As myMath.TQuat
Dim q_inv As myMath.TQuat
Dim ypr As myMath.TKrylov
Dim alf As Double
Dim row_n As Long
Dim g As myMath.TVector
Dim nord As myMath.TVector

g.x = 0
g.y = 0
g.z = -1

nord.x = 0
nord.y = 1
nord.z = 0

q_mul.w = 1
q_mul.x = 0
q_mul.y = 0
q_mul.z = 0

For row_n = 3 To 38142

v1.x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 1).Value
v1.y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 2).Value
v1.z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 3).Value
v2.x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 1).Value
v2.y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 2).Value
v2.z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 3).Value

q_inv = myMath.quat_invert(q_mul)
v1 = myMath.quat_transform_vector(q_inv, v1)
v2 = myMath.quat_transform_vector(q_inv, v2)
g = myMath.quat_transform_vector(q_inv, g)
nord = myMath.quat_transform_vector(q_inv, nord)

r12 = myMath.vecmul(v1, v2)
alf = myMath.vectors_angle(v1, v2)
q12 = myMath.create_quat(r12, alf)
ypr = myMath.quat_to_krylov(q12)

Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 4).Value = ypr.heading
Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 5).Value = ypr.altitude
Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 6).Value = ypr.bank

Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 7).Value = g.x
Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 8).Value = g.y
Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 9).Value = g.z

Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 10).Value = nord.x
Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 11).Value = nord.y
Application.ActiveWorkbook.ActiveSheet.Cells(row_n - 1, 12).Value = nord.z

q_mul = myMath.quat_mul_quat(q_mul, q12)

Next

End Sub


Первые три столбца — вектор скорости, с явно указанным направлением в первой точке. Это входные данные. Затем три столбца — расчётные углы поворота. Далее вектор направления «на север» и вектор ускорения свободного падения. И наконец три столбика — это имитируемые показания гироскопа.







Имитация показаний акселерометра, компаса и барометра



Так как у нас всё движение происходит вдоль вектора скорости, то и ускорение у нас направлено так же вдоль вектора скорости — это значит вдоль оси X. Показания датчика ускорения складываются из трёх ощутимых компонентов: ускорение свободного падения, шумы и собственно ускорение тела:



a = (x = length(a), 0, 0);

A = a + (9,8 / N) * g + rnd,

где a — расчётный по входным данным вектор ускорения,

N — количество имитируемых измерений в секунду,

g — вектор ускорения свободного падения,

rnd — шум.

Величина шума снова зависит от имитируемого датчика. Для расчёта смотрим в спецификацию и используем ту же формулу:



Чувствительность = Чувствительность_LSB * Максимум / Разрешение = 16,384 * ±2 / 65536 = ±0,0005 g = ±0,0049 м/с2.



Тогда можно немножко ухудшить результат и выразить имитируемые показания датчика ускорения простыми формулами:

Ax = length(a) + gx * 9,8 / N + random(0,01) — 0,005

Ay = gy * 9,8 / N + random(0,01) — 0,005

Az = gz * 9,8 / N + random(0,01) — 0,005



Диапазон измерений компаса в спецификациях дают в Теслах. Магнитное поле Земли будет на уровне 0,00005 T = 50 uT. Посчитаем чувствительность по той же формуле:



Чувствительность = 15uT * ±4800uT / 65536 = ±1uT.



Это даёт разброс в пределах 4%. Поскольку показания компаса так или иначе приводятся к вектору «на север», то в качестве показаний компаса можно просто взять уже рассчитанный вектор и «ухудшить» каждую его составляющую на 4%:

mx = Cx + random(2) — 1

my = Cy + random(2) — 1

mz = Cz + random(2) — 1.



С барометром всё ещё проще. Их показания приводятся к высоте в метрах, разброс обычно в пределах метра (см. спецификацию, бывает меньше). Если нужны прям показания датчика в Па — см. барометрическую формулу. А так



h = Z + random(1) — 0,5.



Вот собственно и всё. Кому понравилось — не забывайте ставить плюсики. Если хотите статью на тему обратной задачи (от датчиков к точкам пути) — пишите в комментариях.

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/255329/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<датчики - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda