Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Arduino: Мультиметр

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

Если статья вам понравилась, то можете поддержать проект.

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

К мультиметру прилагаются два щупа с красным и чёрным проводом. Чёрный провод всегда вставляется в гнездо COM, а красный в один из двух (или трёх) гнёзд. Как правило, одно из таких гнёзд служит для измерения больших токов и имеет обозначение 10A и нам вряд ли пригодится. Второе гнездо по соседству с COM позволяет измерять сопротивление, малый ток, напряжение. Поэтому используем два соседних гнезда в своих экспериментах.

Для выбора диапазона измерений используется дисковый переключатель. Каждая позиция переключателя соответствует определённому числу, которое означает «не больше чем». Смотри описание измерения напряжения. Если вы выбрали неправильный диапазон, то тестер отобразит сообщение об ошибке. Измените положение переключателя и выполните измерение снова.

Прозвонка

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

Измеряем напряжение

Измерять можно напряжение постоянного и переменного тока.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Не путайте эти настройки. Для переменного тока обычно доступны значения 200 и 750 В. У постоянного тока значений больше: 200m (0.2В), 2000m (2В), 20, 200, 1000. Для Arduino как правило достаточно значения 20В.

Измерим напряжение у батарейки. Установите регулятор в значение 20 В (наиболее близкое значение к стандартным 9-вольтовым батарейкам типа Крона) и присоедините щупы к полюсам в любом порядке. Если вы присоедините неправильно, то перед показаниями будет стоять знак минуса. Так вы можете быстро определить полярность у батареек.

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

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

Мы измерили общее напряжение цепи. Теперь приставьте щупы к разным ножкам резистора и снимите показания. Затем присоедините щупы к ножкам светодиода и снова снимите показания. Значения будут отличаться на разных участках цепи. У меня показало 2.15 и 2.85 соответственно, что в сумме даёт тоже 5 Вольт.

Измеряем сопротивление

Для измерения сопротивления у резисторов установите подходящее значение, например, 20К и приложите щупы к концам резистора. Проверьте, совпадает ли значение с вашими показаниями.

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

Измеряем силу тока

Ардуинщикам почти не приходится измерять силу тока. Но если придётся, то используйте значок A. Подключается в разрыв цепи.

Отрицательный кабель чёрного цвета остаётся всегда в гнезде с подписью «COM». Кабель красного цвета вставляется в гнездо, предназначенное для измерения тока.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Как правило, для измерения тока есть два гнезда, одно обозначено «10 А» (или «20 А»), другое обозначено «мА» (или «мА/μA»). Вначале необходимо решить, какой диапазон измерений выбрать. Каким будет ток в цепи? Начинают с самого высокого диапазона измерений и после этого, по возможности, переходят к меньшим (и более точным) диапазонам.

Как правило, максимально допустимая сила тока для бытового мультиметра составляет 10 ампер (реже – 20 А), и для измерения тока силой до 10 А есть гнездо с обозначением «10 A». Вставьте в него красный кабель. Выберите диапазон измерения постоянного тока до 10 А. Если позднее понадобится измерить более низкие диапазоны измерений, то необходимо ещё раз переключить провод и вставить его в гнездо «мА/μA».

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

Инструкция

1.Общие положения

Данный инструмент является портативным, с батарейным питанием цифровым мультиметром с 3 1/2 — разрядным индикатором для измерения постоянного и переменного напряжения, температуры, проверки диодов, транзисторов и прозвонки цепей.

2.Технические характеристики

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







ПРЕДЕЛРАЗРЕШЕНИЕТОЧНОСТЬ
200 мВ100 мкВ±0,25%±2 ед счета
2000 мВ1 мВ±0,5%±2 ед счета
20 В10 мВ±0,5%±2 ед счета
200 В100 мВ±0,5%±2 ед счета
1000 В1 В±0,5%±2 ед счета

ЗАЩИТА ОТ ПЕРЕГРУЗОК: 200 В эфф.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 на пределе 200 мВ и 1000 В

пост. или 750 В эфф. переменного тока на остальных пределах.

Переменное напряжение




ПРЕДЕЛРАЗРЕШЕНИЕТОЧНОСТЬ
200 В100 мВ±1,2%±10 ед счета
750 В1 В±1,2%±10 ед счета

ЗАЩИТА ОТ ПЕРЕГРУЗОК: 1000 В пост. или 750 В эфф. переменного тока на всех пределах.

КАЛИБРОВКА: Среднее, калиброванное в эфф. значениях синусоидального сигнала.

ДИАПАЗОН: 45 Гц — 450 Гц.

Постоянный ток






ПРЕДЕЛРАЗРЕШЕНИЕТОЧНОСТЬ
2 мА1 мкА±1%±2 ед счета
20 мА10 мкА±1%±2 ед счета
200 мА100 мкА±1,2%±2 ед счета
10 А10 мА±2%±2 ед счета

ЗАЩИТА ОТ ПЕРЕГРУЗОК: 200 мА 250 В — плавкий предохранитель, предел 10 А без предохранителя.

ПАДЕНИЕ НАПРЯЖЕНИЯ :200 мВ

Сопротивление







ПРЕДЕЛРАЗРЕШЕНИЕТОЧНОСТЬ
200 Ом0,1 Ом±0,8%±2 ед счета
2000Ом1 Ом±0,8%±2 ед счета
20 КОм10 Ом±0,8%±2 ед счета
200 КОм100 Ом±0,8%±2 ед счета
2000 КОм1 КОм±1%±2 ед счета

МАКС.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 НАПРЯЖ. НА РАЗОМКН. ЩУПАХ: 2,8 В.

ЗАЩИТА ОТ ПЕРЕГРУЗОК: 15 сек. максимум 220В на всех пределах.

Звуковая прозвонка



ПРЕДЕЛОПИСАНИЕ
o)))Встроенный зуммер звучит, если сопротивление менее 1кОм

ЗАЩИТА ОТ ПЕРЕГРУЗОК: 15 сек. 220В максимум, звучит сигнал./p>

Измерение температуры




ПРЕДЕЛРАЗРЕШЕНИЕТОЧНОСТЬ
от -201°С±3°С±2 ед сч (до150°С)
до +1370°С ±3% (выше 150°С)

Тестовый сигнал частотой 50 Герц и амплитудой 5 вольт

2. Комплектация
  • Измерительные щупы
  • Коробка
  • Термопара типа К
3. Руководство по работе с мультиметром

1. Проверьте 9В батарею путем включения прибора. Если батарея разряжена, на дисплее возникнет знак [- +]. Если необходимо заменить батарею смотрите раздел «Уход за прибором»

2. Знак  ! Рядом с гнездами прибора предупреждает о том, что входные токи и напряжения не должны превышать указанных величин. Это сделано  для предотвращения повреждения схемы прибора.

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

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

5. При возникновении на дисплее «1»(перегрузка) необходимо переключиться на верхний предел измерений.

3.1 Измерение постоянного напряжения

1.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Вставьте красный щуп в гнездо «V,W,A» черный — в гнездо «СОМ»

2.Установите переключатель в положение V= и подсоедините концы щупов к измеряемому источнику напряжений. Полярность напряжения на дисплее при этом будет соответствовать полярности напряжения на красном щупе.

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

3.2 Измерение переменного напряжения

1.Вставьте красный щуп в гнездо «V,W,A» черный — в гнездо «СОМ»

2.Установите переключатель в положение V= и подсоедините концы щупов к измеряемому источнику напряжений.

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

3.3 Измерение постоянного тока

1.Подключите черный провод к разъему CОМ, а красный к разъему mA для токов до 200мА. Для токов максимум до 20А подключить красный щуп к гнезду 20А

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

Замечание! Максимальный входной ток равен 200mA или 20А в зависимости от используемого гнезда. Превышение предельных значений вызовет выгорание предохранителя, что потребует его замены. Заменять предохранитель следует аналогичным на ток не более 200мА. Несоблюдение этих требований может привести к повреждению схемы. Вход 20А не защищен. Максимальное падение напряжения 200мВ.

3.4 Измерение сопротивлений

1.Вставьте красный щуп в гнездо «V, W,A» черный — в гнездо «СОМ».

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

Замечание

1. Если величина измеряемого сопротивления превышает максимальное значение диапазонов, на котором производиться измерение, индикатор высветит «1».Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Выберите больший предел измерений. Для сопротивлений 1МОм и выше время установления показаний составляет несколько секунд. Это нормально для измерения больших сопротивлений.

2. Когда цепь разомкнута, на дисплее будет выводиться «1»

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

4. Напряжение разомкнутой цепи на пределе 200М равно 3В. При замкнутых накоротко, концах на этом пределе дисплей показывает 1,0+-0,1МОм, это нормально. При измерении сопротивления в 10МОм дисплей будет показывать 11Мом, при изменении сопротивления в 100МОм дисплей будет показывать 101МОм. 1,0 (+-0,1) является константой, которая должна вычитаться из показаний.

3.5 Проверка диодов и звуковая прозвонка

1.Подключите красный провод к разъему «V, W» черный — к разъему «СОМ». (Полярность красного при этом будет «+».

2. Установите переключатель на предел«—|>|—» и подсоедините щупы к измеряемому диоду, дисплей покажет прямое падение напряжения на диоде.

3. Подсоедините щупы к двум точкам исследуемой цепи. Если сопротивление будет менее 5Ом зазвучит сигнал.

3.6 Измерение транзистора

1.Установите переключатель функций на диапазонh FE.

2. Определите тип транзистора: «NPN» или «PNP» и найти выводы эмиттера, базы и коллектора.

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

3. На дисплее будет значение h FE при токе базы 10 мкА и напряжении коллектор-эмиттер 2,8В.

3.7 Измерение температуры

1.Установите переключатель функций на диапазон ТЕМР и воткните вилку термопары в разъем прибора.

2. Измерение внутренней температуры без термопары: установите переключатель функций на диапазон ТЕМП и считайте показания дисплея.

4.Уход за прибором

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

4.1 Замена батареи

При необходимости замены батареи откройте заднюю крышку, выньте старую и поставьте аналогичную новую батарею.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

4.2 Замена предохранителя

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

Работаем с мультиметром

В комплект к мультиметру входят два щупа — с красным и чёрным проводом. Вилка чёрного щупа вставляется в гнездо с отметкой «COM» (от Common, общий). Вилка красного провода вставляется в соседнее гнездо с отметкой «V». Рядом может находиться ещё одно гнездо, которое тоже предназначено для красного щупа, но для измерения больших токов.

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

Каждая позиция переключателя соответствует определённому числу, которое означает «не больше чем». Например, при измерении напряжения батарейки номиналом 6 В, нужно использовать позицию 20, а не 2. Если вы выберете неправильную позицию, то мультиметр покажет ошибку, например, «E» (error), «L» (lapse), «1» (изучите документацию к вашему устройству). Измените положение переключателя и выполните измерение снова.

Сопротивление

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

КоличествоПроизноситсяМеждународноеРусское
1000 ом1 килоом1KΩ или 1K1 кОм
10 000 ом10 килоом10KΩ или 10K10 кОм
100 000 ом100 килоом100KΩ или 100K100 кОм
1 000 000 ом1 мегаом1MΩ или 1М1 МОм
10 000 00010 мегаом10MΩ или 10М10 Мом

Для измерения сопротивления нужно установить переключатель в позицию не меньше 100 КОм. А затем переключать в меньшие значения.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Напряжение

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

КоличествоПроизноситсяМеждународноеРусское
0.001 вольта1 милливольт1 mV1 мВ
0.01 вольта10 милливольт10 mV10 мВ
0.1 вольта100 милливольт100 mV100 мВ
1 вольт1000 милливольт1 V1 В

Сила тока

Международным обозначением силы тока является буква A, в России используется также «А». Соотвественно, таблица различных значений выглядит следующим образом.

КоличествоПроизноситсяМеждународноеРусское
0.001 ампера1 миллиампер1 mA1 мА
0.01 ампера10 миллиампер10 mA10 мА
0.1 ампера100 миллиампер100 mA100 мА
1 ампер1000 миллиампер1 A1 А

Электрический ток в батарейках называется постоянным током (DC, direct current).

В домах в розетках переменный ток (AC, alternating current).

Реклама

Измерение потребляемой мощности с помощью Arduino » NGIN.pro

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

Шаг 1: Что вам нужно?

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

Arduino Uno
    ЖК -дисплей
    CT — Talema AC1030
    Резистор 56Ω
    Конденсатор 10 мкФ
    2 х 100 кОм разделительные резисторы

Шаг 2: Соберите компоненты

 Прежде всего, необходимо начать сборку компонентов на CT, либо на макете, чтобы создать свой датчик тока, xnj вырабатывает сигнал, который ваш Arduino может понять.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5  Arduino имеет только входы аналогового напряжения, которые измеряют 0-5V DC, так что вам нужно, чтобы преобразовать выходной ток от трансформатора тока в источник опорного напряжения, а затем масштабировать источник опорного напряжения в диапазоне 0-5В.

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

Шаг 3: Загрузите кодТеперь вы можете загрузить свой эскиз на ваш Arduino.

Скачать файл: powermeter.zip [820 b] (cкачиваний: 250)

Вот ссылка для загрузки кода последовательного выхода счетчика энергии.
Скачать файл: powermeterserial.zip [716 b] (cкачиваний: 176)

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

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

double RMSCurrent = ((maxCurrent – 516)*0.707)/11.8337

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

Удачи!


Фріланс-проєкти › Измерение напряжения. Скетч для управления TFT дисплеем и ARDUINO.

Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Измерение напряжения. Скетч для управления TFT дисплеем и ARDUINO.

Доброго времени суток. Необходимо написать скетч для связки Arduino nano и TFT дисплея 2,2 SPI 240×320.

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

 описание работы:

1. Зажимаем кнопку SB1 на 3 секунды — устройство включилось, на черном дисплее надпись белыми буквами HELLO в течение 3 секунд. После 3 секунд включается рабочий дисплей.

2. Кнопки SB1 I SB2 выполняют роль стрелок перехода между объектами MOD1 и MOD2. (После каждого включения устройства курсор размещен на объекте MOD1.

3. Курсор на объекте MOD1, кратковременно нажали кнопку SB1, после чего на выходе OUT1 появляется логическая 1. Такое положение выхода сохраняется до тех пор, пока мы снова не нажмем на объект MOD1 кнопкой SB1, после чего на выходе снова появляется 0 (просто говоря объект MOD1 это кнопка с фиксацией для включения или всключения лампочки HL1.

4. Кнопкой SB3 (стрелка вправо) переместили курсор на объект MOD2. Нажали на этом обэкте кратковременно кнопку SB1. Активировался режим сигнализации. Суть режима такова, что он привязан к нашей 12-сегментной шкале, при достижении шакалой 4 сегментов и более на выходе OUT2 появляэться последовательность 1,0,1 … (Индикатор HL2 начинает мигать, секунда светит, секунда пауза …). Индикатор HL2 мигает до тех пор, пока шкала не уменьшится ниже 4 сегментов. Когда опустилась ниже 4 сегментов индикатор HL2 гаснет, при повторном достижении 4 и более сегментов снова начинает мигать индикатор HL2. Чтобы выключить режим сигнализации мы кратковременно нажимаем кнопку SB1 на объекте MOD2.

5. Зажав кнопку SB1 на 3 секунды мы полностью выключаем устройство.

Измерение напряжения на входе:

На вход Ардуино подается напряжение которое мы контролируем (от внешнего датчика), которое меняется от 0.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 1 до 1.2В. Наша задача измерять это напряжение в течение 0,2 сек. как можно больше раз, и самое пиковое его значение которое было зафиксировано за 0,2 секунды отображать на шкале без задержки.

Отображение напряжения на шкале:

Шкала имеет 12 сегментов. Изменение количества засвеченных сегментов идет логарифмически. Шаг сегментов:

1) 0.1В

2) 0.12в

3) 0.14в

4) 0.17в

5) 0,21в

6) 0.27в

7) 0,35В

8) 0,45в

9) 0,58в

10) 0,73в

11) 0,92в

12)> 1,16в

Ползущий график в реальном времени:

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

Вопрос не со всем по теме. Измерение тока через шунт.

Stich_24

Загрузка

31.01.2019

2825

Вопросы и ответы

В общем была собрана схема из ардуино Уно, шагового двигателя 28BYJ-48 и драйвера А4988. ШД удачно интегрирован под драйвер А4988. Задача состоит в следующем, нужно узнать ток с обмотки двигателя, но так как там токи маленькие, примерно 0.16 мА, то не все модули подойдут. Подскажите как подобрать сопротивление для шунта, который будет последовательно вставлен в цепь с обмоткой. И этот ток нужно измерять на ардуино. Питание мотора 10В. Пиковый ток для мотора по документам 0.2 А. !Была попытка снять напряжение с шунта 5 Ом, два провода с контактов резистора были отправлены в А0 и А1.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Как говорил источник, разница с данных аналоговых пинов разделённые на 5 (V0 — V1) / 5V = вольтаж на резисторе. НО подключив всё, сработал скорей всего автомат на ноутбуке и ПК благополучно ‘потух‘, выключился. Испугался сильно 🙂 Больше так не делал. Кто может объяснить для недолёких что случилось в данном случае, и кто поможет решить данную проблему.

Вложу картинку как это должно быть, у меня немного другая ситуация.

Ответы на вопросы

Популярные вопросы

sancho

Загрузка

26.02.2021

907

Всем приветНе спешно собираю «Правильную дельту». Тут на форуме видел фото интересных шарниров на тяги для дельта-принтера

Автор…

Читать дальше

Dolciamanti

Загрузка

26.02.2021

650

Доброго времени суток!

Есть огромное желание влиться в мир 3D печати и, что немаловажно, достаточно объемная конкретная задача. …

Читать дальше

mlizart

Загрузка

15.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 03.2018

20747

Несколько раз уже я обращался к уважаемому сообществу с вопросом на тему — почему так говорят ‘3D печать’, ‘3D принтеры’ и прочие интерпретации, типа…

Читать дальше

Цифровой вольтметр на ПК и arduino.

Подробности
Категория: Arduino
Опубликовано 11.09.2015 17:30
Автор: Admin
Просмотров: 8731

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

Вывод данных осуществляется в программу написанную для компьютера под Windows. При этом компьютер может быть абсолютно любым,будь это моноблок,стационарный компьютер или ноутбук,к примеру можно купить моноблок dell. В этом примере программа вольтметра была написана в среде разработке Visual C++. Статья ориентированна на тех кто уже имел дело с языком программирования C++

Измерение напряжения начинается только после того как со стороны компьютера поступят команды 0xAC и 0x1y. Где y представляет собой номер канала аналого цифрового преобразователя Arduino, и может принемать значение от 0 до 2.

После того как arduino получила команды старта измерения, начинается процесс измерения напряжения, измеренное напряжение отсылается обратно в компьютер с интервалом в 50 миллисекунд. Имеют следующий формат: 0xAB, 0xaa, 0xbb, где aa и bb максимальное и минимальное значение.

Прекращение измерения напряжения начинается после того как с компьютера поступят команды 0xAC и 0x00.

Программа написанная под Arduino (скетч) довольно проста — здесь нет ничего сложного,измеренное значение в последовательный порт.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Измеренное значение напряжения умещается в 10 бит от 0x000 до 0x0400 хранится в переменной типа integer.

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

Программа вольтметра под компьютер

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

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

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

Код программы под windows можете скачать тут

  • < Назад
  • Вперёд >
Добавить комментарий

ARDUINO: Энциклопедия АРДУИНО: AVMeter

НАЗНАЧЕНИЕ

Прибор предназначен для одновременного измере-ния постоянного напряжения и тока с записью результатов на карту памяти формата microSD. Пределы измерения напряжения (0…20V) и тока (‑5A…5A) выбраны исходя из того, что прибор используется в основном для наблюдения за процессами заряда-разряда 12-вольтовых свинцово-кислотных аккумуляторов небольшой емкости в источниках бесперебойного питания. Текущие значения напряжения и тока отображаются на дисплее, а запись результатов измерений в файл формата CSV (лог-файл) происходит через заданные интервалы времени, устанавливаемые в пределах от 1 до 30 минут.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

УСТРОЙСТВО

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

· модуль LCD дисплея 1602 с конвертером интерфейса I2C

· модуль АЦП на базе ADS1115

· модуль часов реального времени на базе DS1307

· модуль адаптера microSD карты

· модуль датчика тока на базе ACS712 (2 шт.)

Символьный LCD дисплей имеет 2 строки по 16 символов и используется для отображения результатов измерений, а также для вывода различной служебной информации в режиме настройки. Четырехканальный 16-разрядный АЦП ADS1115 служит для преобразования входных аналоговых сигналов в цифровую форму для дальнейшей обработки микроконтроллером. На один из его каналов через входной делитель поступает измеряемое напряжение, на два других – выходные сигналы от модулей ACS712, пропорциональные измеряемому току. Четвертый канал АЦП не используется. Часы реального времени необходимы для получения данных о текущей дате и времени, записываемых в лог-файл вместе с измеренными значениями тока и напряжения, они же используются для задания временных интервалов между записями. Адаптер карты памяти содержит соответствующее гнездо для установки карты формата microSD, а также микросхему преобразователя уровней входных и выходных сигналов, позволяющий привести 5-вольтовые логические сигналы Arduino к уровням 3.3 вольта, необходимым для работы карты памяти. Модули датчиков тока включены по дифференциальной схеме, при которой один и тот же измеряемый ток проходит через два датчика в противоположных направлениях, что позволяет резко снизить влияние температурного дрейфа датчиков, нестабильности источников питания и окружающих магнитных полей на точность измерений. Подробнее о преимуществах такого включения можно прочитать далее. Прибор подключается к измеряемым электрическим цепям при помощи двух пар гибких проводов, включаемых в соответствующие гнезда – одна пара гнезд служит для измерения напряжения и подключается параллельно к клеммам аккумулятора, процессы заряда или разряда которого необходимо наблюдать, другая пара включается последовательно с этим аккумулятором и служит для измерения силы тока его заряда/разряда.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Цепь измерения тока не имеет гальванической связи с остальными цепями прибора, поэтому ток можно измерять как в положительном проводе, идущем к аккумулятору от плюса зарядного устройства и нагрузки, так и в отрицательном, идущем к аккумулятору от общего провода (массы). Все элементы электрической схемы прибора размещены в пластмассовом корпусе. На лицевой панели корпуса размещены дисплей и кнопки управления, а на боковых стенках корпуса – разъем для подключения внешнего источника питания, гнезда для подключения измеряемых цепей напряжения и тока, а также имеется прорезь для извлечения/установки карты памяти. Прибор питается от внешнего стабилизированного источника питания напряжением 9V. Потребляемый от источника ток около 70 мА. Выключателя питания прибор не имеет и включается при подаче питания от внешнего источника.

РЕЖИМЫ РАБОТЫ

Вольтметр-амперметр работает в трех режимах

MEASUREMENT (ИЗМЕРЕНИЕ)

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

RECORDING (ЗАПИСЬ)

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

SETUP (НАСТРОЙКА)

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

При каждом включении прибора выполняется проверка наличия карты памяти и, если карта вставлена в соответствующее гнездо, прибор сразу переходит в режим MEASUREMENT. Если же карта microSD в адаптере отсутствует, на дисплей на 2-3 секунды выводится соответствующее предупреждение, а затем прибор переходит в режим MEASUREMENT, как обычно, однако перейти в режим RECORDING нажатием кнопки «START» в этом случае не получится.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Для того чтобы выполнить запись результатов измерений в файл, нужно будет выключить питание прибора, вставить на место карту памяти, а затем снова включить прибор.

Таблица 1. Функции кнопок и примеры показаний на дисплее в каждом из режимов.

Режим

Назначение кнопок

Примеры показаний на дисплее

MEASUREMENT
(ИЗМЕРЕНИЕ)

SW1 (белая) – «SETUP» – переход в режим настройки
SW2 (зеленая) – «START» – создание нового лог-файла на карте памяти и переход в режим записи

SW3 (красная) – не задействована

RECORDING
(ЗАПИСЬ)

SW1 (белая) – не задействована
SW2 (зеленая) – не задействована

SW3 (красная) – «STOP» — завершение записи, закрытие лог-файла и возврат в режим измерения

символ “R” — мигает

SETUP
(НАСТРОЙКА)

SW1 (белая) – «NEXT» – переход к следующему настраиваемому параметру, после завершения настройки всех параметров – возврат в режим измерения.
SW2 (зеленая) – «UP» – увеличение настраиваемого параметра на 1

SW3 (красная) – «DOWN» – уменьшение настраиваемого параметра на 1

ФОРМАТ ЛОГ-ФАЙЛА

В режиме измерения при нажатии кнопки «START» создается новый лог-файл на карте памяти и начинается запись измеренных значений в этот файл. Имя файла присваивается автоматически при создании и имеет формат MMDDHHmm.csv, где MM – две цифры текущего месяца (01…12), DD – две цифры текущего дня (01…31), HH – две цифры часа (00…23) и mm – две цифры минуты (00…59). Например, файл, созданный 1-го февраля в 15:30 будет иметь имя 02011530.csv. Каждая строка файла содержит одну запись, включающую текущую дату, время и измеренные значения напряжения и тока, разделенные запятыми.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Записи разделяются символами 0x0D и 0x0A (CR и LF) и добавляются в файл в течение всего времени, пока прибор находится в режиме RECORDING, через заданные интервалы времени. Например, если прибор находился в режиме записи в течение часа и был установлен интервал времени между записями 10 минут, то содержимое файла будет выглядеть следующим образом:

2017/11/13 15:12:02, 3.3742, -0.3058
2017/11/13 15:22:02, 3.3744, -0.3076
2017/11/13 15:32:02, 3.3745, -0.3023
2017/11/13 15:42:02, 3.3745, -0.3054
2017/11/13 15:52:02, 3.3745, -0.3030
2017/11/13 16:02:02, 3.3745, -0.3035

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

ЭЛЕКТРИЧЕСКАЯ СХЕМА

Принципиальная электрическая схема прибора показана на рисунке:

Измеряемое напряжение поступает на вход VOLTAGE INPUT и через делитель R1, R2, понижающий напряжение в 5 раз, поступает на вход A0 модуля АЦП U3. Благодаря делителю на вход прибора можно подавать напряжения в диапазоне 0…20 V. Диод D1 защищает вход АЦП от случайной подачи напряжения отрицательной полярности, которое может вывести микросхему АЦП из строя. Измеряемый ток со входа CURRENT INPUT поступает на входы IN0 и IN1 микросхем ACS712 модулей U5 и U6. Эти микросхемы содержат датчики Холла, преобразующие магнитное поле, возникающее в проводнике от протекания по нему измеряемого тока, в пропорциональное ему выходное напряжение. Главным достоинством микросхем ACS712 является полная изоляция цепи измеряемого тока от остальных цепей микросхемы и, соответственно, от всей электрической схемы прибора, что дает возможность подключать вход CURRENT INPUT в любую точку схемы исследуемого устройства, например, как в положительный, так и в отрицательный провод аккумулятора, не опасаясь короткого замыкания с цепью измеряемого напряжения.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Этим модули на базе ACS712 выгодно отличаются от более распространенных датчиков тока, измеряющих падение напряжения на шунте, включенном в измеряемую цепь. Еще одним полезным свойством микросхем ACS712 является возможность измерения тока любой полярности, что очень удобно при исследовании процессов в аккумуляторах, у которых, как известно, ток при зарядке течет в одну сторону, а при разрядке – в другую. К сожалению, кроме отмеченных достоинств, микросхемы ACS712 имеют и некоторые недостатки, заключающиеся в значительном дрейфе выходного напряжения от окружающей температуры, от напряжения источника питания и, особенно, от силы и направления окружающих магнитных полей, включая магнитное поле Земли. Это затрудняет измерение малых токов на уровне единиц или даже десятков миллиампер. Для устранения этого недостатка в схеме использованы два одинаковых модуля, выходные сигналы которых подаются на входы A1 и A2 модуля АЦП U3, где преобразуются в цифровую форму, а затем программно вычитаются друг из друга микроконтроллером. При этом все погрешности, имеющие у двух модулей одинаковый знак и близкую величину, значительно уменьшаются (в идеале, вообще, становятся равными нулю), а полезный сигнал, наоборот, удваивается из-за встречного включения датчиков тока. Обратите внимание, что входы IN0 и IN1 двух модулей соединены таким образом, что измеряемый ток протекает через них в противоположных направлениях. Такое включение датчиков и дальнейшее вычитание их выходных напряжений образует дифференциальную схему, позволяющую значительно повысить точность измерений, что особенно заметно при малых величинах измеряемых токов. Еще одним недостатком модулей на базе ACS712 является высокий уровень собственных шумов на выходах, который достигает десятков милливольт, что также отрицательно сказывается на точности измерений малых токов. Для подавления этих шумов выходы модулей U5 и U6 соединены со входами A1 и A2 модуля АЦП U3 через простейшие RC-фильтры нижних частот R3C1 и R4C2. Модули часов реального времени, АЦП и дисплея подключаются к микроконтроллеру по шине I2C, таким образом, для обмена данными с этими модулями задействовано всего 2 входа-выхода Arduino (A4, A5), а microSD карта подключается при помощи интерфейса SPI (входы-выходы D10, D11, D12, D13).Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Кроме того, в приборе имеются три кнопки управления, подключенные ко входам D2, D3 и D4 микроконтроллера и необходимые для переключения режимов работы и настройки параметров. Питающее напряжение 9V поступает на микроконтроллер U1 от внешнего источника питания, а все остальные модули питаются напряжением 5V от встроенного стабилизатора напряжения Arduino Nano (цепь VCC).

КОМПОНЕНТЫ

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

Цифрами обозначены:

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

2. Комбинированная плата Data Logging Board фирмы Deek-Robot, объединяющая в себе модуль часов реального времени и модуль адаптера карты microSD.

3. Модуль АЦП на базе 4-канальной 16-разрядной микросхемы ADS1115 фирмы Texas Instruments

4. Модуль датчика тока на базе микросхемы ACS712 фирмы Allegro (таких модулей нужно 2 штуки). Максимальный измеряемый модулем ток 5А.

5. Три кнопки без фиксации 12×12 мм с цветными колпачками

6. Модуль символьного LCD дисплея 1602 (16 символов, 2 строки) с припаянным к нему конвертером интерфейса I2C

7. Разъем для подключения внешнего источника питания 9V

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

КОНСТРУКЦИЯ И МОНТАЖ

Прибор смонтирован в пластмассовом корпусе размерами 112х82х40 мм. Корпус состоит из двух половинок, соединяемых по углам саморезами. В верхней половине размещен дисплейный модуль и кнопки управления, в нижней половине – все остальные модули и разъемы. Для того чтобы половинки корпуса можно было при необходимости разъединить, соединения между ними сделаны с помощью двух 4-контактных разъемов – один для подключения дисплея, другой для подключения кнопок управления.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 В связи с простотой схемы и малым количеством соединений между модулями печатная плата не разрабатывалась. Модули и дискретные элементы размещены на куске перфорированной односторонней макетной платы, их выводы соединены на нижней стороне платы навесными проводниками. На другом куске той же макетной платы смонтированы кнопки управления. Модули датчиков тока U5 и U6 должны размещаться параллельно друг другу, и, желательно, как можно ближе, при этом внешние магнитные поля будут одинаково влиять на их выходные сигналы, что позволит полностью скомпенсировать их в программе. В конструкции, показанной на фото, модули U5 и U6 размещены «этажеркой», то есть один под другим. Рекомендуется перед установкой этих модулей в прибор выпаять находящиеся на них SMD-светодиоды. Эти светодиоды индицируют подачу напряжения питания на модули, что не имеет большого смысла, когда они расположены в корпусе прибора и не видны снаружи, однако, они довольно сильно нагреваются в процессе работы и нагревают находящуюся рядом микросхему ACS712, вызывая заметный дрейф нуля прибора в первые минуты после его включения.

ВОЗМОЖНОСТИ МОДЕРНИЗАЦИИ ПРИБОРА И ЗАМЕНЫ КОМПОНЕНТОВ

При желании диапазон измеряемого напряжения можно расширить, изменив сопротивления резисторов входного делителя, а диапазон измеряемого тока – заменив 5-амперные модули датчиков тока на аналогичные 20-амперные или 30-амперные. При этом нужно будет внести соответствующие поправки в расчетные формулы, использованные в программном коде. Микроконтроллер Arduino Nano, использованный в приборе, можно заменить другими микроконтроллерами того же семейства c 5-вольтовыми логическими сигналами и тактовой частотой 16 MHz, например, Arduino Uno или Arduino Pro Mini, однако при этом надо учитывать, что Arduino Uno стоит дороже и имеет большие габариты, что потребует увеличения размеров корпуса прибора, а Arduino Pro Mini не имеет USB интерфейса и в этом случае для загрузки управляющей программы потребуется внешний программатор (USB to TTL конвертер).Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 При отсутствии 4-х канального АЦП ADS1115 его можно вообще исключить из схемы, а сигналы со входного делителя напряжения и с модулей датчиков тока подавать непосредственно на любые свободные аналоговые входы Arduino, при этом для преобразования этих сигналов в цифровую форму нужно будет использовать встроенные АЦП микроконтроллера. Надо только иметь в виду, что в этом случае точность измерений значительно снизится, поскольку АЦП Arduino имеет разрядность всего 10 (диапазон 0…5 V разбивается на 1024 ступеньки) против разрядности 16 у ADS1115 (65536 ступенек). Объединенные на одной плате модули часов реального времени и адаптера карты памяти можно без изменения электрической схемы заменить двумя отдельными модулями. При этом, если модуль часов реального времени будет выполнен на базе той же микросхемы DS1307, то и в программный код не придется вносить никаких изменений, а если микросхема окажется другой, например, DS1302 или DS1337, то нужно будет использовать в программе соответствующую библиотеку и внести некоторые изменения в код. Четвертый канал АЦП ADS1115, не используемый в приборе, можно при желании использовать для чего-нибудь полезного, например, подключить его к батарейке часов реального времени, что позволит контролировать ее напряжение и вовремя заменить в случае разрядки. Можно также добавить еще один входной делитель напряжения, аналогичный уже имеющемуся и подключить его к этому свободному входу, что позволит измерять и записывать в лог-файл величину напряжения не в одной точке цепи, как сейчас, а сразу в двух. Еще одной интересной возможностью использования четвертого входа АЦП является подключение к нему датчика температуры, расположенного внутри корпуса прибора и соответствующая коррекция в программе результатов измерений с тем, чтобы скомпенсировать температурный дрейф датчиков тока и АЦП. Это значительно повысит точность измерений, особенно, если прибор предполагается использовать вне помещения.

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

Полный исходный текст программы микроконтроллера может быть загружен по ссылке – http://intranet.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 intsoft.spb.ru/AV-meter/AV-meter.zip. В программе используются следующие библиотеки, необходимые для взаимодействия микроконтроллера с периферийными модулями: · Wire (встроенная библиотека Arduino IDE) – работа с интерфейсом I2C для обмена данными между микроконтроллером и периферийными модулями · Adafruit_ADS1015 (v.1.1) – работа с АЦП на базе ADS1015/ADS1115 · LiquidCrystal_I2C – работа с LCD дисплеем · RTClib – работа с модулем часов реального времени на базе DS1307 · SPI (встроенная библиотека Arduino IDE) – работа с интерфейсом SPI для взаимодействия с адаптером карты памяти microSD · SD – работа с файловой системой FAT16/FAT32 для записи лог-файла на карту памяти Непосредственно измерением и записью результатов в лог-файл занимаются всего две функции – measureSingleEnded и measure. Весь остальной объем текста программы составляют процедуры взаимодействия с пользователем – отображение на дисплее результатов измерений (в режимах MEASUREMENT и RECORDING) и различных сообщений (в режиме SETUP), обработка нажатий на кнопки управления. Исходный текст подробно прокомментирован и в основном не требует дополнительных пояснений.

НАСТРОЙКА ПРИБОРА

При исправных компонентах и правильно выполненном монтаже электрическая часть прибора настройки не требует. После загрузки кода программы в микроконтроллер и включения прибора достаточно убедиться, что показания на дисплее и функционирование кнопок соответствуют Таблице 1 в разделе РЕЖИМЫ РАБОТЫ. Возможно, потребуется лишь установить контрастность изображения на дисплее при помощи переменного резистора, находящегося на плате конвертера интерфейса I2C. Далее можно приступать к калибровке показаний прибора, которая выполняется путем подбора значений нескольких констант в коде программы и состоит из двух этапов.

Этап 1 – установка нуля

При первом включении весьма вероятно, что прибор будет показывать ненулевые значения напряжения и тока, несмотря на то, что его входы не подключены к измеряемой цепи.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Причина появления таких ненулевых показаний различна для каналов напряжения и тока. В канале измерения напряжения смещение нуля возникает от протекания входного тока АЦП ADS1115 через резисторы входного делителя напряжения. В результате на входе АЦП возникает некоторое небольшое (в пределах 10-15mV) начальное смещение. Для того чтобы это смещение скомпенсировать, необходимо подобрать значение константы voltageZeroCorrection находящейся в самом начале исходного текста, сразу после объявления используемых в программе библиотек. Размерность константы соответствует напряжению в вольтах, т.е. если, например, показания на дисплее при отсутствии входного напряжения будут равны 0.003 V, то текущее значение константы надо уменьшить на эту величину, если -0.003 V, то на столько же увеличить.

ВАЖНО! Перед тем как подбирать константу voltageZeroCorrection необходимо:

1. Замкнуть перемычкой входные гнезда VOLTAGE INPUT.

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

В канале измерения тока начальное смещение нуля возникает из-за разброса параметров микросхем датчиков тока. Хотя в документации микросхем ACS712 указано, что их выходное напряжение при отсутствии измеряемого тока равно половине напряжения питания, на практике микросхемы имеют определенный разброс параметров. В результате этого при вычитании их выходных напряжений в программе не всегда получается нулевое значение. Для компенсации этой разницы нулевых точек необходимо подобрать значение константы currentZeroCorrection. При этом замыкать перемычкой входные гнезда CURRENT INPUT не нужно, а вот прогреть прибор в течение 15-20 минут очень рекомендуется. К сожалению, даже при самом тщательном подборе константы currentZeroCorrection добиться стабильных нулевых значений в канале измерения тока скорее всего не удастся – показания на дисплее при неизменной температуре воздуха будут плавать в пределах 2-3мА вверх и вниз от нуля, а при изменении температуры могут уползти и до 10-15мА, однако, следует иметь в виду, что эти колебания составляют всего лишь десятые доли процента от верхнего предела измерений прибора.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Вряд ли стоит ожидать от несложной конструкции, собранной из весьма дешевых комплектующих, точности измерений, сопоставимой с профессиональным лабораторным оборудованием, поэтому в большинстве случаев можно считать такие незначительные отклонения допустимыми. Тем не менее, если даже небольшие колебания нулевой точки нежелательны, то в программе предусмотрена возможность избавиться от них, включив шумоподавление. Для этого нужно убрать символы комментария в начале следующей строки: //#define NOISE_SUPPRESSOR 1 Если константа NOISE_SUPPRESSOR определена, то все результаты измерений менее 3mV в канале измерения напряжения и менее 3mA в канале измерения тока будут показываться на дисплее как 0. При этом независимо от того, определена эта константа или нет, в лог-файл всегда будут записываться исходные значения без шумоподавления.

Этап 2 – калибровка чувствительности

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

· Регулируемый источник питания, способный вырабатывать постоянное напряжение до 20V при токе до 5 ампер

· Мощный резистор сопротивлением несколько ом, используемый в качестве нагрузки

· Лабораторный цифровой амперметр с пределом измерений до 5А максимально возможного класса точности

· Лабораторный цифровой вольтметр с пределом измерений до 20V максимально возможного класса точности

От качества эталонных лабораторных приборов, применяемых для калибровки чувствительности, зависит точность, которую удастся достигнуть. Не следует в качестве эталонных приборов использовать недорогие мультиметры, приобретенные в соседнем хозяйственном магазине, их точность совершенно недостаточна для успешной калибровки. Процесс калибровки состоит в подборе значений константы voltageSensitivity для канала измерения напряжения и константы currentSensitivity для канала измерения тока. Для этого нужно собрать цепь из регулируемого источника питания и резистора нагрузки, подключить последовательно с нагрузкой вход CURRENT INPUT прибора и эталонный амперметр, а параллельно нагрузке – вход VOLTAGE INPUT прибора и эталонный вольтметр.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Далее показания эталонных приборов нужно сравнить с результатами на дисплее и подобрать значения констант так, чтобы результаты измерений совпали.

ССЫЛКИ НА ИНТЕРНЕТ-РЕСУРСЫ

Электронные компоненты, используемые в проекте:

· Микроконтроллер Arduino Nano — https://store.arduino.cc/arduino-nano (англ.)

· Плата Data Logging Board фирмы Deek-Robot — http://draeger-it.blog/arduino-lektion-27-datenloggen-mit-dem-logging-shield/ (нем.) (Сайт производителя платы на дату написания статьи находится в нерабочем состоянии, поэтому приведена ссылка на сторонний ресурс).
Документация микросхемы часов реального времени DS1307 фирмы Dallas Semiconductor — https://www.sparkfun.com/datasheets/Components/DS1307.pdf (англ.).

· Модуль АЦП ADS1115 — https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/ (англ.).

Документация микросхемы ADS1115 — http://www.ti.com/lit/ds/symlink/ads1115.pdf (англ.).

· Модуль датчика тока на базе микросхемы ACS712 — https://www.elecrow.com/wiki/index.php?title=ACS712_Current_Sensor-_5A (англ.).

Описание принципа работы микросхемы ACS712 — http://embedded-lab.com/blog/a-brief-overview-of-allegro-acs712-current-sensor-part-1/ (англ.).

Документация микросхемы ACS712 — https://www.allegromicro.com/~/media/Files/Datasheets/ACS712-Datasheet.ashx (англ.).

· LCD дисплей — http://www.winstar.com.tw/products/character-lcd-display-module/16×2-lcd.html (англ.), модуль интерфейса I2C для дисплея — http://modtronix.com/mod-lcdi2c-bb1.html (англ.)

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

Библиотеки, используемые в проекте:

· Wire (встроенная библиотека Arduino IDE) — https://www.arduino.cc/en/Reference/Wire

· Adafruit_ADS1015 — https://github.com/adafruit/Adafruit_ADS1X15

· LiquidCrystal_I2C — https://github.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 com/fdebrabander/Arduino-LiquidCrystal-I2C-library

· RTCLib — https://github.com/adafruit/RTClib

· SPI (встроенная библиотека Arduino IDE) — https://www.arduino.cc/en/Reference/SPI

· SD — https://github.com/arduino-libraries/SD

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

Текст публикуется в соответствии с условиями лицензии CREATIVE COMMONS Attribution-NonCommercial-ShareAlike 3.0

©2018 Александр Бутовский

г. Санкт-Петербург

11 января 2018

[email protected]

3

Программно-аппаратный универсальный вольтмодблок. Концепция и макет

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

Линейная схема питания выглядит следующим образом, рассмотрим ее на примере APW7067N от фирмы Anpec:

APW7067N управляет напряжением на видеопамяти в референсном дизайне видеокарты GF8600GT

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

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

Тут нужно вспомнить этимологию слова «транзистор» — TRANsient reSISTOR, введенного в обиход в 1948 году (некоторые источники ссылаются на то, что это комбинация слов transfer и resistor). Что означает, в некоторой обработке, управляемое переходное сопротивление. То есть, транзистор, при приложении напряжения к затвору имеет свойство менять электрическую проводимость по «рабочему пути» исток-сток.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Изменение этой проводимости и позволяет, при последовательном подключении нагрузки, добавлять или снижать ток в этой цепи.

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

Изменение тока нагрузки приводит к изменению выходного напряжения, изменяется напряжение, снимаемое с делителя, поступающее на вход FBL, и на затвор транзистора подается напряжение, «приоткрывая» или «призакрывая» его, путем соответствующего изменения проводимости. Таким образом и осуществляется стабилизация напряжения при линейном регулировании. Подстроить выходное напряжение можно изменением соотношения сопротивлений резисторов делителя R4-RGND2.

Но этот способ, при всей его простоте имеет, как минимум, два основных недостатка.

Во-первых, ток нагрузки постоянно протекает через рабочий переход транзистора. Если питать линейный стабилизатор от наименьшего напряжения, обеспечиваемого блоком питания, то есть, 3.3В, то, при токе 100А и требуемом напряжении в 1В, на этом транзисторе надо будет рассеивать мощность (3.3 — 1.0)* 100 = 230Вт. Рассеять такую мощность, отвести тепло от материнской платы и вывести его за пределы корпуса задача хоть и решаемая, но непростая и значительно ухудшит массогабаритные параметры и потребительские качества устройства. Кроме того, что в компьютере и без этого достаточно элементов, которые нагревают все вокруг, это означает и очень низкую энергоэффективность такого регулирования.

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

Таким образом, линейная стабилизация при таких условиях неприемлема.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Конечно, там, где не требуется больших токов и не стоит вопрос о тепло- и энергоэффективности, линейные стабилизаторы успешно применяются.

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

Микросхема обеспечивает генерацию противофазных управляющих импульсов с регулируемой длительностью на выводах UGATE (Upper Gate) и LGATE (Low Gate), попеременно открывающих транзисторы Q1 и Q2, источником питания служит напряжение блока питания ПК 12В, обозначенное VIN1. Нагрузка подключается к точке VOUT1, номинальное напряжение условно выбрано 1.2В.

Смысл противофазных управляющих импульсов для поочередного открытия транзисторов Q1 и Q2 состоит в том, чтобы заставить дроссель L накапливать энергию и затем отдавать ее в нагрузку. Когда верхний транзистор открыт, ток от источника VIN1 течет по цепи +VIN1 → Q1 → L→ COUT1 и нагрузка → -VIN1. После того, как верхний транзистор закроется и ток от источника VIN1 в катушку не поступает, то, по законам физики, электрическая энергия, запасенная в индуктивности L (в момент открытого верхнего транзистора), идет по пути, который поддерживает прежнее направление тока. Для того, чтобы цепь замкнулась и ток пошел на сглаживающий конденсатор и в нагрузку, на короткое время открывается нижний транзистор, обеспечивая замкнутую цепь и протекание тока по пути L → COUT1 и нагрузка → Q2 → L.

Частота переключения транзисторов (определяется номиналом резистора, подключенного к выводу FS_DIS) обычно находится, для разных схем, в пределах 200-700КГц, что позволяет получить малые габариты дросселя и устройства в целом, высокий КПД и низкое тепловыделение на ключах Q1 и Q2. Рассеиваемая мощность на транзисторах определяется маленьким напряжением насыщения и кратковременным импульсным током, и, в сравнении с линейным регулятором,при одинаковом выходном токе и напряжении, может быть на несколько порядков ниже.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

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

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

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

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

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

Можно отметить, что период (следовательно, и частота) следования импульсов во всех трех случаях одинакова.

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

Управление выходным сигналом таким способом называется широтно-импульсной модуляцией (ШИМ, по-английски pulse width modulation — PWM), и широко используется для эффективной регулировки и стабилизации напряжения в блоках питания и различных системах управления, в частности, всем хорошо знакомы вентиляторы с регулировкой оборотов посредством ШИМ.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Выходное напряжение VOUT1 в микросхему APW7067N подается на контакт FB (FeedBack — обратная связь) через делитель напряжения R1-RGND1, снижающий VOUT1 до величины внутреннего референсного напряжения в номинальном режиме работы. Внутреннее референсное напряжение равно 0.8В. Разница (0.8В — напряжение FB) усиливается усилителем ошибки и подается на внутренние схемы формирования длительности и фазы выходных импульсов.

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

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

APW7067N применяется для регулировки напряжения в графических адаптерах, ее корпус содержит 14 выводов. Широко используются и другие типы микросхем, часто всего с восемью выводами. «Лишние ноги» у APW7067N из-за того, что в ее составе находится и линейный стабилизатор, о котором сказано выше. Также может отсутствовать внешний выход компенсации COMP, который, вместе с цепью коррекции, бывает спрятан внутрь микросхемы, может также отсутствовать и вывод BOOT (внешняя цепь формирования запускающего импульса).Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Можно обратить внимание на наличие двух выводов «земли», GND и PGND, что, в случае относительно слаботочных регуляторов, бывает не всегда. Дело в том, что высокие токи создают значительное падение напряжения на сопротивлениях проводников печатных плат. Если замерять тестером напряжение процессора, подсоединив общий провод прибора к «земле» разъема Molex от блока питания, то разница напряжений, если сравнивать с «землей», взятой на выводах процессора, может составлять сотни милливольт, причем еще и меняться она будет по не зависящим от процессора причинам. Поэтому, при замере и регулировке напряжения, важно правильно выбирать точки замера и всегда стараться делать это максимально близко к нагрузке. В данном случае, PGND означает PCB GND и этот вывод должен подсоединяться к нагрузке проводником с максимальным сечением и минимальной длиной. Кроме места, нужно правильно выбрать и время измерения.

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

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

Более распространена схема разделения, когда отдельно (физически или логически) используются один отдельный блок управления и ШИМ и отдельные блоки управления ключами (драйверы), по числу фаз, так как, для равномерной нагрузки блока питания, управляющие сигналы на каждую пару ключей буду сдвинуты по времени.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 К примеру, хорошо известная фирма Analog Devices выпускает наборы микросхем, как раздельно по спецификациям VRM Intel и AMD, так и удовлетворяющих требования к цепям питания обоих брендов. Для примера, ниже приведена принципиальная электрическая схема регулирования напряжения процессора AMD, где управляющей микросхемой выступает ADP3186, а драйверами ключей — ADP3110:

(кликните по картинке для увеличения)

ADP3186 устанавливалась, в частности, на ASUS M2N VM-DH, но вместо драйверов ADP3110 были применены ADP3418, которые производитель позиционирует как универсальные, для Intel и для AMD

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

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

Логика схемы управления питания ЦПУ, хоть и более усложненная, осталась примерно такой же. Так как материнская плата обычно поддерживает несколько типов процессоров, то, при включении компьютера, процессор надо распознать, проверить, поддерживается ли этот процессор данной версией BIOS, затем сигналом VID выдать код для микросхем управления цепями питания ЦПУ. Для этого, в схему управления встраивается ЦАП, от пяти разрядов и выше, для точной установки и подстройки напряжения, причем зачастую это можно делать и в реальном масштабе времени, а не только при инициализации компьютера при включении (это может называться что-то вроде Loadline Calibration, используются другие похожие термины).Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 А уж делать эту опцию доступной для пользователя, или нет, решает конкретный производитель материнской платы или дорогой видеокарты. Вход ЦАП получает сигналы от ЦПУ, через регистр-защелку или другие схемы управления. Диапазон регулировки напряжения определяется разрядностью ЦАП, пять битов дает 32 ступени регулировки. Расширить пределы подстройки, без увеличения аппаратной разрядности ЦАП, можно с помощью дополнительных ключей, подключающих калиброванные резисторы параллельно резистору RGND делителя, формирующего сигнал FB, по аналогии с принципом вольтмода в схеме питания с APW7067N, или дополнительным мультиплексированием.

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

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

Стоит отметить, при многочисленных достоинствах импульсных DC-DC преобразователях, их недостаток, связанный с появлением паразитных «всплесков» напряжения питания как раз из-за импульсного характера потребляемого тока.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Кроме пульсаций напряжения это еще и электромагнитное излучение. Требуется тщательная разводка проводников на PCB с тем, чтобы чувствительные к наводкам схемы ни по питанию, ни по «эфиру» не смогли получить такой уровень помех, который был бы способен нарушить их работу или ухудшить параметры. Одним из таких устройств является, к примеру, аудиокодеки, имеющиеся на большинстве материнских плат. Существуют несколько серийных плат, где неудачная разводка привела к серьезному повышению уровня шумов по сравнению с другими платами, использующими тот же кодек.

Но это всего лишь поиск «там, где светло». Гораздо хуже будет, если подобные помехи время от времени будут сказываться на распознавание сигналов и данных, передаваемых по многочисленным шинам PCB, что может приводить к непредсказуемому поведению компьютера и необъяснимым сбоям в его работе.

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

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

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

Выход мультиплексора подсоединяется к управляющая микросхеме, регулирующей напряжение питания.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Возможна также комбинация этих двух способов.

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

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

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

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

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

    Дистанционное измерение температуры не менее, чем в десяти точках, с точностью ±1°С в диапазоне не хуже 0…100°С.

    Возможность дистанционного изменения напряжения не менее, чем в 4-х точках, в первом приближении для CPU, RAM,GPU, VRAM.

    Желательно иметь текущую информацию по потребляемому току элементов, подвергающихся вольтмоду

    Желательно иметь текущую информацию об общем энергопотреблении компьютера

    Вывод в реальном времени требуемого набора из измеренных параметров в виде цифровых значений и графиков на экране ПК.

Становится понятно, что внутри корпуса интересующего нас компьютера должен находиться электронный блок, который измеряет нужные параметры и подключенный к какому-либо интерфейсу этого компьютера. Кроме того, блок должен уметь получать команды, вводимые пользователем компьютера и соответственно реагировать.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

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

Измерения с точностью до сотых долей вольта объясняется тем, что в большинство подобных микроконтроллеров встроен 10-битный АЦП, что определяет шаг преобразования примерно в 5мВ при измеряемом диапазоне 0..5В. Повышение точности связано с усложнением схемы или с установкой внешних 12-битных АЦП, но такой подход мы детально рассматривать не будем, хотя и его вполне можно реализовать.

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

Что нам потребуется : HARDWARE

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

ПК

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

Управляющий блок микроконтроллера

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

В дальнейшем, раз в распоряжении автора оказался Arduino Duemilanovе, все описываемые разработки будут привязаны именно к Arduino, причем это может быть не только Arduino Duemilanovе, но и более старые модели (или более поздние, к примеру, Arduino Mega).

Принципиальная электрическая схема
http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf. Дистрибутора в России можно найти по ссылке:
http://www.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 linuxcenter.ru/shop/embedded/arduino/.

Arduino Duemilanovе

Наличие разъема внешнего питания и схем контроля и автоматического переключения питания, разъема для связи по USB, сигнальных светодиодов (Power, TX, RX и один для задач пользователя), кнопки сброса и нескольких однорядных колодок для подсоединения ко всем IO выводам микроконтроллера, делает эту плату удобным полигоном для разработки и отладки собственных устройств. Плюс к тому, можно отказаться от ПО Arduino и, через интерфейс ICSP (STK-500), программировать микроконтроллер от внешнего программатора.

Основой Arduino Duemilanovе 2009 является микроконтроллер Atmega328P, работающий на частоте 16МГц. На плате также установлена микросхема от FTDI FT232RL, обеспечивающая связь по USB путем создания виртуального COM-порта. Кроме того, эта микросхема обеспечивает стабилизированное выходное напряжение 3.3В с током до 50мА (на самой плате Arduino потребителей от этого источника нет). Кроме того, содержится сдвоенный ОУ LM358, включенный как компаратор, для выбора питающего напряжения. Если внешнее питание превышает 6В, то LM358 запирает T1 NDT2955, и пятивольтовый стабилизатор типа 269-5 (IC4) работает от внешнего напряжения (не более 20В), а не от напряжения, подаваемого по кабелю USB.

На пользовательскую программу отводится около 30 килобайт внутренней флэш-памяти, микроконтроллер имеет 2КБ статической памяти и 1КБ EEPROM, которая может хранить, например, данные для установленных по умолчанию параметрах вольтмодов. Забегая вперед, отметим, что вся наща программа легко уместится и в процессоры Atmega с объемом флэш-памяти в 8КБ.

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

В программное обеспечение входит среда разработчика — IDE, отладчик, загрузчик кода, и bootloader, позволяющий быстро загружать новые программы и сразу их выполнять, имеется множество коротких примеров на все случаи жизни и онлайн спавка по программированию, причем в двух вариантах — простая и расширенная.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Arduino конфигурирует микроконтроллер на 6 аналоговых входов (но они могут быть переконфигурированы и в цифровые входы-выходы), которые могут быть использованы для 10-битного аналого-цифрового преобразования, и на 14 линий цифрового IO. Причем шесть линий конфигурируются как выходы PWM c разрешением 8 бит.

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

Назначение выводов:

Слева на короткой стороне расположен разъем USB для связи с компьютером и ниже гнездо для подключения внешнего питания. Оно может находиться в пределах 6..20В, но производитель рекомендует не выходить за пределы 12В, во избежание перегрева транзистора линейной стабилизации напряжения. Однако, этот перегрев возможен, если только вы сильно нагружаете выходные цепи микроконтроллера, допускающие отдачу по каждому выходу 40мА, в случае отсутствия такой нагрузки (вероятно, речь может идти о суммарном отдаваемом токе около полуампера) никакой опасности перегрева нет. Я подключал к этому гнезду блок питания 18В от принтера Hewlett-Packard и при экспериментах не было не то что перегрева, а даже нагрева силовых транзисторов. Переключение с питания от USB на внешний источник происходит автоматически, если внешнее напряжение превышает 6В.

Справа на короткой стороне находится разъем ICSP для внешнего программатора, в случае, если вы пользуетесь ПО не от Arduino.

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

Внизу слева:

RESET — вывод сброса микроконтроллера, дублирует кнопку на плате (около разъема ICSP)

3V3 — источник питания 3.3В с током до 50мА, его формирует микросхема FT232, на плате потребителей от этого источника нет

5V — это напряжение питания платы, то есть то, что получилось после выбора между USB внешнего источника.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

Gnd – два гнезда «земли» — общего провода. Надо помнить о гальванической связи с ПК, если питание идет по USB или подключены входы-выходы микроконтроллера к элементам компьютера.

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

Внизу справа:

0…5 — аналоговые входы 0…5. Каждый из шести входов в аналоговом режиме представляет вход 10-разрядного АЦП. Время преобразования — около 100мкс, то есть максимальная частота оцифровки 10КГц.

Вверху:

0..13 (нумерация справа налево) — 14 цифровых входов-выходов (в отличие от аналоговых, они принимают и понимают только два логических состояния и уровня напряжения). Некоторые выводы имеют дополнительные предопределенные возможности, например цифровой контакт 0, запрограммированный на ввод, используется как линия приема (RX) при программных коммуникациях, а контакт 1, запрограммированный на вывод — как линия передачи (TX). Разумеется, пользоваться коммуникационными особенностями (RX-TX) не обязательно. Контакты 3,5,6,9,10,11 при программировании их как выходы, преконфигурированы как выходы ШИМ, длительность импульсов программируется от 0 до постоянного сигнала с 8-битной точностью, частота примерно 490Гц. Существуют и другие преконфигурированные выводы, например, 4-х проводный SPTI — интерфейс для подключения SD карт памяти, но мы его пока не рассматриваем. Кроме того, при необходимости, аналоговые входы могут быть переназначены как цифровые, при этом они адресуются как цифровые линии 14..19.

Далее на верхнем разъеме «земля» и вход AREF для подачи референсного напряжения для аналогоцифрового преобразования. По умолчанию в качестве референсного напряжения для АЦП используется внутреннее +5В.

Нумерация входов-выводов — внутренняя для Arduino и не совпадает с распиновкой микроконтроллеров Atmega.

На плате находятся 4 светодиода. Зеленого свечения — выше кнопки сброса, загорается в случае наличия питания +5В. Выше левого обреза микроконтроллера, в ряду SMD элементов, находятся два «связных» RX-TX светодиода оранжевого свечения, загорающихся при аппаратной связи Arduino по интерфейсу USB.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Чуть выше, обозначенный на плате буквой «L», расположен еще один оранжевый светодиод, подключенный к цифровому выводу 13 и предназначенный для пользовательских контрольных операций, зажигаясь при выводе на 13 контакт высокого уровня.

Плата согласования

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

Prototype board SD24N

Существуют множество вариантов такой продукции, именно про этот более подробно можно посмотреть на сайте:
http://www.apogeekits.com/bread_board_2.htm

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

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

Плата согласования готова к монтажу элементов. Между контактами удобно припаивать SMD элементы

К сожалению, создатели Arduino частично отошли от сетки 2.54мм и один из разъемов (левый верхний, если ориентироваться по картинке, приведенной выше, смещен на половину от шага 2.54мм относительно других. Но нам, на первом этапе, вполне хватит трех оставшихся разъемов, а желающие могут приобрести (за ≈ $10) пустую макетную плату под Arduino с «правильным» расположением отверстий, правда она несколько ограничивает свободу размещения элементов.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

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

Плата согласования с установленными деталями и разъемами

На ПС установлена ответная часть разъема типа Molex, так как для работы АЦП желательно обеспечить входное напряжение выше 5В, с тем, чтобы внутренний стабилизатор выработал точное напряжение питания 5В, которое используется как референсное для АЦП. В случае питания по USB подаваемое напряжение, особенно если линия +5В USB нагружена, может быть занижено, что приведет к погрешностям оцифровки аналогового сигнала. Кроме того, эти напряжения будут измеряться, да и +12В вполне может пригодиться для экспериментов с электронными устройствами. Видно, что места еще очень много и вполне поместятся три-шесть корпусов DIP16 и до восьми каналов ключей с открытым коллектором (стоком). Хотя, скорее всего, сделаем попытку цифрового управления с использованием ЦАП и сумматора.

Все готово

Датчики

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

Датчики температуры

Дополнительных пять-десять датчиков температур, помимо входящих во встроенные средства мониторинга компонентов компьютера, можно с пользой дела установить практически в каждом корпусе. Большое количество датчиков не помешает и в случае, если вы тщательно подходите к компоновке корпуса или разрабатываете его сами и требуется постоянный мониторинг тепловых режимов во всех закоулках корпуса. Но обычные измерители, как правило, выполняются на базе термопар, реже терморезисторов или других полупроводниковых элементов.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Увеличение их числа сопряжено и с необходимостью увеличения числа входов или введения схем мультиплексирования и управления, что достаточно быстро заставит задуматься о другом подходе к проблеме. А если, к примеру, датчик должен находиться на удалении нескольких десятков метров?

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

DS1820

Вот как выглядит 1-Wire цифровой термометр DS1820 от компании Maxim (Maxim Integrated Products в 2001 году купила разработчика DS1820, Dallas Semiconductor).

Корпус ТО-92 (есть варианты и в планарных корпусах), всего три вывода. Но особенность шины 1-Wire в том, что обмениваться данными и управлять DS1820 можно с помощью двухпроводной линии. В такой сети, работающей по принципу «master-slave», мастером выступает компьютер или микроконтроллер, имеющий возможность посылать и принимать данные от любого устройства в этой сети. Часто общий провод «не засчитывают», и двухпроводная шина превращается в 1-Wire, трехпроводная — в I2C и в несколько его вариаций и т.д. По этой шине 1-Wire каждый DS1820 по запросу мастера может передать содержимое своего RAM (9 байт), ROM (64 бита) , CRC, принимать индивидуальные и общие команды от мастера.

Более того, к одной двухпроводной линии можно подключить теоретически неограниченное количество датчиков. Каждый DS1820 имеет ROM с уникальным 64-битным идентификатором. Распознавание термометров в двухпроводной сети происходит со скоростью 75 устройств в секунду. Мастер, в процессе распознавания, должен запомнить «имена» всех найденных устройств, чтобы иметь возможность индивидуального общения с нужным. Разумеется, ничего не мешает использовать только одно устройство в сети 1-Wire (не считая мастера).Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5

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

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

Под названием «scratchpad» скрывается 9-байтовая RAM, первые два байта используются для хранения последней измеренной температуры, следующие два занимают пороговые регистры для хранения нижнего и верхнего значения температур, достижение которых опрашивается специальной командой мастера. Следующие два байта зарезервированы. Затем идут два байта со значениями внутренних счетчиков измерения температуру, которые и определяют значение температуры. Фактически, первые два байта являют собой обработанное значение данных счетчиков и предназначены для индикации результата с погрешностью ±0.5%, с помощью обработки данных счетчиков можно точность отсчета повысить. Впрочем смысла в этом не много, так как тогда нужно будет регулярно снимать тарировочный таблицы для определения соответствия измеренной температуры реальному значению. Заключительный, девятый байт содержит контрольное число CRC, определенное по значению предыдущих восьми байт.

Для представления температуры используется два байта, первый — LSB (Least Significant Byte, наименьший значащий байт; для определения порядка битов в байте также используется этот термин, но речь будет тогда идти о наименьшем значащем бите), содержит измеренное значение температуры, единица измерения — полградуса. MSB (Моst Significant Byte, наибольший значащий байт) содержит знак температуры. При положительном значении температуры все биты будут равны нулю, при отрицательном — единице, но и первый байт в соответствии с правилами двоичной арифметики будет представлен в дополнительном двоичном коде.

В первый байт 64-битный ROM зашит тип устройства.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Для DS1820 это число равно 16 (0х10 в шестнадцатеричном представлении), для DS18B20 идентификатор равен 28 (0х1С). Далее следует уникальный 48-битный идентификатор, а последний байт ROM содержит контрольное число CRC, полученное из семи предыдущих байт. Устройство, которое читает информацию ROM из DS1820, по приведенному в документации алгоритму высчитывает контрольную сумму и сравнивает с зашитым в ROM числом CRC, чтобы убедиться в работоспособности устройства, правильности построения схемы управления и качестве линий передачи.

На первый взгляд, все это кажется достаточно сложным, но практическая реализация говорит об обратном. Единственное, что может вызвать трудности, так это подсчет CRC. Так как это можно сделать несколькими способами, но в документации примеры приведены на ассемблере, поэтому в Приложении №2 приведена простая реализация алгоритма вычисления 8-битного кода CRC для 1-Wire устройств, на языке C#, которая без труда может быть конвертирована на любой другой язык высокого уровня.

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

Датчики тока

Одним из простейших датчиков тока может являться последовательный шунт в виде прецизионного низкоомного резистора (сопротивлением порядка 0.001Ω для памяти и 0.0001Ω для процессоров). Два аналоговых входа Arduino, подключенные к выводам шунта, дадут возможность измерения падения напряжения на нем и подсчитать ток по формуле I = U / R. Ничего сложного в теории, но на практике, для интересующих нас цепей, реализовать непосредственно для них измерение тока может быть достаточно проблематично. Дело в том, что ток потребления от импульсного источника питания нужно измерять после дросселя и сглаживающих конденсаторов. Но эти силовые цепи находятся во внутренних слоях PCB и встроить в такую цепь шунт практически невозможно. Относительно легко его подключить после дросселя, но это мало что дает, так как ток импульсный, частота импульсов несколько сот килогерц.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Максимальная частота преобразования АЦП Arduino составляет 10КГц (а цикл измерений менее 7КГц), поэтому этот вариант не подходит. К тому же, из-за малой расчетной индуктивности дросселя, подобное вмешательство может изменить режим работы импульсного преобразователя.

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

Датчик потребляемой мощности переменного тока 220В

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

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

Блок измерительных трансформаторов от Zalman MFC2

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

Первичная обмотка трансформатора тока — это просто один провод, «пронзивший» тор вторичной обмотки, из-за пластмассового кожуха не видно, используется ли сердечник и как выглядит эта вторичная обмотка. Параллельно вторичной обмотке токового трансформатора подключена пара встречно включенных диодов. Такая же пара подключена и ко вторичной обмотке трансформатора напряжения, но через резистор 20КΩ.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Выходной четырехпроводный сигнал измерительной части берется с каждой пары диодов.

Что нам потребуется : SOFTWARE

Что касается программного обеспечения, то тут постараемся опереться на собственные силы. И не с целью продемонстрировать искусство программирования, об этом нет и речи, а с целью продемонстрировать подход к подключению аппаратных устройств к микроконтроллеру, а самого микроконтроллера — к ПК.

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

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

Если интересует исходный текст программ, или совет, в контексте рассматриваемых тем, то можете обращаться в ЛС на форуме overclokers.ru. Вероятно, я в разделе «Программирование» создам раздел, посвященный этому вопросу.

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

Интерфейс программы для связи с ПК выглядит пока так, для первого этапа:

Слева, в окне “Terminal”, желтым по черному показываются некоторые сигналы обмена ПК с Arduino из каждого фрейма, так как данные передаются фиксированным числом байт в кадр связи. Эти данные снабжены префиксным пояснением и иногда обработаны. В частности, ROM цифрового термометра DS1820 представляется на экране, начиная со старшего байта, хотя по каналу связи первым получается младший.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Некоторая информация не представлена, так как она и так попалает на экран уже в нужном формате и доступны для наблюдения.

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

Справа от окна терминала находятся области, показывающие текущие напряжения на процессоре видеокарты и видеопамяти, и температуры тех объектов, с которыми имеют тепловой контакт цифровые термометры. Каждый параметр фиксирует минимальные (синим цветом) и максимальные значения (красным), которые сбрасываются к текущему значению щелчком мыши по min-max значениям.

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

В нижней части по вертикали расположены значения напряжений 12В и 5В, измеренные на разъеме Molex блока питания ПК. Два напряжения 3.3В — это то значение, которое вырабатывает микросхема связи на плате Arduino. Источник маломощный, до 50мА, и вывод сделан для иллюстрации измерения потребляемого тока. К выходу микросхемы подсоедиен резистор 10.1Ω, второй конец которого свободен, на обеих концах напряжение замеряется, и параметр I показывает итоговый ток (или, без нагрузки, случайную ошибку квантования).

Справа от вертикального ряда параметров предусмотрено место для графопостроителя, но пока он не реализован.

Что нам потребуется : оборудование

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

Конечно, нужен инструмент и расходные материалы.Измерение напряжения arduino: Ничего не найдено для Lessons Analog Pins %23%25D0%25Be%25D0%25Bf%25D0%25Be%25D1%2580%25D0%25Bd%25D0%25Be%25D0%25B5 %25D0%25Bd%25D0%25B0%25D0%25Bf%25D1%2580%25D1%258F%25D0%25B6%25D0%25B5%25D0%25Bd%25D0%25B8%25D0%25B5 Нам потребуется паяльная станция, припой с флюсом (ну или чем и как вам больше нравится паять), лупа, острые бокорезы, набор отверток и прочий инструмент, по необходимости. Я еще пользуюсь держателем печатных плат, который может надежно удерживать небольшие детали и PCB в произвольном положении. Желательно обеспечить минимальные эргономические требования по освещенности рабочего места, наличию свежего воздуха и обязательно соблюдать правила техники безопасности.

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

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

Условная схема подключений

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

На схеме резисторы в цепи коллекторов показаны постоянными и равными 100К условно. На самом деле правильно его считать, состоявшим из двух подстроечных. Одного, ограничивающего минимальное сопротивление, и второго, служащего непосредственно для подстройки. Причем их сопротивление может весьма широко варьироваться, например — от сотен ом для ATI 1600ХТ, десятков килоом для GF8600 и сотен килоом для ATI3xxx и 4xxx.

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

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

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

Кстати, будет интересно проверить эффективность установленных радиаторов — на одной из карт GF8600GT на памяти установлен комплект медных радиаторов Thermaltake.

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

Будут по той же трехпроводной линии подключены дополнительные датчики температуры.

Также, на втором этапе, подключим датчик тока и датчик потребляемой мощности, мультиплексор для установки VID (скорее всего, придется использовать два мультиплексора или два Z-буфера, так как пока двухканальный мультиплексор на 5..8 бит не попался).

И, естественно, все это проверим в работе, к тому времени, вероятно, повысится и функциональность программы на ПК.

Ну и, конечно, увеличим число каналов вольтмода, попробуем реальном времени поуправлять сигналами VID процессора. Пока на второй этап, в дополнение, к подопытной видеокарте, запланирована материнская плата Asus M2NVM-DH.

Измерения : напряжение

Что касается измерения напряжения, то это самая простая задача. Arduino сконфигурирован таким образом, что нам доступны шесть каналов АЦП с 10-битным преобразованием. 10-битное квантование означает наличие 2¹º = 1024 ступеней распознавания входного напряжения, что, при внутреннем референсном напряжении 5В, дает разрешающую способность преобразования 5 / 1024 ≈ 5 милливольт. Это означает, что измеренное значение напряжения может «гулять» в пределах ± 10мВ. Кроме того, внутреннее референсное напряжение, зависит от питающего напряжения и, в случае питания по USB-кабелю, для восстановления десятичного представления напряжения, показания АЦП надо умножать не на 5 / 1024 вольт, а, в моем конкретном случае, на 4.85 / 1024 вольт. Тут учитывается и величина напряжения, подаваемая на устройства USB со стороны материнской платы, длина кабеля и конкретное энергопотребление Arduino с дополнительными блоками.

В общем случае, от этих недостатков можно избавиться. Так как интересующий нас диапазон измеряемых напряжений лежит в пределах 0.5В…2.5В, то можно поступить следующим образом. АЦП микроконтроллера может использовать и внешнее референсное напряжение. Подав на вход AREF Arduino стабилизированное напряжение 2.5В, мы получаем шаг преобразования 2.5 / 1024 ≈ 2.5 милливольт, что практически всегда даст при индикации верную

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

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

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

Так как напряжение 12В превышает референсное 5В, то для его измерения необходимо поставить резистивный делитель, например с соотношением номиналов верхнего и нижнего плеча примерно 3:1 и больше, а сигнал снимать с нижнего плеча.

Таким образом, на вход АЦП будет подаваться напряжение 4В и ниже. Конкретное соотношение лучше определять с учетом того, какие номиналы есть в наличии, желательно иметь возможность точно замерить сопротивление. Общее сопротивление двух резисторов может быть до нескольких КΩ, увеличивать его нет смысла из-за влияния выходного сопротивления источника (а это и будет примерно сумма сопротивлений делителя, если учитывать, что сам делитель подключен к источнику с низким выходным сопротивлением), на время преобразования АЦП (в документации на Atmega328P оговаривается, что выходное сопротивление оцифровываемого входа источника не должно превышать 10КΩ), а предельное снижение определяется током через делитель, при котором рассеивается мощность, не приводящая к заметному нагреву резисторов и нет перегрузки питания.

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

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

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

переменная =
analogRead (номер аналогового входа)

И в переменной целого типа мы получаем два байта оцифрованного значения напряжения с шагом квантования менее 5мВ. Просто и эффективно.

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

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

Измерения : ток

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

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

Это хорошо иллюстрируется по нашей схеме, когда питание на Arduino подается с компьютерного блока питания, характеризующегося пульсациями в десятки милливольт. Даже с учетом сглаживания, напряжение питания имеет серьезнве пульсации. Это приводит к появлению хаотичного «тока» на десятиомном шунте, один конец которого свободен, второй подсоединен к внутреннему напряжению 3.3В. АЦП, естественно, с временным лагом, замеряет напряжения на концах шунта. Значения «тока» могут превышать двойную погрешность преобразования в два — три раза.

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

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

Тем не менее, более полезные измерения тока пока не проводятся.

Измерения : температура

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

Для начала подключим только один термометр DS1820 (в наличии еще есть и несколько DS18B20, которые отличаются более точным, 12-битным представлением измеренной температуры). Вот типовая схема подключения DS1820 к микроконтроллеру с использованием внешнего питания для датчика:

В нашем случае, резистор 4.7КΩ не нужен, так как любой цифровой выход микроконтроллера Atmega имеет возможность подключить такой резистор, находящийся внутри микроконтроллера, по команде в программе. Таким образом, на плате согласования размещаем только трехпиновый разъем и подключаем один вывод к общему проводу, другой — к цифровой линии Arduino (я выбрал 7), и третий вывод — к напряжению +5В. Единственное изменение — во избежание коротких замыканий и проблем с неправильной установкой, питание +5В подводится к этому разъему через ограничивающий резистор номиналом в 220Ω. Сам DS1820 припаивается к трехпроводному плоскому кабелю, второй конец кабеля оканчивается ответной частью разъема:

Подключив плату согласования с подсоединенным датчиком к Arduino, подключаем USB кабель к ПК и плате микроконтроллера. Запускаем ПО Arduino. Мы готовы к экспериментам.

Из документации к DS1820 следует, что линия связи (I/O) перед началом любых манипуляций по чтению-записи должна поддерживаться микроконтроллером на высоком логическом уровне. Следующим шагом должен стать общий сброс, на который все имеющиеся 1-Wire устройства на линии должны ответить «импульсом присутствия». У нас стоит один датчик, а в случае, если подключено множество устройств (это могут быть не только цифровые термометры), это ничего не меняет — микроконтроллер должен понять, есть ли на линии хоть одно устройство. Если что-то отвечает «импульсом присутствия», то следующим шагом микроконтроллер будет выполнять специальную процедуру сканирования ROM всех устройств, подключенных к линии и для каждого определит точный идентификатор и уникальный ID, по которому в дальнейшем и будет проводить обращение к уникальному устройству. Так как у нас устройство на линии пока одно, то процедура сканирования ROM не нужна, для случаев одного устройства на линии существует специальная команда SkipROM («игнорировать ROM»).

Общий сброс в документации графически описан так:

Микроконтроллер должен выставить на линии IO сигнал низкого уровня на время t_RSTL, затем переключиться по этой линии на прием и «слушать» в течение времени t_RSTH.

Если устройство 1-Wire на линии присутствует, оно, по длинному сигналу «RESET PULSE FROM HOST» распознает сброс, прекратит все выполняемые операции по IO на линии и, через время t_PDHIGH после окончания импульса сброса, выставляет на линии низкий уровень на время t_PDLOW. «Слушающий» линию микроконтроллер понимает, что, по крайней мере, одно устройство на линии есть.

Все это программируется в ПО Arduino несколькими строчками. Вся программа выглядит таким образом:

Теперь самое время проверить, все ли мы сделали правильно, и как отвечает DS1820 на запрос микроконтроллера. Документация приводит нам теоретическую картинку того, что мы должны получить:

Сброс и ответный импульс в теории

Подсоединяем осциллограф к цифровому входу-выходу 7 (или к среднему выводу DS1820) и наблюдаем следующую картину:

Практика подтверждает теорию

Мы добились ответного импульса от DS1820. Чтобы убедиться в этом, отсоединяем датчик от платы согласования — сигнал пропадает. Присоединяем — появляется. Развертка 50мкс/дел, следовательно первый «горбик» имеет длительность около 35 мкс, что входит в норму 15..60мкс. Ответный импульс DS1820 длится немногим более 100мкс, что также лежит в оговоренных пределах 60..240мкс. На рисунке время импульса сброса меньше 480 мкс за счет того, что изображение просто сдвинуто немного по горизонтали.

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

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

Запись единички:

Так как данные передаются байтами (вернее, нам так просто удобно видеть и в дальнейшем обрабатывать информацию), то нужна процедура, записывающая подряд 8 битов.

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

Хоть такая команда и не входит в систему команд, распознаваемых DS1820, посмотрим, как отображается передача байта со значением, равным единице, по шине 1-Wire:

Микроконтроллер передает команду «01»

В самом левом углу — это уже исследованный «горбик», затем импульс присутствия низкого логического уровня. После этого микроконтроллер устанавливает высокий уровень на шине и передает команду «01», побитно, начиная с LSB=1, а все остальные биты равны нулю. Все это отчетливо можно видеть на осциллограмме.

Вот как выглядит команда измерить температуру «ConvertT»:

Микроконтроллер передает команду «ConvertT» = 0х44

Двоичный код, начиная с LSB, будет 0010 0010 и соответствует тому, порядку, который виден на осциллограмме, хотя обычно в литературе и программах пишут, начиная с MSB, то есть правильно будет указывать 0100 0100, или, в шестнадцатеричном представлении, 0х44.

Для того, чтобы команда «ConvertT» сработала, и мы температуру смогли бы считывать с DS1820, необходимо либо указать полный код ROM устройства в специальной команде, либо, в случае с одним устройством 1-Wire на шине, дать команду «Skip ROM». Поэтому, перед чтением, надо дать правильную комбинацию команд:

Микроконтроллер передает две команды подряд — «Skip ROM» = 0xCC и «ConvertT» = 0х44

Теперь можно приступить к чтению

Снова внимательно читаем документацию, смотрим временные циклы и пишем микрофункцию чтения бита, посылаемого микроконтроллером термометру DS1820:

Функция, читающая подряд 8 битов:

Теперь мы готовы к измерению температуры и получению результата.

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

Следующим шагом попытаемся на одну линию 1-Wire установить несколько датчиков температуры, но это уже будут DS18B20, позволяющие, без дополнительных ухищрений, выдавать температуру в более точном, 12-битном формате, вместо 9-битного у DS1820.

Маркировка DS18B20

Но это будет уже во второй части.

Вольтмод

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

Включение и выключение вольтмода производится с ПК.

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

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

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

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

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

Программа Arduino, выполняющая включение-выключение транзисторных ключей по командам с ПК, очень проста:

Если передается 1, то включается вольтмод GPU, двойка — выключает. Соответственно, команды 3 и 4 — для памяти.

Во второй части планируется расширить число каналов и подключить к схеме вольтмода ЦПУ и оперативную память, в том числе менять напряжение прямым изменением кода VID.

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

Передача, прием и обработка данных

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

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

Подсчет 1-Wire CRC

bufferIN[] — входной буфер порта, startIndeX — индекс байта, соответствующего ROM.

Вычисление отрицательной температуры

Здесь смещение приемного буфера стоит на байте принятой температуры.

Подводим итог первой части

Вот он, итог:

Натурные испытания

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

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

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

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

30 апреля 2009 года

(с) zauropod, специально для www.overclockers.ru

Взаимодействие датчика напряжения

с Arduino

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

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

Введение

Мы уже видели, как измерять внешние напряжения с помощью Arduino в проекте DIGITAL ARDUINO VOLTMETER.

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

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

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

Выходное видео

Краткое описание модуля датчика напряжения

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

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

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

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

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

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

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

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

  • VCC: положительный вывод измеряемого напряжения (0-25 В)
  • GND: отрицательный вывод измеряемого напряжения
  • S: аналоговый вход Arduino
  • +: Не подключен (НЗ)
  • -: Земля Arduino
Схема датчика напряжения

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

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

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

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

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

Взаимодействие датчика напряжения с Arduino

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

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

После сопряжения датчика напряжения с Arduino вы можете просматривать результаты либо на последовательном мониторе Arduino IDE, либо на ЖК-дисплее 16 × 2.Я выбрал ЖК-дисплей.

Принципиальная схема интерфейса датчика напряжения Arduino

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

Необходимые компоненты
  • Arduino UNO [Купить]
  • Модуль датчика напряжения (для <25 В)
  • ЖК-дисплей 16 × 2 [Купить здесь]
  • Потенциометр 10 кОм
  • Резистор 330 Ом
  • Соединительные провода
  • Миниатюрная макетная плата
Схемотехника

Сначала подключите контакты «S» и «-» датчика напряжения к A0 (аналоговый вход) и GND Arduino соответственно.Затем подключите контакты внешнего напряжения (напряжение, которое необходимо измерить) к винтовой клемме (проверьте полярность).

Что касается ЖК-дисплея, то выводы 7 и 6 цифрового ввода / вывода Arduino UNO подключаются к RS и E, а выводы 5–2 Arduino UNO подключаются к D4– D7 соответственно.

Код

Рабочий

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

.

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

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

Я реализовал то же самое в коде. Когда я подключил внешний источник питания 12 В в качестве входа к датчику напряжения, расчетное напряжение составило 11,94 В, что достаточно точно.

Распиновка модуля датчика напряжения

, характеристики, характеристики и схема Arduino

Модуль датчика напряжения

Модуль датчика напряжения

Распиновка модуля датчика напряжения

Нажмите на изображение, чтобы увеличить

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

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

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

Имя контакта

Описание

VCC

Положительный вывод внешнего источника напряжения (0-25 В)

ЗЕМЛЯ

Отрицательный вывод внешнего источника напряжения

S

Аналоговый вывод, подключенный к аналоговому выводу Arduino

+

Не подключен

Контакт заземления подключен к заземлению Arduino

Модуль датчика обнаружения напряжения

— Характеристики и характеристики

  • Входное напряжение: от 0 до 25 В
  • Диапазон обнаружения напряжения: 0.02445 по 25
  • Разрешение аналогового напряжения: 0,00489 В
  • Не требует внешних компонентов
  • Простота использования с микроконтроллерами
  • Маленький, дешевый и доступный
  • Размеры: 4 × 3 × 2 см

Другие модули: модуль ИК-датчика, модуль датчика LDR, модуль зарядки / разрядки литий-ионной батареи TP4056A, модуль DS3231 RTC, модуль драйвера шагового двигателя TMC2209, модуль драйвера шагового двигателя DRV8825, модуль драйвера шагового двигателя A4988, модуль GPS NEO-6MV2, Модуль джойстика, EM18 — модуль считывателя RFID, модуль акселерометра ADXL335, датчик влажности почвы

Связанные компоненты: HMC5883L, резисторы, регулятор напряжения IC

Краткое описание модуля датчика напряжения

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

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

Цепь напряжения состоит из схемы делителя напряжения из двух резисторов, в которых R1 составляет 30 кОм, а R2 — 7.5К.

Как использовать модуль датчика напряжения с Arduino

Взаимодействие датчика напряжения с Arduino или любым другим микроконтроллером довольно просто. Подключите V CC и GND источника напряжения, напряжение которого нужно измерить, к винтовым клеммам датчика напряжения. Подключите контакты S и — (GND) датчика напряжения к аналоговому контакту и GND Arduino соответственно.

Входное и выходное напряжение можно рассчитать по формуле:

Vin = Vout * (R2 / (R1 + R2))
Здесь R1 = 30 кОм и R2 = 7.5 кОм
Vout = (аналоговое значение * 5/1024). 

Измерение напряжения переменного тока с помощью Arduino — вольтметр переменного тока

В этом посте показано, как создать простой вольтметр переменного тока, который измеряет напряжение переменного тока с помощью платы Arduino UNO, где значение напряжения выводится на ЖК-экран 16 × 2.
Этот вольтметр может легко измерять напряжение переменного тока 110/220/380 В с частотой 50 или 60 Гц.

На этот проект не дается никаких гарантий, вы делаете это на свой страх и риск!

Требуемое оборудование:
Это список всех компонентов, необходимых для сборки этого проекта.

  • Плата Arduino UNO —-> Atmega328P datasheet
  • ЖК-экран 16 × 2
  • Резистор 330 Ом
  • Переменный резистор или потенциометр 10 кОм
  • Резистор 4 x 220 кОм
  • Резистор 120 кОм
  • 1 кОм
  • Керамический конденсатор 100 нФ
  • 1N4733A Стабилитрон 5,1 В (или аналог)
  • 1N4007 диод (или аналог)
  • Макет
  • Перемычки

Схема вольтметра переменного тока Arduino:
На изображении ниже показана принципиальная схема проекта.

Вход переменного тока подключен к схеме, как показано, где диод 1N4007 используется для устранения отрицательных полупериодов.
После того, как мы получаем положительные части сигнала переменного напряжения, он поступает на делитель напряжения, потому что плата Arduino UNO не может работать с напряжениями выше 5 В. Делитель напряжения состоит из 4 резисторов 220 кОм, 1 резистора 120 кОм и 1 резистора 1 кОм, поэтому полное сопротивление этого вольтметра составляет около 1 МОм (мегаом).

Arduino считывает напряжение на резисторе 1 кОм, которое равно входному напряжению, деленному на 1001 кОм (уравнение делителя напряжения).
Итак, если входное напряжение составляет 220 В, тогда напряжение на резисторе 1 кОм составляет 0,220 В = 220 мВ (среднеквадратичные значения).

Керамический конденсатор 100 нФ используется для стабилизации и устранения шума сигнала напряжения на резисторе 1 кОм. Стабилитрон 1N4733A (напряжение обратного пробоя 5,1 В) используется для защиты платы Arduino от напряжений выше 5,1 В.

ЖК-экран 16 × 2 (2 строки и 16 столбцов) используется для отображения значения входного напряжения, где:
RS -> цифровой контакт 2 Arduino
E -> цифровой контакт 3 Arduino
D4 -> цифровой контакт 4 Arduino
D5 -> цифровой контакт 5 Arduino
D6 -> цифровой контакт 6 Arduino
D7 -> цифровой контакт 7 Arduino
VSS, RW, D0, D1, D2, D3 и K подключены к Arduino GND,
VEE — к 10 кОм выход переменного резистора (или потенциометра),
VDD на Arduino 5V и A на Arduino 5V через резистор 330 Ом.

Вывод

VEE используется для управления контрастностью ЖК-дисплея. A (анод) и K (катод) — выводы светодиода задней подсветки.

Код вольтметра переменного тока Arduino:
Следующий код Arduino измеряет среднеквадратичное значение входного переменного напряжения, определяя максимальное значение полуволны, а затем делит его на квадратный корень из 2 (√2).
Итак: Vrms = Vmax / √2

Arduino определяет максимальное значение, считывая аналоговое напряжение на канале 3 (A3) несколько раз.
Функция get_max () считывает напряжение канала A3 100 раз в течение периода более 20 мс (поскольку для частоты 50 Гц период составляет 20 мс).

В этом проекте Arduino фактически не выдает истинное среднеквадратичное значение входного переменного напряжения, потому что он использует функцию: Vrms = Vmax / √2
Это означает, что Arduino будет давать правильные измерения только для входного синусоидального напряжения переменного тока!

Полный код Arduino:

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

18

19

20

21

22

23

24

25

26

27

28

29

30

000

000 34

35

36

37

38

39

40

41

42

43

44

45

46

49

0002 47

00030002 47

0003

51

52

/ ********************************************* *************************

*

* Вольтметр переменного тока с Arduino.

* Это бесплатное программное обеспечение БЕЗ ГАРАНТИЙ.

* ИСПОЛЬЗУЙТЕ НА СВОЙ СОБСТВЕННЫЙ РИСК!

* https://simple-circuit.com/

*

******************************* *************************************** /

#include // включить ЖК-библиотеку Arduino

// Подключения ЖК-модуля (RS, E, D4, D5, D6, D7)

LiquidCrystal lcd (2, 3, 4, 5, 6, 7);

void setup (void) {

lcd.begin (16, 2); // устанавливаем количество столбцов и строк ЖК-дисплея

lcd.setCursor (0, 0);

lcd.print («RMS Voltage:»);

аналоговая ссылка (ВНУТРЕННЯЯ); // множество АЦП положительное опорное напряжение на 1.1V (внутренний)

}

// получить максимальное значение для чтения

uint16_t get_max () {

uint16_t max_v = 0;

для (uint8_t i = 0; i <100; i ++) {

uint16_t r = analogRead (A3); // чтение из аналогового канала 3 (A3)

if (max_v

delayMicroseconds (200);

}

return max_v;

}

// основной цикл

void loop () {

char buf [10];

// получить амплитуду (максимальное — или пиковое значение)

uint32_t v = get_max ();

// получить фактическое напряжение (Опорное напряжение АЦП = 1.1V)

v = v * 1100/1023;

// вычисляем среднеквадратичное значение (= пик / √2)

v / = sqrt (2);

sprintf (buf, «% 03u Volts», v);

lcd.setCursor (0, 1);

lcd.print (buf);

задержка (100);

}

// конец кода.

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

А этот показывает симуляцию Протея:

Загрузка файла моделирования Proteus (используйте Proteus версии 8.8 или выше, чтобы открыть его!):
Вольтметр переменного тока Arduino

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

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

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

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

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

[Содержание]

・ Преобразование аналоговых значений в цифровые
・ Аналоговый вход в 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

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

Изначально я экспериментировал с простым делителем напряжения на 4.Зеннер-диод 8 вольт
через вход Arduino, чтобы контролировать любое перенапряжение. Это сработало до определенной степени, но зеннер
Диод не имел чистой точки отсечки, и напряжение выходило за пределы линейного значения намного раньше 4,8 вольт.

В конце концов, я просто использовал делитель напряжения, чтобы понизить входное напряжение до низкого значения (примерно 1/28 входного).
а затем тот же ОУ MPC6283 rail-to-rail, используемый при измерении тока для обратного усиления сигнала.
до необходимого значения. Когда входное напряжение выходит за пределы допустимого диапазона, операционный усилитель насыщается, но напряжение на входе
АЦП не превышает 5В.

Используемая схема:

  • Делитель напряжения R1 и R2 снижает входное напряжение bt 1/28.
    Если бы типичный диапазон был 0-20 В, делитель напряжения был бы меньше 1 В.
    Потребуется напряжение 5 * 28 = 140 В, чтобы превысить предел 5 В на операционном усилителе.
    и это в любом случае должно быть защищено стабилитроном.
  • Операционный усилитель используется в неинвертирующем режиме. Прирост рассчитывается как 1+ (R2 / (R1 + P1).
    Это дает прирост от 1+ (39000/2200) = 18,7 до 1+ (39000/22200) = 2.7 с потенциальным входом
    диапазон напряжения от 7,5 В до 51,8 В

Калибровка

Достаточно легко подать на датчик напряжение, близкое к максимальному, используя некоторые батареи, а затем отрегулировать усиление.
поэтому значение АЦП примерно равно максимальному значению 1023. (Я использовал несколько ячеек 9В, обрезанных
вместе с потенциометром в качестве делителя напряжения в качестве источника). Я построил график зависимости напряжения от значения АЦП и
намеренно перешел масштаб, чтобы проверить линейный диапазон. Линия тренда рассчитывается только по линейной части графика.

  • Как я уже упоминал в разделе измерения тока, напряжение не плавное, а выпрямленное переменное.
    (в данном случае однофазный). Пиковое напряжение будет √2 = 1,4 раза больше среднего напряжения.
  • Измеряемое напряжение является выпрямленным переменным током, а не плавным постоянным током. Программное обеспечение Arduino должно измерять напряжение несколько раз в течение каждого цикла, чтобы правильно рассчитать среднее значение.

Контроль напряжения отдельных батарей, подключенных последовательно, с помощью arduino uno

В предыдущем уроке я предложил несколько способов, с помощью которых батареи, подключенные последовательно и параллельно, можно контролировать по отдельности.С помощью этих методов можно точно измерить напряжение каждой батареи по отдельности. В этом уроке я решил реализовать один метод на практике, чтобы показать, как он работает в реальном мире. Таким образом, сценарий состоит из четырех батарей, соединенных в последовательную цепочку. Отдельная батарея рассчитана на 12 вольт и 100 ампер. Напомним, при последовательной комбинации батарей напряжение повышается. Таким образом, общее напряжение 4 последовательно соединенных батарей становится 48 вольт, и эти 48 вольт используются вашими ИБП для питания вашего дома в случае сбоя питания.Нас интересует измерение напряжения каждой батареи.

Arduino кластер мониторинга батарей — обзор проекта

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

Контроль напряжения батареи делителя напряжения Arduino — принципиальная схема

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

Мониторинг отдельных батарей Arduino uno, соединенный последовательно

Мониторинг батареи серии

Arduino — код проекта

После схемы переходим к кодовой части. Сначала я рассчитал коэффициенты соотношения для каждой схемы делителя напряжения. R1, R2, R3 и R4 — коэффициенты соотношения для соответствующих делителей напряжения. После соотношений следует функция readvcc. Эта функция на самом деле предназначена для настройки Arduino для точного считывания приложенного напряжения питания.Представлять, что Arduino работает от 5 вольт, не обязательно. Может работать от 4,8 или 4,7 вольт. Возможно, наш блок питания для Arduino подает 4,8 вольт, а мы рассматриваем его как 5 вольт. Обычно Arduino питается от USB-порта ноутбука / рабочей станции, а USB-порт на самом деле не выдает 5 вольт. Его выходное напряжение составляет от 4,6 до 5,3 вольт. В любом случае, как функция readvcc возвращает нам истинную прикладываемую мощность Arduino или мощность, на которой она работает. Это показание в дальнейшем используется для преобразования считанного значения аналогового канала Arduino в фактическое напряжение.

В функции настройки я инициализировал порт последовательной связи или последовательный монитор Arduino. Скорость связи установлена ​​на 9600 бит / с. В функции цикла некоторые переменные инициализируются для дальнейшего использования в коде. Чем Arduino опорного напряжения вычисляются. После того, как опорное напряжение отдельные аналоговые каналы считываются один за другим. Затем необработанные значения, считанные в аналоговых каналах, преобразуются в диапазон 5 В. Далее заявления

B4Voltage = RealBat4V * R4; // Расчет фактических напряжений
B3Voltage = RealBat3V * R3 — B4Voltage;
B2Voltage = RealBat2V * R2 — B4Voltage — B3Voltage;
B1Voltage = RealBat1V * R1 — B4Voltage — B3Voltage — B2Voltage;

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

Подключите аккумулятор и arduino uno. Теперь просто загрузите код в arduino uno. Перед загрузкой кода в arduino uno убедитесь, что вы выбрали правильную плату.Откройте серийный монитор arduino из arduino ide. Вы увидите напряжение батареи, отображаемое на последовательном мониторе Arduino. Если вы ничего не видите на последовательном мониторе Arduino, посмотрите на скорость передачи данных и установите ее на 9600 бит / с. Если вы все еще не видели, то смотрите подключения аналоговых каналов. Проверьте все возможные ошибки.
Код является модульным и может быть перенесен на любую другую плату Arduino с небольшими изменениями кода или может не потребовать никаких изменений.
Если вас интересует область IOT, то такой же, но небольшой сложный проект по мониторингу напряжения батареи через WiFi с WiFi-модулем nodemcu для вас.Ссылка на учебник ниже

Скачать код проекта. Папка содержит файл проекта .ino. Пожалуйста, поделитесь с нами своим мнением о проекте, а также в случае возникновения вопросов или запросов. Напишите их ниже в разделе комментариев.

Arduino — Цифровой вольтметр — Robo India || Учебники || Изучите Arduino |

В этом руководстве Robo India объясняется, как сделать вольтметр с помощью Arduino.

1. Введение:

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

1.1 Рабочий:

Для измерения напряжения до 5 В мы можем напрямую подключить напряжение к аналоговому выводу Arduino. А для напряжения выше 5 В нам необходимо подключиться с помощью делителя напряжения, так как диапазон аналоговых выводов Arduino составляет 5 В. Схема делителя напряжения состоит из двух резисторов 100 кОм и 10 кОм. Чтобы получить точный выходной сигнал, соотношение обоих резисторов должно быть минимальным.

Например, для измерения 40 В соотношение R1 / R2 должно быть больше (40/5) -1.

Чтобы преобразовать аналоговый выход в цифровой, мы использовали АЦП Arduino.

2. Необходимое оборудование
3. Строительный контур

Диапазон напряжения: 0-5 В

Диапазон напряжения: 5-50 В

4. Программирование-1: (от 0 В до 5 В)

Вы можете скачать этот скетч (код) Arduino отсюда.

// Учебник Robo India по цифровому вольтметру Arduino
//  https: // www.roboindia.com/tutorials/ 

#include 
#include < LiquidCrystal_I2C  .h>

  LiquidCrystal_I2C  lcd (0x3F, 20, 4);
плавающее напряжение = 0,0;
int input_val;

установка void ()
{
 lcd.init ();
 lcd.backlight (); // включает подсветку.
 lcd.clear (); // Очищает ЖК-дисплей
 lcd.print («Напряжение Arduino»); // отображение на ЖК-дисплее после загрузки кода
 lcd.setCursor (6, 1);
 lcd.print («Счетчик»);
 задержка (2000);

}

пустой цикл ()
{
 input_val = analogRead (A0);
 напряжение = (input_val * 5.0) / 1024,0; // формула преобразования напряжения

 если (напряжение <0,1)
 {
 напряжение = 0,0;
 }
 lcd.clear ();
 lcd.setCursor (0, 0);
 lcd.print ("Voltage =");
 lcd.print (напряжение);
 lcd.setCursor (14,0);
 lcd.print ("V");
 задержка (30);
}

 
5. Программирование-2: (от 5 В до 50 В)

Вы можете скачать этот скетч (код) Arduino отсюда.