(4)msp430f5529东拼西凑的开环垃圾小车(舵机,电机,红外对管的应用)
一.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语句来执行转向操作。
(4)msp430f5529东拼西凑的开环垃圾小车(舵机,电机,红外对管的应用)相关推荐
- 51单片机-PWM调速(直流电机,智能小车的电机调速)
文章目录 前言 一.PWM 二.产生PWM的方法 使用定时器产生一个恒定的周期 中断服务子程序里设置比较值 三.实验 使用PWM对直流电机调速 使用PWM对智能小车的电机调速 总结 前言 这次来对PW ...
- 基于MSP430F5529的后驱四轮小车
接下来会分享整个过程中的所有想法和代码. 以下目录和链接:(具体内容我每天到实验室电脑上慢慢更) 所有的例程已经整理到https://github.com/FeiDao7943/MSP430F5529 ...
- STC89C52 小车-舵机转向/蓝牙控制/寻迹,有PCB有讲解,更新
推荐单片机:STC89C52或51(尽量52 还有提供可用于测试直接烧录的89单片机文件(hex),不需要重新编译. 还是老话: 源代码可以直接编译通过. 本人是自学,原创内容--转载请务必说明!! ...
- 基于STM32的智能小车--舵机云台设计
基于STM32的智能小车 第一章 基于STM32的智能小车方案设计 第二章 基于STM32的智能小车–电机驱动设计 第三章 基于STM32的智能小车–循迹设计 第四章 基于STM32的智能小车–避障设 ...
- 小车舵机控制linux软件,在Linux(Ubuntu)上使用串口控制ROBOTIS Dynamxiel舵机
声明:此文档版权归属于北京小芽科技,可以转载,但要声明出处(北京小芽科技博客xiaoyatec.com) 硬件配置: 1.USB2Dynamixel串口模块 2.SMPS2Dynamixel电源模块 ...
- 寻迹小车 FOLLOWME—— 电机测速及转速控制
寻迹小车 FOLLOWME-- 之五:电机测速及转速控制 此篇涉及电机的测速和转速控制. 寻迹小车 FollowMe -- 之五:电机测速及转速控制 作者:Hanker 前面已完成了车的主体,控制部分 ...
- Arduino循迹小车(三路红外)
利用红外线传感器让小车在规定路线上行进 1. 所需材料 小车车架及车轮(可以用sw建模然后利用3D打印机打印,也可以在网上直接购买小车地板,用纸板最廉价O(∩_∩)O哈哈~) 该图为3D打印效果 Ar ...
- arduino舵机门锁 红外遥控控制 刷卡 diy
温湿度 检测 能够显示 i2c12864 详情https://g.alicdn.com/idleFish-F2e/app-basic/item.html?itemid=573263642630& ...
- STM32小车——PWM电机调速
PWM电机调速(寄存器版) 我的上一篇博客已经写了如何用定时器产生PWM来实现LED灯的呼吸灯效果,当我想实现PWM来控制电机调速时,网上翻阅了很多的资料但是大多数是在呼吸灯的基础上改一下代码实现的, ...
最新文章
- Java使用itext生成Pdf
- 封装、继承、多态、访问符,范围修饰符
- Redis Cluster 原理你了解不?
- 【CyberSecurityLearning 73】DC系列之DC-4渗透测试
- Zend Optimizer 相关报错收集
- 关于压缩工具 7z(7-zip) 如何设置压缩算法(选项 -m 的解读)
- 管理角色认知-新晋管理常常犯的错
- 删除服务中的mysql服务
- 线性代数:线性方程组的解
- 【Elasticsearch】Fielddata is disabled on text field fielddata=true
- 一个专科生学习JAVA目标月薪2万是否不切实际?
- 未来-IOT-Aliyun:阿里云 IOT - 开发者社区
- 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT
- ECS架构 Entitas-CSharp学习之路(二)
- malloc和calloc
- 计算机word保存如何操作,电脑word怎么保存 在电脑上word打字怎么保存
- realme怎么互传_Realme X刷MIUI11系统后通过普通电脑实现“小米互传”攻略
- Fama-French 三因子模型
- DCMTK、ITK、VTK读取dicom信息
- 面试官教你 ,如何应对秋招面试(不看后悔篇)!!!