实验7 直流减速电机
扫描二维码
随时随地手机看文章
小时候玩过四驱车的同学应该都接触过马达,马达是一种直流电机,马达上有两个铜片,同干电池正负极分别连接两个铜片,马达就可以转起来了。把干电池反过来接铜片,马达就反转了。今天我们要学习的是控制TT马达,是一种直流减速电机,所谓减速就是在马达上装了减速箱,速度降低了,扭矩变大了。TT马达如下图所示。
如果跟电机通上的电源能像PWM那样调节占空比,那电机就能实现调速功能。然后单片机的引脚输入电流大小有限,不足以使电机转动,所以我们将使用一种器件,叫做电机驱动模块。我们今天要使用的是L298N电机驱动模块,如下图所示。
L298N电机驱动模块有如下几个接口,供电正极端子接的电源不能单片机的供电正极共用,我们用7.4V给它供电;接地端子和单片机共用GND;ENA、ENB的插的跳线帽要取下来,连接STM8的PWM口,IN1~IN4连接STM8的IO口;OUT1、OUT2接电机的两个铜片,OUT3、OUT4接另一个电机的两个铜片。可以看出L298N电机驱动模块可以控制两路电机,每一路电机可以并联很多个电机,OUT1、OUT2在电机驱动模块功率允许的条件下可以接多个直流电机。
ENA、IN1、IN2控制OUT1、OUT2的输出;
ENB、IN3、IN4控制OUT3、OUT4的输出。
ENA接收的PWM信号控制电机的转速,占空比越大,电机转速越快。IN1、IN2的高低电平组合控制电机的转向。
电机转向控制如下表。
一、库函数1、打开DAHUME MINI.stw文件;
2、在STVD左侧Workspace窗口Source Files目录下找到main.c,双击打开;
3、编写如下代码;
#include "main.h"
#define IN1PC1
#define IN2PC2
#define IN3PC3
#define IN4PC4
#define zuo1
#define you2
void setup(void)
{
delay(10);
CLOCK(_16MHz);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
PWM3_init(10, 100);
//_asm("rim");//rim为打开总中断,sim为关闭总中断
}
void go(unsigned char speed)
{
digitalWrite(IN1, HIGH);digitalWrite(IN3, HIGH);
digitalWrite(IN2, LOW);digitalWrite(IN4, LOW);
PWM3(zuo, speed);PWM3(you, speed);
}
main()
{
setup();
while (1)
{
go(50);
}
}
#define是C语言的关键字,是宏定义。#define名词1名词2是表示用名词1代替名词2,名词2可以为地址、寄存器、变量名、数值、函数等,宏定义的作用之一是助记。
二、练习1、按照《综合练习1循迹小车》,组装循迹小车;
2、参照go函数,编写back、left、right函数,left、right效果是原地左转、右转;
3、编写stop函数,参数作为停止持续时间;
4、调用以上函数,实现小车走三角形、长方形、梯形、五边形路径。