Широкий интерес для любителей самодельных электронно-программируемых устройств представляют многофункциональные сборки Arduino, позволяющие воплощать в жизнь интересные задумки.
Основное преимущество готовых схем Arduino заключается в уникальном блочно-модульном принципе: каждая плата может быть добавлена дополнительными интерфейсами, бесконечно расширяя возможности для создания различных проектов.
Модули Arduino построены на универсальном микроконтроллере с собственным загрузчиком, что позволяет легко прошивать его необходимым программным кодом, без использования дополнительных устройств. Программирование осуществляется на стандартном языке С++.
Одним из простейших примеров использования Arduino может стать реализация на базе этой сборки вольтметра постоянного напряжения повышенной точности с диапазоном измерения от 0 до 30 В.
Аналоговые входы Arduino предназначены для постоянного напряжения не более пяти вольт, поэтому, использование их при превышающих это значение напряжениях возможно с делителем напряжения.
Делитель напряжения состоит из двух последовательно соединенных сопротивлений. Расчет его производится по формуле:
Где, в данном случае, – максимальное измеряемое напряжение, – напряжение после делителя, поступающее на аналоговые вход Arduino, R1 и R2 – значения сопротивлений первого и второго элемента делителя, соответственно.
Чтобы установить определенный «запас прочности» разрабатываемого вольтметра и для простоты подсчетов можно принять величину сопротивлений R1=10кОм и R2=100кОм. В этом случае, на сборку можно подавать напряжение до 55 В.
Встроенный в схему Arduino датчик преобразует поданное на вход А0 напряжение в цифровой сигнал, который поступит на микроконтроллер и будет им обработан, с помощью заложенной в память программы будут произведены необходимые вычисления и значение реального напряжения выведутся на жидкокристаллическом индикаторе.
Наладка прибора и корректировка скретч-листинга программы должны не вызывать затруднений.
Обычные резисторы, используемые в радиолюбительской массе, имеют среднюю погрешность 10 % от номинала. Использование же прецизионных сопротивлений высокой точности не всегда может быть возможным из-за их высокой стоимости.
Поэтому, если при проверке образцовым лабораторным измерительным прибором, обнаружилась погрешность измерения, необходимо проверить реальное сопротивление каждого элемента делителя и отредактировать программу (R1, R2).
Следующим шагом наладки должен стать замер напряжения между клеммами +5 и общей («земля») Arduino. В случае, если полученное значение не будет ровно 5 В, нужно также произвести изменения в коде (заменить число 5 в строке vout=(value*5)…) на действительное напряжение.
Следует не забывать, что даже небольшое превышение напряжения (выше 55 В)приведет к выходу из строя Arduino, поэтому, рационально не применять вольтметр для высоких величин, установив верхней планкой 30 В.
Код программы :
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // resistance of R1 (100K) -see text!
float R2 = 10000.0; // resistance of R2 (10K) - see text!
int value = 0;
void setup(){
pinMode(analogInput, INPUT);
begin(16, 2);
print("DC VOLTMETER");
}
void loop(){
// read the value at analog input
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0; // see text
vin = vout / (R2/(R1+R2));
if (vin<0.09) {
vin=0.0;//statement to quash undesired reading !
}
setCursor(0, 1);
print("INPUT V= ");
print(vin)
delay(500);
}
Прикрепленные файлы: Код программы СКАЧАТЬ
Автор: Николай Владимирович.
В коде надо добавить lcd. перед: begin(16, 2), setCursor
и print
кто-то видимо мешает поставить стабилитрон на 5.1 В параллельно R2.