1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C51(蓝牙 红外)智能遥控小车

C51(蓝牙 红外)智能遥控小车

时间:2021-10-17 04:09:25

相关推荐

C51(蓝牙 红外)智能遥控小车

目录

1模块准备

2实现功能

1模块准备

三轮小车底盘

l298n电机驱动模块

51最小系统开发板

ds1302时钟模块

蓝牙串口模块hc-06

18650电池盒和电池组三节,12v左右

ds18b20温度传感器

红外接收头与遥控

lcd1602显示屏

ttl电机2只

2实现功能

小车由蓝牙模块和红外遥控控制运行轨迹,通过pwm功能调整小车的速度,同时lcd1602实时显示当前日期和时间和当前环境温度。

3模块功能详解

蓝牙模块:使用串口中断,中断号4,单片机接收到相应的指令后使小车执行相应功能。

红外遥控:使用外部中断,下降沿触发,首先得看懂红外接NEC收协议如下。

红外遥控器采用了NEC编码规则:

NEC 载波频率为 38Khz

引导码:9ms 高电平 + 4.5ms 低电平

0码 :0.56 ms 高电平 + 0.56 ms 低电平

1 码 : 0.56ms 高电平 + 1.68 ms 低电平

结束码 :0.56ms 高电平

数据帧格式:引导码 +识别码 + 识别码反码 + 键值 + 键值反码 + 结束码

重复帧格式:9ms 高电平 + 2.25ms低电平 + 结束位 + 结束码,总共110ms左右

整个完整数据格式:引导码 + 识别码 + 识别码反码 + 键值 + 键值反码 + 结束码+一段空闲时间+9ms 高电平 + 2.25ms低电平 + 结束位 + 结束码+重复码循环~~~

高位在前,即首先收到的是高位的数据

将接收到的数据码传给单片机执行相应的功能。

ds18b20温度传感器:首先先搞定传感器初始化后再进行写命令和读数据这些。

初始化步骤:先拉低io口480~960us,再把io拉高,判断io口在15~60us间是否变为低电平,如是则初始化成功,注意当超过一定时间后记得退出判断,否则会进入死循环。最后可以通过返回的i值知道是否初始化成功。(其他地方说读取到低电平后还要做延时处理,自己实测可以不加延时)

pwm控制车速(l298n):利用51的定时器在l298n输出pwm信号来控制小车的速度,pwm控制车速的原理是通过改变输出电机端口的电压,从而改变车轮的转速,那怎么改变电压值呢?毋庸置疑只能通过定时器,设置定时器在一个周期(100ms)中30ms让电机的端口输出高电平,剩下的70ms输出低电平,这样一来pwm的占空比就是0.3,假设你的电池组是6v的,这时电机的有效电压就是1.8v,这样就可以通过改变占空比来控制车速啦。

这个是对定时器的初始化,一开始我设的是650us后发生中断,pwm和pwm1分别是两个电机的pwm口。

当650us到达后就会进入中断,在中断里面判断当前pwm端口为1还是0,一开始设为0后进中断后就会执行else里的程序,重新给定时器设置计数时间350us,并把pwm端口置1,当350us到达后又会进入中断执行if里的语句,就这样一直重复。这样pwm的周期就为1000us,其中有效时间为350us,即占空比为350/1000=0.35。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。