一,设计任务要求
1.1 基本要求
①采用 Proteus 软件进行模拟放大电路LM358仿真 ②采用LM35采集温度信号,再通过LCD1602显示温度数值。
1.2 设计要求
①根据设计任务设计实现方案,经比较从中优选确定一种实现方案 ②说明所选电路的组成及工作原理,并绘出原理框图 ③设计各单元电路,计算元器件参数并选择元器件类别型号 ④画出实际电路图,并用 Proteus 软件进行电路仿真 ⑤组装并调试方案电路,记录调试步骤及结果 ⑥设计单片机程序,完成数据采集、处理和显示 1.3主要模块及传感器
二,模块介绍及搭建
2.1 LM358放大电路构建
2.1.1 LM358电路搭建
DIP塑封引脚图引脚功能
放大器内部电路原理图 LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与 电源电压无关。[]它的使用范围包括传感放大器、直流增益模组,音频放大器、工业控制、DC增益部件和其他所有可用单电源供电的使用运算放大器的场合。 LM358的封装形式有塑封8引线双列直插式和贴片式。 LM358特性: *直流电压增益高(约100dB) *单位增益频带宽(约1MHz) *电源电压范围宽:单电源(3—30V);双电源(±1.5一±15V) *低功耗电流,适合于电池供电 *低输入偏流 *低输入失调电压和失调电流 *共模输入电压范围宽,包括接地 *差模输入电压范围宽,等于电源电压范围 *输出电压摆幅大(0至Vcc-1.5V)
LM358参数
输入偏置电流45 nA 输入失调电流50 nA 输入失调电压2.9mV 输入共模电压最大值VCC~1.5 V 共模抑制比80d 电源抑制比100dB
2.1.2电路仿真结果 选用直流同向比例放大电路:
直流仿真效果: 交流仿真效果:
2.1.3 放大电路板的焊接 手工焊接主要工具器材: 电烙铁 烙铁架 锡焊的条件: ? 被焊件必须具备可焊性 ? 被焊金属表面应保持清洁 ? 使用合适的助焊剂 ? 具有适当的焊接温度 ? 具有合适的焊接时间
常用锡焊材料 管状焊锡丝 抗氧化焊锡 含银的焊锡 基本操作步骤: 1,准备施焊:左手准备施焊,左手拿焊丝,右手握烙铁,进入备焊状态。要求烙铁头保持干净,无焊渣等氧化物,并在表面镀有一层焊锡。 2,加热焊,烙铁头靠在两焊件的连接处,加热整个焊件全体,时间大约为 1 ~ 2 秒钟。对于在印制板上焊接元器件来说,要注意使烙铁头同时接触两个被焊接物。导线与接线柱、元器件引线与焊盘要同时均匀受热。 3,送入焊丝,焊件的焊接面被加热到一定温度时,焊锡丝从烙铁对面接触焊件。(注意:不要把焊锡丝送到烙铁头上) 4,移开焊丝,当焊丝熔化一定量后,立即向左上45°方向移开焊丝。 5,移开烙铁,焊锡浸润焊盘和焊件的施焊部位以后,向右上 45°方向移开烙铁,结束焊接。从第三步开始到第五步结束,时间大约也是1至2s。
焊点质量与检查 对焊点的质量要求,应该包括电气接触良好、机械结合牢固和美观三个方面。保证焊点质量最重要的一点,就是必须避免虚焊。 虚焊产生的原因及其危害: 虚焊主要是由待焊金属表面的氧化物和污垢造成的,它使焊点成为有接触电阻的连接状态,导致电路工作不正常,出现连接时好时坏的不稳定现象,噪声增加而没有规律性,给电路的调试、重大隐患。
电路板实际焊接效果:
经过电路实际搭建测试 该电路实际放大倍数为5倍左右 2.2 显示模块 2.2.1 LCD1602的基本介绍: LCD1602的基本介绍: LCD1602的介绍字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用161,162,202和402行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图:
LCD1602主要技术参数: 显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm 引脚功能说明 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 2.2.2 引脚介绍及控制指令介绍 第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脚:背光源负极。
1602液晶模块内部的控制器共有11条控制指令,如下表所示 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 *
3 置输入模式 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
6 置功能 0 0 0 0 1 DL N F * *
7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址
8 置数据存贮器地址 0 0 1 显示数据存贮器地址
9 读忙标志或地址 0 1 BF 计数器地址
10 写数到CGRAM或DDRAM) 1 0 要写的数据内容
11 从CGRAM或DDRAM读数 1 1 读出的数据内容
2.3 控制模块介绍 本次电子设计中选用了Arduio uno来作为核心控制模块
2.3.1 关于Arduio UNO的基本介绍 ArduinoUNO是ArduinoUSB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。
ArduinoUNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz的晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。 2.4 测温模块介绍 选用LM35作为测温传感器 2.4.1 LM35基本介绍 LM35D是把测温传感器与放大电路做在一个硅片上,形成一个集成温度传感器
是一种输出电压与摄氏温度成正比例的温度传感器,其灵敏度为10mV/℃;工作温度范围为0℃-100℃;工作电压为4-30V;精度为±1℃。最大线性误差为±0.5℃;静态电流为80uA。该器件如塑封三极管(TO-92)。
该温度传感器最大的特点是是使用时无需外围元件,也无需调试和较正(标定),只要外接一个1V的表头(如指针式或数字式的万用表),就成为一个测温仪
单电源模式正负双电源模式供电电压35V到-0.2V 输出电压6V至-1.0V 输出电流10mA 指定工作温度范围 LM35A -55℃ to +150℃ LM35C, LM35CA -40℃ to +110℃ LM35D 0℃ to +100℃
实物图:
LM35内部结构:
三,功能实现及代码:
3.1.1 连线图及实线图:
LCD1602与Arduio的连线图:(采用四线驱动连线)
实际电路图及显示屏幕的效果:
3.1.2 实现代码:
没有使用库函数
int DI = 12;
int RW = 11;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};
int Enable = 2;
void LcdCommandWrite(int value) {
int i = 0;
for (i=DB[0]; i <= DI; i++)
{
digitalWrite(i,value & 01);
value >>= 1;
}
digitalWrite(Enable,LOW);
delayMicroseconds(1);
digitalWrite(Enable,HIGH);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);
}
void LcdDataWrite(int value) {
int i = 0;
digitalWrite(DI, HIGH);
digitalWrite(RW, LOW);
for (i=DB[0]; i <= DB[7]; i++) {
digitalWrite(i,value & 01);
value >>= 1;
}
digitalWrite(Enable,LOW);
delayMicroseconds(1);
digitalWrite(Enable,HIGH);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);
}
void setup (void) {
int i = 0;
for (i=Enable; i <= DI; i++) {
pinMode(i,OUTPUT);
}
delay(100);
LcdCommandWrite(0x38);
delay(64);
LcdCommandWrite(0x38);
delay(50);
LcdCommandWrite(0x38);
delay(20);
LcdCommandWrite(0x06);
delay(20);
LcdCommandWrite(0x0E);
delay(20);
LcdCommandWrite(0x01);
delay(100);
LcdCommandWrite(0x80);
delay(20);
}
void loop (void) {
LcdCommandWrite(0x01);
delay(10);
LcdCommandWrite(0x80+3);
delay(10);
LcdDataWrite('c');
LcdDataWrite('u');
LcdDataWrite('i');
LcdDataWrite('x');
LcdDataWrite('i');
LcdDataWrite('a');
LcdDataWrite('o');
LcdDataWrite('n');
LcdDataWrite('i');
LcdDataWrite('a');
LcdDataWrite('n');
delay(10);
LcdCommandWrite(0xc0+1);
delay(10);
LcdDataWrite('2');
LcdDataWrite('0');
LcdDataWrite('1');
LcdDataWrite('8');
LcdDataWrite('0');
LcdDataWrite('1');
LcdDataWrite('0');
LcdDataWrite('5');
LcdDataWrite('8');
LcdDataWrite('6');
delay(5000);
}
3.2 系统硬件连接及搭建调试
3.2.1实验硬件电路:
3.2.2 温度显示效果及调试
由于放大器的作用在代码中调试到合适的温度:
3.3 实验代码
1. #include <LiquidCrystal.h>
2.
3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
4.
5. int potPin = 4;
6. float temperature = 0;
7. long val=0;
8.
9. void setup()
10. {
11. lcd.begin(16, 2);
12. lcd.print("LM35 Thermometer");
13. delay(1000);
14. }
15.
16. void loop ()
17. {
18.
19. val = analogRead(potPin);
20. temperature = (val*0.0048828125*1000);
21. lcd.clear();
22. lcd.print("LM35 Thermometer");
23. lcd.setCursor(0, 1) ;
24. lcd.print((long)temperature / 10);
25. lcd.print(".");
26. lcd.print( (long)temperature % 10);
27. lcd.print((char)223);
28. lcd.print("C");
29.
30. delay(2000);
31.
32. }
四,课程设计体会
在此次为期两周的电子课设中,我通过用放大器构造一个放大电路,将以前所学习的模拟电子知识充分应用到实际中来,进一步地加深了我对模电的理解。通过与其他同学的讨论,对比自己和同学构造系统的不同方法,发现其他同学构造的系统中的优点和自己构造系统的缺点,来进一步优化自己构造的系统。 在系统构造中,我将系统搭建的过程分为三步:第一:在选好所用的器材后,用软件调试放大效果;第二:用proteus软件对放大电路进行仿真,验证放大倍数;第三:搭建实际电路,用硬件测试所搭建的系统是否达到预期功能,验证放大倍数和线路连接的正确性。通过三步的实际操作,让我充分应用了模电放大器的知识,如何充分利用proteus软件库中的各种元件搭建系统。 在用proteus软件仿真过程中,通过仿真,可以非常容易的发现系统中存在的各种问题。在系统中,换用不同的元件或是改变元件的属性,可以测试系统在用不同的元器件时的效果。用proteus软件搭建系统简单易行,克服了在实际用用硬件搭建系统的许多缺点,而且成本低廉。但软件仿真本质上并不是真的实际系统,软件中的元器件本身存在各种缺陷,如元件额定电压等。用proteus软件仿真的结果只能大概的验证所构建系统正确性,但有许多细节还需要在实际中用真实器件搭建系统来验证。 在元器件的焊接过程中,在用原件焊接电路过程中,虽然此前已经用proteus软件仿真过,还是遇到过许多问题,并不是一步成功。在软件仿真中所用的元件和真实元器件并不完全一致,因此还需要对原先线路进行调整。容易出现虚焊等情况,但也在积极学习改正,进一步锻炼了自己的操作能力,同时也进一步了提高了自己焊接电路的能力。 课设中实际操作非常重要,但随后的课程设计报告的编写也不可少。 通过对课程设计报告的编写,让我总结了在实际操作过程中的所遇到的各种问题,进一步加深了对此次课程设计的理解。 非常感谢学校给我们提供此次课程设计机会和老师的细心辅导,让我们能够将所学的知识应用于实际,提高了自身的实践能力。同时要有主动查阅芯片资料,做到主动学习,在历经了两个星期的实践后,我也发现了自己的许多不足之处,让我在以后的学习生活中更有明确的目标来改变自身的不足,提高自我的能力(来自学校课程设计报告,图片太麻烦了,没加)
|