Интегральные малопотребляющие датчики положения на основе эффекта холла

Содержание

Спектры измеряемых токов.

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

Рис.1.Форма тока, потребляемого асинхронным электродвигателем, и его спектр

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

Рис.2 Форма и спектр тока асинхронного электродвигателя при использовании статического преобразователя частоты питающего напряжения.

Похожая ситуация складывается и напряжением питания двигателей постоянного тока. Как правило, двигатель постоянного тока питается от трехфазного выпрямителя переменного тока. Если регулирование частоты вращения агрегата организовано так, что выпрямленное напряжение питания не меняется, искажения напряжения питания и потребляемого тока будут минимальными, уложатся в 2% от выпрямленного напряжения (тока якоря) и проявятся, в основном на частоте 300Гц. Но в большинстве практических случаев регулирование частоты вращения двигателя производится статическим регулятором выпрямленного напряжения. Форма тока якоря двигателя при использовании наиболее распространенного тиристорного регулятора напряжения приведена на рис. 3. Там же приведен и спектр тока якоря.

Рис. 3. Форма и спектр тока якоря при питании машины постоянного тока от тиристорного регулятора напряжения.

Сказанное подтверждает необходимость измерения спектра тока, потребляемого электродвигателем, по крайней мере, до 10кГц, при решении задач диагностики, как электропривода, так и приводимого во вращение механизма.

Основы цветовой маркировки резисторов

Для определения сопротивления резисторов используется следующая формула:

R= { (AB*10c)Ω ± T% }

где
A – значение цвета в первой полоске,
B – значение цвета во второй полоске,
C – значение цвета в третьей полоске,
T – значение цвета в четвертой полоске.

В следующей таблице представлены цветовые коды резисторов.

Цвет Числовое значение цвета Множитель (10c) Допуск
черный 10
коричневый 1 101 ± 1%
красный 2 102 ± 2%
оранжевый 3 103
желтый 4 104
зеленый 5 105
синий 6 106
фиолетовый 7 107
серый 8 108
белый 9 109
золотой 10-1 ± 5%
серебряный 10-2 ± 10%
нет полоски ± 20%

К примеру, если цветовые коды на резисторе Brown – Green – Red – Silver (коричневый – зеленый – красный – серебро), сопротивление резистора рассчитывается следующим образом:

Исходя из приведенной формулы для расчета сопротивления резистора R = AB*10c получаем:

Четвертая полоска показывает допуск резистора, в нашем случае это ± 10%.

То есть актуальное сопротивление данного резистора будет лежать в диапазоне от 1350 до 1650 Ом.

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

4Описание датчика тока,напряжения и мощности INA219

Датчик INA219 – цифровой датчик тока, напряжения и мощности. Он позволяет измерять напряжения от 0 до 26 вольт и ток от 0 до 3,2 ампер. Питается датчик напряжением от 3 до 5,5 В. Существуют модули, полностью готовые к подключению к Arduino. Один из таких модулей GY-219:


Модуль GY-219 с датчиком тока INA219: назначение выводов и частей

Датчик INA219 выполняется в двух разновидностях: A и B. Последняя отличается повышенной точностью и меньшей погрешностью. На фото ниже как раз модификация INA219B.


Модуль GY-219 с датчиком тока INA219

Датчик INA219 имеет 12-разрядный АЦП, соответственно при максимуме измерений ±3,2 А получается разрешающая способность 0,8 мА. Однако можно настроить датчик таким образом, чтобы уменьшить диапазон измеряемой силы тока до ±400 мА; при этом разрешающая способность датчика увеличится до 0,1 мА. При этом можно откалибровать датчик, записав калибровачные данные в специальный регистр. Измеренные данные силы тока, напряжения и можности хранятся в трёх соответствующих регистрах. Кстати, датчик INA219 позволяет осуществлять аппаратную фильтрацию по 128 отсчётам, если измеряемый ток имеет сильные наводки.

Для конфигурирования датчика INA219 и для считывания показаний с него используется последовательный интерфейс I2C. Причём адрес на шине можно задать с помощью перемычек A0 и A1 на модуле. Допустимые адреса:

  • 0x40 (без перемычек);
  • 0x41 (с перемычкой A0);
  • 0x44 (с перемычкой A1);
  • 0x45 (установлены обе перемычки).

Соответственно, на одной шине IIC можно иметь до 4-х таких датчиков, подключённых одновременно.

Применение датчиков Холла

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

Применение линейных датчиков

  • датчики тока
  • тахометры
  • датчики вибрации
  • детекторы ферромагнетиков
  • датчики угла поворота
  • бесконтактные потенциометры
  • бесколлекторные двигатели постоянного тока
  • датчики расхода
  • датчики положения

Применение цифровых датчиков

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

Работа схемы

Схема рассматриваемого нами цифрового вольтметра на основе платы Arduino представлена на следующем рисунке.

В схеме необходимо сделать следующие соединения:

  1. Соедините высоковольтную часть трансформатора (220V) с источником напряжения, а его низковольтную часть (12v) — с делителем напряжения в схеме.
  2. Соедините резистор 10 кОм последовательно с резистором 4,7 кОм. Убедитесь в том, что на вход схемы напряжение будет поступать с именно с резистора 4,7 кОм (не перепутайте резисторы).
  3. Соедините диод как показано на схеме.
  4. Подсоедините конденсатор и стабилитрон как показано на схеме.
  5. Соедините отрицательный вывод диода с контактом A0 платы Arduino.

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

Зачем нужен делитель напряжения

Поскольку мы используем трансформатор 220/12 это значит что на его низковольтной стороне будет напряжение 12 В, которое не подходит для питания платы Arduino (не подходит в качестве ее входного напряжения). Поэтому мы и используем делитель напряжения чтобы получить подходящее напряжение для платы Arduino.

Зачем нужны диод и конденсатор

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

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

Назначение стабилитрона

Можно повредить плату Arduino если на ее контакт подать напряжение более 5 В. Поэтому, чтобы напряжение на контакте Arduino не превысило 5 В, в схеме и используется стабилитрон.

Исходный код программы

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

В программе мы должны сообщить плате Arduino, к каким ее контактам подключен ЖК дисплей. Контакт RS ЖК дисплея подключен к цифровому контакту 2 платы Arduino, а контакт Enable – к цифровому контакту 3 платы Arduino. Контакты данных ЖК дисплея (D4-D7) подключены к цифровым контактам 4,5,6,7 платы Arduino.

Arduino

LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7

1 LiquidCrystallcd(2,3,4,5,6,7);//rs,e,d4,d5,d6,d7

Затем в программе мы должны инициализировать необходимые нам переменные.

Arduino

int Vin=5; //напряжение на контакте 5V платы arduino
float Vout=0; //напряжение на контакте A0 платы arduino
float R1=3300; //значение сопротивления известного резистора
float R2=0; // значение сопротивления неизвестного резистора

1
2
3
4

intVin=5;//напряжение на контакте 5V платы arduino

floatVout=;//напряжение на контакте A0 платы arduino

floatR1=3300;//значение сопротивления известного резистора

floatR2=;// значение сопротивления неизвестного резистора

Далее в программе мы должны инициализировать наш ЖК дисплей.

Arduino

lcd.begin(16,2);

1 lcd.begin(16,2);

Затем мы должны считать значение на выходе АЦП контакта A0.

Далее значение с выхода АЦП (оно в диапазоне от 0 до 1023) конвертируется в значение напряжения.

Arduino

buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;

1
2

buffer=a2d_data*Vin;

Vout=(buffer)1024.0;

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

Arduino

buffer=Vout/(Vin-Vout);
R2=R1*buffer;

1
2

buffer=Vout(Vin-Vout);

R2=R1*buffer;

Далее найденное значение сопротивления резистора R2 выводится на экран ЖК дисплея.

Arduino

lcd.setCursor(4,0);
lcd.print(«ohm meter»);
lcd.setCursor(0,1);
lcd.print(«R (ohm) = «);
lcd.print(R2);

1
2
3
4
5

lcd.setCursor(4,);

lcd.print(«ohm meter»);

lcd.setCursor(,1);

lcd.print(«R (ohm) = «);

lcd.print(R2);

Если вас заинтересовал данный проект, то вы можете следующие похожие проекты на нашем сайте:
— цифровой вольтметр на Arduino;
— цифровой амперметр на Arduino;
— частотомер на Arduino;
— измеритель емкости на Arduino.

Далее приведен полный код программы.

Arduino

#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7
int Vin=5; //напряжение на контакте 5V платы arduino
float Vout=0; //напряжение на контакте A0 платы arduino
float R1=3300; //значение сопротивления известного резистора
float R2=0; // значение сопротивления неизвестного резистора
int a2d_data=0;
float buffer=0;
void setup()
{
lcd.begin(16,2);
}
void loop()
{
a2d_data=analogRead(A0);
if(a2d_data)
{
buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;
buffer=Vout/(Vin-Vout);
R2=R1*buffer;
lcd.setCursor(4,0);
lcd.print(«ohm meter»);
lcd.setCursor(0,1);
lcd.print(«R (ohm) = «);
lcd.print(R2);

delay(1000);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

#include<LiquidCrystal.h>

LiquidCrystallcd(2,3,4,5,6,7);//rs,e,d4,d5,d6,d7

intVin=5;//напряжение на контакте 5V платы arduino

floatVout=;//напряжение на контакте A0 платы arduino

floatR1=3300;//значение сопротивления известного резистора

floatR2=;// значение сопротивления неизвестного резистора

inta2d_data=;

floatbuffer=;

voidsetup()

{

lcd.begin(16,2);

}

voidloop()

{

a2d_data=analogRead(A0);

if(a2d_data)

{

buffer=a2d_data*Vin;

Vout=(buffer)1024.0;

buffer=Vout(Vin-Vout);

R2=R1*buffer;

lcd.setCursor(4,);

lcd.print(«ohm meter»);

lcd.setCursor(,1);

lcd.print(«R (ohm) = «);

lcd.print(R2);

delay(1000);

}

}

Программная реализация

Алгоритм работы прибора и сам код довольно сложны. Необходимо установить диапазон измерения, управляя входами ULN2003 (выходы Arduino D10, D11, D12), который вместе с режимом работы (определяется состоянием кнопок) учитывается в дальнейшем. Затем выполняется считывание АЦП для расчета сопротивления и отображение значения на индикаторе.

С целью упрощения программного кода в скетче было использовано несколько библиотек, в том числе Wire.h, LiquidCrystal_I2C и библиотека для работы с EEPROM. Библиотека Wire используется для облегчения процесса обмена данными по шине I2C между Arduino, ЖК индикатором и АЦП. Частота тактового сигнала шины I2C выбрана 400 кГц. Библиотека LiquidCrystal_I2C (не предустановленная в Arduino IDE) помогает взаимодействовать с ЖК-индикатором, а библиотека EEPROM используется для доступа к энергонезависимой памяти МК, обеспечивая хранение информации о режиме работы и диапазоне измерения.

Библиотеки Wire и EEPROM предуставновлены в среде Arduino IDE, библиотеку LiquidCrystal_I2C можно установить с помощью менеджера билиотек.

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

После компиляции скетча в Arduino IDE загрузите его в плату, и, если все правильно собрано, прибор запустится (Рисунок 8).

Рисунок 8. Работа миллиомметра, если к измерительным щупам ничего не подключено.

Если подключить к измерительным щупам резистор с сопротивлением миллиомного диапазона, то на индикаторе вы увидете значение сопротивления (Рисунок 9).

Рисунок 9. К измерительным щупам миллиомметра подключен тестовый резистор.

Ниже вы можете посмотреть видео о работе миллиомметра.

https://youtube.com/watch?v=MWtQb3NEk94

Измерение тока в положительном полюсе нагрузки

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

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

Но есть ОУ, которые способны работать при входном синфазном напряжении, значительно превышающем напряжение питания. В схеме с применением ОУ LT1637, изображенной на рис. 3, напряжение питания нагрузки может достигать 44 В при напряжении питания ОУ, равном 3 В. Для измерения тока в положительном полюсе нагрузки с весьма малой погрешностью подходят такие инструментальные усилители, как LTC2053, LTC6800 от Linear Technology, INA337 от Texas Instruments. Для измерения тока в положительном полюсе есть и специализированные микросхемы, например — INA138 и INA168.

Практические ниши применения

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

Опять же. Применяя Arduino одновременно с ACS712, как наиболее распространенным датчиком тока платформы, можно использовать микроконтроллер именно в роли детектирующего прибора, который в зависимости от определенного времени производит замер потребления конечной сети. Или как очень «умный» мультиметр, с возможностью построения On-line графиков на дополнительно соединенном к аппарату экране или внешнем компьютере.

ЖК дисплей 16×2

ЖК дисплей 16×2 является одним из самых распространённых дисплеев для приложений встраиваемой электроники. У этого дисплея есть 2 важных регистра – регистр команд и регистр данных. Регистр команд используется для передачи команд, таких, к примеру, как очистить экран, вернуть курсор в исходное положение и т.п. Регистр данных используется для передачи данных которые будут отображаться на экране дисплея. В следующей таблице представлено назначение контактов (распиновка) ЖК дисплея 16×2.

Контакт Символ I/O (ввод/вывод) Описание
1 Vss земля
2 Vdd +5V (питающее напряжение)
3 Vee питание для управления контрастностью
4 RS I RS=0 — регистр команд, RS=1 -регистр данных
5 RW I R/W=0 — запись , R/W=1 — чтение
6 E I/O Enable (доступен)
7 D0 I/O 8-битная шина данных
8 D1 I/O 8-битная шина данных
9 D2 I/O 8-битная шина данных
10 D3 I/O 8-битная шина данных
11 D4 I/O 8-битная шина данных
12 D5 I/O 8-битная шина данных
13 D6 I/O 8-битная шина данных
14 D7 I/O 8-битная шина данных
15 A +5V для подсветки дисплея
16 K земля

Характеристики оборудования, его настройка, примечания

Здесь начать стоит непосредственно с преобразователя аналогового сигнала в цифровой, а конкретно с платы-посредника между Arduino и тензодатчиками — HX711:

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

Коэффициент Пиковый ток
32 ± 80 мА
64 ± 40 мА
238 ± 20 мА

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

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

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

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

Arduino HX711
5V VCC
GND GND
DT Цифровой вывод
SCK Цифровой вывод

Закончив с конвертером аналога в цифру для Ардуино, перейдем к характеристикам, которыми обладают сами тензодатчики:

На выходе полу мостового тензодатчика три провода, которыми он подключается к HX711. Классически они имеют следующее цветовое разделение:

Контакт Цвет
А+ Белый
E- Черный
E+ Красный

У мостового детектора четыре исходящих контакта, имеющих следующую цветовую дифференциацию:

Контакт Цвет
А+ Белый
E- Черный
E+ Красный
A- Зеленый

На обоих видах резистивных детекторов присутствуют отверстия под крепежные болты M4/5.

Как настроить датчик тока на полетном контроллере квадрокоптера?

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

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

Состоит он из двух разъемов XT-60, автомобильного предохранителя на 10 ампер и трех кусков провода сечением не меньше 1,5 мм 2 .

Одним куском провода мы напрямую соединяем разъемы для аккумуляторов. Другие 2 куска припаиваем к разъемам, но оставляем разрыв. В этот разрыв припаиваем предохранитель. Он нам нужен для того, чтобы предотвратить порчу мультиметра. Большинство измерительных приборов, которые есть в продаже, имеют ограничение по измеряемому току в 10 А.

Ну вот и все готово для настройки датчика тока квадрокоптера.

Проверенный «бюджетный» вариант

Вот, что надо предпринять для изготовления такого варианта:

  • в ферритовом кольце пропилить канавку по толщине корпуса;
  • на эпоксидный клей посадить МС;
  • сделать определенное количество витков на кольце (кол-во витков будет зависеть от конкретного напряжения);
  • в итоге получится бесконтактный вариант реле, функционирующий на электромагнитной основе.

Ферритовое кольцо в роли датчика

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

Подключение датчика привязки по Z к плате PLC4x-2

Всем привет! Подключаю на ось Z кнопку нуля, электрического действия.

Плата PLC4x-2, модель.

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

Одна голова хорошо, а две лучше. Русская народная чпу поговорка.

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

на пин «probe» и gnd

на пин «probe» и gnd

На Вашей плате надо воткнуться куда-то на «XP25, XP26, XP27, XP28, XP29, XP30 (клемный разъем) – подключение внешних датчиков и кнопки E-STOP, оптовходы.» Но я там нумерацию пинов не понимаю. Придётся номер определять через мач автоматически.

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

Там (на плате) нет специального контакта Probe, используйте любой, получится.

Правильно ли я вообще выбрал подключение в порт оси Z?

Одна голова хорошо, а две лучше. Русская народная чпу поговорка.

Я бы так попробовал:

Но может быть я не прав.

Одна голова хорошо, а две лучше. Русская народная чпу поговорка.

Таким образом, как я понимаю, нельзя брать для этих вводов общие со станком землю и питание 12В.

Ну или я что то не так понимаю )))

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

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

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

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

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

5Подключение датчика тока и напряжения INA219 к Arduino

Для начала пойдём простым путём: скачаем готовую библиотеку, загрузим в Arduino и посмотрим на результат. Существует несколько библиотек для работы с нашим датчиком. Предлагаю воспользоваться вот этой популярной библиотекой для INA219 от Adafruit. Скачаем её, установим стандартным образом и загрузим в Arduino скетч из примеров getcurrent.

Если скетч не компилируется, а в сообщениях об ошибках присутствуют какие-то недостающие компоненты (например, Adafruit_I2CDevice.h или Adafruit_BusIO_Register.h, то необходимо доустановить их. Проще всего это сделать так. Для этого способа требуется подключение к интернету на компьютере, где запущена среда разработки. Открыть в среде Arduino IDE менеджер библиотек: в меню Tools Manage Libraries…. Откроется окно Library Manager. В поле поиска следует ввести adafruit busio. Когда библиотека будет обнаружена и покажется в списке, нажать кнопку Install.

Установка недостающих библиотек через менеджер библиотек Arduino IDE

Подключим модуль GY-219 к Arduino по следующей схеме. SDA и SCL датчика можно подключить как к аналоговым входам A4 и A5 Arduino, так и к специально выделенным портам SDA и SCL (если они есть на вашей плате).

Схема подключения датчика INA219 к Arduino

В качестве нагрузки может быть любой источник, например, электромотор, лампа или просто мощный резистор. У меня это 5 соединённых параллельно 5-ваттных 16-омных резисторов. В качестве источника питания также может выступать любой из имеющихся у вас источников. Я буду использовать лабораторный источник питания.

Датчик INA219 подключён к Arduino

В результате выполнения скетча получится следующий вывод:

Результат работы скетча «GetCurrent» для датчика тока INA219

Отлично! Всё работает! Как говорится, бери – и пользуйся.

Данная библиотека позволяет также проводить калибровку датчика INA219 при необходимости. Подробности – в описании библиотеки и в самих исходниках (в файле Adafruit_INA219.cpp библиотеки даётся большое число пояснений).

Расчет частоты и индуктивности

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

f=1/(2*time)

где time (время) будет определяться с помощью функции pulseIn() .

Также нам известна формула для расчета частоты LC контура:

f=1/2*Pi* square root of (LC)

square root – квадратный корень.

Из этого выражения мы можем выразить индуктивность L:

f2 = 1/ (4Pi2LC)L= 1/ (4Pi2 f2C)L = 1/(4* Pi * Pi * f * f * C)

Поскольку синусоидальная волна с выхода LC контура имеет одинаковую длительность положительность и отрицательной полуволны, то компаратор на основе операционного усилителя преобразует ее в прямоугольную волну (последовательность прямоугольных импульсов) с коэффициентом заполнения 50% — мы можем измерить частоту этой прямоугольной волны с помощью функции pulseIn() в Arduino. Эта функция определит нам временной период, который мы затем переведем в значение частоты с помощью выше приведенной формулы. Поскольку функция pulseIn измеряет только один импульс, поэтому чтобы получить правильное значение частоты мы его в формуле умножаем на 2. А когда у нас значение частоты, мы с помощью формулы для LC контура определим значение индуктивности.

Примечание: во время измерения индуктивности (L1) емкость C1) в нашем проекте должна быть 0.1 мкФ, а во время измерения емкости (C1) индуктивность (L1) должна быть равна 10 мГн. Если вы хотите изменить эти значения, то вам необходимо будет внести соответствующие изменения в код программы.

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

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

Наименование Питание (V) Точность Разрешение
(hPa)
Диапазон (hPa) Рабочая температура
(°C)
Интерфейсы Примечание
SPI I2C UEXT
Атмосферные
MOD-BMP085 1.8–3.6 0.03 hPa 0.01 300–1100 (от 500 м ниже уровня моря до 9 км. высоты –40..+85 + + Измерение температуры
GY-BMP280 3.3 0.12 hPa 0.0016 300–1100 –40..+85 + + Измерение температуры до +65, с точностью 0.01
MD-PS002 5V ±0.2% –100–+150 –40..+125 + Только не агрессивные среды
Жидкостные
MS5803-02BA 1.8–3.6 20 см жидкости 30–1100
(10–2000)
–40..+85 + +
MS5803-07BA 1.8–3.6 0–7 мбар
(70 м погружения)
–20..+85 + +
Open-Smart 5V G1/4 0-1.2 MPa Hydraulic Pressure Sensor for Non-Corrosive Water 5 1.5 % 1–2.4 мбар (max 3) 0..+85 Собственный коннектор, соединяемый к I2C через резистор, датчик оснащен термометром

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

Классификация и схемы подключения

Датчики тока предназначаются для оценки параметров постоянного и/или переменного тока. Сравнение выполняется двумя методами. В первом случае используется закон Ома. При установке шунтирующего резистора в соответствии с нагрузкой системы на нём создаётся напряжение, пропорциональное нагрузке системы. Напряжение на шунте может быть измерено дифференциальными усилителями, например, токовыми шунтирующими, операционными или разностными. Такие устройства используются для нагрузок, которые не превышают 100 А.

Измерение переменного тока выполняется в соответствии с законами Ампера и Фарадея. При установке петли вокруг проводника с током там индуцируется напряжение. Этот метод измерения используется для нагрузок от 100 А до 1000 А.

Схема описанных измерений представлена на рисунке:


Слева — измерение малых токов; справа — измерение больших токов

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

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