Научная статья на тему 'РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ВРАЩЕНИЕМ ВАЛА ДЛЯ ДВИГАЕТЕЛЯ ПОСТОЯННОГО ТОКА ПО СИНУСОИДАЛЬНОМУ ЗАКОНУ НА ПЛАТФОРМЕ ПЛАТЫ ARDUINO UNO'

РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ВРАЩЕНИЕМ ВАЛА ДЛЯ ДВИГАЕТЕЛЯ ПОСТОЯННОГО ТОКА ПО СИНУСОИДАЛЬНОМУ ЗАКОНУ НА ПЛАТФОРМЕ ПЛАТЫ ARDUINO UNO Текст научной статьи по специальности «Механика и машиностроение»

CC BY
7
1
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
двигатель / Arduino UNO / синусоидальный закон / engine / arduino UNO / sinusoidal law

Аннотация научной статьи по механике и машиностроению, автор научной работы — А.В. Смирнов, А.Д. Широков, Д.А. Феоктистов, Е.В. Кондаков, М.С. Федоров

Рассматривается управление электродвигателя постоянного тока через плату Arduino UNO.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

IMPLEMENTATION OF THE CONTROL OF THE ROTATION FOR THE DC MOTOR SHAFT ACCORDING TO THE SINUSOIDAL LAW ON THE ARDUINO UNO BOARD PLATFORM

The control of a DC motor via an Arduino UNO board is considered.

Текст научной работы на тему «РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ВРАЩЕНИЕМ ВАЛА ДЛЯ ДВИГАЕТЕЛЯ ПОСТОЯННОГО ТОКА ПО СИНУСОИДАЛЬНОМУ ЗАКОНУ НА ПЛАТФОРМЕ ПЛАТЫ ARDUINO UNO»

УДК 371.214.19:371.69:004

РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ВРАЩЕНИЕМ ВАЛА ДЛЯ ДВИГАЕТЕЛЯ

ПОСТОЯННОГО ТОКА ПО СИНУСОИДАЛЬНОМУ ЗАКОНУ НА ПЛАТФОРМЕ

ПЛАТЫ ARDUINO UNO

А. В. Смирнов, А. Д. Широков, Д. А. Феоктистов, Е. В. Кондаков, М. С. Федоров Научный руководитель - Т.Г. Орешенко

Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31

E-mail: photohunter d@mail.ru

Рассматривается управление электродвигателя постоянного тока через плату Arduino UNO.

Ключевые слова: двигатель, Arduino UNO, синусоидальный закон.

IMPLEMENTATION OF THE CONTROL OF THE ROTATION FOR THE DC MOTOR

SHAFT ACCORDING TO THE SINUSOIDAL LAW ON THE ARDUINO UNO BOARD

PLATFORM

A.V. Smirnov, A.D. Shirokov, D. A. Feoktistov, Or. V. Kondakov M. S. Fedorov Scientific supervisor - T. G. Oreshenko

Reshetnev Siberian State University of Science and Technology 31, Krasnoyarskii rabochii prospekt, Krasnoyarsk, 660037, Russian Federation E-mail: photohunter_d@mail.ru

The control of a DC motor via an Arduino UNO board is considered.

Keywords: engine, arduino UNO, sinusoidal law.

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

Известен способ изменения направления вращения вала двигателя, путем подачи и отключения напряжения на обмотки двигателя (импульсы) через плату Arduino UNO [2]. Чтобы реализовать поворот двигателя в обе стороны, помимо платы Arduino UNO и ШИМ, понадобится драйвер L298N, с помощью которого и будет реализовано реверсивное вращение.

На рисунке 1 представлена схема подключения драйвера, двух двигателей и источника питания к плате Arduino UNO. Направление вращения задается с помощью сигналов HIGH (прямое вращение) и LOW (реверсивное вращение) [3].

Для вращения двигателя по синусоидальному закону, будем изменять время вращения двигателя в зависимости от угла. Время будем находить из синусоидального закона:

Angle = 90*sin(at), (1)

где а - угловая скорость, Angle - переменная, куда записывается угол поворота, t - время, за которое вал повернется на заданный угол.

Актуальные проблемы авиации и космонавтики - 2022. Том 1

| AA Battery 1

I

и j i

i ^m ш .1

Я /иэадвд VV

j 1

fritzing

Рис. 1. Схема подключения двигателя постоянного тока, драйвера и источника питания к плате

Arduino UNO

Найдем t из данного уравнения:

t = arcsin(Angle/90)/ rn, (2)

Далее, так как максимальная амплитуда синусоиды - 90 градусов, разобьём синусоиду на два отрезка: (0, t/2) и (t/2, t) На первом участке будет прямое вращение вала, а на втором -реверсивное. Каждый из отрезков разбиваем еще на 2 отрезка: от 0 до ±90 и от ±90 до 0 по амплитуде.

Для прямого вращения, если заданный угол будет больше 90 градусов, то мы складываем время поворота на 90 градусов и время поворота на искомый угол - 90. Если заданный угол меньше 90, то время поворота просто вычисляется по формуле 2.

Для обратного вращения, если заданный угол будет больше 270 градусов, то мы складываем время поворота на 180 градусов, время поворота на 90 градусов и время поворота на искомый угол - 270. Если заданный угол меньше 270, то мы складываем время поворота на 180 градусов и время поворота на искомый угол - 180.

Программа для управления движениями двигателей будет выглядеть примерно так:

#include <math.h>

#define ena 3

#define in1 4

#define in2 5

int powermax = 255;

float T max = 4.7;

float omega;

int power = 255;

float T;

float t;

float Angle;

int count_of_step_by_angle; char direct[2] = {'L', 'R'}; char direct_var; float A = 90.0;

int var;

int countofstepbytime = 4; void setup() { pinMode (ena, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); Serial.begin(9600);} Void velocity(intpower) { T = (T_max*power_max)/power; omega = (2*3.141)/T;}

void turn_direction(char ch) {if (ch = = direct[1]) {digitalWrite(in1, LOW); digitalWrite(in2, HIGH);}

else{digitalWrite(in1, HIGH); digitalWrite(in2, LOW);}} void loop() {

if(Serial.available()) {Angle = Serial.parseFloat(); velocity(power);

countofstepbyangle = Angle/A; t = T/count_of_step_by_time; analogWrite(ena, 255);

for(int i = 1; i < = countofstepbyangle; i + = 1) { if(A*sin(omega*t*i) >= 0) { var = 0;

direct_var = direct[var];}

else{var = 1; direct_var = direct[var];}

turn_direction(direct_var);

delay(t*1000);

if(i == count_of_step_by_angle && A*sin(omega*t*i) == 0 && var == 0) {var = 1;} else {var = 0;}}

if(Angle - count_of_step_by_angle*A != 0) {

t = asin((Angle - count_of_step_by_angle*A)/A)/omega;

turn_direction(direct[var]);

delay(t*1000);}}

analogWrite(ena, 0);}

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

Библиографические ссылки

1. Лотоцкий К. В. Электрические машины и основы электропривода. с. 84-96.

2. Майоров А. Уроки Arduino. 2019 г. с. 10.

3. Джон Хофман. Проектный подход к электронике, схемам и программированию. с. 306. © Широков А. Д, Феоктистов Д. А., Смирнов А. В., Кондаков Е. В., Федоров М. С., 2022

i Надоели баннеры? Вы всегда можете отключить рекламу.