MCU6. Управление длительностью и направлением вращения электромотора с помощью микроконтроллера PIC

Необходимо написать в MPLAB X IDE программу для управления длительностью и направлением вращения вала электромотора небольшой мощности, которую, например, можно применить для робота, встречающего посетителей приветственным взмахом руки. Управление электромотором осуществляется с помощью микроконтроллера PIC. Пусть вал электромотора вращается по следующему алгоритму: 3 с вращается по часовой стрелке (рука робота поднимается), затем останавливается на 500 мс, затем вращается 1 с против часовой стрелки (рука немного опускается), останавливается на 500 мс и 1 с вращается по часовой стрелке (рука возвращается на исходную высоту), останавливается на 500 мс и 3 с вращается против часовой стрелки (рука робота опускается в начальное положение). Через 2 с цикл повторяется. Для написания программы использовать MCC. Разработать схему в Протеусе для микроконтроллера PIC18F26K20 и выполнить моделирование.

Поскольку максимальный ток на выводе микроконтроллера не должен превышать 25 мА, а для работы электромотора требуется существенно больший ток, то для управления электромотором применяется специальная микросхема L239D, которая называется драйвером электродвигателя. Эта микросхема является промежуточным звеном между микроконтроллером и двигателем и позволяет управлять двигателем с помощью малых токов микроконтроллера.
Листинг программы:

#include “mcc_generated_files/mcc.h”
void main(void) {
SYSTEM_Initialize();
while (1) {
// По часовой стрелке
IN1_SetHigh();
IN2_SetLow();
__delay_ms(3000);
// На месте
IN1_SetLow();
IN2_SetLow();
__delay_ms(500);
// Против часовой стрелки
IN1_SetLow();
IN2_SetHigh();
__delay_ms(1000);
// На месте
IN1_SetHigh();
IN2_SetHigh();
__delay_ms(500);

// По часовой стрелке
IN1_SetHigh();
IN2_SetLow();
__delay_ms(1000);
// На месте
IN1_SetLow();
IN2_SetLow();
__delay_ms(500);
// Против часовой стрелки
IN1_SetLow();
IN2_SetHigh();
__delay_ms(3000);
// На месте
IN1_SetLow();
IN2_SetLow();
__delay_ms(2000);
}
}

Моделирование

В случае правильного функционирования программы прошиваем микроконтроллер. Последовательность действий при прошивке микроконтроллера изложена в учебном пособии “Программирование микроконтроллеров” на данном сайте.