基于单片机的点光源控制系统

目录

一、方案流程及技术规格书设计

二、系统硬件电路设计

三、系统软件设计

四、系统调试测试与分析

前言

       电是人类发展与社会建设的重要基础,它与现代化设备的紧密结合带来了绚丽多彩的现实世界,而电能的普及使用又使得全世界电力供应不足。在全球范围内来说,发电技术主要是靠火力发电,因为全世界燃料的大规模使用,不但造成了燃料匮乏现象, 而且使城市环境污染,尤其是大气污染的现象也在加剧中。从二零一三年初开始,PM2.5这个词语就日益被人们所关注,而严重的城市雾霾天气也已经危害了我国的很多城市,并且在二零一四年又逐渐加剧。为解决经济发展、能源紧张和环境之间的问题,中国国家政府有关部门已经制定了许多的政策措施,包括提升能源效率、搬迁高污染产业、健全各区域的严重大气污染联控制度等。不过从实际成效上来说,上述举措也只是治标而不治本,唯有改变目前对电能的利用方法,大力发展并广泛使用太阳能、风电等高洁净能源,让化石燃料不再是世界能源的核心,这样才能有效的解决能源不足和环境破坏问题,进而从根本解决电力供应不足和大气雾霾的问题。

       随着科技的高速发展,人类对生活品质的需求也日益增加,能源不足的现象日益严峻,制定提升能源的收集效率的方案刻不容缓。于是,点光源跟踪控制系统应运而生。点光源跟踪控制控制系统(Point Light Source Tracking Control System),是以新能源采集及利用系统为平台,对太阳光源自动控制。提升收集太阳能的效率,使太阳能板性价比更高。

       太阳内部的高温熔化和太阳辐射的能量是3.8×10^11 kW。到达地球大气层的太阳光有30%会被大气所反射,23%会被地球的大气层吸收,剩下的会以8× kW的能量到达地面。20世纪以后,随着社会和经济的发展,人民的生活水平得到了提高。对燃料的需要量也日益增加。由于化石燃料资源的有限性,及其自身在燃烧过程中对世界气候与自然环境所形成的环境影响,越来越为人类所重视。从国家资源、环保、经济社会发展的需要来看,研究和应用洁净电力和可再生资源是首要任务。人们通常认为,太光线主要是来自于氦原子核的聚合反应。而太光线幅射能透过大气环境层,但由于受吸入、散射和反光的影响,所以可以径直抵达地表的太光线幅射能仅存三分之一,而其中百分之七十都是直接照射到了海面上,因此,目前仅有1.5× kW/h,这个数字相当于1978年全国能源消耗的6000倍。没有被吸收或散射而到达地面的太阳光,称为“垂直”幅射能;而直接由太阳光散射的幅射能,称为“扩散”(diffuse),而在地面上,每个点的总辐射能就是垂直和扩散能量的平均数。

       和传统的火力发电比较,太阳能具有可再生,节省投资等优势,是真正的绿色能源。目前,有许多品牌的太阳能产品,它们在自动检测太阳光照和收集太阳能效率方面都有一些问题。

       世界经济正持续发展,工业社会对燃料的要求日益提高,而传统化石能源也已经无法适应需要。同时由于人类对环境保护意识的提高,洁净燃料的广泛应用已是必然趋势。意义:极大程度上解决了全球能源供应紧缺的问题,同时使环境保护工作获得了一定的保障,还有优化了能源结构,从而大大提高了能源利用效益,推动了经济社会发展,也使人类的生存变得更加方便。

软件工具准备

软件:

电路设计:protel99 se(up主使用版本) 或者其他版本,或者其他电路设计软件;

单片机开发:Keil5;

调试测试:串口调试助手,逻辑分析仪等;

工具:

电路焊接:电烙铁,SMT(有条件的);

调试:

万用表、示波器(基础入门即可,可以白嫖学校或者公司)USB转串口工具、仿真器;

一、方案流程及技术规格书设计

方案流程设计

技术规格书设计

1.光照强度由光敏电阻模块进行采集;采集后的信号经过放大(滤除50HZ信号的干扰),进行整形后,得到幅值在0~5v的脉冲信号。

2.光照信号输入单片机MC96F6432,单片机处理相关数据并在LCD1602液晶显示。

3.有信息提示,当系统检测到光源中心,蜂鸣器发出鸣响。

4.按键可以设置电机的转动方向从而控制太阳能板移动。

5.设计运用单片机来控制系统,ADC0832测光照、LCD1602显示和蜂鸣器模块在与它周围连接,模块与模块之间传送信号实现最终要求。本设计采用MC96F6432芯片。MC96F6432 是一款有32k字节FLASH的8位单片机。本芯片是一款可以为许多嵌入式控制应用提供高效灵活低成本解决方案的微控器。我对其中原理的理解是:太阳能板是通过光照射将光能转化为热能,在MC96F6432单片机识别按键操作后,单片机根据命令控制电机转向驱动太阳能板设备定向移动,使用光敏三极管检测光源位置,判断系统是否检测到光源中心,检测到蜂鸣器发出鸣响,用ADC0832和光敏电阻测量光照强度,并在液晶屏LCD1602显示实时光照强度数据并且阴天光照强度不足通过LCD1602液晶显示屏报警。综上,系统的硬件整体框图如下:

系统硬件电路设计

2.1微处理控制电路

       单片机是电子控制系统的重要基础,而单片或微型计算机集成电路中通常有复位电路、晶振时钟电路等,由于采用了宏晶公司的IAP15F2K61S2单片电源线,采用了外接复位电路和内插时钟电路,从而避免了外部的复位环和周边晶振。LQFP64芯片的设计,电路图如图所示:

2.2光敏电阻检测电路

       光敏电阻驱动电路,其模块外接有信号采集、放大和处理电路,所以和单片机接口比较简单。设计采用9个光敏电阻和单片机IO口一对一连接。在无外界光源照明下,因光敏电阻阻值较大,而在有外光源照明下,因光照阻值降低,光敏电阻产生较低感应信号,经过放大后,在IO端口上输出与三角形波形相似的波形。光敏电阻模块在接受光照后会产生的模拟信号,被单片机IO口采集,电路如图所示

2.3 LCD显示电路

       LCD1602A是LCD1602A的 LCD驱动 IC (HD44780 LCD)的功率电路,以及与 LCD组件连接的16个插头,电路如图。

 

       R2电位计10 K起分压作用,电位计3296多环电位计,调整精度高,2个脚用于提供 LCD的偏压值和调整电压的对比。C15为在 VCC与 GND之间接的 LCD电源滤波电容。15、16脚为背光电源,15脚为正,R21为背光电流限制电阻器,其尺寸可调整背光的亮度。其它的数据和控制脚与 MCU相连, RS脚用于选择指令或数据。RW是一个读写选项。E为选择的讯号。D0-D7是一条数据线路。

2.4按键电路

       无自锁式机械键按下时,2只脚接通,释放时,2只脚脱离。该方案采用4个键,当未按下按钮时,因上拉电阻器的高电平,相应的IO端口为高电平,按下按钮,键为ON, IO端口与地面相对应,为低电平。单片机对每个键的IO端口进行测试,并对键的状态进行判定。按键的作用是在设定启动时调节马达的位置。电路如图

 2.5  蜂鸣器电路设计

       蜂鸣器与 P3.3接口相连,由于 MCU的 IO端口的功率有限,故采用三极管驱动,R3是电流限制的电阻器。采用被动式蜂鸣器,当蜂鸣器不响时,P33端口输出低电平,Q1不导电,没有电流通过蜂鸣器,P33端口输出4 KHz的方波,Q1在P33高电平时导通,在低压时导通。蜂鸣器的电流也是4千赫兹,因此蜂鸣器发出声音。R10能调整通过蜂鸣器的电流,也就是调整蜂鸣器的音量,电路如图

2.6 步进电机驱动电路设计

       采用ULN2003达林顿管作为步进电动机的动力,其工作原理见图3.6。VCC是一个5伏的电源。C1-C4 (C5-C8)为脉冲控制引脚(C1-C4)。在C1-C4 (C5-C8)上,通过输出一定的定时脉冲信号,实现对步进电机的顺时针旋转和逆旋转的控制。模拟点光源跟踪光照位置。

 

2.7 电源电路

       本系统采用外部9 V的电源适配器,但是 MCU、 LCD器件等均要求5 V的稳定电压,由9 V降至5 V,采用普通的7805三端稳压集成电路。7805三端稳压电路具有以下特点:1、具有较高的纹波抑制率。2、内部有过热触发短路保护,具有较高的安全性。3、价格低廉。4、所需的周边器件很小,外部器件仅需输入滤波器和输出滤波器。

       三端电压整流器7805仅有三脚,一脚输入,二脚接地,三脚输出。输出电压为7805,输出电压为5 V,C3输入滤波电容,C6输出滤波电容。电路如图。

 GSM模块的接口电平为3.3伏,因此必须提供3.3 V的电力。AMS1117稳压电路的研制,电路如图。

2.8 原理图

        PROTEL99SE的硬件部分,在大量的电路板设计中,PROTEL99SE作为较早的产品,其功能和操作比较简单,适于新手,因此选择PROTEL99SE作为其电路板和电路板的设计。底板原理图、顶板原理图如图。

 

三、系统软件设计

3.1 主程序设计

       点光源跟踪控制系统完成的功能有:光敏电阻通过 AD变换,将输入的模拟信号转化为数字光数据,并对变换后的数据进行处理,得出光强的数值;比较得到的9个光敏电阻AD值,得到具体光源照射的位置;液晶显示步进电机指向的光源位置;检测到光照报警;初始化状态按键设置步进电机位置到归零。

       软件需求主要是写计算机程序,目前常见的单片或微型计算机编程语言有汇编语言和C语句,汇编语言是最基础的机械设计语言,适用于简单的函数程序的编写。现在,在设计应用软件时,汇编语言的使用非常少。由于 C是 C语言中最先进的一种,它不仅简单、易懂、便于阅读、便于携带,而且还能处理底层的寄存器,以及汇编语言的能力,因此很适用于单片机编程。

       系统开机后,首先切断主中断,然后启动芯片的内部 AD,初始化计时,初始化 LCD显示,初始化通讯模块,初始化完成,断路器开启。后循环进行 LCD显示、 AD变换、运算、按键扫描及处理、蜂鸣器警报等。如图所示的点光源的主要流程。

3.2 光照AD转换程序和计算程序设计

       通过ADC1的9个通道实时检测光照值,通过软件比较得出AD值最小的为光照照射位置,蜂鸣器发出响声,单片机驱动步进电机指向对应位置。

       STC15F2K61S2内置 AD转换器,因此可以直接采用内置 AD转换器。图为模数转换的内部方块图。

       AD转换共有九个输入通路,模拟控制器的切换通路,以及配置在ADC_CONTR寄存器的CHS2-CHS0选择通路本设计使用0-8频道。IAP15F2K61S2的 ADC分为逐次比较 ADC,而类比器和 DAC组成了连续比较 ADC。置位ADC_START比特能够开始 AD变换,当ADC_FLAG结束时,该软件将读取ADC_RES和ADC_RESL的切换结果寄存器的值。一次 AD变换。ADC在使用前必须进行初始化。图为 ADC的初始化流程。

图是AD转换和光照计算流程图。 

程序代码:

void task_compare_adc(void)

{

        if(adc_flag)

        {

                adc_flag = 0;

                compare_adc0_val();

                compare_adc1_val();

                compare_adc2_val();

                compare_adc3_val();

                compare_adc4_val();

                compare_adc5_val();

                compare_adc6_val();

                compare_adc7_val();

                compare_adc8_val();

                check_light();

        }

}

3.3 液晶显示驱动及显示程序设计

       LCD1602A采用HD44780 LCD芯片.HD44780内建有 DDRAM, CGROM, CGRAM.DDRAM是一种用于存储要被显示的字符编码的内存。80字节,其地址和屏幕的对应关系如下表地址和屏幕对应关系

显示位置

1

2

3

4

5

6

40

DDRAM

地址

第一行

00H

01H

02H

03H

04H

05H

27H

第二行

40H

41H

42H

43H

44H

45H

67H

1602 A的液晶第1排16位,地址为00H-0FH,第2排16位,地址为40H-4FH。

以下是一个屏幕清屏的命令,比如,表格的屏幕清理。

指令功能

RS

RW

D7

D6

D5

D3

D2

D1

D0

清屏

0

0

0

0

0

0

0

0

1

RS控制线用于识别指令与资料, RS在低时为控制指令, RS在高时为显示资料。屏幕清空是一个控制指令,因此 RS值很低。

RW是读写控制, RW低,是写 LCD模块,在 RW高时读取 LCD的数据。透明屏幕是写 LCD的,因此 RW值很低。

D7-D0是一条数据线,而屏幕上的数字是0x01。

常见的指令有0x06、0x04、0x04、0x38等。

与液晶显示器进行通讯,首先要具备写入和写入的功能,图是写LCD命令和数据流程图。

程序代码:

/***写命令***/

void cmd_w(uchar cmd)

{

          RW=0;

          RS=0;

          E=1;

          P2=cmd;

          delay(1);

          E=0;

}

1602A液晶模块显示前需要初始化,初始化主要是设置LCD的工作状态。图是LCD初始化流程。

LCD1602A初始化和其他程序代码:

/***初始化**/

void Lcd1602_init(void)

{

          cmd_w(0x38);

          cmd_w(0x0c);

          cmd_w(0x06);

          cmd_w(0x01);    

}

void put_display_ch(uchar _ch) //显示字符

{

        dat_w(_ch);

}

3.4 GSM模块程序设计

       由于采用了串行 AT指令对 GSM模块进行控制,因此 GSM的传输程序主要采用串行通讯编程。STC15F2K61S2具有两个串行接口,分别为UART1和UART2两种.1串行接口是为了进行软件的下载和模拟,因此这个设计采用了串行接口2和 GSM模块进行通讯。

       GSM通信中使用了串口 AT指令来实现 GSM系统的控制,所以在 GSM中,串行通信是 GSM中最常用的一种通信方式。STC15F2K61S2有两个串行接口,一个是UART1,一个是UART2,一个是用于软件的下载和仿真,所以该系统使用串行接口2和 GSM模块进行通信

串口初始化和通信代码:

#define BAUD      9600  //波特率

#define SYSTEMCLOCK  11059200L  //系统时钟频率

{

            AUXR &= (1<<3);//timer

            AUXR |= (1<<2);//fosc

            AUXR |= (1<<4);//TR2

            IE2 |= 1; //ES2 = 1

}

3.5 蜂鸣器驱动及报警程序设计

       当发生警报时,蜂鸣器会发出声音,P33单片机输出4 KHz的方波。P33引脚在不发出警报的情况下输出很低的电压。4 KHz方波的产生方式有两种,其中利用 PWM的单片机和定时反转 IO口电平。结果是相同的。该系统采用了定时器的倒计时模式。图是报警器的流程图。

四、系统调试测试与分析

4.1 调试方案

       本章节调试方案主要分为两个部分,第一部分为protues软件仿真调试,第二部分为实物硬件仿真器调试;第一部分中软件仿真调试使用protues完成,先在protues软件中搭建模拟硬件电路,由于部分外设在protues软件仿真中无法和实物相匹配,如点光源照射光敏电阻后单片机通过AD转换检测光照值,protues软件仿真设计中使用了3个滑动变阻器替代实物硬件中的9个光敏电阻,搭建完成后使用Keil4编程,并在工程中导出hex文件,然后在protues软件中双击单片机选择此hex文件烧录进去,最后点击运行通过控制滑动变阻器即可驱动步进电机模拟软件仿真点光源自动跟踪系统的设计;第二部分为实物仿真,在完成PCB板打样和焊接元器件后,实物和上位机连接仿真器,Keil4进入debug仿真调试状态,实物液晶显示屏显示initialization进入初始化状态,15秒后初始化状态结束进入正常工作状态,此时实物液晶显示屏显示光源位置,此时用点光源照射位于(0,1)的光敏电阻时,步进电机指针转向光源位置处,实物液晶显示屏显示x:0 y:1;用点光源照射位于(1/2,1)的光敏电阻时,步进电机指针转向光源位置处,实物液晶显示屏显示x:1/2 y:1。

4.2 电路仿真

电路的仿真使用了Proteus软件,Proteus是一款电路设计和模拟的软件。

上电初始化的仿真如图,显示initializing。

初始化完成后的仿真如图,显示初始位置(0,0) 

点光源照射在(1/2,1/2)处光敏电阻时,步进电机转动90°的仿真如图,显示位置(1/2,1/2)。 

点光源照射在(1,1) 处光敏电阻时,步进电机转动180°的仿真如图,显示位置(1,1)。

4.3 硬件电路焊接

       首先,用STC15F2K61S2,贴片电容,贴片电阻,贴片按键,贴片 MOS管等器件与电路板进行焊接,然后把直插电容,稳压集成电路, LED灯,插座,插针等直插元件焊到电路板上。实物如图所示。

4.3 系统调试

       通过 USB接口与计算机接口相连,将 HEX编译后的 HEX文件下载至 MCU。上电后,该芯片会自动执行该程序,而该程序则会在初始状态下开始工作。显示如图。

15秒初始化状态完成后,进入主机界面。显示如图。 

使用手机手电筒,光照射第七个光敏电阻进行测试。显示如图。 

使用手机手电筒,光照射第八个光敏电阻进行测试。显示如图。 

猜你喜欢

转载自blog.csdn.net/ccwaff/article/details/127981268