单片机小型简易风力发电机控制器设计与实现

摘 要

风力发电机控制器是控制风力发电系统的,对于风力发电系统进行优化。长时间的化石燃料的使用对于环境的
危害愈加明显,伴随着人们对于化石能源对环境的危害认知的不断提高,同时国际上不断出现的能源危机使得人们
去迫切去寻找清洁、无污染的新能源逐渐成为代替化石能源的选择。进而风力发电成为新兴产业,各国逐渐开始发
展各自的风力发电。
   设计简单有效的控制技术去应用可以优化风力系统使其运行可靠。一般的风力发电系统都会存在转化效率低,
控制简单等问题。在设计中控制器的作用主要有几点,保证风机安全运行,合理调节整个系统的用电情况等。因此
在发电系统用有控制对于风力发电的使用以及推广普及都有着积极的作用。
  此次方案拟定通过风机向锂电池充电,整个系统由锂电池供电。放电时,通过芯片内部升压到5V,整个系统被
5V电压进行供电;电压转化由ADC7705实行,实时的动态刷新当前锂电池的电压参数,下一步LCD1602液晶显示屏展
示实时电压。充电模块,吐出充电数据,当锂电池充满之后,便会停止给锂电池充电,LCD1602液晶显示屏也会实时
的显示充满的标识,同时还有有负载接入口,可以通过按键自由的控制是否给负载供电,LCD1602液晶显示屏会实时
动态显示负载的用电情况。
关键词:风力发电;控制器;STC89C52;负载;充

1 引言

1.1课题的研究意义和背景
  随着社会的发展和进步,现代社会对于电的需求越来越多。随着时间的推移,在使用如石油、煤炭等能源时候
会面临诸多问题。例如化石能源是在长时间的地质变化中演变出来的,是不可再生的。以及使用煤、石油等会产生
酸雨和温室效应对环境造成恶劣的影响。因此,急切的需要可以代替化石能源的能源。与此同时,风能进入大众的视野。风有着可再生并且取之不尽,风能来自于太阳能,只要地球上给存在空气和太阳,风就不会消失。再其次风
能是一种清洁无污染的能源。风力发电在世界范围内迅速发展起来。风能的存储量在我国非常大,根据相关部门统
计达到1.6×105MW,沿海和高原地区储量格外突出,潜力巨大。同时海上的风力资源比内陆更为丰富,因此未来的
发电技术会越来越趋向于海上风能的利用[1]。
  近年来风力发电不断在各国普及开来。风力发电机组最早始发于丹麦,之后便在世界范围内得到了广泛的普
及,这一发展速度是非常迅速的。根据欧洲相关协会统计显示,到2030年,风力发电技术将成为世界电能产出重要
途径,会为人类文明的发展做出越来越多的贡献,不仅能够在最大程度上减少废气排放,更能够缓解人类文明发展
进程中的用电压力[2]。2021年下半年以来爆发的欧洲能源危机,不仅 造成区域性电荒、气荒、煤荒,而且引发全
球石油 等大宗商品价格大幅度攀升,并在一定程度上影响 到中国国内的电煤和电力供应,一些地区一度不得 不采
取“有序用电”,甚至出现“拉闸限电”现象[3]。
  风力发电的过程是将风能转化为机械能,进一步转化为机械能和输出能。具体技术是风使风力叶片转动,使发
电机内部旋转并切割磁场,最后能量积累装置以电能的形式保持恒定的电流输出[4]。风力发电系统有电能产生、电
能转换和电能贮存三个部分。主要掌握向蓄电池充电由电能变换控制器掌握,收集参数。电能存储部分由蓄电池储
存能量,消除由于天气等因素引起的能量供给和需求的不平衡[5]。控制器是为了风力发电机和蓄电池充电而设计
的,有效的提升了风力发电的效能。因此减少充电消耗,保证蓄电池使用,监控其使用状态。应该设计简单、效率
高的风机控制器,对风电系统进行优化。
1.2 系统总体设计思路
  在当前的社会发展中,单片机逐渐渗透到人们生活的各个领域,在大部分电子产品中发挥着不可替代的作用。
小型风力发电系统主要可分为电能产生、电能变换和存储消耗三部分。 电能产生部分由风力机、传动机构和风力发
电机构成;电能变换控制器主要控制蓄电池的充电,同时采集系统的各参数[6]。
  单片机技术的应用较为广泛,因其具有较强的环境适应能力,所以人们生产、生活各个领域均有涉足。单片机
是一种集成电路芯片,由运算器、控制器、存储器、输入输出设备构成,在大规模集成电路技术的基础上,将具有
数据处理功能的CPU、RAM、ROM、多种I/O口、中断系统等功能集成在一起,形成完善的微型计算机系统[7]。本次设
计是依靠单片机设计简易风力发电机控制器,运用单片机原理设计控制器的硬件电路,通过C语言进行程序设计。
1.3课题研究的主要内容和工作
  控制系统是整个风力发电和电力生产的核心调控系统和安全生产的关键所在[8]。根据风力发电和蓄电池充放电
的工作原理。风力充足是通过风机给蓄电池电池,当风力不足是通过锂电池储存的电通过放电给整个系统供电。完
成简易的控制器。设计主要是过PC机对单片机进行编程。主要的工作步骤可以分为:
(1)收集资料
在拿到题目时,首先收集相关的资料包括文献书籍等。
(2)初步构思
深入阅读整理完资料与文献后,进行简单的框架构思设计。
(3)制作
根据框架构思后,进行原理图制作和硬件的制作以及软件的编写工作。
(4)调试
完成硬件与软件的设计之后,进行调试功能看是否能够满足预期,进行适当修改。

2 整体硬件的设计与实现

2.1 系统整体结构
  本次系统分为单片机、发电机、充电模块、蓄电池、继电器、液晶显示、AD采集这几个模块组成。当有风时,
风扇会开始转动,途径充电模块给蓄电池实行充电,当外部无风时,负载接受电池供电。使用外部继电器控制用电
器的开关。系统整体结构如图2-1所示:
AD采集
发电机
液晶显示器STC89C52单片机
充电模块
蓄电池

2.2 STC89C52芯片的介绍
  单片机拥有了CPU、ROM、RAM定时计数器和I/O口等功能件[9]。设计核心是 STC89C52芯片,一款加强单片机。
具有价格低廉、耗能低、性能好、市场占有量大等优良品质。
  STC89C52作为一款耗能低、性价比高的CMOS8位微控制器,具有8K字节系统可编程Flash存储器。芯片的内核是
MCS-51,相较以往芯片进行了优化。8 位CPU 和在系统可编程Flash。使得STC89C52为诸多嵌入式控制应用系统提供
巧妙的解决方案。
  包括高字节Flash、RAM、I/O 口线,看门狗定时器、内置4KB EEPROM、MAX810复位电路、16 位定时器/计数
器、外部中断、全双工串行口。最高运作频率35MHz,6T/12T可选。
芯片的主要功能列举如表1所示:
功能
1 8位CPU、系统里可编程Flash
2 晶内有典型最高工作频率可达12MHz的时钟振荡器
3 内部程序存储器(ROM)为8KB,内部数据存储器(RAM)为256字节532个可编程I/0口线68个中断向量源
4 2个16位可编程定时计数器
5 三级加密程序存储器
6 四个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
芯片可降至0Hz,可以选择节电模式。CPU不回工作在空闲状态,保持RAM、定时器/计数器、串口、中断部分工
作。掉电时,保存RAM内容,冻结振荡器,单片机停止工作,直至重新中断或复位结束。
STC89C52共有四个8位的并行 I/0口:PO P1、P2、P3 端口,对应的引脚分别是P0.0P07,P10P1.7,P2.0~ P2.
7,P3.0~P3.7,共32根I/O线。每根线可以单独用作输入或输出
表2 特殊引脚功能特殊引脚功能介绍如表2所示:
  
VCC 电源电压
GND 接地端
P0口 具有双向I/O口。驱动八个TTL逻辑电平时可输出一位。高阻抗输入时端口写“1”。复用低八位地址/数据
时,po口则是在访问外部程序和数据存储器,
P1口
存在上拉电阻的八位双向I/O 口,可驱动4个TTL逻辑电平。端口写“1”时,端口被拉高由于上拉电阻,同
时当做输入口使用。作为输入使用时,拉低的引脚由于内部电阻的原因,将输出电流。
P2口
具有内部上拉电阻的8位双向I/O 口,P2输出缓冲器能驱动4个TTL逻辑电平。写“1”时,上拉电阻把端口拉
高,可作输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
RST 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位
ALE
/PROG
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。以时钟振
荡频率的1/6输出固定的脉冲信号,每访问外部数据存储器时将跳过一个ALE脉冲。
PSEN
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)
时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信
号。
EA
/VPP
外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意
的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程
序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp
在上述的引脚功能之外还有串行通信的部分引脚,如表3所示:
表3 部分引脚功能介绍
  
序号 功能
P3.0:RXD 串行通信输入
P3.1:TXD 串行通信输出
P3.2:INTO 外部中断0输入。
P3.3:INT1 外部中断1输入
P3.4:TO 计时计数器0输入
P3.5:T1 计时计数器1输入
P3.6:RD 外部数据存储器的读取信号
2.3 时钟电路
   对于STC89C52单片机来说,时钟电路和复位电路和电源电路三个部分构成的系统称为最小系统,简单来说可以
工作的状态的同时构成的元器件最少。
  时钟电路是像时钟一样的电路。让工作按照时间顺序产生电路。由晶体振荡芯片、晶体振荡器和电容构成。电
容的电容值在5至30μf,典型值是30μf。是为了快速起阵和稳定频率。
2.4 复位电路
  复位电路作用是保证电路稳定工作。复位电路是不可或缺。复位电路是使电路恢复到起始状态的电路设备
[10]。STC系列单片机提供了7中复位方式,包括外部RST引脚复位、软件复位、掉电和上电复位等[11]。5v是正常工
作需要的电源。由于稳定是时序数字电路的基本要求,因此在电源上电时,只有当VCC在4.75v到5.25v之间,并且晶
体振荡器稳定工作时,复位信号才能消失,系统可以正常工作。电容器充电变为高电平,微控制器复位在高电平,
因此会实现自动复位。
2.5 方案与论证
2.5.1 蓄电池方案
   风力发电风力发电具有成本低、技术成熟、环保节能的优势,在新时代电力系统的地位逐渐提升,风力发电量
逐年增加,然而风能存在一定波动性,即风能大小不可控,为提升风力发电供给稳定性,需凭借储能技术支持。
方案一:
  使用铅蓄电池储能。由铅和二氧化铅的活性物质,电解液是硫酸的是铅蓄电池。大部分都是化学能转化为电路
提供给外部电路。
方案二:
  选择锂电池。锂电池的正负极为锂金属或锂合金,使用非水电解质溶液。锂电池工作依靠锂离子在正负极相互
移动,实现脱落镶嵌,完成充电和放电。充电过程是Li+离开正极,进入负极,与此同时负极处于饱和状态;放电过
程相反。一般均可达到循环500次以上,更甚1000次以上使用寿命。
  论证:由于锂电池无记忆效应可以随时充电放电。同时锂电池有着易携带的优点,因此选择方案二。本次蓄电
池的选择是18650锂电池,电压为3.7v。这款锂电池是电池鼻祖日本索尼公司推出的一种标准的锂电池型号。因其在
工作中稳定性能非常好,重量轻、容量大等优点,因而被广泛应用到众多电子领域中。
2.5.2 液晶显示方案
LCD液晶屏幕显示蓄电池的实时电压,同时也动态显示是否接入负载的情况。
方案一:
  选择LED数码。多个发光二极管封装在一起的器件,叫做数码管。单片机中选择数码管进行显示非常常见。控制
电路被独立的I/O线控制,想要显示字形码时,单片机对位选通COM端电路的控制,只要打开需要显示的数码管,就
会显示出字形,关闭的数码管不会亮。
方案二:
  选择LCD液晶。LCD1602是一种工业字符型液晶,利用液晶物理特性。通过电压对需要显示区域进行控制,可以
显示字母、数字、符号等。
  论证:由于此次设计显示的是蓄电池的电压以及负载是否接入,数码显示屏难以支撑设计理念,因此选择方案
二完成设计。
  小型液晶模块LCD1602因为具有重量轻、体积小、功耗低、能够显示多个字符等优点,所以在大量电子设备及工
业应用中得到广泛应用[12]。以单片机为核心,单片机负责信号与信息处理和液晶显示,使输出信息达到理想的人
机交互目的[13]。
2.5.3 充电方案
方案一:
想要风机向蓄电池充电时,使用继电器控制,观察电池电压,控制充电。继电器闭合时,向蓄电池充电,反之则不
能充电。使用负载控制继电器输出开闭,蓄电池亏电时,断开负载不工作。反之常闭合。
方案二:
使用充放电一体化模块。多种功能结合在一起。
  论证:使用继电器控制电路,并观察蓄电池的状态去控制充电需要时刻观察电池状态,并且无法满足保护电
路,防止过冲等情况发生。同时方案一中还需要芯片进行降压,而方案二可以同时满足降压、充电以及保护电路的
需求,同时使用继电器控制是否向负载供电。因此选择方案二。
2.5.4 AD采集模块方案
  单片机应用领域中,常常需要把外界连续变化的物理量变成数字量送入单片机内进行加工处理等。而输出的数
字量需要转化成控制设备中所能接受的连续变化的模拟量 在系统中通常利用传感器将控制对象的物理量转为易传
9
输、易处理的连续变化的电信号,这种变化成为模-数转化,完成这一转化需要AD转化器[14]。
方案一:
  PCF8591共16个引脚,具包括模拟输入、模拟输出和串行总线接口。使用时将模拟的GND和数字GND连接即可。
方案二:
  选取AD7705芯片。AD7705有16位AD转换器,在直流和低频交流测量比较实用。其片内提供从1至128的增益设
置,可以接受低、高电平的模拟输入,在无需其他外部硬件下。
  论证:AD7705是三线串行接口,与各种微控制器进行连接很简便,不浪费了CPU的I/O接口。并且耗能低,使用
在电池供电等应用中比较常见。同时使用相应的采集模块采集。因此使用方案二。
2.5.5 继电器模块方案
  继电器是一种用弱电控制强电的电子控制装置,可与单片机相结合实现相应的控制功能[15]。继电器常见于电
路中开关器件,可以使用其自身的开关进行断开和连通电路使用。因为继电器输入与输出并不直接相连,所以可以
起到隔离的目的,同时还起着保护、调节电路等作用。因此简单的开关器件,可以任意选择使用一款继电器使用。
此设计选择的是电磁继电器,电磁继电器的触点是继电器功能实现最重要的部分,电磁继电器触点的接触电阻通常
在几毫欧到几十毫欧范围内,接触电阻越小联通性能越好[16]。通过继电器控制用电器的使用。
2.6 具体硬件设计
2.6.1 蓄电池电路设计
  蓄电池储能技术主要是利用了电池的氧化还原反应,通过这一化学反应进行放电和充电[17] 。蓄电池储能技术
为传统化储能手段,经长期开发与探索,蓄电池储能出现多种类型,并在多领域中得到广泛应用[18]。本次设计需
要一块18650锂电池。
2.6.2 液晶显示屏电路设计
  LCD1602液晶屏可以显示16×02即32个字符。LCD1602液晶显示的原理是利用液晶的物理特性[19],通过电压对其
显示区域进行控制,有电就有显示,这样即可以显示出图形。串口和单片机的接口依次连接。
表4 引脚功能LCD1602共有16个引脚,其各个功能如下表4所示:
编号 符号 引脚说明
1 VSS 电源地
2 VDD 电源正极
3 1VL 液晶显示偏压
4 RS 数据/命令选择
5 R/W 读/写选择
6 E 使能信号
7 D0 数据
8 D1 数据
9 D2 数据
10 D3 数据
11 D4 数据
12 D5 数据
13 D6 数据
14 D7 数据
15 BLA 背光源正极
16 BLK 背光源负极
低位表5 点阵字符对应表液晶模块可以储存不同的字符,每个字符相应的代码各不相同。详细代码如表5所示: 
高位 0000 0010 0011 0100 0101 0110 0111 1010 1011 1100 1101 1110 1111
0000 ⑴ 0 Э P \ p _ タ ミ α Ρ
0001 ⑵ ! 1 A Q a q □ ア チ ム ä q
0010 ⑶ “ 2 B R b r r ィ ッ メ β θ
0011 ⑷ # 3 C S c s 」 ウ テ モ ε ∞
0100 ⑸ $ 4 D T d t \ エ ト ャ μ Ω
0101 ⑹ % 5 E U e u ロ オ ナ ュ Β Ο
0110 ⑺ & 6 F V f v テ カ ニ ョ Ρ Σ
0111 ⑻ > 7 G W g w ア キ ヌ ラ ɡ ∏
1000 ⑴ ( 8 H X h x ィ ク ネ リ Χ
1001 ⑵ ) 9 I Y i y ウ ケ ノ ル -1 y
1010 ⑶ * : J Z j z エ コ ハ レ j 千
1011 ⑷ + ; K [ k { オ サ ヒ ロ x 万
1100 ⑸ フ < L ¥ l ∣ セ シ フ ヮ € ∩
1101 ⑹ – = M ] m } ュ ス ヘ ソ ≠ +
1110 ⑺ . > N ^ n · ヨ セ ホ ハ
1111 ⑻ / ? O – o ← ツ ソ マ ロ ö
表6 指令表LCD1602中一共有11条指令,指令如表6所示:  
令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
清屏 0 0 0 0 0 0 0 0 0 1
光标复位 0 0 0 0 0 0 0 0 1 x
输入方式设置 0 0 0 0 0 0 0 1 I/D S
显示开关控制 0 0 0 0 0 0 1 D C B
光标和字符移位控制 0 0 0 0 0 1 S/C R/L x x
功能设置 0 0 0 0 1 DL N F x x
字符发生存储器地址设置 0 0 0 1 字符发生存储器地址
数据存储器地址设置 0 0 1 显示数据存储器地址
读忙标志或地址设置 0 1 计数器地址
写入数据到CGROM或DDRAM 1 0 要写入的数据内容
从CGROM或DDRAM读数 1 1 读取的数据

2.6.3 AD转化采集电路设计
  在此系统中采用的是转化器为AD7705。AD7705是16位AD转换器,它采用了Σ-Δ技术,可以获得 16 位无误码数
据输出。能将不同范围的各类输入信号放大到接 AD 转换器的满标度电压再进行 A/D 转换。
  利用单片机对芯片进行控制,读入A/D转换的数据,并进行处理[20]。传化完成后判断按键是否按下,通过ad采
样模块进行采样。
AD7705各个引脚功能:
(1)CS:低电平有效的逻辑输入
(2)RESET:复位输入
(3)DIN:串行数据输入
(4)SCLK:串行时钟
(5)DOUT:串行数据输出
(6)DRDY:逻辑输出
(7)VCC:电源电压
(8)GND:接地
将引脚与单片机的P.10至p.14相连接。
2.6.4 充电模块电路设计
  由于锂电池自身结构,充电电压只可以为4.2v,如果过高,离开正极的锂离子太多,电池会受损坏。对此,采
用专用的恒流、恒压充电器实施充电。其以5305为基础与电容电感电阻相结合。
引脚功能介绍:
(1)VIN:充电正接入
(2)GND:充电负接入
(3)GND:锂电池负极
(4)BAT:锂电池正极
(5)GND:输出负接口
(6)VOUT:输出正接口
  在使用时将锂电池的正负极分别和引脚3和4相连,同时风机的正负极两根线与5和6相连接。该充电模块同时有
锂电池保护功能防止电池充电过程中损坏。
2.6.5 继电器电路设计
继电器的设计是控制用电器的使用即负载的使用。当按下按键时,JSM1输出高电压,三极管导通,继电器导通,负
载接受充电,不按下按键时蓄电池不向负载充电。
2.6.6 按键电路设计
使用按键控制蓄电池是否向负载充电。电路图2-10如所示:
图2-10 按键电路

3 软件设计

3.1 主程序设计
   主程序流程首先进行AD硬件初始化底层,再进行LCD液晶屏幕的初始化,之后读取ADC采集数值,进行打印。全
部完成流程后,再一次进行操作。主程序的流程图如3-1所示:
串口打印读取ADC采样值初始化硬件底层
开始
LCD屏幕初始化
3.2 AD采样程序设计
AD采样流程首先进行初始化,之后进行自我校准,再判断摁键是否打开,打开读取采样值,没有打开也读取采样值
进而打印。完成一次后,继续重新操作一遍。流程图如图3-2所示:
串口打印读取AD采样值显示‘OFF’N显示‘ON’AD自校准AD初始化
Y
判断按键是否按下

原理图

4 实物设计

4.1 实物制作流程
1)用Altium Designer新建PCB项目,在项目下面制作新的电路图和PCB图。
2)在绘制电路
模块原理图时,首先绘制单片机最基础的部分,在画图的时候,注意不要省略每一个元器件,并在网
络标签上做标记,最后根据实际使用的组件来改变封装。
3) 下一步导入PCB图界面,生成PCB图。布局需清晰明了。布线后请确认有没有遗漏。最后一步需覆盖铜,被铜覆盖
的部分再连接到GND。
4)将元器件依次安装完成,并检查是否有遗漏。
4.2 调试过程
4.2.1 硬件调试
  因此在硬件电路设计完成后,应按照零件元件清单和布局进行组,要关注正负极以及芯片的连接。组装工作结
束后,应检查是否有遗漏,是否牢固。之后是原理图的检查工作需完成,保证原理图上的每个对应器件连线都正
确。检查无误后对实物进行运行操作,观察是都能完成预期想要实现的功能,如有错误及时进行调整。
4.2.2 软件调试
  Keil集成了源程序编辑和程序调试于一体,支持汇编多种语言[20]。Keil uVision3开发平台有多种符合当前工
业标准的开发工具,可以实现一些列需求。它与传统的C语言语法开发有相似处,有很大的优势。提高了制作项目的
效率。如何使用Keil :
(1) 建立一个工程项目,选择芯片并确定选项。
(2) 建立源程序文件。
(3) 添加文件到当前项目组中。
(4) 编译文件,编译后如程序有语法错误,在下方创建栏会有提示信息。
(5) 检查并修改源程序文件中的错误。
(6)生成.hex文件。
(7) 烧录程序。
完成后,进行调试,如功能有差别可以进行适当修改。

4.3实物图

源程序
#include "bsp.h"
#include "lcd1602.h"
#define EXAMPLE_NAME "STC89C52_TM7705双路ADC模块例程"
#define EXAMPLE_DATE "2014-04-20"
#define DEMO_VER "1.0"
sbit KEY1=P3^3;
sbit LED1=P2^0;
#define KEY1_PRESS 1
#define KEY_UNPRESS 0 
static void PrintfLogo(void);
static void PrintfHardInfo(void);
static void TM7705_Demo(void);
u8 su[16];
u8 key_scan(u8 mode)
{
static u8 key=1;
if(mode)key=1;//连续扫描按键
if(key==1&&KEY1==0)//任意按键按下
{
18
delay_10us(1000);//消抖
key=0;
if(KEY1==0)
return KEY1_PRESS;
}
else if(KEY1==1) //无按键按下
{
key=1;
}
return KEY_UNPRESS; 
}
/*
*/
void main(void)
{
bsp_Init(); /* 初始化底层硬件。 该函数在 bsp.c文件 */
// PrintfLogo(); /* 打印例程logo */
// PrintfHardInfo(); /* 打印硬件接线信息 */
lcd1602_init();
TM7705_Demo();
}
/*
static void TM7705_Demo(void)
{
uint16_t adc1, adc2;
bsp_InitTM7705(); /* 初始化配置TM7705 */
TM7705_CalibSelf(1); /* 自校准。执行时间较长,约180ms */
adc1 = TM7705_ReadAdc(1); 
// 
// TM7705_CalibSelf(2); /* 自校准。执行时间较长,约180ms */
// adc2 = TM7705_ReadAdc(2);
lcd1602_clear();
// lcd1602_show_string(0,0,"bat vol ")
while (1)
{
u8 key=0;
key=key_scan(0);
if(key==KEY1_PRESS)//检测按键K1是否按下
LED1=!LED1;//LED1状态翻转
if(LED1==0)
{lcd1602_show_string(0,0,"bat vol ON"); ;}
  else {lcd1602_show_string(0,0,"bat vol OFF");}
bsp_Idle();
#if 1
/* 双通道切换采样,执行一轮实际那约 160ms */
adc1 = TM7705_ReadAdc(1); /* 执行时间 80ms */
adc2 = TM7705_ReadAdc(2); /* 执行时间 80ms */
19
#else
/* 如果只采集1个通道,则刷新速率 50Hz (缺省设置的,最大可以设置为500Hz) */
   adc1 = TM7705_ReadAdc(1); /* 执行时间 20ms (50Hz速率刷新时) */
adc2 = 0;
#endif
/* 打印采集数据 */
{
int volt1, volt2;
/* 计算实际电压值(近似估算的),如需准确,请进行校准 */
volt1 = ((int32_t)adc1 * 5000) / 65535+140;
// volt2 = ((int32_t)adc2 * 5000) / 65535;
// su[0]=volt1/10000+0x30;
// su[1]=volt1%10000/1000+0x30;
// su[2]=volt1%10000%1000/100+0x30;
// su[3]=volt1%10000%1000%100/10+0x30;
// su[4]=volt1%10000%1000%100%10+0x30;
su[0]=volt1/1000+0x30;
su[1]=volt1%1000/100+0x30;
su[2]=volt1%1000%100/10+0x30;
su[3]=volt1%10+0x30;
su[4]='m';
su[5]='V';
su[6]=' ';
su[7]=' ';
su[8]=' ';
su[9]=' ';
su[10]=' ';
su[11]=' ';
su[12]=' ';
su[13]=' ';
su[14]=' ';
su[15]=' ';
// su[4]=volt1%10000%1000%100%10+0x30;
//lcd1602_show_string(0,0,"bat vol ");
lcd1602_show_string(0,1,su);
/* 打印ADC采样结果 */
// printf("CH1=%5ld (%5dmV) CH2=%5ld (%5dmV)\r", (long int)adc1, volt1, (long int)adc2, volt2);
}
}
}

5 测试结果

因室外风力不稳定,无法满足测试环境,故选择测试环境在室内完成测试。配合测试使用的是1800W的吹风机,
一共有三个档位。其中1档风力过小难以吹动风扇产生数据完成测试,产生变化量。因此1挡不去过多进行测试,测
试集中在2和3挡风力上。演示图如5-1所示:

图5-1 演示图
  表7 数据表数据测试采取控制变量的方法,依次观察时间、档位、吹风机与风扇的距离可能会对数据结果不同
造成的影响与变化。测试数据如表7所示:
  
档位 时间 距离 初始电压 结束电压
1 1分钟 5cm 4062mv 4062mv
2 1分钟 5cm 4062mv 4063mv
2 1.5分钟 5cm 4062mv 4064mv
2 1分钟 10cm 4053mv 4055mv
2 1分钟 15cm 4065mv 4068mv
3 1分钟 5cm 4063mv 4065mv
3 1分钟 10cm 4066mv 4069mv
3 1分钟 15cm 4058mv 4062mv
3 1.5分钟 15cm 4058mv 4063mv
可以看出由于风力档位的的大小和距离远近都可能会对数据产生影响。
测试电池向负载供电时,无需吹风机和风扇,由灯充当负载。演示图如5-3所示:
图5-3 演示图

表8 数据表使用电池向负载充电时,根据观察开始时电压变化很小,但随着时间的变化,电压的变化速度也会
增大。数据表如表8所示:
时间 10s 20s
初始电压 4062mv 4062mv
最终电压 4060mv 4053mv

作者:qq_1039692211

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机小型简易风力发电机控制器设计与实现

发表回复