Эксперимент 18. Тестер батареек. Список деталей для эксперимента




Эксперимент 18. Тестер батареек

← Пантограф | Оглавление | Светильник, управляемый по USB →

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

Список деталей для эксперимента

§ 1 плата Arduino Uno

§ 1 беспаечная макетная плата

§ 2 резистора номиналом 10 кОм

§ 1 выпрямительный диод

§ 1 текстовый экран

§ 16 проводов «папа-папа»

§ 1 клеммник

Принципиальная схема

Схема на макетке

Обратите внимание

§ Мы подключаем «плюс» батарейки через делитель напряжения с равными плечами (R1 = R2 = 10 кОм), таким образом деля подаваемое напряжение пополам. Поскольку в аналоговый вход Arduino мы можем подавать до 5В, мы можем измерять напряжение до 10В. Не пробуйте измерять большее напряжение, вы можете повредить плату!

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

§ Ножки нашего ЖК-дисплея нумеруются не подряд: 15 и 16 ножки находятся перед 1.

§ Диод пригодится, если пользователь тестера перепутает «+» и «-» батарейки, главное нам самим не забыть про направление, в котором через диод может течь ток, и установить его верно!

Скетч

p180_lcd.ino

// Подключаем библиотеку для работы с жидкокристаллическим

// экраном (англ. Liquid Crystal Display или просто LCD)

#include <LiquidCrystal.h>

// на диоде, защищающем от неверной полярности, падает доля

// напряжения (англ. voltage drop). Необходимо это учитывать

#define DIODE_DROP 0.7

// Объявляем объект, для управления дисплеем. Для его создания

// необходимо указать номера пинов, к которым он подключен в

// порядке: RS E DB4 DB5 DB6 DB7

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

 

void setup()

{

// начинаем работу с экраном. Сообщаем объекту количество

// строк и столбцов. Опять же, вызывать pinMode не требуется:

// функция begin сделает всё за нас

lcd.begin(16, 2);

// печатаем сообщение на первой строке

lcd.print("Battery voltage:");

}

 

void loop()

{

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

float voltage = analogRead(A0) / 1024.0 * 10.0;

// если напряжение на делителе напряжения было зафиксировано,

// нужно прибавить напряжение на диоде, т.к. оно было съедено

if (voltage > 0.1)

voltage += DIODE_DROP;

// устанавливаем курсор, колонку 0, строку 1. На деле — это

// левый квадрат 2-й строки, т.к. нумерация начинается с нуля

lcd.setCursor(0, 1);

// печатаем напряжение в батарейке с точностью до сотых долей

lcd.print(voltage, 2);

// следом печатаем единицы измерения

lcd.print(" Volts");

}

Пояснения к коду

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

§ В этом эксперименте мы снова пользуемся готовой библиотекой <LiquidCrystal.h> для создания объекта lcd и использования его методов

o lcd.begin(cols,rows) с помощью которого мы задаем количество колонок и строк нашего дисплея

o lcd.print(data) для вывода данных. У него есть второй необязательный параметр BASE, передав который, можно выбрать систему счисления, так же, как в примере с Serial.print().

o lcd.setCursor(col,row) устанавливает курсор в переданную колонку и строку. Последующий вывод будет осуществляться с этого места.

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

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

Вопросы для проверки себя

1. Из-за чего измерения напряжения в этом эксперименте могут быть неточными (на что мы можем повлиять)?

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

3. Каким образом мы задаем позицию, с которой на экран выводится текст?

4. Можем ли мы писать на экране кириллицей? Как?

Задания для самостоятельного решения

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

1. Создайте секундомер, который будет отсчитывать время, прошедшее с начала работы Arduino и выводить секунды и сотые секунд на экран.

2. Совместите отсчет времени и измерение напряжения. Отобразите все данные на дисплее. Отправляйте их раз в 10 секунд на компьютер.

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: