ПОДКЛЮЧЕНИЕ ДЕТЕКТОРА РАДИАЦИИ К ARDUINO

ПОДКЛЮЧЕНИЕ ДЕТЕКТОРА РАДИАЦИИ К ARDUINO

Одна из главных опасностей ионизирующего излучения состоит в том, что человек своими органами чувств не способен его никак зарегистрировать и даже получение дозы превышающей смертельную скажется спустя часы после облучения. Это приводит к тому, что радиация идеально укладывается в образ незримой смерти, которая пугает многих людей гораздо больше других вполне реальных опасностей [1-2]. Так что этой угрозе часто придают больше внимания, чем она того заслуживает на практике.

Таким образом, приобретение, либо конструирование, специального прибора для измерения уровня радиации является весьма актуальным. Индикатор радиоактивности позволит точно установить стоит ли опасаться того или иного предмета. Для радиолюбителей в шкафах, у которых можно порой найти весьма неожиданные артефакты, это особенно актуально. В простейшем случае индикатор радиоактивности должен сигнализировать о заметном повышении радиационного фона, а в идеале позволять количественно оценить уровень радиации и соответственно степень опасности. Разумеется, в сети Интернет можно найти массу материалов, полезных для самостоятельного конструирования индикаторов радиоактивности разной степени сложности [3-7]. В простейшем случае можно воспроизвести индикаторы, которые не измеряют уровень радиации, а просто сигнализируют о повышении уровня радиации [8-14]. При нежелании изготавливать с нуля достаточно сложный узел со счетчиком Гейгера, высоковольтным источником питания и схемой первичной обработки сигнала хорошо подойдет соответствующий модуль для аппаратной плат формы Arduino [15], о котором дальше и пойдет речь.

Данный модуль можно питать непосредственно от платы Arduino, ток потребляемый устройством составляет около 14 мА.

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

Процесс радиоактивного распада это абсолютно случайный процесс и предсказать когда придет сигнал о срабатывании детектора совершенно невозможно, по этой причине информацию о таком событии надо обработать как можно быстрее. Для этого хорошо подходит процедура прерывания [16-20]. Автору удалось найти описание вот такого аппаратно-программного комплекса, который представляет собой индикатор радиоактивности, подключаемый к компьютеру [21]. Использованный в данной схеме модуль заметно отличается от имеющегося у автора, однако, среди прочего в состав проекта входит код для платы Arduino [22], который выдает в последовательный порт количество распадов в минуту (cpm). По сути, программа просто считает все события с нулевого прерывания (второй цифровой порт Arduino) за период 15 с и вычисляет по нему cpm [23]. Как указывается в известной литературе [14], количество событий, регистрируемых счетчиком СТС-5 или СБМ-20 за 40 с, примерно равняется фону радиации в микрорентгенах в час. Следует заметить, что применяемый в данном приборе счетчик Гейгера типа J305 в целом конструктивно сходен с СТС-5 или СБМ-20. Таким образом, результаты счета должны по порядку совпадать с уровнем радиации в микрорентгенах в час. Автор лишь немного подредактировал программу, так что бы считывать данные из монитора последовательного порта было удобнее (программа geiger).

Для начала сравним показания нашего индикатора радиоактивности с показаниями прибора СОЭКС.

В мониторе последовательного порта, хорошо видно, что радиоактивный распад, это случайный процесс. Таким образом, показания от одного цикла измерений к другому могут заметно изменяться, это нормально и не является поводом для беспокойства. Сам по себе нормальный радиационный фон тоже не опасен, все живое на Земле эволюционировало под его воздействием, так что опасаться естественного радиационного фона, это все равно, что бояться солнечного света или дождя, хотя больше половины наших сограждан считает иначе [24]. Причиной кратковременного повышения уровня радиации, может быть, к примеру, ливень вторичных частиц, порожденный космическим излучением [25]. В целом видно, что показания индикатора радиоактивности на Arduino по порядку вполне совпадают с показаниями индикатора радиоактивности СОЭКС.

Естественно интересно посмотреть, как поведет себя прибор при существенном повышении уровня радиации. В качестве «контрольного источника» было использовано пять бусин из уранового стекла [26]. Следует заметить, что уровень радиации от такого «источника» весьма низок даже в упор и быстро уменьшается с расстоянием. Радон урановое стекло, также, по всей видимости, не выделяет [27]. Так, что единственный способ пострадать от такого «источника», это подавиться бусиной. На фотографии, хорошо видно, что линия бусин положена параллельно оси счетчика Гейгера, так, чтобы максимально возможное количество частиц попало в детектор.

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

Для сравнения можно взять туже линию бусин и положить на нее индикатор радиоактивности СОЭКС.

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

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

Разумеется, подобная «калибровка» индикатора радиоактивности носит очень приблизительный характер, хотя бы потому, что бытовой индикатор радиоактивности СОЭКС, далеко не лабораторный прибор. Кроме этого на показания может влиять множество других факторов. Одним из самых значительных может являться изменение взаимной геометрии источника и детектора излучения. К примеру, просто повернем детектор радиации на 90 градусов, так что бы линия бусин была перпендикулярна оси детектора.

Хорошо видно, что при этом показания снизились почти в три раза, из-за того, что теперь, гораздо меньше частиц может пролететь через детектор.
В целом даже просто измерение радиации от такого близкого бета-источника в микрорентгенах в час это условность, и вообще-то так делать нельзя [28-30]. Еще можно положить бусины сбоку от детектора, так, что бы корпус экранировал бета-частицы.

Как понимает автор, изрядная часть историй о том, что «дозиметр специально так сделан, что бы занижать показания» связана именно с неумением правильно организовать процесс измерения. Еще в качестве примера можно вспомнить дозиметр «Белла» [31] у которого счетчик Гейгера закрыт свинцовым экраном, что, по мнению некоторых впечатлительных граждан явно указывает на «заговор» с целью скрыть от людей реальный уровень радиационного фона. На самом деле данный прибор предназначен, для того чтобы работать с гамма-излучением, которое, как известно, обладает высокой проникающей способностью. Тонкий свинцовый экран призван отсечь бета-излучение проникающая способность которого гораздо меньше. При этом бывают дозиметры, у которых такой свинцовый экран является съемным, например «Терра» [32]. Одним словом процесс получения объективных данных об уровне радиации весьма не прост и требует как минимум хорошего знания возможностей своего измерительного прибора, усреднения показаний за значительный интервал времени, учета влияния взаимной геометрии источника и детектора и т.п.

Механические датчики для Arduino

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

Данный набор включает в себя 37 приборов, которые позволяют регистрировать разнообразные явления и процессы, а также небольшое количество простейших устройств вывода информации [1-3]. Покупка такого набора оправдана на начальном этапе, когда требуется изучить особенности работы большого количества различных устройств. Набор можно подключить к платам типа Arduino UNO или Arduino Nano без использования пайки, что является несомненным плюсом на первом этапе работы.

В первой части данного обзора речь пойдет о механических датчиках, реагирующих на нажатие, вибрацию, поворот и т.п. Большая часть описанных ниже датчиков подключаются, по сути, аналогично цифровой кнопке. Для примера в память микроконтроллера на плате Arduino UNO можно записать программу, которая по командам от датчика зажигает светодиод, подключенный к 13 цифровому порту, код взят из [4].

Модуль тактовой кнопки KY-004 [5]

Механические датчики для Arduino

Механические датчики для Arduino

Размер модуля 24 х 15 мм, масса 1,3 г. Помимо кнопки на плате установлен резистор, сопротивлением 10 кОм. Для подключения служит трех контактный разъем, общий вывод разъема обозначен знаком «-», центральный контакт служит для подачи напряжения питания +5В, информационный контакт обозначен «S»

Механические датчики для Arduino

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

Датчик вибрации KY-002 [6]

Механические датчики для Arduino

Механические датчики для Arduino

Размер модуля 24 х 15 х 15 мм, масса 1,2 г. Конструктивно датчик представляет собой цилиндрическую металлическую пружину по оси, которой располагается проводник, который замыкается при резких ускорения, сообщаемых устройству [7]. Схема подключения, логика работы и маркировка контактов, аналогичны таковым у модуля тактовой кнопки KY-004

Механические датчики для Arduino

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

Датчик удара KY-031 [8]

Механические датчики для Arduino

Механические датчики для Arduino

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

Механические датчики для Arduino

Датчик поворота KY-020 [9]

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

Механические датчики для Arduino

Механические датчики для Arduino

Устройство подключается полностью идентично кнопке KY-004.

Механические датчики для Arduino

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

Механический датчик поворота

Механический датчик поворота (Валкодер или энкодер) KY-040 [10-15]. Валкодер представляет собой группу механических контактов по последовательности замыкания, которых можно судить о скорости и направлении вращения его штока. Непосредственно под штоком располагается кнопка, которую можно использовать нажимая на шток. К сожалению, в экземпляре, доставшемся автору, эта кнопка сильно залипает, так что о надежном срабатывании нет и речи.

Механические датчики для Arduino

Механические датчики для Arduino

Размер модуля 30 х 18 мм, высота 28 мм, масса 6,5 г. В плате имеется два крепежных отверстия, диаметром 3 мм, на расстоянии 14 мм друг от друга. Модуль имеет пять выводов:

  • “GND” – общий,
  • “+” – питание 5 В,
  • “SW” – вывод кнопки,
  • “DT” и “CLK” – выводы сигналов с валкодера.
Читайте также  Установка пластиковых откосов своими руками

Работа с кнопкой аналогична таковой для любой цифровой кнопки, например KY-004, или аналогичной. С выводов “DT” и “CLK” при вращении штока устройства можно считать последовательности сигналов высокого и низкого логического уровня, сдвинутые по фазе примерно на четверть периода. Определяя с помощью этих меандров скорость и направление вращения ручки валкодера можно например управлять яркостью светодиода [14]. Главное преимущество данного устройства перед переменным резистором, в том, что угол поворота штока валкодера ничем не ограничен.

Механические датчики для Arduino

Механические датчики для Arduino

Джойстик KY-040 [16-17]

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

Механические датчики для Arduino

Механические датчики для Arduino

Размер модуля 40 х 26 мм, высота 28 мм, масса 9,8 г. В плате есть четыре крепежных отверстия, диаметром 3 мм, расположенных в вершинах прямоугольника со сторонами 20 и 26 мм. На плате имеется пять выводов:

  1. “GND” – общий,
  2. “+5V” питание,
  3. “VRx” — выводы переменного резистора кодирующего перемещение по оси X,
  4. “VRy” — выводы переменного резистора кодирующего перемещение по оси Y,
  5. “SW” — вывод кнопки.

Механические датчики для Arduino

Механические датчики для Arduino

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

  • 1) https://arduino-kit.ru/catalog/id/37-v-1-nabor-datchikov
  • 2) https://arduinomaster.ru/arduino-kit/nabor-arduino-sensor-kit-37-v-1/
  • 3) https://mysku.ru/blog/china-stores/37299.html
  • 4) http://robocraft.ru/blog/arduino/57.html
  • 5) https://arduino-kit.ru/catalog/id/modul-taktovoy-knopki
  • 6) https://arduino-kit.ru/catalog/id/modul-datchika-vibratsii
  • 7) https://arduino-kit.ru/userfiles/image/SW-1801_a.jpg
  • 8) https://arduino-kit.ru/catalog/id/modul-datchika-udara
  • 9) https://arduino-kit.ru/catalog/id/modul-datchika-naklona_
  • 10) https://arduino-kit.ru/catalog/id/modul-datchika-vrascheniya-_valkoder_
  • 11) https://mysku.ru/blog/aliexpress/40668.html
  • 12) https://datagor.ru/microcontrollers/281-chto-est-valkoder….html
  • 13) http://www.zi-zi.ru/docs/modules/info_KY-040.pdf
  • 14) http://cxem.net/arduino/arduino8.php
  • 15) http://mypractic.ru/urok-55-rabota-s-inkrementalnym-enkoderom-v-arduino-biblioteka-encod_er-h.html
  • 16) http://soltau.ru/index.php/arduino/item/384-kak-podklyuchit-dzhojstik-k-arduino
  • 17) http://www.zi-zi.ru/module/module-ky023

Вторую часть обзора читайте здесь. Специально для 2 Схемы.ру — Denev

Недорогой и чувствительный детектор ионизирующего излучения (радиации)

Этот проект был начат как проект-самоделка "Детектор ядерной войны". Идея заключалась в том, чтобы сделать устройство, которое бы мигало красным огоньком в сл учае ядерной атаки ил и интенсивного уровня радиации снаружи дома. Это бы выглядело наподобие датчика дождя, встроенного в зонтик, полностью функционального, но совершенно бесполезного. Чувствительность должна быть аналогична тем приборам радиационного контроля, которые вы часто видите на интернет-аукционе eBay, со шкалами от 0,5 до 500 рентген/ч. Если показания прибора приблизятся к этим значениям, у вас большие проблемы! Они, вероятно, должны калиброваться в "часах оставшейся жизни"! Я решил использовать в качестве датчика небольшую ионизационную камеру с усилителем тока, построенны м на составном транзисторе (транзисторе Дарлингтона).

Вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021)

Этот проект был начат как проект-самоделка

Но когда я соединил базу составного транзистора непосредственно с проводом датчика, ток коллектора практически отсуствовал. Я же ожидал увидеть некоторый ток утечки из-за "плавающей" базы и коэффициента усиления в десятки тысяч. Я не знаю, все ли составные npn-транзисторы так же хороши, как эти MPSW45A, но ток утечки был удивительно мал, а коэффициент усиления выглядел очень высоким, возможно 30 000, при токе базы в несколько десятков пикоампер. (Я проверил коэффициент усиления с помощью тестового резистора с сопротивление 100 МОм, по дключенного к источнику питания с регулируемым выходным напряжением).

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

Кому нужны резисторы смещения?! Я использовал жестяную банку диаметром 4 дюйма (примерно 10 см) с отверстием в днище для антенного провода и алюминиевой фольгой, закрывающей открытую часть. Я быстро понял, что резистор, подключенный к базе 2N4403 (10 кОм) — хорошая идея, предотвращающая повреждения при коротком замыкании . Эффективность работы этой схемы была превосходной, она легко обнаруживала ториевую калильную сетку лампы Coleman ! Так почему бы не добавить еще один составной транзистор ? Это казалось смешным, но вот то, что я соорудил:

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

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

Это выглядит немного запутанным , но на самом деле достаточно легко осуществимо. Схема былы собрана в такой же жестяной банке, как и использованная в одном из вышеописанных проектов на полевых транзисторах (JFET), и все части схемы были закреплены на монтажной плате с 8 выводами. Внимательный читатель заметит, что я фактически применил резисторы сопротивлением 2,4 кОм и 5,6 кОм, но эти различия в номиналах не играют большой роли. Я также использовал блокировочный конденсатор, подключенный параллельно батарее, номиналом, например, 10 мкФ. Провод датчика непосредственно соединен с базой транзистора и проходит через отверстие, просверленное в днище жестяной банки. Схема довольно чувствительна к электрическим полям, поэтому хорошая идея — иметь оболочку схемы наподобие этой.

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

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

Дайте схеме "прогреться" несколько минут после подачи напряжения питания, после чего показания амперметра должны снизиться до весьма малых значений. Если показания амперметра отрицательные, переключите провод датчика к базе другого транзистора и поменяйте полярность подключения амперметра. Если на резисторах сопротивлением 2,2 кОм падает заметное напряжение, может быть до одного вольта, попробуйте очистить все растворителем и полностью высушить. Когда показания амперметра станут низкими и стабильными, поднесите радиоактивный источник, например, калильную сетку , к окошку, закрытому фольгой, и показания должны быстро возрасти. В качестве измерительного прибора можн о применить цифровой вольтметр со шкалой до 1 В или амперметр со шкалой 100 мкА. Показанный ниже измерительный прибор уже имеет шкалу, отградуированую в единицах радиоактивности, и показания около 2,2 обусловлены воздействием калильной сетки .

Дайте схеме

Дайте схеме

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

Как подключить датчик RCWL-0516 к Arduino

1 Описание, принцип действия и схема радара RCWL-0516

Датчик представляет собой модуль размером 35.9×17.3 мм и практически плоский, за исключением микросхемы BISS0001 (аналог RCWL-9196) на лицевой стороне и линейного стабилизатора напряжения 7133-1 на обратной. Благодаря линейному стабилизатору модуль можно питать напряжениями от 4 до 27 В, которое подаётся на вывод VIN. Внешний вид модуля приведён на фото.

Верхняя сторона датчика RCWL-0516 Верхняя сторона датчика RCWL-0516

Обратите внимание, что вывод 3V3 – это не вход питания, а выход линейника! На него подавать ничего не нужно. Можно с него брать напряжение 3.3 В (потребители до 30 мА).

Нижняя сторона датчика RCWL-0516 Нижняя сторона датчика RCWL-0516

Датчик RCWL-0516 работает на эффекте Доплера. Напомню, эффект Доплера – это изменение частоты отражённой волны при движении наблюдаемого объекта. Модуль постоянно излучает в пространство радиоволновое излучение определённой частоты (около 3150 МГц). Отражаясь от объекта, волна возвращается и фиксируется датчиком. Если её частота несколько изменилась, значит, объект находится в движении.

В случае обнаружения движения датчик выставляет на выходе OUT логическую единицу (3.3 В). Причём датчик может работать в двух режимах: перезапускаемом (retriggerable) и неперезапускаемом (non-retriggerable).

  • перезапускаемый режим – датчик будет держать на выходе OUT логическую единицу так долго, сколько будет фиксировать движение;
  • неперезапускаемый режим – датчик будет держать на выходе OUT логическую единицу установленное время (от 2 до 300 секунд).

Режим задаётся так. Если на входе «1» микросхемы BISS0001 логическая единица – режим перезапускаемый, если логический ноль – неперезапускаемый. В данном модуле на входе «1» микросхемы 3.3 В, т.е. он работает в перезапускаемом режиме.

Для регулировки времени срабатывания триггера (времени удержания импульса на выходе OUT) служит место для конденсатора C-TM. Без установленного конденсатора время срабатывания триггера – 2 сек. Добавление ёмкости повысит длительность импульса триггера.

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

Для регулировки дальности обнаружения датчика служит место для резистора R-GN. По умолчанию датчик настроен на максимальною дистанцию обнаружения 7…9 м. Добавление резистора сопротивлением 1 МОм снизит дистанцию примерно в 1.5…2 раза.

Вывод CDS соединён с выводом 9 микросхемы BISS0001, который позволяет отключить датчик (активация/деактивация). К этому выводу в параллель (на место CDS в углу платы на лицевой стороне модуля) можно подключить фоторезистор, который будет включать датчик только в тёмное время суток. А пока освещения достаточно, его сопротивление маленькое, и радиоизлучатель будет выключен. С помощью резистора на месте R-CDS можно регулировать порог срабатывания фоторезистора. Если же просто «посадить» выход CDS на землю, то датчик будет неактивен.

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

В документации приведена рекомендация по размещению датчика RCWL-0516. Датчик крепится на потолке помещения на высоте не более 7 метров.

Пример размещения датчика RCWL-0516 внутри помещения Пример размещения датчика RCWL-0516 внутри помещения

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

Читайте также  В чём ошибка подключения варочной панели?

2 Подключение и работа радара RCWL-0516

Сначала проверим работоспособность датчика RCWL-0516 без Arduino. Для индикации подключим к выходу OUT датчика светодиод. Когда датчик будет детектировать движение, на выходе OUT будет появляться напряжение 3.3 В, и светодиод будет загораться.

Схема подключения датчика RCWL-0516 Схема подключения датчика RCWL-0516

А вот так это выглядит вживую:

Вывод срабатывания датчика RCWL-0516 на светодиод Вывод срабатывания датчика RCWL-0516 на светодиод

Очевидно, что для чтения показаний датчика RCWL-0516 с помощью Arduino, достаточно прочитать логический уровень на любом входе. Например, будем использовать аналоговый вход A0. Но просто прочитать значение – слишком простая задача. Давайте будем передавать информацию о срабатывании датчика по радиоканалу на удалённое устройство. В роли удалённого устройства также будет Arduino. Радиоканал устроим с помощью уже известной нам пары XY-MK-5V и FS1000A (вот здесь и здесь).

Передатчик будет выглядеть так:

Передатчик показаний датчика RCWL-0516 на Arduino и FS1000A Передатчик показаний датчика RCWL-0516 на Arduino и FS1000A

Здесь данные с выхода OUT датчика RCWL-0516 поступают на аналоговый вход A0 Arduino. А выход TX (D0) последовательного порта Arduino идёт на ножку DATA передатчика. Питается и датчик движения, и передатчик напряжением с выхода 5V Arduino.

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

Допустим, когда датчик RCWL-0516 в состоянии ожидания, мы будем передавать по радио число 0xF0 , а когда датчик фиксирует движение, будем передавать 0x0F . Когда датчик зафиксирует движение, также будем зажигать встроенный светодиод Arduino. Таким образом, скетч передатчика будет такой:

Скетч передатчика показаний датчика RCWL-0516 (разворачивается)

Давайте сначала подключим приёмник к компьютеру с помощью преобразователя UART-USB и посмотрим, что вообще мы принимаем из радиоэфира (см. статью для подробностей).

Данные, принимаемые из радиоэфира Данные, принимаемые из радиоэфира

Видно, что в целом мы видим то, что и хотим увидеть: числа 0x0f и 0xf0. Но встречаются и искажения информации, вызванные шумами радиоэфира, от которых придётся избавляться. Самый простой способ – брать несколько соседних значений. И если они все равны ожидаемому, то считаем это за срабатывание. Поэтому скетч для приёмника будет несколько сложнее.

Акустический радиолокационный дисплей с Ардуино

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

Дополнительная модификация датчика позволяет обнаруживать несколько объектов с каждым пингом.

Шаг 1. Комплектующие и инструменты

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

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

Следующие детали были куплены в обычном магазине:

  • 1 — пластиковый контейнер для пищевых продуктов.
  • 1 — миниатюрный переключатель.
  • 1 — лента (используется для крепления проводов от датчика).
  • 1 — лента (используется для крепления датчика).
  • 1 — кусок из алюминия толщиной 20 мм размером 40 х 55 мм.
  • 6 — 9 мм нейлоновых прокладок.
  • 3 — кабельные стяжки.
  • 13 — болтики 3 мм x 6 мм.
  • 1 — 3-мм гайка.
  • 4 — болтики 4 мм x 10 мм.
  • 2 — 4 мм гайки.

Эти детали заказаны на АлиЭкспресс:

  • 1 — микроконтроллер Arduino Uno R3 в комплекте с USB-кабелем.
  • 1 — 28BJY-48 5-вольтовый шаговый двигатель в комплекте с контроллером ULN2003.
  • 1 — 5-миллиметровый латунный шестигранный вал для колесной пары для моделей автомобилей.
  • 1 — ультразвуковой датчик HY-SRF05 (или HC-SRF04).

Шаг 2. Схема подключения

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

Эта модификация одинакова для ультразвуковых датчиков HC-SR04 и HY-SRF05 и позволяет обнаруживать множественные эхо-сигналы. Если у вас есть HC-SR04, интегральная схема к которой вы припаиваете провод обозначается U2.

Шаг 3. Как это работает

Механика

Все части расположены внутри пластмассового контейнера для пищевых продуктов. Питание обеспечивается от USB-порта. Схема содержит Arduino, ультразвуковой датчик, шаговый двигатель и микропереключатель для перемещения датчика в его «стартовое» положение. Микропереключатель необходим, так как невозможно вращать шаговый двигатель вручную из-за его внутренней зубчатой ​​передачи 64:1.

При первом включении Arduino поворачивает датчик в свое начальное положение, как определено микропереключателем, затем обращается к дисплею пока не получит ответ.

Шаговый двигатель 28BJY-48 имеет «угол шага» 5,625/64 градуса, что означает, что шаги на 1 градус невозможны (хотя сетка обозначена на 0,80 градуса).

180 / (угол поворота) = 180*64 / 5.625 = 2048

который равномерно делится на 8. Если мы увеличим число от 0 до 2048 и разделим на 8, получится 256 вариантов, когда мы получим остаток от нуля. Мы просто отправляем «пинг», когда остаток равен нулю. Это соответствует «пингованию» каждого Пи/256 радианов или 0.703125 градусов.

Программное обеспечение

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

  • Азимут
  • Дистанция1 (Distance1)
  • Дистанция2 (Distance2)
  • Направление

Затем на экране отображаются «расстояние(-я)» для каждого «азимута». Информация «направление» используется для создания отображения (визуализации) «точек», появляющихся за «лучом» при вращении.

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

Программное обеспечение «Processing 3», используемое для записи дисплея и может быть загружено с processing.org.

«Processing 3» поддерживает 2D и 3D-графику и очень похожа на Arduino IDE (англ. — Integrated Development Environment). Основными визуальными отличиями являются «графическое окно» при запуске кода и использование функции «draw()» вместо «loop()» Ардуино.

Шаг 4. Экран

Нужно было создать графический дисплей на 180 градусов, поскольку он обеспечивает «радарную тень», в которой можно стоять во время экспериментов. Такой дисплей также совместим с сервомотором, если вы захотите его использовать. Полный 360-градусный дисплей можно получить путем настройки кода.

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

Показывает красную линию, изображающую «луч». Текст теперь горизонтальный.

Красная линия на фото выше была повернута на 0.80 градусов по 256 азимутальным позициям. На фотографии ниже внешние части сетки не покрываются, поскольку ширина луча слишком узкая. Это приводит к некоторым странным артефактам.

Увеличение ширины луча устранило эти артефакты.

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

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

Анимация

Анимированные части графического дисплея используют 3D-графику, чтобы значительно упростить код. Чтобы понять, как это возможно, сделаем «30-градусную линию» с постоянным радиусом от начальной координаты XY (0,0).

2D-графика требует использования sin (30) и cos (30) для вычисления конечных координат XY линии:

3D-графика не требует использования тригонометрии. Мы просто поворачиваем координаты сетки XY вокруг оси Z, затем рисуем горизонтальную линию.

В любом случае это работает, но второй метод поддается «ping» интервалам Пи/256 радианов.

Затухающие линии

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

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

Шаг 5. Монтаж кронштейна

Шаблон сверления для подходящего кронштейна из алюминия показан выше. Расположите два наружных «крепежных отверстия» ниже датчиков передачи (T) и приема (R). Лучшие результаты получаются, если сенсор вращается вокруг приемного (R) датчика, а не на полпути между двумя датчиками. Три отверстия дадут возможность поэкспериментировать.

Шаг 6. Сборка

Отверстие для кабеля USB

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

Вал-расширитель

Замените один из 4 мм «зажимных винтов» в удлинителе вала болтом 4 мм x 10 мм. Этот болт используется для активации переключателя.

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

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

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

Остальные компоненты

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

Монтаж датчика

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

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

Шаг 7. Установка программного обеспечения

Установите всё что нужно в следующем порядке, как написано ниже.

Arduino IDE

Загрузите и установите Arduino IDE (интегрированное окружение разработки), если еще не установлена. Скачать можно здесь.

Processing 3

Загрузите и установите «Processing 3» отсюда.

Передатчик акустического радара

Скопируйте содержимое файла ниже в «эскиз» Arduino, сохраните его, а затем загрузите в свой Arduino Uno R3:

Закройте Ardino IDE, но оставьте кабель USB подключенным.

Приемник акустического радара

Скопируйте содержимое файла ниже в скетч для «Processing 3» (может понадобиться переименовать расширение .ino в .pde):

Шаг 8. Итоговый результат

Нажмите левую кнопку «Запустить» (Run) в окне «Processing 3», и ваш проект запустится. Попробуйте обнаружить разные объекты.

Для объектов поблизости требуется, чтобы датчик передачи (Т) был низким, чтобы предотвратить проход «луча» над объектом.

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

На фото показан собранный радар Ардуино.

На этой фотографии показан фактический снимок экрана из семи объектов.

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

Читайте также  Установка фильтра для воды своими руками

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

Непрерывные линии, содержащие как красные, так и синие точки, представляют собой единый объект, часть которого находится в тени.

Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков

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

О датчиках

Соответственно датчики делят на две группы:

Для считывания цифровых значений могут использоваться как цифровые, так и аналоговые входы микроконтроллера, в нашем случае авр на плате Arduino. Аналоговые же датчики должны подключаться через аналогово-цифровой преобразователь (АЦП). ATMEGA328, именно он установлен в большинстве плат АРДУИНО (подробнее об этом на сайте есть статья), содержит в своей схеме встроенный АЦП. На выбор доступно целых 6 аналоговых входов.

Если вам этого не хватает, вы можете с помощью дополнительного внешнего АЦП подключить к цифровым входам, но это усложнит код и увеличит его объём, из-за добавления алгоритмов обработки и управление АЦП. Тема аналогово-цифровых преобразователей достаточно широка что можно сделать о них отдельную статью или цикл. Проще использовать плату с их большим количеством или мультиплексоры. Давайте рассмотрим, как подключить аналоговые датчики к Arduino.

Подключение аналоговых датчиков к Arduino, считывание показаний датчиков

Общая схема аналоговых датчиков и их подключения

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

Схема выше позволит считывать значения от 0 до 1023, благодаря тому, что всё напряжение падает на потенциометре. Здесь работает принцип делителя напряжения, в любом положении движка напряжение распределяется по поверхности резистивного слоя линейно или в логарифмическом масштабе (зависит от потенциометра) на вход попадает та часть напряжения, которая осталась между выводом ползунка (скользящего контакта) и землёй (gnd). На макетной плате такое соединение выглядит так:

Схема подключения аналоговых датчиков

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

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

Схема и расчётные соотношения для определения значения напряжения на нижнем плече

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

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

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

Фоторезистор

Рисунок показывает подключение фоторезистора к ардуино.

Схема подключения фоторезистора к ардуино

Программная часть

Прежде чем рассказать о подключении конкретных датчиков, я решил рассмотреть программные средства для их обработки. Все аналоговые сигналы считываются с таких же портов с помощью команды analogRead(). Стоит отметить, что у Arduino UNO и других моделей на 168 и 328 атмеге 10-разрядный АЦП. Это значит, что микроконтроллер видит входной сигнал в виде числа от 0 до 1023 – итого 1024 значения. Если учесть, что напряжение питания 5 вольт, то чувствительность входа:

5/1024=0.0048 В или 4.8 мВ

То есть при значении 0 на входе, напряжение равно 0, а при значении 10 на входе – 48 мВ.

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

нч – нижнее число до преобразования функцией;

внч – нижнее число после обработки функцией (на выходе);

Практическое применение для преобразования функцией входного значения для передачи в ШИМ (максимальное значение 255, для преобразования данных из ацп в выход шим 1024 делят на 4):

Вариант 1 – деление.

x = analogRead(pot) / 4;

// будет получено число от 0 до 1023

// делим его на 4, получится целое число в от 0 до 255 analogWrite(led, x);

Вариант 2 – функция MAP – открывает более широкие возможности, но об этом позже.

val = map(val, 0, 1023, 0, 255);

analogWrite(led, map(val, 0, 1023, 0, 255))

Далеко не у всех датчиков на выходе присутствует 5 Вольт, т.е. число 1024 не всегда удобно делить для получения тех же 256 для ШИМа (или любых других). Это может быть и 2 и 2.5 вольта и другие значения, когда максимумом сигнала будет, например 500.

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Популярные аналоговые датчики

Общий вид датчика для ардуино и его подключение изображено ниже:

Как подключить аналоговый датчик

Обычно есть три выхода, может присутствовать четвертый – цифровой, но это особенности.

Расшифровка обозначения выводов аналогового датчика:

G – минус питания, общая шина, земля. Может обозначаться как GND, «-»;

V – плюс питания. Может обозначаться как Vcc, Vtg, «+»;

S – выходной сигнал, возможные обозначения – Out, SGN, Vout, sign.

Новички для освоения считывания значения датчиков выбирают проекты всевозможных термометров. Такие датчики бывают в цифровом исполнении, например DS18B20, и в аналоговом – это всевозможные микросхемы типа LM35, TMP35, TMP36 и другие. Вот пример модульного исполнения такого датчика на плате.

Аналоговый датчик на TMP36

Погрешность датчика от 0.5 до 2 градуса. Построен на микросхеме TMP36, как и её многие аналоги его выходные значения равняются 10 мВ/°С. При 0° выходной сигнал – 0 В, а дальше прибавляется по 10 мВ на 1 градус. То есть при 25.5 градусах напряжение – 0.255 В, возможно отклонение в пределах погрешности и собственного нагрева кристалла ИМС (до 0.1°С).

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

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

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

Коды для работы с большинством датчиков довольно объёмны, поэтому я их приводить все не буду, их легко найти в сети по запросу «название датчик + Arduino».

Следующий датчик, который часто используют ардуинщики-роботостроители – это датчик линии. Он основан на фотоэлектронных приборах, типа фототранзисторов.

Датчик линии

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

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

Дополню смежным датчиком – датчик расстояния от фирмы Sharp, тоже используется в робототехнике, а также в условиях контроля положения предметов в пространстве (с соответствующей ТХ погрешностью).

Датчик расстояния Sharp

Работает на том же принципе. Библиотеки и примеры скетчей и проектов с ними в большом количестве есть на сайтах посвященных Arduino.

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

Заключение

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

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

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

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Обучение Интернет вещей и современные встраиваемые системы

Изучить C, механизмы отладки и программирования микроконтроллеров;

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

Получить удостоверение и сертификат, подтверждающие полученные знания.

Starter box для первых экспериментов в подарок!

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: