arduino称重电子秤教材Word文件下载.docx
《arduino称重电子秤教材Word文件下载.docx》由会员分享,可在线阅读,更多相关《arduino称重电子秤教材Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
状态指示灯会呈绿色,当电池充电完成,绿色指示灯熄灭。
电池管理:
该锂电池在使用时不要把电能全部用光才充电,要保留一点点电量。
如果电池充足电后放置很长一段时间,电池性能会降低。
当不使用时,必须把电池与电路板或充电器断开,把电池存储在阴凉,干燥的环境中。
充电时间。
给电池充分充电需要大约40分钟。
这个时间与充电前电池里原有电量有关。
充电时要注意照看,当电池异常的发烫时应立即停止充电。
过度充电可导致电池损坏。
电池处理:
不要拆开或修改电池的连接或更改导线。
不要让物体进入电池的连接头,也不要让导体裸露在外。
不要在高温和极端的环境下使用。
把电池存储在阴凉,干燥的环境中。
在运输或存储时,让电池远离其他导体。
当电池的导线变破旧或磨损时,请更换这个电池。
紧急处理:
如果电池造破坏导致电解材料溅到皮肤上,立即用大量水冲洗皮肤。
如果电解材料溅到眼睛里面,请尽快就医。
电池里的电解材料是有毒物质,能对人和家庭环境、家具等造成污染和危害。
如果电池不能再被充电,请按照垃圾的处理方法或本国家的规则妥善处理。
不要通过焚烧来处理报废的电池。
一、系统概述
1.1arduino介绍
要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。
1、什么是单片机?
它与个人计算机有什么不同?
一台能够工作的计算机要有这样几个部份构成:
中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。
在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。
而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。
2、单片机有什么用?
实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?
应用的关键是看是否够用,是否有很好的性能价格比。
如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。
单片机通常用于工业生产的控制、生活中与程序和控制有关(如:
电子琴、冰箱、智能空调等)的场合。
下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。
3、什么是Arduino?
Arduino是一个能够用来感应和控制现实物理世界的一套工具。
它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。
Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。
Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:
Flash,Processing,MaxMSP)进行通讯。
Arduino板你可以选择自己去手动组装或是购买已经组装好的;
Arduino开源的IDE可以免费下载得到。
Arduino的编程语言就像似在对一个类似于物理的计算平台进行相应的连线,它基于处理多媒体的编程环境。
4、为什么要使用Arduino?
有很多的单片机和单片机平台都适合用做交互式系统的设计。
例如:
ParallaxBasicStamp,Netmedia’sBX-24,Phidgets,MIT’sHandyboard和其它等等提供类似功能的。
所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。
Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:
∙便宜-和其它平台相比,Arduino板算是相当便宜了。
最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。
∙跨平台-ArduinoIDE可以运行在Windows,MacintoshOSX,和Linux操作系统。
大部分其它的单片机编译软件都只能运行在Windows上。
∙简易的编程环境-初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。
对于老师们来说,一般都能很方便的使用Processing编程环境,所以如果学生学习过使用Processing编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。
∙软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。
Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVRC编程语言(因为Arduino语言实际上是基于AVRC的)。
类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C代码。
∙硬件开源并可扩展-Arduino板基于Atmel的ATMEGA8和ATMEGA168/328单片机。
Arduino基于CreativeCommons许可协议,所以有经验的电路设计师能够根据需求设计自己的模块,可以对其扩展或改进。
甚至是对于一些相对没有什么经验的用户,也可以通过制作试验板来理解Arduino是怎么工作的,省钱又省事。
Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。
大大降低了软件开发难度,适宜非专业爱好者使用。
优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。
性能:
DigitalI/O数字输入/输出端口0—13。
AnalogI/O模拟输入/输出端口0-5。
支持ICSP下载,支持TX/RX。
输入电压:
USB接口供电或者5V-12V外部电源供电。
输出电压:
支持3.3V级5VDC输出。
处理器:
使用AtmelAtmega168328处理器,因其支持者众多,已有公司开发出来32位的MCU平台支持arduino。
arduino板子上基本端口如描述,对几个比较特殊的端口下面详细说明下:
VIN端口:
VIN是inputvoltage的缩写,表示有外部电源时的输入端口。
如果不使用USB供电时,外接电源可以通过此引脚提供电压。
(如电池供电,电池正极接VIN端口,负极接GND端口)
AREF:
Referencevoltagefortheanaloginputs(模拟输入的基准电压)。
使用analogReference()命令调用。
ICSP:
也有称为ISP(InSystemProgrammer),就是一种线上即时烧录,目前比较新的芯片都支持这种烧录模式,包括大家常听说的8051系列的芯片,也都慢慢采用这种简便的烧录方式。
我们都知道传统的烧录方式,都是将被烧录的芯片,从线路板上拔起,有的焊死在线路板上的芯片,还得先把芯片焊接下来才能烧录。
为了解决这种问题,发明了ICSP线上即时烧录方式。
只需要准备一条R232线(连接烧录器),以及一条连接烧录器与烧录芯片针脚的连接线就可以。
电源的+5V,GND,两条负责传输烧录信息的针脚,再加上一个烧录电压针脚,这样就可以烧录了。
1.2Arduino驱动安装
首先在电脑上面打开光盘,找到Arduino项目开发文件夹,拷贝到你的电脑上你想放到的盘符上,例如D盘(建议不要放到桌面上),然后打开,可以看到如下:
光盘中所带arduinoIDE为1.0.3版本,是目前最新版本,IDE就是arduino的软件程序开发环境,里面已经集成了项目中所需要的很多外设库,还有一些其他设置,比如添加中文注释,为用户省去了很多麻烦。
IDE中所带库文件均经过调试,和光盘代码完全匹配。
arduino资料相关文件夹中是一些入门资料以及我们提供的arduino电路板原理图。
(注:
光盘中所带软件仅支持Windows系统。
其他系统请去官网下载。
)
Arduino控制板到手后,首先需要在电脑上把驱动装上,这样才可以进行各种实验。
首先打开包装,找到蓝色USB数据线,一端连接ARDUINO控制板另一端连接电脑USB端口。
本文以win732位为例,会出现识别到新硬件显示。
然后会开始查找系统内驱动。
如果没有找到驱动,会显示这个画面。
这时,需要在开始菜单,“计算机”上面点右键,点“属性”。
然后点击设备管理
会看到打了感叹号的未识别硬件
在未识别硬件上点右键,点击“属性”,选择更新驱动程序软件。
选择浏览计算机以查找驱动程序软件
然后目录选择你的arduino1.0所在目录的drivers目录
注意,如果您的计算机提示无法找到驱动,需要将目录进一步定位到\drivers\FTDIUSBDrivers即可
点击下一步,就可以安装好驱动了。
安装好驱动后,就可以显示是COM几端口,我这里显示的是COM14端口。
1.3ArduinoIDE菜单介绍
接着我们介绍下Arduino的IDE界面,首先进入软件目录。
然后就可以看到arduino.exe文件,双击打开IDE,可以生成桌面快捷方式,方便以后使用。
首先映入眼帘的是下图的界面,工具栏按钮功能依次为“编译”--“上传”--“新建程序”--“打开程序”--“保存程序”--“串口监视器”
菜单栏上,首先看File菜单~介绍如下:
接下来看Edit菜单~介绍如下:
Sketch菜单介绍
Tools菜单介绍
Arduino也支持中文界面,如果英文界面看着不爽的话,,只要打开File-preferences,如下图中选择简体中文,点击OK,关闭后重新打开软件即可。
在正常使用之前我们还需要对arduino软件做如下设置:
1)打开ArduinoIDE,选择文件-参数设置,按如下设置。
2)选择工具-板卡,点选如图所示。
因为我们用的是328的芯片,如果为其他型号相应选择即可。
串口就选择电脑-设备管理器里面显示的串口号即可。
至此ArduinoIDE的设置基本完成。
可以编写编译代码进行开发了。
二、实验操作
2.1舵机实验
2.1.1舵机介绍
我们都知道,机器人有许多个关节,每一个关节我们称为一个自由度。
一般的机体,都有十几个自由度,这样才能够保证动作的灵活性。
在机器人机体上,我们通常使用舵机作为每一个关节的连接部分。
它可以完成每个关节的定位和运动。
舵机的控制信号相对简单,控制精度高,反应速度快,而且比伺服电机省电。
这些优点是非常突出的。
在下面的论述中,许多地方都会涉及到舵机相关的知识,读者应反复详细阅读。
舵机(英文叫Servo):
它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。
通过发送信号,指定输出轴旋转角度。
舵机一般而言都有最大旋转角度(比如180度。
)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。
普通直流电机无法反馈转动的角度信息,而舵机可以。
用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。
2.1.2舵机的内部结构
舵机的外观入下图所示:
图2-1
下图是一个普通模拟舵机的分解图,其组成部分主要有齿轮组、电机、电位器、电机控制板、壳体这几大部分。
图2-2
电机控制板主要是用来驱动电机和接受电位器反馈回来的信息。
电机嘛,动力的来源了,这个不用太多解释。
电位器这里的作用主要是通过其旋转后产生的电阻的变化,把信号发送回电机控制板,使其判断输出轴角度是否输出正确。
齿轮组的作用主要是力量的放大,使小功率电机产生大扭矩。
图2-3
舵机底壳拆开后就可以看到,主要是电机与控制板
图2-4
控制板拿起来后下方是与控制板连接的电位器
图2-5
顶部来看电机与电位器,与电机齿轮直接相连的为第一级放大齿轮。
图2-6
经过一级齿轮放大后,再经过二、三、四级放大齿轮,最后再通过输出轴输出。
图2-7
通过上面两图可以很清晰的看到,本舵机是4级齿轮放大机构,就是通过这么一层层的把小的力量放大,使得这么一个小小的电机能有15KG的扭力。
2.1.3舵机的控制协议
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。
脉冲的参数有最小值,最大值,和频率。
一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。
这个基准信号定义的位置为中间位置。
舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。
最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。
如下图:
图2-8
角度是由来自控制线的持续的脉冲所产生。
这种控制方法叫做脉冲调制。
脉冲的长短决定舵机转动多大角度。
1.5毫秒脉冲会到转动到中间位置(对于180°
舵机来说,就是90°
位置)。
当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。
除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。
当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。
接收到的脉冲大于1.5ms情况相反。
不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。
一般而言,最小脉冲为1ms,最大脉冲为2ms。
图2-9
虽然舵机看起来很复杂,但是arduinoIDE已经集成了舵机控制库,我们只需要在程序开头调用库Servo.h就可以了,省去了繁琐的信号控制,时序等问题,只要给舵机配置好端口,初始位置,然后给出目标角度,舵机就会转过去了。
2.1.4舵机实验操作
Arduino有舵机应用库<
Servo.h>
,把180在第6接口,接线图如下。
舵机
接线图:
Arduino有舵机应用库<
,把180度舵机接在第6接口,舵机控制程序如下。
例程1:
#include<
//舵机的函数库
Servomyservo;
//定义舵机变量
intpos=80;
//舵机初始化80度
voidsetup()
{
myservo.attach(6);
//初始化使用第6个引脚
myservo.write(pos);
//先让舵机回归80°
中心点
}
voidloop()
//下角度指令给舵机
for(;
pos<
90;
pos++)
{
//下角度指令给舵机,170度
delay(10);
//等待10ms
}
pos--)
//下角度指令给舵机,80度
}
烧录例程,舵机初始位置为80度,舵机旋转到180度,再旋转到80度。
知识点:
<
描述
将指定的引脚控制脉冲控制舵机。
语法
attach(接口)——设定舵机的接口。
write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°
到180°
。
read()——用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。
attached()——判断舵机参数是否已发送到舵机所在接口。
detach()——使舵机与其接口分离,该接口(9或10)可继续被用作PWM接口。
writeMicroseconds(uS)——写一个值在微秒(uS)到伺服舵机,控制相应的轴。
在一个标准的伺服系统,这将为角度的轴。
在标准的伺服系统参数值1000完全是逆时针方向的,2000是完全顺时针,1500是在中间。
注:
以上语句的书写格式均为“舵机变量名.具体语句()”例如:
myservo.attach(9)
逻辑:
舵机初始位置为80度,舵机逆时针旋转1度,循环70次,舵机旋转到170度。
舵机顺时针旋转1度,循环70次,舵机旋转到80度。
实验现象:
下载例程1,舵机初始位置为80度,舵机旋转到180度,再旋转到80度。
2.21602Keypadshield
2.2.11602Keypadshield
ArduinoLCD1602字符液晶扩展板,主板采用2行16个字符液晶,不仅具有对比度调节旋钮、背光灯选择开关,还具4个方向按键、1个选择按键和一个复位按键;
这款1602液晶扩展板真正意义上的将电路简化,直接将此板插ArduinoDuemilanove控制器上即可.
规格参数
1.模块尺寸:
20.5mm×
41mm
2.模块重量:
57g
1602字符型LCD简介
1602LCD主要技术参数:
1.显示容量:
16×
2个字符
2.芯片工作电压:
4.5—5.5V
3.工作电流:
2.0mA(5.0V)
4.模块最佳工作电压:
5.0V
5.字符尺寸:
2.95×
4.35(W×
H)mm
引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明
如下表所示:
1VSS电源地9D2数据
2VDD电源正极10D3数据
3VL液晶显示偏压11D4数据
4RS数据/命令选择12D5数据
5R/W读/写选择13D6数据
6E使能信号14D7数据
7D0数据15BLA背光源正极
8D1数据16BLK背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度
最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS
和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时
可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
1602LCD的指令说明:
1602液晶模块内部的控制器共有11条控制指令,如表下表所示:
序号指令RSR/WD7D6D5D4D3D2D1D0
1清屏0000000001
2光标返回000000001*
3置输入模式00000001I/DS
4显示开/关控制0000001DCB
5光标或字符移位000001S/CR/L**
6置功能00001DLNF**
7置字符发生存贮器地址0001字符发生存贮器地址
8置数据存贮器地址001显示数据存贮器地址
9读忙标志或地址01BF计数器地址
10写数到CGRAM或DDRAM)10要写的数据内容
11从CGRAM或DDRAM读数11读出的数据内容
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电
平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控
制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电
平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示
5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接
收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
与HD44780相兼容的芯片时序表如下:
读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字
写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无
读数据输入RS=H,R/W=H,E=H输出D0—D7=数据
写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无
1602LCD的一般初始化(复位)过程:
延时15mS
写指令38H(不检测忙信号)
延时5mS
以后每次写指令、读/写数据操作均需要检测忙信号
写指令38H:
显示模式设置
写