4msp430f5529东拼西凑的开环垃圾小车舵机,电机,红外对管的应用
一.pwm波的产生
驱动电机,舵机的运动,肯定要用到pwm波,所以我们先来分享一下如何来产生pwm波,产生pwm波的话一定是要用到单片机里带的定时器。msp430f5529这款芯片有TIME A, TIME B定时器。首先我们先查阅数据手册,查看可以使用定时器的管脚。
我们看到P1.2 P1.3 P1.4 P1.5可以使用timeA定时器,在翻看翻看官方给的定时器例程,我们就能写出pwm波的程序了
void initpwm()
{
P1DIR |=BIT2 BIT3 BIT4 BIT5; //设置P1.2,3,4,5口为输出
P1SEL |=BIT2 BIT3 BIT4 BIT5; //开启1.2,3,4,5口的io口的第二功能,即启用定时器
TA0CCR0 =3000; //设置PWM波的周期
TA0CTL=TASSEL_2 MC_1; //设置定时器A0采用TASSEL时钟源和增计数模式
TA0CCTL1 = OUTMOD_7; //设置TA0CCR1,2,34,的PWM的输出模式为7模式
TA0CCTL2 = OUTMOD_7;
TA0CCTL3 = OUTMOD_7;
TA0CCTL4 = OUTMOD_7;
}
此时P1.2和P1.5控制一个电机,P1.3和P1.4控制一个电机,然后在主程序中只需要给TA0CCR1,TA0CCR2,TA0CCR3,TA0CCR4分别对应P1.2,P1.3,P1.4,P1.5赋值即可.记得赋值时控制一个电机的一组定时器一个给0,另一个给的值除以TA0CCR0的值即为pwm波的占空比。如:TA0CCTL1=0;TA0CCTL4=1000;其占空比就为1000/3000。
二.舵机的运用,舵机这个玩意很神奇,控制它的话是采用pwm波控制。基本原理什么的就不仔细讲了,想要详细了解的,大家可以在csdn上查看一下。首先在百度上搜了一张舵机的图
差不多就是这样,那我们的pwm波就是通过占空比来控制舵机的相对转动的角度和方向。具体关系的话可以到买舵机的商家问一问。然后我们上代码。
int umotor(void)
{
P2DIR |=BIT0 ; //设置P2.0口为输出
P2SEL |=BIT0; //开启2.0口的第二功能,因为要用来输出pwm
TA1CCR0 =10000; //设置PWM周期(此周期要根据舵机的频率计算,舵机频率转换为此周期)
TA1CTL=TASSEL_2 MC_1; //设置定时器A1采用TASSEL时钟源和增计数模式
TA1CCTL1 =OUTMOD_7; //设置TA0CCR1的PWM的输出模式为7模式
}
同样的给TA1CCTL1赋值 ,TA1CCTL1/TA1CCR0即为舵机的占空比,通过控制舵机的占空比即可以控制舵机的转向。
三.电机的运用,电机就直接上驱动板,驱动板上接上pwm波,把电机接在驱动板上即可,如果发现正反转不一,可以把接一组pwm波的线交换一下,也可以把电机接驱动板的正负极交换一下。
四.红外对管的应用
红外对管呢,是通过发射红外光和接受红外光的设备,所以可以用来循迹和避障,那么一般红外管在接收障碍物反射的信号后就会给一个高电平(低电平),接收不到会给已给低电平(高电平),所以就要用到单片机判断输入信号的高低电平。
P6SEL|=0x00;
P6DIR|=0x00;//设置P6.0 P6.1 P6.2 P6.3 P6.4红外管脚输入定义
while(1)
{
switch(P6IN&0x0f)
{
case 0x0f:TA1CCTL1=1550;break;//1550为我使用舵机所的中值
case 0x01:TA1CCTL1=1550;break;
case 0x03:TA1CCTL1=1350;break;
case 0x02:TA1CCTL1=1750;break;
case 0x04:TA1CCTL1=1650;break;
default:TA1CCTL1=1550; break;
}; //舵机转向控制
}
这里的0x0f是P6.1.2.3.4管口转换为十六进制,通过输入的口高低电平和0x0f做与运算,再用switch语句来执行转向操作。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcjeec
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01