1. 项目背景
采用经纬度自动控制的开关灯系统是根据市场对多功能智能照明节能产品的需求提出的研究课题,借助于兆易创新GD32F350创新设计大赛活动,发挥Cortex-M4高性能内核的卓越动力,对已经储备的技术进行升级改造,对本项目进行完善开发。
据统计,我国照明用电占全国总发电量的10%左右,城市公共照明在我国照明耗电中约占30%的比例,每年开支高达数百亿元。
目前使用的路灯开关灯控制的,有一些是人工根据天亮天黑的情况进行控制,天黑时将路灯控制柜的开关合上,天亮时将路灯控制柜的开关断开,这种人工操作有时会导致路灯的开关不及时,造成不必要的电能浪费。
目前也有根据设定时间自动控制开关灯的控制器,但有时候会过早或过晚的开关灯,造成开关灯不及时,同时也会有不必要的电能浪费。例如:今年3月12日17时12分在一公园看到灯就都点亮了,此时太阳还好高,随意拍下一照片,如下图1所示。按照便民查询网-查询到当日南京日出日落时刻天亮天黑时间为日出06:18:49,日中12:14:36,日落18:10:22,天亮05:54:31,天黑18:34:41(见附录1)。按照日梭万年历查询到当日南京日出日落时刻天亮天黑时间为日出06:19:23,日落18:10:20,天亮05:55,天黑18:35(见附录2)。可以看出,在天黑前提前80多分钟就开了灯。
图1:公园灯亮20180312_1712
还有根据经纬度来确定开关灯时间的,但使用的是简单的平太阳时计算,误差比较大,有时误差相差达20分钟,因为真太阳日的长短是随季节而变化的,其变化主要受到两个因素的影响:一是由于黄赤交角(23°26′)的存在,即黄道面对于赤道面的倾斜,太阳在周年运动的同时,相对于天赤道往返运动,造成真太阳日长度的周年变化;二是由于地球的运行轨道为椭圆,日地距离的变化,地球公转的速度不等,造成太阳每日黄经差本身的周年变化。这两个因素同时作用并相互干扰,造成了真太阳日长短的变化。有的是在程序中给出开关灯时间表,每月变化一次或二次;有的是使用简单的近似计算,误差比较大,有时误差相差十分钟以上;也有利用单片机和用于存贮根据自然天文时计算出的每天开关灯时刻表,通过程序控制每天的开关灯时间的技术方案,但局限性非常大,存储器中只能存贮单一地点的开关灯时刻表,不能适应不同地点(经纬度不同)的开关灯实际需要,不同的地点必须在存储器中写入不同的时刻表,给产品生产带来不便,且产品的可移动性差。
此外,市场上也有单独采用光控的开关灯控制器,缺点是误差大,可重复性差,并且容易受干扰而误动作,更不具备对路灯进行智能监控的要求。
因此,自动准确地控制开关灯,有利于在保证照明的前提下节省电能。如进一步与有关智能照明节能产品配合,实现智能调光,其节能效果就会更加显著。
2. 产品简介
采用经纬度自动控制的开关灯系统,用GD32F350作为智能控制单元(简称控制器),具有经纬度时间控制、光控、人工控制、PC机控制等多种开关灯功能,可控制一个区域(一段路或一条路,一个城镇,一个公园,……)的灯具,可广泛用于路灯控制、城市亮化工程、霓虹灯控制。
本产品根据各地当地的经纬度,采用高精度的天文算法计算当地的日出日落及上中天时间,适合在国内任何地方使用,其内置的天文算法,计算的任何地点的天亮天黑时间十分准确。经数据抽样测试,与日梭万年历(V5.2beta)的计算值相比,实测在100年之内的最大误差不超过3秒,与国际上著名的天文软件SkyMap Pro(V10.0.4)相比较,其计算误差在一分钟之内(该软件只精确到分钟),与中国科学院紫金山天文台编写的历年中国天文年历相比较,其计算的日出日落时间和天亮天黑时间,最大误差在1分钟之内(实际上不同国家天文年历的计算结果也可相差一分钟)。
3. 产品的技术特征
3.1 采用自动开关灯控制。根据不同地点的经纬度,依据地球自转与公转的变化规律,利用天文算法自动精确计算当地的天亮天黑时间,自动修正每天的开灯与关灯时间,避免了靠人工修正和开关灯控制的麻烦。
3.2 各种控制参数设置灵活。可根据各地点或各种道路对照度的实际需要灵活方便地设置相关工作参数。
3.3 集成有人工强制开灯、光控开关灯、通过PC机控制开关灯等功能。
3.4 设定的工作参数保存在Flash中,在停电的情况下仍然不会丢失。
3.5 若与无线模块或其它通讯接口模块配合,可以方便地进行远程控制、集中控制,相关的工作参数可通过配套的应用软件直观地查看或配置。
3.6 可以设定人为定义的天亮天黑太阳高度角,也可以设定标准的天亮天黑的提前或推迟开关灯的时间。
3.7 可以向电脑输出若干天的开关灯时间或日出日落时间,让管理人员对开关灯时间做到心中有数。
3.8 具备完善的指示告警功能,有多种开关灯状态指示、时钟失效指示等。
4. 产品的创新性和先进性
采用经纬度自动控制的开关灯系统,根据天文算法计算与控制开关灯。该创新点在于计算天亮天黑的天文算法是高精度的算法,它是基于开普勒的行星运动三定律和牛顿的万有引力定律,在计算日出日落时间及天亮天黑的时间时还考虑了地轴进动(地轴绕黄轴的圆锥形运动,圆锥半径为23°26′,进动速度为每年50.29″,周期约为25800年)、大气折光作用(在近地平时最为明显,其值约为34′)、晨昏蒙影等因素,据此计算的任何地点的天亮天黑时间十分准确。经数据抽样测试,与日梭万年历的计算值相比,实测在100年之内的最大误差不超过3秒(见计算数据测试部分)。
各种工作参数均可由用户通过配套的计算机软件方便地查看或更改,并且设定的工作参数在停电的情况下仍然不会丢失。
5. 电路原理图
5.1 原理方框图
用GD32F350设计的经纬度自动控制的开关灯装置的原理方框图如下图2所示。
图2 经纬度自动控制的开关灯装置的原理方框图
5.2 电路原理图
用GD32F350设计的经纬度自动控制的开关灯装置的电路原理图如下图3所示。
图3 经纬度自动控制的开关灯装置的电路原理图
6. MCU内部模块使用情况
经纬度开关灯控制器结构示意图如下图4所示,其内部使用了GD32F350中的RTC、DMA、中断、USART、ADC、GPIO、定时器等模块。
图4 经纬度开关灯控制器结构示意图
7. MCU引脚分配及软件流程
7.1 主要引脚功能分配
本控制器使用GD32F350R8T6,主要引脚功能分配如下:
l PA0引脚:外接开关S1,人工优先控制LED灯,用于检修或维护;
l PA2引脚:串口USART1-TX,115200bps,8N1;
l PA3引脚:串口USART1-RX,115200bps,8N1;
l PB7引脚:外接按钮B3,输出开关灯时间前按下按下该按钮,计算的日期是按年递增,否则按日递增;
l PB8引脚:LED1,开灯时点亮;
l PB9引脚:LED2,光控开灯时点亮;
l PB10引脚:LED3,人工强制开灯时点亮;
l PB13引脚:开灯信号输出,高电平开灯,通过继电器驱动点亮LED灯;
l PC0引脚:(ADC通道10)检测VDD电压;
l PC1引脚:(ADC通道11)检测光敏电阻信号,作为照度值,辅助控制开关灯;
7.2 Keil MDK软件界面
本控制器使用的固件库为firmware for GD32F3x0 V1.0.0,调试时的软件界面如下图5所示:
图5 调试时的软件界面
7.3 MCU软件流程
MCU软件主要程序流程是:
l 初始化
Ø rcu_config();/* system clocksconfiguration */
Ø systick_config(); /* systick configuration */
Ø gpio_config();/* GPIO configuration*/
Ø nvic_config();/* NVIC configuration*/
Ø timer_config(); /* TIMER1 configuration */
/* 初始化LED、USART1 及按键 */
Ø gd_eval_led_init(LED1);//开灯时点亮;
Ø gd_eval_led_init(LED2);//光控开灯时点亮;
Ø gd_eval_led_init(LED3);//人工强制开灯时点亮;
Ø gd_eval_led_init(KD_OUT);//开灯信号输出,置1表示开灯,0表示关灯,
Ø nvic_irq_enable(USART1_IRQn, 0, 0);
Ø gd_eval_com_init(EVAL_COM1,115200);//USART1
Ø usart_interrupt_flag_clear(USART1,USART_INT_FLAG_IDLE);
Ø gd_eval_key_init(KEY_WAKEUP,KEY_MODE_GPIO);//PA0引脚,人工优先控制LED灯,用于检修或维护;
Ø EvbKeyConfigPoll();//外接按钮B3;
/* ADC configuration */
Ø adc_config();
Ø adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
Ø rcu_ckout_config(RCU_CKOUTSRC_CKSYS,RCU_CKOUT_DIV1);
/* enable PMU clock */
Ø rcu_periph_clock_enable(RCU_PMU);
/* enable the access of the RTCregisters */
Ø pmu_backup_write_enable();
Ø rtc_pre_config();
l 循环运行
Ø 检测人工开灯信号
Ø 检测按钮B3的状态
Ø ADC检测光照度信号
Ø 光电传感器ADC测量值转换为实际光照度值
Ø 确定光控开关灯标志,并给出指示
Ø 读出当前日期和时间
Ø 根据经纬度求当日的太阳升降位置时刻
Ø 计算开灯及关灯时间
Ø 根据当前时间及开关灯时间,确定时控开关灯信号
Ø 确定综合开灯状态
l DMA、USART1、Timer1中断处理
Ø 定时延时处理
Ø 若有PC机的命令,则处理命令
8. 配套的计算机软件
8.1 软件主界面说明
用GD32F350设计的经纬度自动控制的开关灯装置(简称控制器),其配套的计算机软件界面如下图6所示。
图6 PC机软件主界面
主要选项说明如下:
8.1.1 串口选择:选择连接到GD32F350控制器的串口。可通过“关闭/开启”按钮控制串口是否打开。
8.1.2 通信速率:选择连接到GD32F350控制器的串口的通信速率,可选4800bps,9600bps,57600bps,115200bps。
8.1.3 通信网络选择:可选串口、网络、GPRS无线网。
8.1.4 设备选择:计算机与控制器联机时选“时钟控制器”,计算机与GPS接收机联机时选“GPS接收机”。
8.1.5 GPS日期及时间:当GPS工作稳定并接收到正确的信号时,显示GPS的时间(北京时间)、接收机所在地的经度、纬度,以及当前GPS的状态(可用或不可用)。
8.1.6 校准电脑时间:当GPS可用时,可点击此按钮用GPS时钟校准电脑时间。
8.1.7 电脑日期及时间:显示计算机指示的当前日期及当前时间。双击此标识时将切换到输入日期及时间,可以手动输入日期入时间。
8.1.8 控制器日期及时间:计算机与控制器联机时,显示控制器中的当前日期及当前时间。
8.1.9 校控制器时间:计算机与控制器联机时,可点击此按钮用计算机时钟或手动输入的日期入时间校准控制器时间。
8.1.10 用GPS校准控制器经纬度:当GPS可用时,可点击此按钮用GPS指示的经纬度校准控制器中设定的经纬度。
8.1.11 参数查看与设定
l 设定值:用户需要设定的值
l 实际值:当计算机与控制器联机时,读出控制器中的实际存贮值;当软件与控制器未联机时,显示“未知”
l 经度:控制器所在地的经度,按“度:分”设定
l 纬度:控制器所在地的纬度,按“度:分”设定
l 天亮天黑太阳高度角:用于计算天亮和天黑时分的太阳高度值,用角度表示。当此值用0表示时,计算出的天亮天黑时刻表示日出日落时刻。太阳在地平线以上,高度角为正;太阳在地平线以下,高度角为负。通常设定为-6.0度。详细说明如下:
在日出之前(黎明)和日没以后(黄昏)的一段时间,天空仍然明亮,处于半光明状态。这段时间,既不是真正的白昼,也不是真正的黑夜,是昼夜交替的过渡时期,叫曙暮光。现代天文学称晨昏蒙影,即晨光和昏影的合称。二者的成因相同,都是高空大气对太阳光的反射和散射的结果。
晨光以日出为终止,存在一个晨光始的问题;昏影以日没起始,存在一个昏影终的问题。晨光始和昏影终,都以一定的太阳“低度”为标准。按不同的需要,晨昏蒙影分为三级:民用晨昏蒙影、航海晨昏蒙影和天文晨昏蒙影。它们的晨光始和昏影终的太阳“低度”标准,分别是6°,12°和18°。
——天气晴朗时,日轮中心自地平落入地平下6°的一段时间,曙暮光的强度,对正常的户外活动足够明亮,室内无需照明。这段时间称为民用晨昏蒙影。任何时候,全球约有5%的地方处于这种状态中。
——当太阳位于地平下6°~12°的期间,户外活动已嫌太暗,室内工作需要照明;天空中的亮星已经显现,但远方的地平线仍清晰可辨。这段时间是航海测星(测定天体的地平高度)最适宜的时机,故称航海晨昏蒙影。
——真正的黑夜来临(或结束),是太阳落入地平下18°时开始的。这时,肉眼可见的最暗淡的星开始显现,天空完全黑暗,天文晨昏蒙影告终。
l 开灯提前量:在控制器计算的天黑时刻需要提前开灯的分钟数。
l 关灯延迟量:在控制器计算的天亮时刻需要延迟关灯的分钟数。
l 节能延迟时间:开灯后延迟给出节能信号的分钟数。
l 节能提前时间:关灯时刻提前关闭节能信号的分钟数。
l 开灯时间:根据天亮天黑太阳高度角和开灯提前量计算出的开灯时间,不同地点不同日期的时间都不相同,用“时:分”表示。
l 关灯时间:根据天亮天黑太阳高度角和关灯延迟量计算出的关灯时间,不同地点不同日期的时间都不相同,用“时:分”表示。
写入控制器:将设定值写入控制器永久保存,不怕掉电。当点击此按钮时,提示如下:
写入全部参数选“是”,不写入经纬度选“否”,“取消”则全部不写入,取消本次操作。
8.1.12 监测开关:当计算机与控制器联机时,当点击此按钮时,可使计算机与控制器联机或脱机。
8.1.13 工作状态指示:控制器的工作状态指示,有下列指示:
l 联机:计算机与GPS接收机或控制器联机时,此指示灯闪烁
l 自动:此灯指示在自动工作状态
l 时控开灯:当通过经纬度及设定的相关参数计算在开灯时间内,此灯亮
l 光控开灯:根据光控信号确定的开灯状态时,此灯亮
l 故障:当控制器检测到故障时,此灯亮
8.1.14 窗口控制:
当点击此按钮时,弹出窗口控制界面,再点击相应的按钮(网络参数配置、GPRS无线网络、计算开关灯时间、读各路开关灯时间、读管理员手机号码、开启调试器、查看工作参数、设定产品标识、修正时钟准确度),可打开相应的配置界面。
8.2 开关灯时间查看
计算开关灯时间,是让控制器输出若干天的开关灯时间,按如下步骤操作:
8.2.1 点击窗口控制,弹出如下图7所示的界面:
图7 PC机软件各窗口控制界面
8.2.2 再点击计算开关灯时间,在弹出的窗口中填写需要读出开关灯时间的天数,然后点击计算并读出开关灯时间按钮,即可读出相关的数据,控制器从当前日期按日递增输出每天的开灯时间和关灯时间,结果均四舍五入精确到分,如图8所示:
图8a 开关灯时间输出显示界面
图8b 开关灯时间输出显示界面
8.2.3 若在点击计算并读出开关灯时间按钮之前按下GD32F350开发板中的B3按键,则从当前日期按年递增输出每天的日出时间、日落时间、昼长、上中天时间,均精确到秒,如下图9所示:
图9a 日出日落时间输出显示界面
图9b 日出日落时间输出显示界面
9. 计算数据测试
用GD32F350设计的经纬度自动控制的开关灯装置,与日梭万年历V5.2的计算值相比,经数据抽样测试,实测在100年之内的最大误差不超过3秒,如下表1、表2所示。
表1:日出日落时间与日梭万年历V5.2时间对照表南京: 经度:118°46′纬度:32°3′
误差A=日出-(日梭)日出 误差B=日落-(日梭)日落 误差C=上中天-(日梭)上中天
表2:经纬度开关灯控制器与日梭万年历V5.2时间对照表 南京:经度:118.766700,纬度:32.050000
误差1=开灯-(日梭)天黑 误差2=关灯-(日梭)天亮 误差3=上中天-(日梭)上中天
10. 演示视频
视频1:天文算法开关灯调试
视频2:天文算法开关灯软件操作
附录1:便民查询网-南京日出日落时刻天亮天黑时间