Вы находитесь на странице: 1из 8

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ МОСКОВСКОЙ ОБЛАСТИ


Государственный университет «Дубна»

ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ

Кафедра проектирования электроники для установок «мегасайенс»

Практическая работа №2 по курсу «Инженерный онлайн практикум» по теме:


«Освещение стенда»

Выполнил:
студент 1 курса группы №1242
Иванов И.И.

Проверил:
ст. преп. Понкин Д. О.

г. Дубна, 2020 г.
Оглавление

ЗАДАЧИ РАБОТЫ 3
Задача 1. Плавное включение и выключение подсветки 3
Задача 2. Реализация собственной функции измерения тока подсветки 3
Задача 3. Анализ работы подсветки 5

ВЫВОД 8

2
ЗАДАЧИ РАБОТЫ

Задача 1. Плавное включение и выключение подсветки


Обеспечить плавное включение и выключение подсветки стенда, т.е. написать
еще один цикл, который будет менять яркость подсветки стенда от 100 до 0.

В качестве решения этой задачи были написаны два цикла for. В одном цикле
значения для переменной duty_cycle менялось от 0 до 100, в другом цикле – от 100 до 0:

for (int duty_cycle = 0; duty_cycle <= 100; duty_cycle++)


{
Backlight_control(duty_cycle);
Delay_ms(10);
Delay_ms(100);
}

for (int duty_cycle = 100; duty_cycle >= 0; duty_cycle--)


{
Backlight_control(duty_cycle);
Delay_ms(10);
Delay_ms(100);
}

Листинг 1. Листинг выполнения программы для задачи №1.

3
Задача 2. Реализация собственной функции измерения тока подсветки
Написать над функцией Task1() собственную функцию uint32_t Сurrent_lighter( void)
для измерения величины тока, потребляемой подсветкой стенда. Данная функция
должна возвращать значение потребляемого тока подсветкой. Аргументы для
данной функции не нужны.

Для измерения тока подсветки была реализована собственная функция,


рассчитывающая и возвращающая величину силы тока подсветки:
uint32_t Current_lighter(void)
{

// Установка канала АЦП для измерения напряжения питания подсветки


MCU_ADC_set_ch(3);
uint32_t voltage = MCU_ADC_read(); // Считывание с АЦП

// Раcчет значения потребляемого тока


uint32_t current = (((float)voltage*0.0008) / (R_S * K_LED)) * 1000;

return current;
}
Листинг 2. Листинг функции измерения тока подсветки

4
Задача 3. Анализ работы подсветки
Измерить ток потребления подсветки при различных значениях коэффициента
заполнения, шаг для измерений 10 (т.е. duty_cycle = 0, 10, 20 … 100). Вручную
заполнить онлайн таблицу «Потребляемая мощность подсветкой стенда» и
построить графики для тока, напряжения и мощности (для удобства советуется
увеличить величину задержки между выводом результатов на дисплей).

Для удобства получения и записи данных о токе и напряжении подсветки была


реализована дополнительная функция void DisplayInfo(), отвечающая за вывод
информации на дисплей:
void DisplayInfo() //Функция для отображения информации на дисплей
{
uint32_t current = Current_lighter();
MCU_ADC_set_ch(3); // Установка канала АЦП для измерения
напряжения питания подсветки
uint32_t voltage = MCU_ADC_read() * 0.0008 * 1000 // Считывание с АЦП,
преобразование в миллиамперы

//Вывод информации о силе тока на первую строку дисплея


LCD_set_cursor(1); // Установка курсора на первую строку
LCD_print_text("I: ");
LCD_print_num((int32_t)current);
LCD_print_text(" mA ");

//Вывод информации о напряжении питания подсветки на вторую строку


дисплея
LCD_set_cursor(2); // Установка курсора на первую строку
LCD_print_text("U: ");
LCD_print_num((int32_t)voltage);
LCD_print_text(" mV ");
}
Листинг 3. Функция вывода данных на дисплей платы

Шаг изменения яркости подсветки, а также время вывода информации на дисплей


(листинг 1) были изменены с той же целью, функция void DisplayInfo() была включена в
цикл:

5
for (int duty_cycle = 0; duty_cycle <= 100; duty_cycle += 10)
{
Backlight_control(duty_cycle); // изменение яркости подсветки
стенда
Delay_ms(10); // задержка для
установки коэффициента заполнения
LCD_clear();
LCD_set_cursor(0); // установка курсора
LCD_print_text("Duty cycle: ");
LCD_print_num(duty_cycle); // вывод коэффициента заполнения

DisplayInfo(); //Вывод на дисплей информации о силе тока и


напряжении питания

Delay_ms(3000); // задержка после


вывода значения на дисплей

} //for
for (int duty_cycle = 100; duty_cycle >= 0; duty_cycle -= 10)
{
Backlight_control(duty_cycle); // изменение яркости подсветки
стенда
Delay_ms(10); // задержка для
установки коэффициента заполнения
LCD_clear();
LCD_set_cursor(0); // установка курсора
LCD_print_text("Duty cycle: ");
LCD_print_num(duty_cycle); // вывод коэффициента заполнения

DisplayInfo(); //Вывод на дисплей информации о силе тока и


напряжении питания

Delay_ms(3000); // задержка после


вывода значения на дисплей

6
P, mW относительно параметра "duty_cycle"
1200

1000

800
P, mW

600 P, mW

400

200

0
0 10 20 30 40 50 60 70 80 90 100
duty_cycle

График 1. Зависимость мощности подсветки от коэффициента заполнения

Рисунок 1. Отображение силы тока и напряжения питания подсветки на дисплее платы

7
ВЫВОД

В данной лабораторной работе был проделан ряд задний, позволивший освоить


принципы управления подсветкой стенда, а также установить зависимость мощности
подсветки от коэффициента заполнения