重复字数2
下面是小编为大家整理的重复字数2,供大家参考。
1
L297 驱动模块,L297 驱动模块是由意大利 SGS 半导体公司生产的,作为一个电机专用控制器,它能产生 4 相控制信号,可用于计算机控制的两相双极和四相单相步进电机,能够用单四拍、双四拍、四相八拍方式控制步进电机。芯片内的PWM 斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。该集成电路采用了 SGS 公司的模拟/数字兼容的 I2L 技术,使用 5V 的电源电压,全部信号的连接都与 TFL/CMOS 或集电极开路的晶体管兼容。L297 的芯片引脚特别紧凑,采用双列直插 20 脚塑封封装。
变换器是一个重要组成部分。变换器由一个三倍计算器加某些组合逻辑电路组成,产生一个基本的八格雷码(顺序如图3所示)。由变换器产生4个输出信号送给后面的输出逻辑部分,输出逻辑提供禁止和斩波器功能所需的相序。为了获得电动机良好的速度和转矩特性,相序信号是通过2个 PWM 斩波器控制电动波器包含有一个比较器、一个触发器和一个外部检测电阻,如图4所示,晶片内部的通用振荡器提供斩波频率脉冲。每个斩波器的触发器由振荡器的脉冲调节,当负载电流提高时检测电阻上的电压相对提高,当电压达到 Uref 时(Uref 是根据峰值负载电流而定的),将触发器重置,切断输出,直至第二个振荡脉冲到来、此线路的输出(即触发器 Q 输出)是一恒定速率的 PWM 信号,L297的 CONTROL 端的输入决定斩波器对相位线 A,B,C,D 或抑制线 INH1和 INH2起作用。CONTROL 为高电平时,对 A,B,C,D 有抑制作用;为低电平时,则对抑制线 INH1和 INH2有抑制作用,从而可对电动机和转矩进行控制。
本程序是基于 Android 4.2.2 系统,所用开发工具为 Eclipse 集成开发环境,Eclipse 是著名的跨平台的自由集成开发环境(IDE)。最初主要用来 Java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 C++、Python 和 Android的开发工具,在此开发环境下开发软件非常的方便。首先设计本系统手机端软件的程序界面,为了尽快实现程序的功能,本程序没有对软件界面设计做特别美化的设计,仅包含我们所用到的几个按钮和图形显示,以实现我们的功能为最大目标。
下面介绍 Android 相关资源文件的作用:
1、assets 文件夹:此文件夹也可以存放资源文件,而且/assets 目录下的资源文件不会在 R.java 自动生成 ID,所以读取/assets 目录下的文件必须指定文件的路径(url 的路径为:)。除此之外,我们还可以通过 AssetManager 类来访问这些文
2
件。打开文件时,会把 apk 文件当做 zip 文件进行解压读取。但是有文件大小有限制:不能超过1M(android2.2好像放宽(或者取消)了这个限制(至少可以存放>10M,具体没有测试。))。
2、res 文件夹:主要用来存放资源。此文件夹下可以创建子文件,常见的有:动画 anim,图片 drawable,颜色 color,菜单 menu, 布局 layout,常量值 values,详细如下:
(1)anim 文件夹:后缀名为.xml。动画文件都放在这里。
(2)drawable 文件夹: 用于存放图片资源,图片或者 xml。图片格式,有 png,9.png,jpg,gif 都行。xml 文件通常为自定义的形状 shape 或图片选择器类 selector似的东西,就是不同状态下不同的图片,用于设置 background 的。
对分辨率笼统的分,可以分为高中低三种分辨率。
(3)color 文件夹:用于存放 color 列表,和 drawable 的 xml 一样,表示不同状态下的不同颜色 (4)menu 文件夹:菜单资源文件夹。
(5)
layout 文件夹:布局文件夹。
(6)
values 文件夹:存放常量值的文件夹。里面常见的 xml 文件为:
arrays.xml :
资源数组;colors.xml :
颜色值;dimens.xml :
像素值; strings.xml :字符串值;tyles.xml :
样式值。此文件夹,也有屏幕适配作用。比如:dimens在不同分辨率下的值。同样的是加-1280x720这样的后缀。对于strings,有各种语言的版本对应。默认为英文。中文的文件夹名字应该是:values-zh-rCN,values-zh-rTW。
(7)
raw 文件夹:存放不需要系统编译成二进制的文件,例如字体文件等同assets 文件夹类似。
(8)
xml 文件夹存放 xml 文件。
以下是手机端实现功能的程序流程图如图 5.2 所示。
3
在设置手机界面的时候,在 Eclipse 集成开发环境下,首先新建一个 android项目工程,兴建路径是 File—New—android project—project name
选择 android 1.6 版本,工程名命名为 Bluetooth-car,选择 Create Activity,则自动创建了一个Activity.在创建 Activity 时,需要注意一下四个要点:
1、一个 Activity 就是一个类,并且这个类要继承 Activity。
2、需要复写 Oncreate 方法(当一个 Activity 第一次运行显示在手机上或者虚拟机上的时就会调用 Oncreate 方法)。
3、每一个 Activity 都需要在 Androidmanifast.xml 文件当中配置。
4、为 Activity 添加必要的控件。如图 5.3 所示,在制作蓝牙小车手机界面的时候,我用到了 Textview 文本控件和 Butten 按钮控件,并且在添加控件时采用相对布局形式。
在 Eclipes 开发平台上,首先在 Layout 文件中采用相对布局的形式设计完成手机界面以后,就要考虑为我们的每个 Butten 按键绑定监听程序,以实现在每个按键按下时,就能通过手机蓝牙发送相应的数据到小车蓝牙接收模块。首先在 Layout文 件 中 , 每 添 加 一 个 控 件 , 都 会 为 这 个 控 件 设 置 一 个 ID ,( 如android:id="@+id/button1"),然后在 R.JAVA 文件就会自动生成一个 ID 地址。然后在主程序里面编写监听程序,当按键按下的时候,通过监听按键的 ID 地址的不同,采用 switch 结构,跳转到不同的 case 里,向小车蓝牙模块发送不同的数据。在程序里直接写进小车蓝牙模块的蓝牙地址(00:22:10:01:01:5E),当程序开始运行时,将会自动搜索该地址的蓝牙芯片,当进行过一次配对连接以后,将会记忆该地址,以后每次只要打开手机界面,开始运行时就会自动进行搜索配对连接好。
本章主要介绍本系统的软件设计,其中就包括单片机端的 C 语言程序设计和Android手机端的JAVA程序设计。由于我们在本科阶段都只接触过C语言,对JAVA语言从未涉及过,所以在做起来的时候遇到了很多的困难。首先对 JAVA 语言的开发环境 Eclipes 的使用不熟悉,对新接触语言的语法不熟悉。后来通过查找资料和对一些做好的工程例子的学习以后,有了对 JAVA 语言的大致的了解,就开始先学习着做简单的手机界面的程序。然后通过网上找到一些相关的程序进行修改以及在指导老师的指导和修改下,完成了手机端的软件设计。
根据电路原理图、实物 图把电路板实物做出来后,下一步就是电路板调试。电路板调试是最关键的一步,前面所做的电路设计的成功与否就是在调试步骤里体现的。本系统的调试主要分为硬件调试、软件调试和系统整体调试等三大部分。
经过初步对定时器的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小
4
问题而影响整体电路的检查,从而可以节约大量的调试时间。例如当单片机控制模块硬件部分制作好后,就可以先调试电机转动程序,通过电机驱动控制电机转动了,则结果正确了,说明电机驱动电路与单片机的连接电路是正确的,单片机能正常工作。软件编程中,首先完成单元功能模块的调试,然后进行系统的调试,调试的整体思想和步骤和硬件大同小异。系统的整体调试是最重要的一部分,虽然软硬件调试都通过了,但是通过蓝牙传输数据过程中可能会出现新的问题。
6.2.3 驱动模块的调试 驱动模块为驱动电机的芯片,L298 需要从外部接两个电压,一个是给电机的,另一个给 L298 芯片的。首先检查驱动芯片与单片机的各个连线是否都正确以后,给芯片通上电源,单片机指示灯点亮以后。运行单片机上的程序,通过单片机 P2口的数据变化来控制 L298 的 IN1、IN2、IN3、IN4 的电平的高低。L298 输入端的高低电平的变化,通过输入端的 LED 灯的亮灭来显示。当运行前进程序的时候,IN1、IN2、IN3、IN4 的值为 1、0、1、0,分别点亮 LED1 和 LED3,左右电机都正转,实现小车前进;运行左转程序的时候,IN1、IN2、IN3、IN4 分别为 1、0、0、1,分别点亮 LED1、LED4,左电机正转,右电机反转,实现小车左转;运行右转程序的时候,IN1、IN2、IN3、IN4 的值为 0、1、1、0,点亮 LED2,LED3,左电机反转,右电机正转,实现小车右转;运行后退程序的时候,IN1、IN2、IN3、IN4 的值分别为 0、1、0、1,分别点亮 LED2、LED4,左右电机都反转,实现小车后退。通过调试电机驱动模块能实现基本的功能。
3 6.3 软件调试
6.3.1
C 语言的调试 软件的调试包括程序本身语法的调试和在电路板上功能的调试两种。在编程过程中,为了得到满足要求的用户程序,一般都需要有一个对程序的调试过程,甚至需要经过多次反复的调试才能完成。在调试程序前为了调试方便,避免程序出错时将单片机拆来拆去的麻烦,在电路板上做了一个下载口,可以将下载线直接插到电路板上进行调试,这样就可以一边进行调试,一边修改程序。程序用 Keil C 软件写好后,先用该软件的编译功能编译一下所写的程序,检查程序是有语法错误或其他的错误。如果有错误则根据提示进行分析将错误改过来直至编译成功为止。当完成了语法调试后,再根据定时开关插座设计的功能要求修改程序完成系统的各个功能。在编写程序的时候一定要根据系统实现的功能和连接方式,认真分析,画出系统主程序、时钟程序、设置程序的流程图,并根据画出的流程图一步一步的去写出程序。
根据系统的特点,软件系统应该按模块进行调试,当各个模块调试通过后再将各个模块整合起来,进行综合调试,直到得到预期结果。
5
与纯粹的 C 语言编程不同的是,单片机编程要考虑到硬件的设计,所有程序的编写都是根据硬件资源进行。
6.3.2
JAVA 语言的调试 将做好的工程添加进入 Eclipes 开发环境中,检查各个文件夹下面的程序有没有出现打红色 X 的问题以及警告,点开下方的 problem 的文件,检查该工程有没有出现问题,当排除了所有的问题以后。配置一个 4.2.2 版本的模拟器,然后启动模拟器,在模拟器上运行该工程,在模拟器上将会出现已经做好的手机界面,运行完成,调试成功。然后将手机连接到电脑上,打开安卓手机的 USB 接口。接下来点击运行整个工程项目,在手机上出现前面那个做好的蓝牙小车控制界面。点击各个按钮,都无问题,证明该 JAVA 程序没有问题。
4 6.4 系统整体调试
蓝牙控制小车的硬件模块和软件模块分别调试通过后,接下来就可以进行系统的整体测试。首先检查各个模块之间,以及电机驱动与电机的连接都没有出错的情况下,打开给各个模块提供的 5V 电源以及打开给电机提供的另一个 6V 电源。此时最小系统模块指示灯点亮,表示单片机供电正常,蓝牙模块指示灯开始闪烁,表示蓝牙模块也供电正常。此时打开安卓手机的蓝牙,搜索该蓝牙芯片,进行配对。然后打开我们做好的手机界面,当界面打开之后,开始自动搜索蓝牙芯片的地址进行连接,当蓝牙芯片的指示灯有闪烁转变为常亮以后,表示蓝牙配对连接成功。在刚开始的时候调试的时候遇到了一些问题,在电机驱动方面,当在手机端的界面上点击前进、后退、左转、右转按钮的时候,蓝牙模块能接受手机端发送的字符 A、B、C、D 的 ASCII 码值,并且能够通过串口相应的传递给单片机,单片机通过分析串口传过来的数据,改变 P2 口的值分别为 65、66、67、68,来控制电机驱动的输入端 IN1、IN2、IN3、IN4。相应的电机驱动端的四个指示 LED 灯都能根据数据的变化采取不同的量灭组合情况,来相应控制小车的前进、后退、左转、右转。
在调试的过程中也遇到一些问题,就是最开始电机驱动输出端控制的电机却不会转动。通过分析,可能有两个原因导致电机不会转动,其一,电机驱动的输出端的接线出现了错误,导致电机转动出现问题;其二,电机驱动端接的给电机供电的电压达不到驱动电机的最低电压,最后通过查询资料和用万用表测驱动模块的输出端的各个引脚的高低电平,发现输出端的电平也能随输入端的改变而变化,当最后测试 VCC 和 GND 两端,发现无明显的压降,再用万用表的测电阻值测两端的阻值,发现问题是电机驱动模块输出端的供电端 VCC 与 GND 端短路,导致外接电源不能给电机供电。最后我通过直接从芯片的引脚接线到电源端,则
6
电机能够正常转动。
上一篇:重复字数,(35)
下一篇:重复字数,(16)【优秀范文】