Оглавление:

Цифровой вольтметр с CloudX: 6 шагов
Цифровой вольтметр с CloudX: 6 шагов

Видео: Цифровой вольтметр с CloudX: 6 шагов

Видео: Цифровой вольтметр с CloudX: 6 шагов
Видео: Цифровой Вольтметр 0-100V 2024, Ноябрь
Anonim
Цифровой вольтметр с CloudX
Цифровой вольтметр с CloudX

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

Следовательно, возникает необходимость регулярно контролировать уровень заряда батареи, чтобы правильно определять, когда она должна быть полностью заменена или заряжена - в случае перезаряжаемой батареи. Поэтому в этом DIY (Сделай сам) мы должны разработать простой измеритель напряжения батареи, используя CloudX - используя 7Segment в качестве нашего дисплея.

Шаг 1. Требования к оборудованию

Модуль микроконтроллера CloudX

CloudX USB

SoftCard

7-сегментный дисплей

Резисторы

Блок питания

Макетная плата

Перемычки (соединительные) провода

Шаг 2: микроконтроллер CloudX M633

Микроконтроллер CloudX M633
Микроконтроллер CloudX M633

Модуль микроконтроллера CloudX

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

Шаг 3: штыревые соединения

Штыревые соединения
Штыревые соединения

7-сегментные выводы: A, B, C, D, E, F, G, 1, 2 и 3 подключены к выводам 1, 2, 3, 4, 5, 6, 7, 8, 9, CloudX-MCU, pin10 и pin11 соответственно.

Шаг 4: Принципиальная схема

Принципиальная электрическая схема
Принципиальная электрическая схема

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

либо через точки Vin и Gnd (т. е. подключив их к клеммам + ve и –ve вашего внешнего блока питания соответственно) на плате;

или через модуль Softcard USB CloudX

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

и выбираются таким образом, чтобы:

ограничить количество тока, протекающего по сети;

предел в безопасном диапазоне (0 - 5) В для MCU.

Используя формулу: VOUT = (R2 / (R1 + R2)) * VIN; и легко поддается оценке.

Voutmax = 5 В

и для этого проекта выбираем: Vinmax = 50V;

5 = (R2 / (R1 + R2)) * 50 R1 = 45/5 * R2 Возьмем, например, R2 = 10 кОм; R1 = 45/5 * 10 = 90 кОм

Шаг 5: Принцип работы

Когда измеренное входное напряжение считывается через точку VOUT сети делителя напряжения, данные дополнительно обрабатываются в MCU для оценки окончательного фактического значения, которое отображается на сегментном блоке. Он (конструкция системы) является автоматическим распределителем десятичной точки, поскольку он (десятичная точка) фактически сдвигает положение на самом дисплейном блоке в соответствии с тем, что значение с плавающей запятой диктует в любой данный момент времени. Затем весь аппаратный 7-сегментный дисплей подключается в мультиплексном режиме. Это особая конструкция, при которой одна и та же шина данных (8 контактов для данных) от MCU питает три активных 7-сегментных блока дисплея. Отправка шаблона данных в каждую из составных частей достигается процессом, называемым сканированием. Сканирование - это метод, включающий отправку данных в каждый из семи сегментов компонента; и включение (т.е. включение) их в быстрой последовательности по мере поступления соответствующих данных. Скорость обращения к каждому из них подбирается так, что удается обмануть человеческое зрение, заставив поверить, что все они (составные части) задействованы (адресованы) одновременно. Это (сканирование) просто, по сути, использует явление, известное как постоянство зрения.

Шаг 6: Программное обеспечение

#включают

#включают

#включают

#define segment1 pin9

#define segment2 pin10

#define segment3 pin11

float batt_voltage;

int decimalPoint, batt;

/ * массивы, которые хранят сегментный образец для каждой данной цифры * /

char CCathodeDisp = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

char CAnodeDisp = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

int disp0, disp1, disp2;

отображать() {

беззнаковый символ i;

if (decimalPoint <10) {

disp0 = (int) batt_voltage / 100; // извлекает MSD (наиболее значимую цифру)

// самый высокий вес

/ * выбирает следующую взвешенную цифру; и так далее */

disp1 = ((int) batt_voltage% 100) / 10;

disp2 = ((int) batt_voltage% 10);

}

еще {

disp0 = (int) batt_voltage / 1000;

disp1 = ((int) batt_voltage% 1000) / 100;

disp2 = ((int) batt_voltage% 100) / 10;

}

/ * Паттерны выгружаются для отображения; и символ 0x80 с добавлением десятичной точки

если соответствующее условие выполняется * /

for (i = 0; i <50; i ++) {

pin9 = pin10 = pin11 = ВЫСОКИЙ;

если (десятичная точка <10)

portWrite (1, CCathodeDisp [disp0] | 0x80);

иначе portWrite (1, CCathodeDisp [disp0]);

сегмент1 = НИЗКИЙ;

сегмент2 = ВЫСОКИЙ;

сегмент 3 = ВЫСОКИЙ;

delayMs (5);

pin9 = pin10 = pin11 = ВЫСОКИЙ;

если ((десятичная точка> = 10) && (десятичная точка <100))

portWrite (1, CCathodeDisp [disp1] | 0x80);

иначе portWrite (1, CCathodeDisp [disp1]);

сегмент1 = ВЫСОКИЙ;

сегмент2 = НИЗКИЙ;

сегмент 3 = ВЫСОКИЙ;

delayMs (5);

pin9 = pin10 = pin11 = ВЫСОКИЙ;

если (десятичная точка> = 100)

portWrite (1, CCathodeDisp [disp2] | 0x80);

иначе portWrite (1, CCathodeDisp [disp2]);

сегмент1 = ВЫСОКИЙ;

сегмент2 = ВЫСОКИЙ;

сегмент 3 = НИЗКИЙ;

delayMs (5);

}

}

setup () {// настраиваем здесь

analogSetting (); // аналоговый порт инициализирован

portMode (1, ВЫХОД); // Контакты с 1 по 8 настроены как выходные контакты

/ * сканирование контактов, сконфигурированных как выходные контакты * /

pin9Mode = ВЫХОД;

pin10Mode = ВЫХОД;

pin11Mode = ВЫХОД;

portWrite (1, LOW);

pin9 = pin10 = pin11 = ВЫСОКИЙ; // сканировать пины (активные - низкий)

// отключены в начале

loop () {// Программируем здесь

batt_voltage = аналоговое чтение (A0); // принимает измеренное значение

batt_voltage = ((напряжение аккумулятора * 5000) / 1024); // коэффициент преобразования для 5Vin

напряжение батареи = (напряжение батареи * 50) / 5000; // коэффициент преобразования для 50Vin

decimalPoint = напряжение батареи; // отмечает место десятичной точки в

// исходное значение до обработки данных

отображать();

}

}

Рекомендуемые: