第一次发帖子,而且还是在双十一,突然发现好多一啊~
最近在做用51控制小车,用蓝牙遥控,小车使用IAP15W4K58S4单片机,是一款增强型51单片机。内部有AD模块、时钟振荡模块等等,可以输出PWM。还是先发一张电路图吧
图1 硬件电路图
大体上的构思是这样的:电源模块实现5V稳压输出,输入为9V的交流电。也可以用电池。不过可能还需要改一点地方。
LED1为电源指示灯。
51单片机使用的是IAP15W4K32S4,一款增强型51单片机。内部有时钟振荡模块,所以可以不用外部振荡电路。通过改变下载器的内部晶振频率来改变时钟频率。有PWM、PCA、AD等等。所以图中内有振荡电路部分。
P3(BT)是蓝牙模块,用串口和蓝牙模块进行通信。
P4是电机驱动模块,使用L298N驱动模块。
图2 电路背面图
各位大神不要笑话我的焊功啦~~
图3 硬件组合图
大概是这样的,蓝牙模块没有安。
至于软件部分。还需要修改调试,过两天在贴上来。
小弟发此贴一来想分享一下做电子的经验,二来想希望和各位大神一起交流,向大神请教。
我还是电子届的一名小学生![可爱脸]
于 2016-11-13
硬件做完了,下面开始完成软件编写部分。
大致思路是这样的。
1、产生两路PWM,控制两个电机。
2、串口接收蓝牙,收到的数据。
3、根据数据改变小车的运动方向和速度。
首先看PWM控制电机。
PWM,中文名字叫脉宽调制。通过改变占空比来改变电机的转速。当占空比较大的时候,电机转的快。
实际上,我是这样理解PWM控制电机转速的。在电机两端加上电压差,就会让电机转动,一个周期内的占空比越大,对应的等效电压越大。电压差越大,电机转的越快。所以通过改变占空比就可以调整电机的转速。
而增强型51单片机即IAP15W4K32S4,有独立的pwm模块,但是我用的是PCA模块。
PCA模块,可编程计数逻辑器件,可用于软件定时器、外部脉冲的捕捉、高速脉冲输出以及脉宽调制输出。可以理解为一个定时器。它可以有进行16bit的计数,正向计数。我采用的是高速脉冲输出。实际上就是stc的官方例程。PCA产生3路PWM。
在控制电机部分,我采用了两路PWM控制两个电机,也就是说一路PWM控制一路电机(真废话!)电机驱动是L298N,只要输入一端高,一端低,就可以使电机转动。
我将控制一个电机转动的两端一端输入PWM,另一端输入高电平或者低电平。当输入低电平的时候,另一端输入PWM,电机正转,转速与PWM的占空比成正比。当输入高电平的时候,另一端输入PWM,电机反转,转速和PWM的占空比成反比,这个逻辑有一点乱,因为通过电压差来控制电机的转速,当一端输入高电平的时候,另一端输入PWM,此时PWM的低电平有效,可以使电机转动。当低电平的时间越长,即占空比越小,电机翻转越快。
在串口部分,使用9600波特率。对于串口的配置,很普通,也是根据例程来改编的。
而对于蓝牙模块的配置,之前就有遇到了一点困难。比如进不去调试模式。经过上网查资料终于知道,先将蓝牙断点,然后按住模块上的按钮,在上电,就进入蓝牙的调试模式。这样在串口调试助手中输入对应的指令就可以进行配置蓝牙模块了。配置好之后,再断电,不用按住按钮,上电。进入蓝牙通信模式。(PS:蓝牙模块是HC-05)
最后部分,就是主函数了,通过蓝牙模块接收数据,再在主函数中进行模式判断,并进行相应的处理。比如加速,减速,左转,右转等。
剩下的部分就是调试了。
我觉得还是把代码给发上吧。这个代码还存在一些小问题。比如占空比是从50% 开始的。原因是我给L298N电机驱动的电压都是5V,这有问题,导致需要输入很大的占空比才能使电机转动。还有一个问题就是当小车左转或者右转的时候,空转时,明显能看出来左右轮子的转速不同,放到地上跑的时候,就跑直线了。不知道是什么原因。如果某位大神有时间或者有兴趣,一起来找到这个问题的解决方案吧。由于是实验,老师把小车收上去了,准备“循环利用”。
于 2016-11-20