微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于安芯一号SLH89F5162的蓝牙控制小车

基于安芯一号SLH89F5162的蓝牙控制小车

时间:02-14 来源:电子发烧友网 点击:

  一、设计设计背景及概述

  1.1 设计背景

  基于红外或射频的遥控车技术已经相当成熟,但蓝牙遥控车这一领域尚属新鲜,这款增强51核的"三防"8位单片机,以其高性能及易于开发让我很是欣喜,再加上能够磨练自己的嵌入式编程的能力,锻炼和队友共同完成项目的团队合作能力,我们便自然而然地产生了亲手制作一款蓝牙遥控车的想法。

  1.2 设计概述

  主控芯片为深联华SLH89F5162,开发环境为Keil 4;测距方式为超声波回声测距,使用模块HC-SR04完成;通讯方式为蓝牙2.0,车体使用HC-05蓝牙串口模块,PC使用自带蓝牙适配器;总电源使用2节3500mAh/3.7V的UltraFire锂离子充电电池串联供电;MCU电源则由LM7805稳压芯片对7.4V总电源进行处理后供给;车体驱动电机使用2个减速比为1:48的6~9V直流有刷电机,驱动使用TOSHIBA-ULN2003APG芯片;测温模块使用单总线架构的DALLAS/18B20芯片;上位机操作系统为Windows 7,界面采用MFC编写,IDE为VC6。

  二、项目设计原理

  2.1原理概述

  上位机程序使用蓝牙与车体进行通信,发送指令,车体接收到指令后执行相应的操作。本设计中,小车可以实现直行、转弯、加速和减速等四个动作,同时会采集所在区域的温度信息返回上位机,配合以车体上的超声波模块,可对小车正前方进行测距,如发现距离过近,则会自动停止,并向上位机请求转弯指令。上位机软件在发送指令的同时,还接收小车返回的移动信息,在软件绘图区域绘制小车行走的轨迹,并显示温度等信息。

  2.2硬件设计原理

  红色为电源线,黑色为地线,蓝色为MCU与外部设备的连接线。主要需要进一步说明的模块有DC/DC的7805芯片、测温模块18B20、驱动芯片ULN2003APG、超声波模块HC-SR04及蓝牙串口模块HC-05。

  2.3 各模块介绍

  2.3.1 稳压模块LM7805

  78XX系列的后两位即是其可固定产生的7805 系列为 3 端正稳压电路,TO-220 封装,能提供固定的输出电压5V,应用范围广。内含过流、过热和过载保护电路。带散热片时,输出电流可达 1A。虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。电压。

  输入端IN为2节3.7V锂离子电池串联产生的7~8V的输入电压,输出端OUT接C1电解电容滤波稳压,并接绿色LED1和限流电阻R1显示供电状态。

  VCC端正接二极管D0防反接,同时并接C0电解电容稳压滤波。

  2.3.2 测温模块DS18B20

  DS18B20 数字温度计提供9 位温度读数,指示器件的温度信息经过单线接口送入DS18B20 或从DS18B20 送出。因此从中央处理器到DS18B20 仅需连接一条线(和地)读写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。DALLAS公司的18B20产品有多种封装,本设计采用的是上图左侧的TO-92封装。

  由于DS18B20只有3条线,数据线选择了没有特殊功能的P4.1引脚。18B20采用了独特的单总线通信架构,所以其对于时序的要求非常高,下面主要讲一讲18B20的复位、写入一位和读取一位,写字节及读字节只是写一位及读一位的重复,本文就不再赘述。

  2.3.2.1 复位时序

  复位需要MCU将总线拉低,保持至少480 us后,再将总线拉高15~60 us,随后等待最长240 us,检测总线上18B20是否将总线拉低(存在)。复位是18B20最重要的操作,每次通信之前必须进行复位。

  2.3.2.2 写一位时序

  在写数据时间隙的前 15 us总线需要是被MCU拉置低电平,而后则将是18B20对总线数据的采样时间,采样时间在 15~60 us,采样时间内如果MCU将总线拉高则表示写"1",如果MCU将总线拉低则表示写"0"。每一位的发送都应该有一个至少 15 us 的低电平起始位,随后的数据"0"或"1"应该在45 us 内完成。整个位的发送时间应该保持在 60~120 us,否则不能保证通信的正常。

  2.3.2.3 读一位时序

  读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由MCU产生至少1 us的低电平,表示读时间的起始。随后在总线被释放后的15 us 中 18B20 会发送内部数据位,这时MCU如果发现总线为高电平表示读出"1",如果总线为低电平则表示读出数据"0"。每一位的读取之前都由控制器加一个起始信号。

  注意:如图8所示,必须在读间隙开始的 15 us 内读取数据位才可以保证通信的正确。

  2.3.2.4 字节读写说明

  从图9代码中的左右移可以看出,18B20在通信时,以 8 位"0"或"1"为一个字节,字节的读或写是从高位开始的,即 Bit7到 Bit0 图9 DS18B20 读写字节C代码实现。

  2.3.3 电机驱动模块ULN2003APG

ULN2003

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top