Измерение напряжения питания arduino: Вольтметр Arduino. Правильное измерение напряжения | Wer

Содержание

WEB–монитор параметров электрической сети

 Предлагаю описание простого и недорогого устройства для измерения напряжения, тока и мощности в электрической сети 220В для потребителей с током потребления не больше 30А с последующим отображением результатов измерения в виде графиков на WEB странице через компьютерную сеть. Это устройство можно собрать самостоятельно следуя этой инструкции. Предполагается что ви обладаете навыками макетирования и программирования микроконтроллеров Arduino.
 Все компоненты, необходимые для сборки устройства, можно приобрести в интернет-магазине, например arduino.ua.
 Нам потребуются:
Микроконтроллер ARDUINO NANO
или любой другой подобный микроконтроллер,
например ARDUINO UNO, MICRO, MINI
Датчик тока ACS712 30A GY-712
Ethernet модуль ENC28J60
Модуль питания TSP-05 220В — 5В 3Вт
или любой другой источник питания 5В для Arduino
Трансформатор 220/12В небольшой мощности
Можно использовать и другие,
например 220/24В, 220/9В, 220/6В.
Но при этом потребуется подобрать
параметры делителя напряжения в схеме.
Четыре резистора 0.25W:
220кОм — 2 шт; 100кОм, 5.6кОм по одной штуке и
электролитический конденсатор на 10 мкФ на напряжение не менее 10В.

Соединительные проводники

мама-мама и провода ПСВ (ВВГ) 0.5мм2 для коммутации цепи 220 В

Ниже приводится принципиальная схема применительно к сети переменного тока 220В до 30А, 6 кВт полной нагрузки. Этот набор оборудования позволяет мониторить и цепи постоянного тока до 30А с доработкой схемы измерения напряжения. В цепях постоянного тока трансформатор не нужен. Достаточно подобрать параметры делителя напряжения и помнить, что при этом не будет гальванической развязки между силовой и измерительной цепью.
 Для измерения тока в электрической сети используется датчик ACS712 30A GY-712, который построен на одноименной микросхеме ACS712ELCTR-30A-T фирмы Allegro. Эта микросхема обеспечивает точное измерение постоянного и переменного электрического тока за счет использования эффекта Холла и обеспечивает гальваническую развязку высоковольтной и измерительной части цепи. Ниже показана принципиальная схема включения микросхемы.
 Измеряемый ток,Ip, протекает от контактов 1, 2 к контактам 3,4. На выходе микросхемы (контакт 7) при Ip=0, напряжение равно половине напряжения питания микросхемы Vout=5/2 = 2.5В. При Ip=+30А (ток протекает в направлении от контактов 1,2 к контактам 3,4) на выходе микросхемы (контакт 7) будет напряжение Vout = 2.5 + 30 * 0.066 = 4.48B. При Ip=-30А (ток протекает в направлении от контактов 3,4 к контактам 1,4) на выходе микросхемы (контакт 7) будет напряжение Vout = 2. 5 — 30 * 0.066 = 0.52B.
 Таким образом, при протекании переменного тока в контролируемой электрической сети, на аналоговом входе А0 микроконтроллера ARDUINO NANO будет напряжение, которое изменяется по синусоиде с частотой, равной частоте в электрической сети. Амплитуда напряжения на входе А0 будет пропорциональна электрическому току (линия А0 на графике внизу).
 Для измерения напряжения в электрической сети используется обычный трансформатор 220/12В, который подключен через четыре резистора и конденсатор к аналоговому входу А1 микроконтроллера ARDUINO NANO. Эти четыре резистора и конденсатор обеспечивают уменьшение амплитуды колебаний напряжения со смещением до напряжения, равном половине напряжения питания (5/2=2.5В) на входе микроконтроллера. В итоге, на входе А1 при напряжении в электрической сети равном нулю будет напряжение 2.5В. В точке максимума амплитуды сетевого напряжения 220В, напряжение на А1 будет составлять примерно 3. 6B. В точке минимума амплитуды сетевого напряжения, напряжение на А1 будет примерно 1.44B. Это напряжение можно подогнать к нужному диапазону путем подбора пары резисторов 100кОм и 5.6кОм.
 В результате на входе А1 должна быть синусоида, как показано на графике внизу.
 Если в контролируемой электрической сети ток протекает через активную нагрузку, например электронагреватель или лампу накаливания, то синусоиды А0 и А1 будут совпадать по фазе. Т.е., синусоида тока и напряжения будут переходить через ноль в одно и тоже время, как показано на графике вверху.
 Если потребителем будет нагрузка с индуктивной составляющей, например, трансформатор или электродвигатель, то синусоиды А0 и А1 не будут совпадать по фазе. Синусоида тока и напряжения будут переходить через ноль в разное время со смещением φ, как показано графике внизу. При этом синусоида тока (А0) будет отставать.
 В случае, если потребителем будет нагрузка с емкостной составляющей, синусоида А0 будет опережать синусоиду А1, как показано на графике внизу.
 В цепях переменного синусоидального тока, по причине постоянного изменения значения напряжения и тока, мощность нельзя вычислить путем простого перемножения напряжения на ток. Поэтому, выделяют сразу три вида электрической мощности: активную, реактивную и полную.
Активная мощность в цепях синусоидального тока
Единица измерения — ватт (обозначение: Вт; международное обозначение: W).


 где P — активная мощность, Вт;
  U — среднеквадратическое напряжение, В;
  I — среднеквадратический ток, А;
  φ — угол сдвига фаз напряжения и тока, град.
Активная мощность определяет ту часть электрической энергии, которая используется непосредственно на выполнение полезной работы.

Реактивная мощность в цепях синусоидального тока
Единица измерения — вольт-ампер реактивный (обозначение: вар; международное обозначение: var)


 где Q — реактивная мощность, вар;
  U — среднеквадратическое напряжение, В;
  I — среднеквадратический ток, А;
  φ — угол сдвига фаз напряжения и тока, град.
Реактивная мощность определяет ту часть электрической энергии, которая бесполезно расходуется в электрических сетях.

Полная мощность в цепях синусоидального тока
Единица полной электрической мощности — вольт-ампер (обозначение: ВА; международное обозначение: VA)


 где S — полная мощность, ВА;
  P — активная мощность, Вт;
  Q — реактивная мощность, вар;

Полная мощность соответствует всей энергии, которая расходуется в электрических сетях.


Алгоритм вычисления следующий.
 Через аналоговые входы А0 и А1 постоянно считываем текущие значения напряжения и тока, возводим их в квадрат и суммируем. С периодичностью в одну секунду, вычисляем среднеквадратичное значение для напряжения и тока. Произведение среднеквадратичного значения напряжения и тока дает величину полной мощности.
 Ниже приведен листинг программы.
 Вам потребуется библиотека UIPEthernet. В IDE Arduino 1.8.4 еее можно установить через меню «Скетч»-«Подключить библиотеку» — «Управлять библиотеками» — «Менеджер библиотек» — UIPEthernet. Также можно скачать библиотеку с GitHub по адресу https://github.com/UIPEthernet/UIPEthernet.
/*ПРОГРАММА ДЛЯ ИЗМЕРЕНИЯ ПАРАМЕТРОВ ЭЛЕКТРИЧЕСКОЙ СЕТИ 
Контроллер - Arduino Nano
Ethernet модуль - ENC28J60
Датчик тока - ACS712 30A GY-712
Трансформатор для измерения напряжения - 220/12В
  
Разработка - LIC CONTROL  http://lic.com.ua
Схема: http://lic.com.ua/article08.htm
Соединение Arduino Nano  ENC28J60
    D2  - INT
    D3  - RESET
    D10 - CS
    D11 - SI (ST)
    D12 - SO
    D13 - SCK
Соедините Arduino Nano и ENC28J60 по этой схеме.
Подключите Ethernet модуль в сеть.
Загрузите программу в контроллер, и в поисковой строке барузера наберите
http://192.168.100.10/ и нажмите Enter. 
Ваш компьютер должен быть обязательно подключен к Интернету. 
Если вы сделали все правильно, появиться страничка с демонстрационными графиками.
После этого можно подключить датчик тока - ACS712 30A GY-712 и трансформатор и 
подобрать коэффициенты kI,kV для получения правильных данных.
Установите #define DEMO false когда будете измерять реальные данные 
*/
#include 
#define DEMO true //установите false для реального измерения
const char page1[] PROGMEM =
"\n"
"\n"
"\n"
"WEB MONITOR\n"
"\n"
"\n"
"\n"
"\n"
"\n"
;
const char page2[] PROGMEM =
"\n"
"\n"
"\n"
"

Измерение напряжения и тока по I2C

Этот модуль позволяет измерять постоянное напряжение в широком диапазоне и ток (со значением зависящим от используемого измерительного резистора). Считывание результатов возможно через интерфейс I2C, что позволяет использовать модуль совместно с Raspberry Pi, Arduino, STM32 и так далее. В основе модуля лежит микросхема LTC4151, внутренняя схема которой показана на рисунке. Это специализированный трехканальный 12-разрядный преобразователь АЦП со встроенными схемами измерения напряжения и тока.

Назначение устройства — контролировать параметры мощности или нагрузки в положительной силовой шине. Диапазон измерения напряжения 7 — 80 В, а сила тока зависит от внешнего шунта Rs (полный диапазон измеряемого напряжения 82 мВ). Третий универсальный канал ADIN используется для измерения внешнего напряжения, которое должно находиться в диапазоне 0 — 2 В.

Электрическая схема модуля

Схема модуля представлена на рисунке. Внешний источник питания подключается к клеммам 1 и 2 разъема PWR. Благодаря встроенному в U1 делителю напряжения диапазон измерения составляет 7 — 80 В, а разрешение — 25 мВ.

Технические параметры

  • диапазон измерения напряжения: 7 — 80 В с разрешением 25 мВ,
  • диапазон измерения тока: до 2 А с разрешением 0,5 мА,
  • диапазон измерения тока зависит от внешнего шунта и может быть изменен,
  • есть третий универсальный канал измерения напряжения в диапазоне 0 — 2 В,
  • связь через интерфейс I2C.

Нагрузка подключается к клеммам 2 и 3 разъема измерения тока PWR. Ток нагрузки измеряется косвенно, путем измерения падения напряжения на резисторах RS1 и RS2. Максимальное падение напряжения на измерительных резисторах может составлять 82 мВ, что соответствует разрешающей способности 20 мкВ. Тут используется резистор 40 мОм, который устанавливает диапазон измерения тока 2 А с разрешением 0,5 мА.

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

Дополнительный канал VIN преобразователя доступен на разъеме J1. Контакт SHDN, доступный на разъеме J2, активный в низком состоянии, позволяет схеме перейти в режим пониженного энергопотребления.

Шина I2C выведена на разъемы I2C / I2CA типа EH и JST 1 мм, а также на разъемы J1 и J2. Схема работает с шиной I2C с напряжениями в диапазоне 3,3 — 5 В. Для включения измерительной части U1 необходимо постоянное наличие напряжения источника Vs1. Перемычки A0 и A1, выполненные в виде полей на печатной плате, позволяют выбрать один из адресов, как показано в таблице.

Резистор RP поляризует управляющие сигналы, светодиод LD показывает наличие питания.

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

Чип LTC4151 позволяет работать в двух режимах: однократном (моментальный снимок), где выбирается однократное преобразование в определенном канале (SENSE / VIN / ADIN), или непрерывном (автономный режим), при котором каналы измерения обновляются последовательно с частотой 6 — 9 Гц. Состояние преобразования выбранного канала сигнализируется состоянием бита B3 в регистрах B, D, F соответственно.

Конфигурация осуществляется записью регистра CONTROL (0x06), значение битов следующее:

  • B7: выбор режима преобразования, 1 = снимок, 0 = автономная работа,
  • B6, B5: выбор канала в режиме моментального снимка, 00 = Sense, 01 = Vin, 10 = ADIN,
  • B4: 1 = тестовый режим, возможна запись в регистры AD, 0 = работа,
  • B3: 1 = включить, 0 = отключить пейджинг (чтение / запись),
  • B2: 1 = включено, 0 = отключено Таймер сброса шины I2C отключен,
  • B1, B0: 00, зарезервировано.

Модуль смонтирован на двусторонней печатной плате, чертеж которой вместе с расположением элементов представлен на рисунке.

Механическая конструкция модуля позволяет без проблем работать с различными макетами плат, рекомендуем использовать длинные (30 … 40 мм) SIP-коннекторы, впаянные так, чтобы выводы выступали с обеих сторон печатной платы. Такой способ установки позволяет удобно использовать контакты, облегчая вывод сигналов и расширение шины I2C.

Настройка модуля I2C

Для быстрой проверки работы модуль можно подключить к шине I2C Raspberry Pi, а источник питания и нагрузку можно подключить к разъему PWR. Используя библиотеку i2ctools, после установки базового адреса с помощью перемычек A1 и A0 (по умолчанию A1, A0 = LL, address = 0x6F) модуль должен быть видимым после чтения шины с помощью команды i2cdetect -y 1.

Результат команды показан на рисунке, установленный 7-битный базовый адрес — 0x6F, а видимый фиксированный глобальный адрес — 0x66.

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

i2cset -y 1 0x6f 0x06 0x04

Можем читать регистры с обработанными значениями с помощью команды:

i2cdump -y -r 0x00-0x06 1 0x6f

Вот результат образца:

pi@raspberrypi:~ $ i2cdump -y -r 0x00-0x06 1 0x6f
Размер не указан (с использованием доступа к байтовым данным)
0 1 2 3 4 5 6 7 8 9 a  b c d e f 0123456789abcdef
00: 00 00 13 d0 7f c0 04 . .?????

Значения конвертируются по формуле:

АЦП = ([reg] << 4) + ([reg + 1] >> 4)

Для пар регистров 0/1, 2/3, 4/5 и с учетом коэффициентов преобразования получаем значение тока и напряжения питания и значение вспомогательного канала ADIN. Применяя Arduino можете использовать библиотеку LTC4151-master.

Arduino Nano V3.0 (FT232RL) — Платы (модули) — Радиодетали — Каталог

Arduino Nano V3.0 вх.5-12V ATmega328(FT232RL)+кабель USB

Общие сведения
Платформа Nano, построенная на микроконтроллере ATmega328 (Arduino Nano 3.0) или ATmega168 (Arduino Nano 2.x), имеет небольшие размеры и может использоваться в лабораторных работах. Она имеет схожую с Arduino Duemilanove функциональность, однако отличается сборкой. Отличие заключается в отсутствии силового разъема постоянного тока и работе через кабель Mini-B USB. Nano разработана и продается компанией Gravitech.

Краткие характеристики
МикроконтроллерAtmel ATmega168 или ATmega328
Рабочее напряжение (логическая уровень) 5 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 8
Постоянный ток через вход/выход 40 мА
Флеш-память 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика

ОЗУ 1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM 512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота 16 МГц
Размеры 1. 85 см x 4.2 см

Питание:
Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6-20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.

Микросхема FTDI FT232RL получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI, при этом светодиоды RX и TX мигаю только при наличие сигнала высокого уровня на выводах 0 и 1.

Память
Микроконтроллер ATmega168 имеет 16 кБ флеш-памяти для хранения кода программы, а микроконтроллер ATmega328, в свою очередь, имеет 32 кБ (в обоих случаях 2 кБ используется для хранения загрузчика). ATmega168 имеет 1 кБ ОЗУ и 512 байт EEPROM (которая читается и записывается с помощью библиотеки EEPROM), а ATmega328 – 2 кБ ОЗУ и 1 Кб EEPROM.

Входы и Выходы

Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference(). Некоторые выводы имеют дополнительные функции:

I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire (информация на сайте Wiring).
Дополнительная пара выводов платформы:

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

Хронометраж для горных лыж на Ардуино. Питание — DigInfo.ru

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

Варианты питания Ардуино Нано

Три варианта питания Ардуино Нано

Через USB плата получает питание от компьютера при отладке программы или от Power Bank. Питание USB это 5 вольт (примерно, мне встречалось 4.6 — 5.1 В). Насколько понимаю, эти 5 вольт сразу «проваливаются» на ножку 5V. То есть можно считать (хотя вопрос спорный), что питание от USB особо не отличается от подачи напряжения с соответствующих проводков кабеля USB на ножку 5V.

Ножка Vin обслуживает внешнее питание более высоким чем 5 вольт напряжением. Верхнее значение иногда указывается 12 вольт, а иногда 9. Нижнее значение должно быть с некоторым запасом более 5 вольт. Внешнее напряжение проходит через «понижайку», микросхему с обвязкой, которая делает из более высокого напряжения 5 вольт. Опять-таки можно считать, что эти преобразованные пять вольт оказываются на ножке 5V. Расположена эта микросхема с обратной стороны платы.

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

На самом деле правильнее считать, что ножка 5V это основной вход для питания Ардуино. То есть, при питании от USB входное напряжение подсоединяется к этой ножке и от него питается и чип Ардуино и подключенные внешние устройства. При питании через Vin происходит то же самое, но через встроенную «понижайку». А при поступлении питания прямо от ножку 5V все происходит совсем естественно. В описании платы на этот счет мне показалось недостаточно ясности, поэтому приводить его не буду 🙂

Таким образом, для питания проекта нужно организовать внешнее надежное питание 5 вольт (на практике можно от 3-х до 5-и вольт), которое подается и на все остальные модули и на ножку 5V Ардуино. Силовая микросхема на обратной стороне платы Ардуино при этом не задействована. Несколько раз порывался ее задействовать при отладке радиомодуля, и каждый раз это ничего не давало. То есть питание через Vin нужно оставить на какие-то случаи, когда под рукой есть только 9-12 вольт.

Вот схема соединений из заметки Хронометраж для горных лыж на Ардуино. Заодно.

1) Датчик температуры, 2) плата зарядки аккумулятора от разъема USB, 3) выключатель питания, 4) аккумулятор, 5) индикатор времени, 6) индикатор температуры, 7) светодиод «садится аккумулятор», 8) кнопка обнуления секунд для выставления времени часов (расположена не на виду, внутри блока), 9) Ардуино Нано, 10) плата часов, 11) выключатель режима контроля регламента, 12) пьезопищалка для контроля регламента

Питание организовано от аккумулятора, причем без стабилизации напряжения. Сколько аккумулятор выдает, а это от 4.2 до 3.0 вольт, столько и идет на питание всех элементов схемы.  Ардуино питается «на равных», получая напряжение на ножку 5V.

Питание от аккумулятора

Для «ответственных» блоков, в нашем случае это те, которые с радиомодулями, питание всей схемы должно быть стабилизированным. Поэтому при питании от литий-ионного аккумулятора (3 — 4.2 вольта) нужно добавить «повышайку».

1) модуль повышения напряжения, 2) выключатель питания, 3) плата зарядки аккумулятора от разъема USB, 4) аккумулятор

Контроль заряда аккумулятора

Вообще-то в хронометраже для горных лыж контроль аккумулятора не очень нужен. Перед тренировкой все аккумуляторы надо зарядить (благо в литий-ионных аккумуляторах нет эффекта памяти). Заряда аккумуляторов должно хватать на 2-3 часовое катание с троекратным запасом.

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

В чипе Ардуино Нано есть один аналого-цифровой преобразователь (АЦП), который через мультиплексор (переключатель) можно программно подключать к ножкам А0 — А7 (см. на картинке вверху по тексту). В нашем случает лучше к А6 или А7, поскольку эти ножки сконфигурированы на работу «только» с АЦП. Остальные можно сконфигурировать, например как цифровые выводы на индикаторы.

1) светодиод «садится аккумулятор», 2) Ардуино Нано, 3) модуль повышения напряжения, 4) выключатель питания, 5) плата зарядки аккумулятора от разъема USB, 6) аккумулятор

АЦП измеряет напряжение от нуля до так называемого опорного напряжения. Опорное напряжение можно программно выбрать из трех вариантов: по умолчанию это напряжение на ножке 5V (то есть обычное питание «на борту»), специально поданное напряжение на ножку REF (ножка слева от А0 на самой верхней картинке) и внутреннее опорное напряжение чипа 1.1 вольт. С ножкой REF нужно быть предельно аккуратным, там отдельные требования по входу, несоблюдение которых может сжечь чип. К тому же эта ножка может быть и выходом, на ней можно измерить выбранное «внутреннее» опорное напряжение 1.1 В. В общем, поигрался с ней, к счастью ничего не сжег, и решил, что в моем случае правильнее считать, что варианта «REF» нет 🙂

Опорное напряжение на ножке 5V в сети принято использовать для измерения относительных величин. Например переменный резистор, подключенный крайними выводами к нулю (GND) и 5V, а средний вывод (переменный) на вход АЦП. Оцифровываются при этом текущие показатели резистора относительно его полного сопротивления. Это к тому, что даже при работе со стабилизированным источником (если не доводить до абсурда), бортовое напряжение может изменяться в зависимости от общей нагрузки схемы. И уж тем более будет разным например при питании от USB или от аккумулятора. Поэтому если при измерении так или иначе интересуют пропорции (как в примере с переменным резистором), а не абсолютные значения напряжения, то выбор 5V в качестве опорного напряжения работает хорошо. К случаю контроля заряда аккумулятора это никак не относится, нужно измерять именно напряжение на аккумуляторе, а не какие-либо пропорции.

Поэтому для контроля аккумулятора так или иначе нужно использовать внутреннее опорное напряжение 1.1 вольт. Откуда оно берется? Оказывается, из Природы. Чип сделан из кремния. Ширина запрещенной зоны (Energy gap) кремния составляет от 1. 17 эВ (при абсолютном нуле) до 1.11 эВ (при комнатной температуре), цифры отсюда (в других источниках как ни странно могут отличаться). В 1964 году придумали схему, как использовать это свойство для создания опорного напряжения (поиск по «bandgap voltage reference», например Википедия). Опорное напряжение может немного отличаться от чипа к чипу, но если его измерить (или отградуировать измеряемые значения), то дальше можно использовать как стабильный репер, не зависящий от температуры или нагрузки схемы.

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

В сети есть трюк, варианты которого находятся по поиску «Secret Voltmeter Arduino», например здесь. В заметке Хронометраж для горных лыж на Ардуино. Заодно этот трюк использовался для определения абсолютных значений напряжения на ножке 5V. Смысл в том, что используя бортовое напряжение как опорное можно при помощи «ковыряния» в регистрах чипа измерить напряжение репера 1.1 В в долях от опорного. А так как напряжение 1.1 В на самом деле известно, то обратным пересчетом получается значение бортового напряжения на ножке 5V. Поэтому можно оцифровывать напряжение на аккумуляторе относительно уже известного бортового напряжения. Единственное, напряжение на аккумуляторе нужно подавать через резистор 10 кОм. Если подавать напрямую, то напряжение проходит через ключи мультиплексора и может странным образом включать Ардуино. Четких рекомендаций, почему именно 10 кОм, в сети не нашел.

По измерениям мультиметром, при напряжении на аккумуляторе 4 вольта на этом резисторе 10К падает 0.04 вольта. Поскольку резистор участвует в делителе с дальнейшим внутренним сопротивлением Ардуино, то при разряде аккумулятора до 3 вольт на «ножке» входа (А7 на рисунке сверху) должно быть на 0.03 вольта меньше. По какой-то непонятной причине при переводе в «цифры» никакого падения напряжения на резисторе не вычисляется. Поэтому оставлю этот абзац просто, чтобы потом заново не возник вопрос 🙂

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

Добавлено в декабре 2020

Испытания на снегу привели к  выявлению проблемы питания. Радиомодуль при работе иногда, примерно через полтора часа работы выжигал контроллер платы Ардуино Нано. Происходило это из-за бросков бортового напряжения при работе радиомодуля, с которыми не справлялась «повышайка». Подробности здесь: Хронометраж для горных лыж на Ардуино. Испытания на снегу

Поэтому при организации питания нужно учитывать, что питание Ардуино от ножки 5V подразумевает, что броски «бортового» напряжения будут не более 5.5 В и не менее 2.7 В. Организация бортового питания от «повышайки с потенциометром» не гарантирует этого, в частности потому, что поскольку там нет (и быть не может) стабилитрона на 5 В. Питание через Vin наверное предохранит контроллер, поскольку задействован стабилитрон на плате Ардуино. Но организация питания через Vin не совсем удобна, поскольку подавать нужно не менее 6 вольт, а нагрузку (индикаторы, например) лучше все-таки питать отдельно. Поэтому получается, что нужно организовывать две цепи питания (6+ вольт для Vin и 5 вольт для всего остального). При этом 5 вольт на ножке 5V может не совпадать с 5-ю вольтами отдельной цепи, что может приводить к непредсказуемым сбоям.

В случае проекта «Хронометраж…» был выбран вариант из отдельной цепи питания 3.3 В для нагрузки, вызывающей броски напряжения (это радиомодуль в режиме «передача»)  и  отдельного контура питания 5 вольт для всего остального, включая Ардуино.

Здесь собраны все заметки по теме «Хронометраж для горных лыж на Ардуино».

 


Вадим Никитин

 

 

 

на начало страницы

Распиновка arduino nano

GPIO


Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0D13 и A0A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.

Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.

GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…

Интерфейсы


Большинство GPIO имеют дополнительные возможности, так как к ним подключены выводы с других систем микроконтроллера, с ними вы уже знакомы из предыдущего урока:

  • ADC (АЦП, аналогово-цифровой преобразователь) – зелёные подписи ADC* на распиновке
  • UART (интерфейс связи) – голубые TXD и RXD на распиновке
  • Выводы таймеров, они же ШИМ пины – светло-фиолетовые OC*A и OC*B, где * номер таймера
  • SPI (интерфейс связи) – голубые SS, MOSI, MISO, SCK
  • I2C (интерфейс связи) – голубые SDA и SCL
  • INT (аппаратные прерывания) – розовые INT0 и INT1, а также PCINT* – PinChangeInterrupt

Если про интерфейсы мы уже говорили, то АЦП, прерывания и выводы таймеров ещё не затрагивали. 10 = 1024), что означает следующее: напряжение от 0 до опорного преобразуется в цифровую величину от 0 до 1023 (1024-1 так как отсчёт идёт с нуля). Опорное напряжение играет очень большую роль: при опорных 5V один шаг измерения АЦП составит 4.9 милливольта (0.00488 В), а при опорных 1.1В – 1.1 мВ (0.00107 В). Вся суть в точности, я думаю вы поняли. Если опорное напряжение установлено ниже напряжения питания МК, то оцифровывая напряжение выше опорного мы получим 1023. Подавая на АЦП напряжение выше 5.5 Вольт получим выгоревший порт. Подавать отрицательное напряжение также не рекомендуется. На ардуино есть несколько режимов опорного напряжения: оно может быть равно VCC (напряжению питания), 1.1V (от встроенного в МК стабилизатора) или получать значение с внешнего источника в пин Aref, таким образом можно настроить нужный диапазон и получить нужную точность. У других моделей Ардуино (например у Меги) есть и другие встроенные режимы. Опорное напряжение рекомендуется заводить на плату через резистор, например на 1 кОм. Для измерения напряжений выше 5.5 вольт необходимо использовать делитель напряжения на резисторах.

Таймеры (ШИМ)


Выводы таймеров: в микроконтроллере, помимо обычного вычислительного ядра, с которым мы работаем, находятся также “хардварные” счётчики, работающие параллельно со всем остальным железом. Эти счётчики также называют таймерами, хотя к таймерам они не имеют никакого отношения: счётчики буквально считают количество тиков, которые делает кварцевый генератор, задающий частоту работы для всей системы. Зная частоту генератора (обычно 16 МГц) можно с очень высокой точностью определять интервалы времени и делать что-то на этой основе. Какой нам прок от этих счётчиков? “Из коробки” под названием Arduino IDE мы имеем несколько готовых, основанных на таймерах инструментов (функции времени, задержек, измерения длин импульсов и другие).

В этой статье речь идёт о пинах и выходах, о них и поговорим: у каждого счётчика есть два выхода на GPIO. У нано (у МК ATmega328p) три счётчика, соответственно 6 выходов. Одной из возможностей счётчиков является генерация ШИМ сигнала, который и выводится на соответствующие GPIO. Для нано это D пины 5 и 6 (счётчик 0), 9 и 10 (таймер 1) и 3 и 11 (таймер 2). ШИМ сигналу посвящен отдельный урок, сейчас просто запомним, что с его помощью можно управлять яркостью светодиодов, скоростью вращения моторчиков, мощностью нагрева спиралей и многим другим. Но нужно помнить, что ограничение по току в 40 мА никуда не делось и питать от пинов ничего мощнее светодиодов нельзя.

Прерывания


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

Другие пины


  • Пин 3. 3V может быть использован для питания маломощных датчиков и модулей: максимальный ток, который можно снять с пина 3.3V составляет 150 мА, что с головой хватает для любых датчиков и модулей, кроме пожалуй радиомодулей nrf25L01.
  • Пины GND – земля питания, все GND связаны между собой
  • Пин 5V – питание от источника с напряжением до 5.5V (подробнее о питании смотри в следующем уроке)
  • Пин Vin – питание от источника с напряжением 7-15V (подробнее о питании смотри в следующем уроке)
  • RST – перезагрузка МК. Также этот пин выведен на кнопку

Материалы взяты с сайта: alexgyver.ru/

Аналоговые и цифровые порты

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

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

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

Другими словами

Получается что аналоговым сигналом можно передать и принимать диапозон значений а вот цифровым только да / нет (HIGHT/LOW). Отправляются данные командой DigitalWrite, Принимаются DigitalRead.

Что же касается аналогового то тут можно получить данные от 0 до 1023 и передать данные от 0 до 255. Отправляются данные командой AnalogWrite, Принимаются AnalogRead.

AnalogWrite работает только на пинах 3,5,6,9,10,11, на картинке распиновки в начале статьи они показаны кривой линией которая отходит от платы к пояснению пина.

Arduino. Работа с АЦП. Подключение переменного резистора

Очень полезный модуль в составе микроконтроллера — аналого-цифровой преобразователь. Он позволяет микроконтроллеру измерять произвольное напряжение.
В прошлой статье мы описывали, как можно считать логическое состояние входа, то есть «0» или «1». Аналого-цифровой преобразователь считывает величину напряжения на выводах A0-A5. Это дает возможность считать данные с датчика освещенности, измерить напряжение питания и т.д.

Подготовка к работе

На нашем TutorShield для освоения работы с АЦП есть три переменных резистора. Для их подключения к выводам A0-A2 установите перемычке так, как показано на рисунке:

Подключение переменных резисторов

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

Первый пример

Для начала попробуем просто считать напряжение на выводе микроконтроллера A0 и отправить его в COM-порт.
Делается это при помощи функции analogRead(). Этой функции нужно передать номер вывода, напряжение на котором должно быть измерено и она вернет текущее значение.
Загрузите на плату следующий пример:


int val;

void setup() {
    Serial.begin(9600);
}

void loop() {
    val = analogRead(A0);
    Serial.println(val);
    delay(1000);
}

В микроконтроллере Atmega8A, который используется на нашей плате EduBoard, есть модуль АЦП с разрешением 10 бит и возможностью мультиплексирования шести входов. Эти входы пронумерованы A0-A6 (или 14-19).
Измерение производится относительно напряжения питания. Ни в коем случае нельзя подавать на вход отрицательное напряжение или напряжение, превышающее питание! Мы подключили ко входу переменный резистор и наше входное напряжение точно не выйдет за рамки питания.
Теперь разберемся с тем, что нам будет присылать плата. Раз разрешение 10 бит — в десятичном виде значение будет меняться от 0 до 1023. Измерение производится относительно 5-ти вольт, поэтому изменение показаний на 1 соответствует фактическому напряжению 5/1023=4.9мВ. То есть средствами встроенного АЦП микроконтроллера можно измерить напряжение с точностью до 4. 9мВ.
Вернемся к скетчу. В результате выполнения строчки …


val = analogRead(A0);

… в переменную val будет записано оцифрованное напряжение, считанное на выводе A0. Откройте монитор порта (Ctrl+Shift+M) и посмотрите, как меняются показания АЦП при вращении вала переменного резистора. Обратите внимание, что нет нужды настраивать вывод при этом на вход.
Теперь пора немного улучшить работу с модулем аналого-цифрового преобразователя. На практике младшие разряды АЦП могут сильно флуктуировать из-за шумов и их обычно отбрасывают, причем сразу два разряда. При этом остается 8ми-битное число с которым гораздо удобнее работать. Точность при этом получается 5/255=19.6мВ, чего вполне достаточно для большинства ситуаций.
Измените код так, чтобы он присылал 8ми-битное значение. Замените строку с чтением состояния АЦП на это:


val = analogRead(A0)>>2;

Теперь переменной val мы присваиваем значение считанное из АЦП сдвинутое на два бита вправо. Остальные биты просто отбрасываются.

Второй пример

Теперь мы можем плавно изменять яркость светодиода при помощи ШИМ-модуляции, задавая ее переменным резистором. Установите перемычку «color» так, как описано в этой статье. Этим самым вы подключены к 9му, 10му и 11му выводу сегменты трехцветного светодиода.
Для начала попробуем изменять яркость только одного светодиода:


#define BLUE 9

int val;

void setup() {
    pinMode(BLUE, OUTPUT);
}

void loop() {
    analogWrite(BLUE, (analogRead(A0)>>2));
}

Довольно простой код, если вы помните, как работает функция analogWrite(). При вращении вала переменного резистора светодиод будет менять свою яркость от минимума до максимума.
Кстати, если вы уберете сдвиг на два бита, при выполнении функции analogWrite() будет наступать переполнение, так как она может принимать только значения от 0 до 255. Попробуйте убрать этот сдвиг и посмотрите, что получится.
И в заключении добавим управление всеми тремя светодиодами. Остается только найти отвертку, чтобы покрутить двумя остальными подстроечными резисторами.


#define BLUE 9
#define ORANGE 10
#define GREEN 11

int val;

void setup() {
    pinMode(BLUE, OUTPUT);
    pinMode(ORANGE, OUTPUT);
    pinMode(GREEN, OUTPUT);
}

void loop() {
    analogWrite(BLUE, (analogRead(A0)>>2));
    analogWrite(ORANGE, (analogRead(A1)>>2));
    analogWrite(GREEN, (analogRead(A2)>>2));
}

Индивидуальные задания

  1. Оставьте на шилде только перемычку от резистора на выводе A0 и подключите пьезоизлучатель также, как этой статье. Напишите программу, которая будет изменять частоту воспроизводимого звука, в зависимости от установки положения резистора.
  2. Подключите сегментный индикатор, так как это было описано ранее и, используя примеры из той же статьи, сделайте простейший вольтметр. На индикатор должны выводится цифры от 0 до 5.0В (хоть на индикаторе нашего шилда и нет разрядной точки), совпадающие с крайними положениями резистора, подключенного к выводу А0.

Остальные статьи цикла можно найти здесь.

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

NFC-визитка Айдот: ammo1 — LiveJournal

Алексей Соломатин solomatin придумал и выпускает простую и полезную штуку — цифровую бесконтактную визитку iDOT, позволяющую мгновенно передать информацию о себе на любой смартфон.


Работает это всё очень просто — если поднести к визитке смартфон с NFC, автоматически откроется страница с данными о Вас. Если NFC нет, можно запустить на смартфоне сканер QR-кодов и прочитать код, в котором будет ссылка на ту же страницу. Визитку со всеми ссылками и аватаркой можно сохранить в контакты одной кнопкой.

При первом сканировании NFC-метки предлагается создать свою визитку.

Первым делом нужно придумать короткое имя для адреса визитки. Я само собой дал своей имя ammo1, поэтому моя визитка теперь располагается по адресу https://my.idot.vip/ammo1 и именно этот адрес открывается при считывании NFC-метки или QR-кода.

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

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

iDOT можно заказать на сайте производителя.

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

© 2021, Алексей Надёжин


Десять лет я каждый день пишу о технике, скидках, интересных местах и событиях. Читайте мой блог на сайте ammo1.ru, в ЖЖ, Дзен, МирТесен, Telegram.
Мои проекты:
Lamptest.ru. Тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Elerus.ru. Собираю информацию об отечественных электронных устройствах для личного использования и делюсь ей.
Вы можете связаться со мной в Телеграм @ammo1 и по почте [email protected].

Использование Arduino для измерения напряжения USB

Измерение напряжения питания на плате Arduino — два подхода.

Цель этого проекта была проста — измерить напряжение питания; Vusb, если питание от порта usb, или Vraw, если от батареи.
Как вы увидите позже, для получения точных результатов мне потребовалось обойти защитный диод. Его можно установить снаружи, если он работает от батарей.

Проблемы с дешевыми клонами Ardino Micro Pro

Я купил несколько китайских клонов «Pro Micro» в качестве одноразового имущества.Просто для мусорных экспериментов. Вскоре я обнаружил, что это не совсем то же самое. Я решил создать небольшое устройство для измерения напряжения USB. Я знал, что это почти точно 5 В — так почему же Arduino измерил его как 4,6?

Задняя панель Pro Micro clone

Передняя панель Pro Micro clone

Первый подход — использовать потенциальный делитель

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

Я подключил резистор 33 кОм между Vcc (вывод 21) и A8, с 10 кОм на землю. Я подсчитал, что это должно дать мне 5,0 * 10/43 = 1,163 В на A8. При эталонном значении 2,56 и разрешении 1024 я должен получить значение 1024 * 1,163 / 2,56 = 465. Однако, когда я запустил скетч для его измерения, я получил только около 425, что указывает на напряжение USB 4,6 В.

Второй подход — воспользуйтесь «волшебным вольтметром»

Это плохо документировано, но есть способ измерить значение Vcc без ЛЮБЫХ внешних компонентов. Обычно вы используете прямой доступ к регистрам для измерения внутреннего опорного напряжения как доли Vcc. Скетч сначала определяет, какие коды регистров использовать.

Внутренним эталоном ВСЕГДА является эталонное напряжение запрещенной зоны 1,1 В (указанное как 1,0 — 1,2 В, поэтому не очень точно, поэтому вам нужно настроить постоянную калибровки в эскизе в соответствии с требованиями) — даже на плате 32U4, где внутренний Vref составляет 2,56 В.

Это так: Vref / Vcc = n / 1024, поэтому, как только мы измеряем n, с помощью некоторой простой алгебры Vcc = 1024 * 1.1 / п

, поэтому для Vcc = 5V и Vref = 1.1 n должно читаться как 225. Однако я получал значение 245, что означает, что Vcc составляет 4,6 В

.

Примечание. Поскольку мы сравниваем «вверх ногами», более высокое значение указывает на более низкое значение Vcc.

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

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

Почему показание было неправильным?

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

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

Измеряя напряжение вокруг платы, я обнаружил, что напряжение Vcc — земля действительно составляет 4,64 В. Однако на JP1 я обнаружил 5,00 В.

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

Об этом стоит знать, как если бы вы использовали vcc в качестве эталона 5 В, вы бы получили глупые результаты!

Мне нужно было отрегулировать постоянную калибровки, чтобы получить более точные показания, так как эталонная ширина запрещенной зоны на этой плате равна 1.0896В

(схематическая диаграмма с использованием Autodesk Eagle с библиотеками SparkFun)

СПРАВОЧНАЯ ИНФОРМАЦИЯ:

1: Учебник по Arduino http://arduino.cc/en/Tutorial/ReadAnalogVoltage
2: Полная таблица данных ATmega: http://www. atmel.com/devices/ATMEGA2560.aspx?tab=documents
3: Техническое описание ATmega 328: https://www.microchip.com/wwwproducts/en/ATmega328
4: Техническое описание ATmega 32U4: https://www.microchip.com/wwwproducts/en/ATmega32u4
5: Паспорт напряжения www.ti.com/lit/ds/symlink/lm4040-n.pdf
6: Ссылка на Arduino: http://arduino.cc/en/Reference/AnalogReference
7: Стандарт USB: https://www.usb3.com/whitepapers/USB%203%200%20(11132008)-final.pdf

Основы Arduino: чтение напряжения

Первоначально опубликовано 31 марта 2020 г.

Эта статья была переведена на английский и изначально была опубликована для deviceplus.jp.

Содержание

  1. Введение
  2. Преобразование аналоговых значений в цифровые значения
  3. Аналоговый вход с Arduino
  4. Отрегулируйте напряжение с помощью громкости
  5. Аналоговый вход с объемом
  6. Заключение
  7. Статьи по теме

Введение

С цифровым входом 5 В можно считать ВЫСОКИМ, а 0 В — НИЗКИМ. Вы можете определить, работает ли переключатель, исходя из того, в каком состоянии он находится. Однако электричество бывает не только 5В и 0В, но и различных напряжений. Например, одна батарейка АА — 1,5В, а бытовая розетка — 100В.

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

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

Преобразование аналоговых значений в цифровые

Фактическое напряжение — это не точное значение, такое как 1 В или 5 В, а иррациональное число, в котором числовые значения продолжаются бесконечно после десятичной точки, например 5,01342… В. Эти значения не могут быть напрямую обработаны компьютером. Следовательно, в электронных схемах аналоговые значения преобразуются в цифровые значения с помощью механизма, называемого аналого-цифровым преобразователем, так что значение может обрабатываться компьютером.Arduino также имеет по умолчанию аналого-цифровой преобразователь, который может считывать аналоговые напряжения и преобразовывать их в цифровые значения.

АЦП делит целевое напряжение на несколько равных частей. Для Arduino Uno напряжения можно прочитать в диапазоне 0-5 В. Эти значения 0–5 В разделены на 1023 равных части. Преобразователь аналого-цифрового преобразования преобразует показание аналогового напряжения в ближайшее равное значение. Например, если напряжение составляет 3 В, наиболее близким значением является «614». Это значение можно отправить в Arduino для использования.

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

Например, если значение аналого-цифрового преобразователя равно «614», вы можете получить около 3 В, разделив на 1023, а затем умножив на 5.

Аналоговый вход с Arduino

С Arduino Uno вы можете использовать шесть контактов для цифрового входа, от A0 до A5. Подключив сюда электронные компоненты для входа, вы можете узнать, какое напряжение приложено.Однако контакты A4 и A5 также используются для цифровой связи, называемой I2C. Обратите внимание, что эти контакты нельзя использовать для аналогового входа при подключении электронных компонентов, таких как датчики или дисплеи, которые используют цифровую связь I2C.

Отрегулируйте напряжение с помощью объема

«Громкость» — это электронная часть, с помощью которой можно регулировать громкость звука или яркость освещения. Объем содержит клеммы, движущиеся на резистивном элементе. Сопротивление можно изменить, перемещая эти клеммы.

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

На приведенном выше рисунке резистивный элемент является линейным, но во вращающемся объеме внутренний резистивный элемент является круглым.Хотя формы разные, в основном они действуют одинаково.

Аналоговый вход Arduino использует изменение напряжения для входа. Однако, поскольку сопротивление изменяется в объеме, невозможно прочитать изменение громкости, подключив его напрямую к Arduino. Следовательно, изменение сопротивления следует преобразовать в изменение напряжения. Подключите источник питания и GND к левой и правой клеммам резистора. Напряжение на центральном выводе меняется в зависимости от положения вывода.Предположим, что левая клемма подключена к GND, а правая клемма подключена к источнику питания (5 В). Напряжение увеличивается при перемещении центральной клеммы вправо и уменьшается при перемещении клеммы влево. Левый конец — 0 В, а правый — 5 В, поэтому значение можно изменять в диапазоне от 0 до 5 В.

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

Аналоговый вход с объемом

Теперь давайте попробуем аналоговый ввод с использованием громкости.Подготовьте следующие электронные компоненты.
Контейнер объема

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

Зажим для перемычки с зажимом типа «крокодил»

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

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

Напишите следующую программу:

Чтобы проверить состояние, в котором подключен аналоговый входной контакт, укажите целевой контакт в «analogRead ()» (строка 11).Затем введите напряжение вывода со значением от 0 до 1023. Если вы хотите узнать напряжение, оно рассчитывается и преобразуется в напряжение, как в строке 13.

Запишите программу в Arduino и отобразите серийный монитор.
Значение, оцифрованное аналого-цифровым преобразователем, отображается после «Value:», а значение, вычисленное и преобразованное в напряжение, отображается после «Volt:». Вы можете видеть, что значение изменяется при вращении громкости.

Заключение

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

Статьи по теме

Изучите оставшуюся часть этой серии, чтобы узнать об основах Arduino:

Как измерить напряжение постоянного тока с помощью Arduino? — Блог о проектах DIY Solar и Arduino

Для упрощения расчета ниже мы приложили таблицу Excel, которая может автоматически рассчитывать номиналы резисторов.Сначала введите Monitoring Voltage . Это максимальное значение диапазона контроля постоянного напряжения. Следующим шагом является ввод значения общего сопротивления . Рекомендуется, чтобы общее сопротивление составляло от 50 000 до 300 000 Ом.

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

В качестве ориентира, 100 В постоянного тока и ниже используйте значение общего сопротивления 50000 Ом, 200 В постоянного тока и ниже введите 100000 Ом и напряжение менее 500 В постоянного тока введите 300000 Ом . После того, как вы введете значения мониторинга напряжения и общего сопротивления, таблица Excel автоматически вычислит все соответствующие характеристики для двух резисторов.

Есть 3 важные сведения , которые необходимо указать при покупке резистора.Приобрести резистор можно по партнерской ссылке здесь !!

1) Значение сопротивления

В итоге вы получите 2 резистора с разным сопротивлением. Вы можете получить странное значение сопротивления в таблице расчетов, например, 44 565 Ом и 5 325 Ом. Это всего лишь ориентир, и все, что вам нужно сделать, это получить круглую цифру, которая ближе, но на большее значение для резистора R1 и на меньшее значение для резистора R2 .Пример: 45000 Ом и 5300 Ом. Это необходимо для обеспечения возможности измерения контролируемого напряжения в диапазоне 0-5 В.

2) Мощность резистора

Как и другие продукты, сам резистор имеет номинальную выдерживаемую мощность. Превышение номинальной мощности всегда лучше, чем использование небольшой номинальной мощности при большом потреблении, что может привести к возгоранию резистора. Резистор R1 всегда отводит больше тепла, чем резистор R2, поэтому неудивительно, что оба резистора не имеют одинаковых требований к мощности.Просто получите значение, превышающее номинальную мощность, указанную в таблице Excel. Стандартная мощность резистора составляет: 1/8 Вт (0,125 Вт), 1/4 Вт (0,25 Вт), 1/2 Вт (0,5 Вт), 1 Вт, 2 Вт и 5 Вт.

3) Допуск сопротивления в%.

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

Приобрести резистор можно по партнерской ссылке здесь !!

Votlage Sensor M odule (0-25Vdc)

Это дешевый и надежный модуль датчика напряжения, доступный на рынке с использованием того же метода разделения напряжения. Модуль датчика напряжения предназначен для измерения напряжения до 25 В постоянного тока с допуском резисторов 1%.R1 составляет 30 кОм, а R2 — 7,5 кОм. Если ваш диапазон мониторинга находится в пределах 25 В постоянного тока, вы можете подумать о приобретении этого модуля, который доступен по нашей партнерской ссылке здесь !!!

Подключение оборудования

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

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

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

Измерение биполярного сигнала с помощью платы Arduino

Design — освоение

Arduino — популярное семейство плат микроконтроллеров с открытым исходным кодом.Любители, студенты и инженеры во всем мире используют эту платформу для быстрого проектирования и создания прототипа схемы, управляемой микроконтроллером. Одним из его интерфейсов с аналоговым миром является АЦП. Поскольку эти платы в основном разработаны на базе микроконтроллеров ATMEL ATmega32 или ATmega168, АЦП имеет 8 входов и 10-битное разрешение, что делает его пригодным для многих приложений.

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

В одном из этих сообщений читатель спросил меня, как построить интерфейс между платой с выходным напряжением от -2,5 В до + 2,5 В и АЦП Arduino. Он сказал мне, что опорное напряжение Arduino составляет AVCC = 5 В. Он хотел бы измерить сигнал +/- 2,5 В с помощью платы Arduino и указать микроконтроллеру, чтобы он предпринял какие-то действия в зависимости от результата.


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

Рисунок 1

Как я рассчитал резисторы? Для этой схемы можно использовать метод смещения и усиления, который я описал в MasteringElectronicsDesign.com: Разработайте биполярный преобразователь в униполярный для управления АЦП, или метод, описанный в MasteringElectronicsDesign.com: Решение суммирующего усилителя.

Любую передаточную функцию линейной цепи можно записать следующим образом:

(1)

где Vout — выходное напряжение, а Vin — входное напряжение.

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

Если Vin = -2.5V, то Vout = 0V
Если Vin = + 2.5V, то Vout = 5V

Следовательно, коэффициент усиления равен Gain = 1, поскольку диапазон на входе (Vin) и выходе (Vout) составляет 5 В.

Смещение должно быть Voffset = + 2,5 В, потому что мы хотим сдвинуть сигнал вверх, чтобы 2,5 В на входе превратилось в 0 В на выходе преобразователя.

Мы можем переписать уравнение (1) с нашими значениями усиления и смещения:

(2)

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

(3)

и учитывая V1 входной сигнал Vin, мы понимаем, что

(4)

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

(5)

Из второго уравнения, если мы выберем V2 = 2,5 В, равенство соотношений резисторов будет инвертировано:

(6)

Это возможно, только если все резисторы равны. Если мы выберем R1 = R2 = R3 = R4 = 10k, то получится схема, показанная на Рисунке 1.

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

(7)

где VADC — входное напряжение АЦП, а Vref — опорное напряжение Arduino.

Если вы хотите, чтобы ваша плата показывала фактическое напряжение Vin, программа должна будет записать количество отсчетов в переменную и вычислить Vin. Vin можно определить из уравнения (2), где Vout заменяется на VADC из уравнения (7). Поэтому программе Arduino придется использовать следующее уравнение для определения входного напряжения от внешней схемы.

(8)

Действительно, если АЦП измеряет 0 отсчетов, Vin составляет -2,5 В. Если он измеряет 1023 отсчета, выход составляет 2,495 В. Разница в 5 мВ происходит от уровня полной шкалы АЦП, который составляет Vref — 1LSB. Прочтите MasteringElectronicsDesign.com: наименьший значащий бит (LSB) АЦП и ЦАП, чтобы понять, почему.

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

В зависимости от вашего приложения выберите операционный усилитель общего назначения или малошумящий операционный усилитель и просмотрите требования к источнику питания в таблице данных. Для большинства операционных усилителей общего назначения источник питания должен быть не менее 1. На 2 В выше, чем самый высокий сигнал (или ниже, чем самый низкий сигнал). Однако для некоторых операционных усилителей с прямой связью требуется только дельта-напряжение 0,1 В (или даже меньше) между пиком сигнала и источником питания, поэтому выберите один из этих операционных усилителей, если таковой имеется.

Аналоговый вход — Измерение Рика для мехатроники Примечания

Аналого-цифровое преобразование (АЦП или A / D) дает целочисленный результат без знака, пропорциональный аналоговому входному напряжению, и разрешение этого результата выражается в битах, например.г. Arduino UNO имеет 10-битный АЦП, а процессор M0 имеет 12-битный АЦП. Число возможных значений, которые может принимать целое число, ограничено числом двоичных битов. Один бит может быть 1 или 0 для двух значений, 2 бита могут представлять 4 значения и т. Д.

10-битное разрешение UNO может иметь 1024 различных значения, 0-1023, поэтому каждый шаг представляет 1/1024 диапазона или 0,0009765. Если диапазон составляет 5 вольт, это дает разрешение 4,88 мВ на деление.

Другие распространенные разрешения — 12 и 16 бит, что дает 4096 и 65536 шагов соответственно.Чтобы добиться высокого разрешения, важно уменьшить другие источники неопределенности, такие как шум.

При оценке неопределенности, связанной с процессом аналогового преобразования, начните с предположения плюс или минус один шаг разрешения, если у вас нет более точной информации. Таким образом, при измерении температуры с помощью TMP36 на UNO погрешность нулевого порядка будет +/- 4,88 мВ или +/- 0,488 C просто из-за процесса аналого-цифрового преобразования.

Первоначально мы будем использовать стандартное опорное напряжение номинального блока питания процессора (5.0 В на UNO и 3,3 В на M0), и мы можем сделать приблизительное преобразование с В = Vref * analogRead (A0) / 1023. Позже мы рассмотрим более точное измерение опорного напряжения и варианты использования другого опорного напряжения. напряжения.

Следуя концептуальному процессу, который UNO использует для преобразования аналоговых напряжений в целочисленные представления, помогает понять, почему процесс не является мгновенным. Это также помогает понять, почему лучшим преобразованием является V = Vref * (A + 0,5) / 1024 вместо почти идентичного V = Vref * A / 1023 для этого преобразования с низким разрешением. (видео 9:29)

С 32-битными процессорами, такими как M0, вы можете установить разрешение, при котором результаты будут сообщаться с помощью функции analogReadResolution (бит) . По умолчанию установлено значение 10 бит (0-1023) даже на платах с лучшим разрешением. Вы можете установить его на 16 бит (0-65535), даже если процессор не поддерживает полное разрешение, и результаты будут соответственно масштабированы. Если вы выберете 16 бит, вы можете использовать V = Vref * A / 65535 для преобразования для всех процессоров.(UNO всегда использует разрешение 10 бит и не поддерживает функцию analogReadResolution () . )

IDE Arduino позволяет нам выбирать опорное напряжение для сравнения при аналогово-цифровом преобразовании с помощью функции analogReference () . На M0 есть широкий спектр опций, включая значение по умолчанию 0–3,3 В и такие параметры, как analogReference (AR_INTERNAL1V65) для диапазона 0–1,65 В. Имея внутренние диапазоны 1,0, 1,65 и 2,23 В, вы, вероятно, обладаете достаточной гибкостью, чтобы избежать необходимости analogReference (AR_EXTERNAL) для создания собственного диапазона.

На UNO диапазон может быть 0–5 В (по умолчанию для напряжения источника питания), 0–1,1 В с analogReference (ВНУТРЕННИЙ) или где-то посередине с analogReference (ВНЕШНИЙ) . Использование источника питания 3,3 В в качестве эталона может помочь уменьшить шум и погрешность по сравнению с использованием первичного источника питания в качестве эталона. Просто убедитесь, что оборудование соответствует коду! (Видео 2:08)

Если вы построите делитель напряжения с большим сопротивлением, например 10 кОм, ток будет очень слабым.Каждое аналого-цифровое преобразование потребует небольшого количества тока, и это на мгновение снизит центральное напряжение делителя. На Arduino UNO падение составит около 8 милливольт, а момент будет длиться менее микросекунды. Вы можете сгладить это падение, добавив конденсатор, но в UNO это не влияет на результат, который вы получаете от analogRead (), независимо от того, как быстро вы сэмплируете, и это хорошо. Видео (3:59) показывает схему и результирующие переходные сигналы при сборе данных на UNO и M0.

На процессоре M0, таком как плата Adafruit Feather M0, все немного сложнее. Канал аналогового ввода зашумлен, а потребляемый ток во время аналого-цифрового преобразования более сложен, поскольку аппаратно принимает несколько отсчетов. Опять же, вы можете сгладить переходной процесс, добавив конденсатор, и при этом по-прежнему будет минимальное влияние на отдельные образцы, однако выборка с высокой частотой дискретизации многократно понижает напряжение, что приводит к немного более низкому среднему показанию.В делителе напряжения на 10 кОм он все еще был меньше 1%, но требует исправления, если вы хотите, чтобы ваши измерения были максимально точными. Два простых варианта: либо снизить частоту дискретизации до тех пор, пока эффект не исчезнет, ​​либо использовать операционный усилитель в качестве повторителя напряжения, чтобы обеспечить более высокий выходной ток вашей схемы.

Урок Arduino — Модуль датчика напряжения «osoyoo.com

В этом проекте мы узнаем, как измерять напряжение с помощью Arduino, подключив датчик напряжения к Arduino.Используя этот интерфейс датчика напряжения Arduino, вы можете измерять напряжение до 25 В.

Предупреждение : Если вы используете тот же модуль датчика напряжения, убедитесь, что его входное напряжение (измеряемое напряжение) ограничено до 25 В.

АППАРАТНОЕ ОБЕСПЕЧЕНИЕ

  • Плата Osoyoo UNO (полностью совместима с Arduino UNO rev.3) x 1
  • Модуль датчика напряжения x 1
  • Макет x 1
  • Джемперы
  • Кабель USB x 1
  • шт x 1

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

  • Arduino IDE (версия 1.6.4+)

ОБЗОР

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

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

Но что, если вы хотите измерить напряжение выше 5 В? Вы не можете напрямую использовать аналоговые входные контакты Arduino, так как вы можете поджарить микросхему ATmega328P на плате Arduino UNO (или соответствующей микросхеме микроконтроллера в зависимости от платы Arduino, которую вы используете).

На помощь приходит модуль датчика напряжения.Используя этот модуль датчика напряжения, вы можете измерять напряжение до 25 В.

Контакты датчика напряжения

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

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

Контакты с винтовыми клеммами обозначены как VCC и GND, и они должны быть подключены к внешнему источнику напряжения i.е. напряжение, которое необходимо измерить.

Что касается трех мужских заголовков, они помечены как S, + и -. Вывод S — это вывод «Sense», и он должен быть подключен к аналоговому входу Arduino. Контакт «-» должен быть подключен к GND Arduino. Контакт, помеченный как «+», ни к чему не подключен (это нормально разомкнутый контакт).

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

Входы

  • GND — Здесь вы подключаете низкую сторону измеряемого напряжения.Осторожность! : Это та же электрическая точка, что и заземление Arduino.
  • VCC: Здесь вы подключаете верхнюю часть измеряемого напряжения

Выходы

  • S: Подключается к аналоговому входу Arduino.
  • — (или минус): Подключается к заземлению Arduino.
  • +: Не подключено. .

Схема датчика напряжения

Теперь давайте поговорим о самом важном, что касается датчика напряжения: его схеме.Датчик напряжения представляет собой делитель напряжения, состоящий из двух резисторов с сопротивлением 30 кОм и 7,5 кОм, то есть делителя напряжения 5 к 1.

На следующем изображении показана схема модуля датчика напряжения с ограничением входного напряжения 25 В.

Сделайте свой собственный датчик напряжения

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

Если вы хотите сделать свой собственный датчик напряжения, который может измерять напряжение до 25 В, как этот модуль датчика напряжения, тогда вам нужно получить 30 кОм и 7.Резистор 5кОм.

ПРИЛОЖЕНИЯ
  • Измерение постоянного тока
  • Измерение мощности
  • Измерение качества электроэнергии

Найдите 9-вольтовую батарею (или любое устройство постоянного тока с напряжением 0-25 В. ) и подключите ее, модуль датчика напряжения и Arduino, как показано ниже.

Кодовая программа

После завершения вышеуказанных операций подключите плату Arduino к компьютеру с помощью кабеля USB. Зеленый светодиодный индикатор питания (с надписью PWR ) должен загореться.Откройте Arduino IDE и выберите соответствующий тип платы и тип порта для вашего проекта. Затем загрузите следующий скетч на свой Arduino.

 int analogInput = A1;
float vout = 0,0;
float vin = 0,0;
поплавок R1 = 30000.0; //
поплавок R2 = 7500.0; //
int значение = 0;
void setup () {
 pinMode (аналоговый ввод, ввод);
  Серийный .begin (9600);
  Серийный номер  .print («Вольтметр постоянного тока»);
}
void loop () {
 // считываем значение на аналоговом входе
 значение = analogRead (аналоговый ввод);
 vout = (значение * 5.0) / 1024,0; // видим текст
 vin = vout / (R2 / (R1 + R2));
 
  Серийный  .print ("INPUT V =");
  Серийный номер  . println (vin, 2);
задержка (500);
}

 

рабочая

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

.

Vin = Vout * (R2 / (R1 + R2))

Здесь R1 = 30000, R2 = 7500 и Vout можно рассчитать из аналогового входа Arduino, используя Vout = (аналоговое значение * 5/1024).

Результаты

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

L1: Включение светодиода

Содержание

  1. Материалы
  2. Подключите светодиод к контакту питания 5 В Arduino
    1. Шаг 1: Оберните резистор вокруг ножки светодиода
    2. Шаг 2: Подключите компоненты к Arduino
    3. Шаг 3: Подключите Arduino к источнику питания
    4. Давайте проанализируем нашу схему
      1. Шаг 1: Определите узлы и то, что мы знаем
      2. Шаг 2: Определите падение напряжения на резисторе
      3. Шаг 3: Найдите значение тока
    5. Максимальное потребление тока
      1. Максимальное количество светодиодов в серии
      2. Максимальное количество светодиодов, подключенных параллельно
  3. Понижение напряжения источника питания
  4. Как сделать светодиод менее ярким?
    1. Подключение светодиода к 3. Вывод питания 3 В
    2. Полное видео-пошаговое руководство
    3. Использование резисторов большего номинала
  5. Следующий урок

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

Рисунок Движение тока в цепи показано анимированными желтыми кружками.Эта визуализация представляет собой грубую абстракцию, предназначенную для подчеркивания направления текущего потока. Более точная визуализация показала бы, что электроны уже распределены по проводу до того, как будет приложено напряжение. См. Нашу серию статей «Введение в электронику», в частности урок по напряжению, току и сопротивлению.

Материалы

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

Arduino LED Резистор
Arduino Uno, Leonardo или аналогичный 9036 Красный светодиод 903 903 использование Arduino Leonardo для этих вводных уроков по работе с микроконтроллерами, но подойдет любая плата 5 В, включая Arduino Uno, METRO 328 от Adafruit, RedBoard от Sparkfun, и т. д. Каждая из этих плат имеет одинаковое расположение выводов и общие характеристики.

Подключите светодиод к контакту питания 5 В Arduino

Шаг 1. Оберните резистор вокруг ножки светодиода

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

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

Видео. Пример обмотки ножки (или провода) резистора 220 Ом непосредственно вокруг анода светодиода

Шаг 2: Подключите компоненты к Arduino

Вставьте резистор светодиод + в Arduino: катод светодиода (короткая ножка) к GND и анод светодиода (длинная ножка) + резистор к источнику напряжения Arduino, к которому вы можете получить доступ через вывод 5V.

Шаг 3. Подключите Arduino к источнику питания

Теперь подключите Arduino к источнику питания, и светодиод должен загореться.Ты сделал это!

Вот фотография сделанной мной версии. Мне было легче протянуть проводку через Arduino от порта 5V до GND на противоположной стороне.

Для питания вы можете использовать USB-кабель (который подает 5 В) или батарею на 9 В (которая подает 9 В). В любом случае, Arduino подает 5V через вывод 5V. Как? С помощью регулятора напряжения. См. «Подробнее» ниже.

USB Power 9V Power
С питанием от USB вывод 5V подает 5V Используя бочкообразный разъем Arduino, мы можем подключить 7 внешних источников питания. -12 В настенный адаптер или аккумулятор на 9 В.Внутренний стабилизатор напряжения Arduino снижает эти более высокие напряжения для вывода чистого 5 В

Давайте проанализируем нашу схему

Так же, как мы сделали в нашем уроке светодиодов, давайте проанализируем, сколько тока проходит через эту простую схему на основе светодиодов. Для этого нам сначала нужно определить падение напряжения на резисторе \ (V_R \), а затем использовать закон Ома, чтобы вычислить ток (\ (I = \ frac {V_R} {R} \)).

Шаг 1. Определите узлы и то, что мы знаем

Мы всегда начинаем с идентификации узлов и того, что мы знаем.Мы знаем, что пока выполняется \ (V_f \), на нашем резисторе будет падение напряжения \ (V_R \) и падение напряжения \ (V_D \) на светодиоде.

Согласно законам Кирхгофа, мы знаем, что полное падение напряжения на резисторе и светодиоде (\ (V_R + V_D \)) должно равняться нашему напряжению питания \ (V_S = 5V \). Из нашего урока светодиодов мы знаем, что наша цепь отключена до тех пор, пока не будет достигнуто «включено» или «прямое» напряжение нашего светодиода, которое для красного светодиода составляет ~ 2В. Таким образом, мы можем установить \ (V_D = 2V \) и найти \ (V_R \).

Шаг 2: Найдите падение напряжения на резисторе

Решение для \ (V_R \):

\ [V_S = V_R + V_D \\ V_R = V_S — V_D \\ V_R = 5V — 2V = 3V \]

Шаг 3: Найдите значение тока

Из закона Ома мы знаем, что полный ток в нашей цепи равен падению напряжения на резисторе \ (V_R \), деленному на значение сопротивления \ (R \). То есть \ (I = \ frac {V_R} {R} \). И мы знаем, что \ (V_R = 3V \) и \ (R = 220Ω \). Таким образом, ток в нашей цепи равен:

\ [I = \ frac {V_R} {R} \\ I = \ frac {3V} {220Ω} = 0.014A = 13,6 мА \]

Итак, с выводом питания 5 В наша схема потребляет ток 13,6 мА. Это много или мало? Давайте рассмотрим это в контексте ниже.

Максимальное потребление тока

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

  • Контакты ввода-вывода : Максимальный ток, потребляемый любым одним выводом ввода-вывода , который мы еще не использовали, но мы будем использовать в следующем уроке, составляет 40 мА (более безопасный, непрерывный диапазон ~ 20 мА).Суммарный ток на всех выводах ввода / вывода вместе составляет 200 мА . Если мы превысим эти значения, мы можем повредить нашу плату Arduino или базовый микроконтроллер (ATmega328 для Uno или ATmega32u4 для Leonardo)

  • Контакты источника питания : Выходной контакт 5V может подавать ~ 400- 500 мА при питании от USB и ~ 900-1000 мА при использовании внешнего адаптера питания. Выходной контакт 3,3 В может выдавать ~ 150 мА; однако, если у вас есть оба 3.Выходные контакты 3 В и 5 В подключены, любой ток, потребляемый с контакта 3,3 В, будет засчитан в общий ток 5 В.

Единственный предохранитель — это сбрасываемый предохранитель на USB-порте, который ограничивает ток до 500 мА на выходном контакте 5 В (но только при питании от USB).

В Интернете ведется множество дискуссий о максимальном потреблении тока Arduino Uno и Леонардо. Лучший ресурс, который я нашел, — это сообщения StackExchange, которые также содержат ссылки на таблицы данных (post1, post2).

Максимальное количество светодиодов в серии

Тогда возникает интересный вопрос: с Arduino, питаемым через USB (максимальный ток 500 мА), сколько красных светодиодов вы могли бы последовательно подключить к контакту питания 5 В? Как насчет параллельно? Что является ограничивающим фактором для каждого из них?

Ну, для простой последовательной конфигурации общее количество последовательных светодиодов ограничено напряжением питания, которое составляет 5В. С резистором 200 Ом и красным светодиодом с «прямым» напряжением \ (V_f = 2V \) мы ограничены максимум двумя светодиодами: \ (2 * 2V = 4V \).Однако на практике мне удалось подключить три светодиода последовательно (потому что светодиод начинает немного включаться при ~ 1,7–1,8 В), хотя они были довольно тусклыми. Мои измерения см. В таблице и на изображении ниже.

903 9033
Резистор Кол-во красных светодиодов в серии Падение напряжения на каждом светодиоде Падение напряжения на резисторе Ток
200 Ом 1 2,09 мA
200 Ом 2 1,92 В 1,21 В 6,1 мА
200 Ом 3 1,71 В 0,021 В 9036 3 9036 3 9036 3 9036 3 1,01 В ~ 0 В ~ 0 мА

Таблица . Для этого эмпирического измерения я использовал 5-миллиметровые КРАСНЫЕ светодиоды с рассеянным светом Sparkfun.

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

Рисунок .Измерение падения напряжения и тока отдельного светодиода в цепи с помощью двух мультиметров: желтый мультиметр, настроенный как вольтметр для измерения падения напряжения \ (V_D \) на первом светодиоде в цепи, и красный мультиметр, настроенный как амперметр для измерения ток \ (I \) через цепь.

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

Видео. A CircuitJS моделирование различных серий светодиодов с питанием 5 В.

Максимальное количество светодиодов, подключенных параллельно

Для параллельной конфигурации ограничивающим фактором является общий ток, который мы можем получить, который с выводом 5V, запитанным от USB, составляет 500 мА. Сколько нужно красных светодиодов, чтобы превысить 500 мА при использовании резисторов 200 Ом?

Что ж, в параллельной конфигурации каждая ветвь резистор + светодиод получает ~ \ (I = \ frac {V_R} {R} = \ frac {3V} {200} = 15 мА \). Таким образом, максимальное количество параллельно включенных светодиодов равно \ (\ frac {500mA} {15mA} = 33,3 \), округленное до 34.

Рис. 34 параллельно включенных светодиода потребляют ток 514,1 мА, что превышает максимальное значение на выходном контакте 5 В на Arduino (при питании от USB). Вот ссылка на CircuitJS.

Я попытался немного «нагружать» максимальные значения, используя порт USB на старом MacBook Pro (не делайте этого!). Несмотря на то, что я превысил как предел 500 мА с выходным контактом 5 В (563 мА), так и предел 150 мА с контактом 3,3 В (314 мА), я не сработал предохранитель. Однако я оставил плату подключенной только на короткое время.

Рисунок. Я провел «стресс-тестирование» выходного контакта 5 В, используя USB для питания. Не пытайтесь! Несмотря на превышение номинальных максимумов, мне не удалось сработать внутренний предохранитель Arduino на источниках питания 5 В или 3,3 В. Обратите внимание, что контакты ввода / вывода не имеют такой защиты, поэтому вы можете повредить плату, если перегрузите ток.

Понижение напряжения источника питания

Если мы подключим сетевой адаптер 7–12 В или батарею на 9 В к гнезду Arduino, то как Arduino преобразует эти более высокие напряжения в 5 В? Использование компонента, называемого стабилизатором напряжения, который может принимать различные значения постоянного напряжения и понижать (но не повышать) до стабильного постоянного напряжения.Вы можете купить и использовать регуляторы напряжения в собственных проектах. Если вы хотите узнать больше о подсистеме питания Arduino Uno, прочтите этот пост в блоге Technobyte.

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

Яркость светодиода регулируется током . Итак, чтобы уменьшить яркость светодиода, нам нужно уменьшить ток. Но как? Вспомните закон Ома: \ (V = I * R \) или \ (I = \ frac {V} {R} \). Таким образом, мы можем уменьшить ток:

  1. Уменьшение напряжения
  2. Увеличение сопротивления

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

Подключение светодиода к контакту питания 3,3 В

Arduino Uno обеспечивает источник питания 5 В (который мы только что использовали) и источник питания 3,3 В.

Давайте переместим анод светодиода (длинная ножка) с вывода 5V на вывод 3.Вывод 3V, но оставьте резистор 220 Ом. Что вы наблюдаете? Светодиод должен быть менее ярким! Это связано с тем, что в цепи 3,3 В. протекает меньший ток.

Напомним, что для 5 В мы имеем \ (I = \ frac {V_R} {R} = \ frac {3V} {220Ω} = 13,6 мА \). С выходным контактом 3,3 В это значение падает до \ (I = \ frac {V_R} {R} = \ frac {1V} {220Ω} = 4,5 мА \)

Вот фотография рабочего стола светодиода, подключенного к Порт 3,3 В. Светодиод заметно менее яркий:

Полное видео-пошаговое руководство

Вот полное видео-пошаговое руководство по намотке резистора вокруг анодной ножки светодиода, подключению цепи к 5 В и заземлению, а затем переключению с 5 В на 3.Питание 3 В.

Использование резисторов большего номинала

Мы только что показали, как уменьшение напряжения питания (\ (V_s \)) пропорционально снижает ток и, следовательно, яркость светодиода. Теперь давайте поиграем с резисторами большего номинала, такими как 680 Ом, 2,2 кОм или 10 кОм, и посмотрим, как они действуют. Что случается?

Вы должны заметить, что яркость светодиода уменьшается на , когда сопротивление увеличивается , поскольку яркость светодиода зависит от тока (\ (I = \ frac {V_R} {R} \)).

Мы можем проверить эти теоретические предсказания, используя мультиметр для измерения (\ (V_s \)), фактических значений резисторов и тока \ (I \). Мы провели эти измерения с помощью мультиметра Fluke 115 True RMS.

Несколько важных замечаний:

  • Каждый электронный компонент, который мы используем, от светодиода до резисторов до напряжения питания (\ (V_s \)), будет немного отличаться от идеального. Например, наши углеродные пленочные резисторы имеют допуск 5% (обозначен золотой полосой), и я измерил напряжение питания на Arduino Uno, как (\ (V_s \) = 4.902V), а не 5V.
  • Fluke 115 обеспечивает точность до трех знаков. Итак, мультиметр показывает 0,013 А, 0,004 А, и т. Д. Таким образом, невозможно сравнить наши теоретические прогнозы с 4-м знаком точности (что влияет на наши сравнения с низким током — миллиампер).

Опять же, мы предполагаем \ (V_f = 2V \) для нашего красного светодиода (мы также можем измерить это непосредственно в каждой цепи):

Если вы хотите узнать больше о том, как использовать мультиметр, вот несколько Руководства по началу работы:

У них есть мультиметры в Tinkercad Circuits, так что вы также можете использовать их и играть с ними там (если у вас их нет дома).

Author:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *