• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

51单片机的遥控小车[持续更新中~]

第一次发帖子,而且还是在双十一,突然发现好多一啊~

最近在做用51控制小车,用蓝牙遥控,小车使用IAP15W4K58S4单片机,是一款增强型51单片机。内部有AD模块、时钟振荡模块等等,可以输出PWM。还是先发一张电路图吧

1 硬件电路图

大体上的构思是这样的:电源模块实现5V稳压输出,输入为9V的交流电。也可以用电池。不过可能还需要改一点地方。

LED1为电源指示灯。

51单片机使用的是IAP15W4K32S4,一款增强型51单片机。内部有时钟振荡模块,所以可以不用外部振荡电路。通过改变下载器的内部晶振频率来改变时钟频率。有PWMPCAAD等等。所以图中内有振荡电路部分。

P3BT)是蓝牙模块,用串口和蓝牙模块进行通信。

P4是电机驱动模块,使用L298N驱动模块。

2 电路背面图

各位大神不要笑话我的焊功啦~~

3 硬件组合图

大概是这样的,蓝牙模块没有安。

 

至于软件部分。还需要修改调试,过两天在贴上来。

 

小弟发此贴一来想分享一下做电子的经验,二来想希望和各位大神一起交流,向大神请教。

我还是电子届的一名小学生![可爱脸]

 

于 2016-11-13

硬件做完了,下面开始完成软件编写部分。

大致思路是这样的。

1、产生两路PWM,控制两个电机。

2、串口接收蓝牙,收到的数据。

3、根据数据改变小车的运动方向和速度。

 

 

首先看PWM控制电机。

PWM,中文名字叫脉宽调制。通过改变占空比来改变电机的转速。当占空比较大的时候,电机转的快。

实际上,我是这样理解PWM控制电机转速的。在电机两端加上电压差,就会让电机转动,一个周期内的占空比越大,对应的等效电压越大。电压差越大,电机转的越快。所以通过改变占空比就可以调整电机的转速。

而增强型51单片机即IAP15W4K32S4,有独立的pwm模块,但是我用的是PCA模块。

PCA模块,可编程计数逻辑器件,可用于软件定时器、外部脉冲的捕捉、高速脉冲输出以及脉宽调制输出。可以理解为一个定时器。它可以有进行16bit的计数,正向计数。我采用的是高速脉冲输出。实际上就是stc的官方例程。PCA产生3PWM

 

在控制电机部分,我采用了两路PWM控制两个电机,也就是说一路PWM控制一路电机(真废话!)电机驱动是L298N,只要输入一端高,一端低,就可以使电机转动。

我将控制一个电机转动的两端一端输入PWM,另一端输入高电平或者低电平。当输入低电平的时候,另一端输入PWM,电机正转,转速与PWM的占空比成正比。当输入高电平的时候,另一端输入PWM,电机反转,转速和PWM的占空比成反比,这个逻辑有一点乱,因为通过电压差来控制电机的转速,当一端输入高电平的时候,另一端输入PWM,此时PWM的低电平有效,可以使电机转动。当低电平的时间越长,即占空比越小,电机翻转越快。

 

在串口部分,使用9600波特率。对于串口的配置,很普通,也是根据例程来改编的。

 

而对于蓝牙模块的配置,之前就有遇到了一点困难。比如进不去调试模式。经过上网查资料终于知道,先将蓝牙断点,然后按住模块上的按钮,在上电,就进入蓝牙的调试模式。这样在串口调试助手中输入对应的指令就可以进行配置蓝牙模块了。配置好之后,再断电,不用按住按钮,上电。进入蓝牙通信模式。(PS:蓝牙模块是HC-05

 

最后部分,就是主函数了,通过蓝牙模块接收数据,再在主函数中进行模式判断,并进行相应的处理。比如加速,减速,左转,右转等。

 

 

剩下的部分就是调试了。

 

我觉得还是把代码给发上吧。这个代码还存在一些小问题。比如占空比是从50% 开始的。原因是我给L298N电机驱动的电压都是5V,这有问题,导致需要输入很大的占空比才能使电机转动。还有一个问题就是当小车左转或者右转的时候,空转时,明显能看出来左右轮子的转速不同,放到地上跑的时候,就跑直线了。不知道是什么原因。如果某位大神有时间或者有兴趣,一起来找到这个问题的解决方案吧。由于是实验,老师把小车收上去了,准备循环利用

 

于 2016-11-20

蓝牙遥控小车.rar

全部回复(3)
正序查看
倒序查看
2016-11-11 16:10
看不到图片啊
0
回复
2016-11-11 16:25
我是这名小学生的同学
0
回复
guang卢
LV.7
4
2016-11-11 17:08
来听课
0
回复