任务7-2 太阳能自动追光系统的设计与实现_第1页
任务7-2 太阳能自动追光系统的设计与实现_第2页
任务7-2 太阳能自动追光系统的设计与实现_第3页
任务7-2 太阳能自动追光系统的设计与实现_第4页
任务7-2 太阳能自动追光系统的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32EMBEDDEDTECHNOLOGYSTM32嵌入式技术及应用任务7-2太阳能自动追光系统的设计与实现项目七

太阳能自动追光系统的设计与实现双轴追光控制智能能源管理绿色低碳设计CONTENTS目录01任务目标了解太阳能自动追光系统的功能需求与设计目标,掌握双轴逐日系统的核心功能02知识储备掌握步进电机驱动原理、ULN2803驱动电路、光敏传感器采集技术等核心技术03任务实施完成系统总体设计、硬件电路设计、软件程序编写与功能实现04整机联调系统硬件验证、软件调试、性能测试与优化,确保系统稳定运行05任务总结回顾核心知识点、技能提升要点,践行绿色低碳设计理念06提升训练与评价巩固知识、提升技能、评价反馈,实现知识的深化与拓展建议课时:8学时难度等级:高级01CHAPTERONE任务目标了解太阳能自动追光系统的功能需求与设计目标,掌握双轴逐日系统的核心功能与实现方法TASKOBJECTIVES任务目标核心任务设计一个基于STM32微控制器的太阳能双轴逐日系统,具备手动和自动两种工作模式,可实时获取电池电压、电量及光敏传感器数据,通过精确控制两个轴(水平和垂直)的旋转,使太阳能电池板能实时跟踪太阳的位置。手动模式用户通过按键控制系统,实现四个方向的转动控制,灵活调整太阳能电池板角度自动模式系统根据光敏传感器数据自动追踪太阳位置,实现智能化、自动化的太阳能追踪功能设计目标最大化太阳能的采集效率,实现智能化、自动化的太阳能追踪功能,提高太阳能转化效率,减少能源浪费,降低碳排放,符合绿色低碳的发展要求。双轴追光系统水平+垂直双轴控制学习成果掌握步进电机驱动控制技术理解光敏传感器采集原理实现多模块协同工作系统培养绿色低碳设计理念02CHAPTERTWO知识储备掌握步进电机驱动与光敏传感器采集的核心技术,为系统设计与实现奠定理论基础KNOWLEDGERESERVE步进电机及其驱动电路28BYJ-48步进电机直径28mm工作电压5V步进角度5.625°/64减速比1/64角度与脉冲计算公式pulse=(angle/5.625)×64示例:让电机转一圈(360°),需要的脉冲数为(360/5.625)×64=4096个脉冲电机特点4相5线步进电机,结构简单,控制方便,适合精确角度控制应用。通过控制脉冲数量和频率,可实现精确的位置和速度控制。步进电机实物28BYJ-484相5线步进电机技术参数表参数数值型号28BYJ-48相数4相线数5线步距角5.625°减速比1:64KNOWLEDGERESERVEULN2803驱动电路ULN2803驱动芯片由于微处理器的驱动能力弱,选择ULN2803来驱动步进电机。ULN2803通过接收STM32的控制信号(脉冲序列和方向信号),经过内部达林顿对的放大后,输出到步进电机的绕组上。输入STM32信号处理达林顿放大输出电机绕组工作原理通过控制输入信号的顺序和持续时间,可以精确地控制步进电机的转动角度和速度。ULN2803内部包含8个达林顿管,可同时驱动多个负载,具有高电流驱动能力和内置续流二极管。驱动优势高电流驱动能力(单路可达500mA)内置续流二极管,保护电路兼容TTL/CMOS电平输入ULN2803驱动芯片控制IO对应表步进电机1步进电机2UNL2803STM32UNL2803STM32IN1PB15IN1PA11IN2PB14IN2PA10IN3PB13IN3PA9IN4PB12IN4PA8步进电机1控制垂直方向,步进电机2控制水平方向KNOWLEDGERESERVE步进电机驱动方式-单四拍单四拍驱动方式这是步进电机的一种简单驱动方式,每个时刻仅一线圈通电以节能,但切换时转子无电磁力支撑,易振动和失步。优点•功耗低,节能•控制简单•电路成本低缺点•转矩较小•易振动失步•运行不平稳应用场景适用于对转矩要求不高、低速运行的场合,如小型仪器仪表、玩具等。在对精度和稳定性要求较高的应用中,建议使用双四拍或八拍模式。控制原理按照A→B→C→D的顺序依次给各相绕组通电,每切换一次,转子转动一个步距角(5.625°)。反转时按相反顺序D→C→B→A通电。单四拍步序表正转步序绕组A绕组B绕组C绕组D反转→11000←→20100←→30010←→40001←说明:1表示STM32对应引脚输出高电平,0表示低电平循环:按1→2→3→4→1顺序循环执行KNOWLEDGERESERVE步进电机驱动方式-双四拍双四拍驱动方式这种步进电机驱动方式转矩大、振动小,因切换时至少一线圈持续通电,比单四拍更平稳且不易失步。优点•转矩大,驱动力强•振动小,运行平稳•不易失步,可靠性高缺点•功耗相对较高•发热量较大•控制略复杂应用场景适用于对转矩和稳定性要求较高的场合,如精密仪器、自动化设备等。双四拍模式在保持较高转矩的同时,提供了比单四拍更平稳的运行特性。控制原理按照AB→BC→CD→DA的顺序给相邻两相绕组同时通电,每切换一次,转子转动一个步距角。由于始终有两相通电,转矩更大,运行更平稳。双四拍步序表正转步序绕组A绕组B绕组C绕组D反转→11100←→20110←→30011←→41001←说明:1表示高电平,0表示低电平。相邻两相同时通电。循环:按1→2→3→4→1顺序循环执行KNOWLEDGERESERVE步进电机驱动方式-八拍八拍驱动方式★推荐结合单四拍和双四拍两种驱动,采用交替进行的方式,步进电机接收每个励磁信号后会前进半个步距角。这种方法提供了高分辨率和平滑的运转,在实际应用中最常见。本任务选用该驱动方式八拍模式兼顾了转矩、平稳性和精度,是综合性能最优的驱动方式。优点✓分辨率提高一倍✓运转平滑无振动✓转矩适中✓精度高性能对比•精度:八拍>双四拍>单四拍•平稳性:八拍>双四拍>单四拍•转矩:双四拍>八拍>单四拍•功耗:双四拍>八拍>单四拍控制原理按照A→AB→B→BC→C→CD→D→DA的顺序交替通电,每步转动半个步距角(2.8125°),实现更精细的角度控制和更平滑的运动。八拍步序表正转步序ABCD反转→11000←→21100←→30100←→40110←→50010←→60011←→70001←→81001←特点:每步前进半个步距角,分辨率提高一倍,运转更平滑KNOWLEDGERESERVE光敏电阻及采集电路光敏电阻(LDR)光敏电阻,亦称光依赖电阻(LDR),主要采用硫化镉等材料制成。这些材料在特定波长光照下,阻值会迅速减小,因为光照激发的载流子参与导电,并在外加电场作用下发生漂移运动。光照特性•光照↑→阻值↓•光照↓→阻值↑•响应速度快应用优势•成本低•灵敏度高•光谱响应宽采集电路设计将四个光敏电阻分布在太阳能板的四个边缘,通过下级电路采集四个边缘的光照强度判断出太阳的行踪轨迹,驱动电机完成对角度的调节。当采集到四个边缘的光照强度相等,表明板面与日光的照射角度垂直,将停止角度的调节。保护设计光敏电阻串联了一个分压电阻,不仅实现了光敏电阻的分压功能,还起到了保护光敏电阻的作用,防止过流损坏。光敏电阻实物硫化镉光敏电阻光敏采集电路分压电路设计传感器布局左上:LDR1右上:LDR2左下:LDR3右下:LDR403CHAPTERTHREE任务实施完成系统的总体设计、硬件设计与软件编程,实现太阳能自动追光系统的完整功能TASKIMPLEMENTATION系统总体设计系统架构系统以STM32F103最小系统板为核心,结合多种功能模块,实现太阳能的高效采集与利用,同时具备灵活的交互和控制功能。核心控制STM32F103执行机构双轴步进电机传感检测4路光敏电阻人机交互OLED+按键光照检测模块负责检测环境中的光照强度,用于感知太阳的位置和光照强度的变化STM32控制器整个系统的控制中心,接收光照信号,进行数据处理和决策执行机构步进电机和驱动模块构成执行机构,调整太阳能电池板方向显示模块OLED显示模块显示系统状态信息,如光照强度和电池电量系统总体框图模块化设计架构工作流程1光照检测模块感知太阳位置变化2STM32接收信号并进行数据处理3控制步进电机按预定角度旋转4调整太阳能电池板方向对准太阳HARDWAREDESIGN硬件设计-单片机最小系统STM32F103C8T6单片机最小系统板是整个系统的核心,负责处理各种传感器数据、控制步进电机的转动以及显示相关信息。本系统采用STM32F103C8T6单片机,其高性能、低功耗的特点非常适合此类应用。内核ARMCortex-M3主频72MHzFlash64KB高性能72MHz主频,强大的运算能力,可快速处理传感器数据和电机控制算法低功耗多种低功耗模式,适合电池供电系统,延长系统工作时间外设接口最小系统板提供丰富的外设接口,包括GPIO、ADC、定时器、I²C、SPI等,方便连接各种传感器和执行器件。STM32F103最小系统核心控制单元主要外设连接1光敏传感器4路ADC采集2步进电机8路GPIO控制3OLED显示I²C通信4按键输入5路GPIO输入HARDWAREDESIGN硬件设计-电源管理模块太阳能电池板规格5V/200mA尺寸110×80mm类型单晶硅项目中选用5V/200mA110×80mm的单晶硅太阳能电池板。由于输出5V电压不稳定,经自动升降压芯片U3稳压为系统提供电源或经充电管理芯片TP4056为锂电池充电。锂电池储能锂电池具有较高的能量密度和较长的使用寿命,在存储和释放电能的过程中,相较于其他一些储能方式,对环境的影响更小。通过合理的充电管理,确保锂电池的高效充电和安全使用。绿色低碳理念能进一步提高太阳能的存储和利用效率,减少能源损耗,符合绿色低碳的发展要求。太阳能是可再生能源,使用太阳能供电系统可减少碳排放。太阳能供电系统单晶硅太阳能电池板电源管理流程太阳能板5V/200mA输出TP4056充电管理芯片锂电池3.7V储能HARDWAREDESIGN硬件设计-稳压与外部供电电压转换系统升降压模块U4把锂电池3.7V电压转换为系统所需的+3.3V和5V电压。利用RT9013-33G芯片用于将电压转换为+3.3V,满足单片机最小系统板等部分电路的供电需求。+3.3V输出•芯片:RT9013-33G•用途:单片机供电•电流:500mA+5V输出•来源:锂电池升压•用途:电机驱动•电流:1A外部供电接口除了由锂电池升压得到5V电压外,还设有"USB/5V"接口P2,可直接接入外部5V电源,为系统供电或给锂电池充电,增加供电的灵活性。保护设计稳压电路包含过流保护、过压保护和短路保护,确保系统在各种工作条件下的安全性和稳定性。电压转换流程输入3.7V锂电池储能单元转换U4升降压模块电压转换输出3.3V单片机输出5V电机驱动供电方式太阳能供电锂电池供电USB外部供电混合供电HARDWAREDESIGN硬件设计-人机交互电路按键输入模块按键电路设置了5个独立按键KEY1~KEY5,作为功能的选择控制按键,其功能为四个方向的转动控制,以及手动和自动模式的切换按键。KEY1上KEY2下KEY3左KEY4右KEY5模式OLED显示模块液晶显示采用0.96寸OLED屏,其通过I²C与STM32进行数据传输,用于显示系统的各种信息,如工作状态、光敏采集数据等。尺寸0.96英寸通信I²C分辨率128×640.96寸OLED显示屏I²C通信接口显示内容光照强度4路光敏传感器数据电池电量锂电池电压和百分比工作状态手动/自动模式指示角度信息水平和垂直角度SOFTWAREDESIGN软件设计-系统主程序主程序设计目标本项目的主要设计目标是实现对双轴追光系统的精确转动控制,该系统通过步进电机作为执行机构,分别控制两台步进电机的正反转来调节角度。为了检测日光的轨迹,系统采用了四个光敏电阻,通过比较这四个方向上的分压值(U1-U4)来做出主要判断。核心功能•双轴角度控制•光照数据采集•自动追光算法•手动控制模式设计特点•模块化程序结构•状态机控制逻辑•中断驱动电机•实时数据处理程序执行流程在主程序的设计中,系统开机后会首先进行初始化操作。初始化完成后,调用主程序来驱动外围器件。主程序的主要功能包括驱动液晶显示、检测模式选择按键的状态。如果模式选择自动按键被按下,系统将执行自动追光程序。工作模式自动模式根据光敏传感器数据自动追踪太阳位置手动模式根据用户按键输入控制步进电机转动程序架构1系统初始化GPIO、ADC、定时器、I²C2主循环显示更新、按键检测自动模式追光算法手动模式按键控制设计优势✓精准控制太阳能电池板角度✓始终与太阳光线保持最佳角度✓最大化接收太阳能,提高转化效率✓减少能源浪费,降低碳排放✓提供手动控制功能,增加灵活性SOFTWAREDESIGN软件设计-主流程图流程说明系统开机后首先进行初始化操作初始化完成后进入主程序循环实时更新OLED显示内容检测模式选择按键状态根据模式执行相应程序自动追光逻辑在自动追光程序中,系统会判断四个光敏电阻的分压值,根据判断结果执行相应的角度调整动作。当四个方向的采集值相等时,表明电池板与日光垂直,停止调节。手动控制逻辑在手动模式下,系统根据用户通过按键输入的选择来控制步进电机的转动,实现四个方向的精确控制。SOFTWAREDESIGN软件设计-电机驱动程序电机驱动设计本设计中采用两个步进电机作为主要的执行元器件,其步进电机只具备两个方向的转动,所以对于本设计的执行机构的转动情况只有四种形式,将其两个电机的正反转分为四个程序框架分别执行,最终实现本设计的自动追光系统。电机1向上转电机1向下转电机2向左转电机2向右转定时器中断驱动电机驱动采用定时器中断方式,通过TIM2定时器产生固定频率的中断,在中断服务程序中控制步进电机的通电相序,实现精确的转速和角度控制。绿色低碳设计选择八拍工作模式驱动步进电机,提供高分辨率和平滑的运转。平滑运转的电机能够更精准地调整太阳能电池板的角度,避免因电机运转不稳定导致的电池板调整过度或不足,从而减少不必要的能量消耗。驱动流程图电机控制变量Up_down垂直方向0:停止,1:向上,2:向下Left_right水平方向0:停止,1:向右,2:向左index1/index2状态索引记录电机当前通电相序CODEIMPLEMENTATION电机驱动代码-宏定义电机控制宏定义/*

电机控制相关宏定义

*/#define_4_BEATS0//

四拍工作模式#define_8_BEATS1//

八拍工作模式#defineMOTOR_MODE_8_BEATS//

选择八拍模式/*

步进电机单四拍信号宏定义

*/#defineCoil_4B_A1

{A1=1;B1=0;C1=0;D1=0;}

//

A相通电#defineCoil_4B_B1

{A1=0;B1=1;C1=0;D1=0;}

//

B相通电#defineCoil_4B_C1

{A1=0;B1=0;C1=1;D1=0;}

//

C相通电#defineCoil_4B_D1

{A1=0;B1=0;C1=0;D1=1;}

//

D相通电/*

步进电机四相八拍信号宏定义

*/#defineCoil_8B_A1

{A1=1;B1=0;C1=0;D1=0;}

//

A#defineCoil_8B_AB1

{A1=1;B1=1;C1=0;D1=0;}

//

AB#defineCoil_8B_B1

{A1=0;B1=1;C1=0;D1=0;}

//

B#defineCoil_8B_BC1

{A1=0;B1=1;C1=1;D1=0;}

//

BC#defineCoil_8B_C1

{A1=0;B1=0;C1=1;D1=0;}

//

C#defineCoil_8B_CD1

{A1=0;B1=0;C1=1;D1=1;}

//

CD#defineCoil_8B_D1

{A1=0;B1=0;C1=0;D1=1;}

//

D#defineCoil_8B_DA1

{A1=1;B1=0;C1=0;D1=1;}

//

DA/*

电机2的八拍宏定义(水平方向)

*/#defineCoil_8B_A2

{A2=1;B2=0;C2=0;D2=0;}

//

A2#defineCoil_8B_AB2

{A2=1;B2=1;C2=0;D2=0;}

//

A2B2/*

...

电机2其他相序宏定义

...

*/代码说明MOTOR_MODE:定义电机工作模式,本任务使用八拍模式Coil_4B_x1:单四拍模式各相通电宏定义Coil_8B_x1:八拍模式各相通电宏定义Coil_8B_x2:电机2(水平方向)宏定义变量定义unsignedcharUp_down垂直电机控制:0停止,1上,2下unsignedcharLeft_right水平电机控制:0停止,1右,2左staticu8index1/index2记录电机当前通电相序CODEIMPLEMENTATION电机驱动代码-定时器中断定时器2中断服务程序/*

定时器2中断服务程序

*/voidTIM2_IRQHandler(void){

//

检查TIM2更新中断if

(TIM_GetITStatus(TIM2,

TIM_IT_Update)

!=

RESET)

{

TIM_ClearITPendingBit(TIM2,

TIM_IT_Update);

//

清除标志//

判断电机运行状态if

(Up_down

!=

0

||

Left_right

!=

0)

{

stateFlag

=

1;

timeCount

=

0;

}

else

{

stateFlag

=

0;

}

/*

控制垂直方向电机

*/if

(Up_down

==

1)

//

向上转动

{

#if

(MOTOR_MODE

==

_8_BEATS)

switch

(index1)

{

case0:

Coil_8B_A1;

break;

case1:

Coil_8B_AB1;

break;

case2:

Coil_8B_B1;

break;

case3:

Coil_8B_BC1;

break;

/*

...

其他case

...

*/

}

index1++;

if

(index1

==

8)

index1

=

0;

#endif

}

else

if

(Up_down

==

2)

//

向下转动

{

//

反向通电序列

}

else

{

Coil_OFF1;

//

停止电机1

}

/*

控制水平方向电机(类似逻辑)

*///

...

}}代码说明1中断检测:检测TIM2更新中断,清除中断标志位2状态判断:通过Up_down和Left_right判断电机运行状态3电机控制:根据方向和模式选择通电相序4索引更新:更新index并循环,实现连续转动控制逻辑•Up_down=1:电机1向上转动•Up_down=2:电机1向下转动•Left_right=1:电机2向右转动•Left_right=2:电机2向左转动•=0:停止对应电机八拍模式优势提供高分辨率和平滑运转,能够更精准地调整太阳能电池板的角度,降低电机能耗,符合绿色低碳设计原则。SOFTWAREDESIGN软件设计-AD转换采集程序ADC采集系统本项目共涉及到四个光敏电阻的电压采集,其四路模拟量的输入,经过ADC转换芯片后在STM32内部进行电压的比较,经过内部程序的判断完成对执行电机的驱动。采集通道•通道6:光敏电阻1•通道7:光敏电阻2•通道8:光敏电阻3•通道9:光敏电阻4处理流程•ADC初始化配置•读取ADC原始值•中位值平均滤波•转换为百分比ADC初始化配置ADC参数,包括通道选择、转换模式、触发方式等读取ADC值配置指定通道,启动转换,等待完成后读取结果滤波处理中位值平均滤波,消除脉冲干扰,提高数据稳定性滤波算法优势中位值平均滤波法结合了中位值滤波与算术平均滤波的优点,通过连续采集N个数据,去除一个最大值和一个最小值后,计算剩余N-2个数据的平均值。该方法能有效消除脉冲干扰,抑制周期性噪声。ADC采集流程1ADC初始化配置时钟、GPIO、ADC参数2启动转换软件触发ADC转换3读取数据等待转换完成,读取结果4滤波处理中位值平均滤波采集参数分辨率:12位采样时间:55.5周期滤波次数:500次输出范围:0-99%CODEIMPLEMENTATIONAD转换代码-ADC初始化ADC初始化函数VoidAdc_Init(void){

ADC_InitTypeDef

ADC_InitStructure;

GPIO_InitTypeDef

GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB

|

RCC_APB2Periph_GPIOA

|

RCC_APB2Periph_ADC1,

ENABLE);

//

使能ADC1通道时钟

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,

ENABLE);

//

配置JTAG引脚为普通IO

RCC

_ADCCLKConfig(RCC_PCLK2_Div6);

//设置ADC分频因子6:

72M/6=12M

//

配置GPIOB引脚为模拟输入

GPIO_InitStructure.GPIO_Pin

=

GPIO_Pin_1

|

GPIO_Pin_0

|

GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode

=

GPIO_Mode_AIN;

GPIO_Init(GPIOB,

&GPIO_InitStructure);

//

配置GPIOA引脚为模拟输入

GPIO_InitStructure.GPIO_Pin

=

GPIO_Pin_7

|

GPIO_Pin_6;

GPIO_Init(GPIOA,

&GPIO_InitStructure);

ADC_DeInit(ADC1);

//

复位ADC1

//

配置ADC参数

ADC_InitStructure.ADC_Mode

=

ADC_Mode_Independent;

//

独立模式

ADC_InitStructure.ADC_ScanConvMode

=

DISABLE;

//

单通道

ADC_InitStructure.ADC_ContinuousConvMode

=

DISABLE;

//

单次转换

ADC_InitStructure.ADC_ExternalTrigConv

=

ADC_ExternalTrigConv_None;

//

软件触发

ADC_InitStructure.ADC_DataAlign

=

ADC_DataAlign_Right;

//

右对齐

ADC_InitStructure.ADC_NbrOfChannel

=

1;

//

1个通道

ADC_Init(ADC1,

&ADC_InitStructure);

ADC_Cmd(ADC1,

ENABLE);//

使能ADC1

ADC_ResetCalibration(ADC1);//

复位校准

while(ADC_GetResetCalibrationStatus(ADC1));

//

开始校准ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));}配置说明时钟使能:开启GPIOA、GPIOB和ADC1时钟引脚配置:设置为模拟输入模式(AIN)ADC分频:72MHz/6=12MHz,不超过14MHz工作模式:独立模式,单通道,单次转换数据对齐:右对齐,方便数据处理校准:复位校准后启动校准GPIO配置GPIOB3个通道PB0,PB1,PB5GPIOA2个通道PA6,PA7模式设置GPIO_Mode_AIN(模拟输入)CODEIMPLEMENTATIONAD转换代码-读取ADC值与滤波读取ADC值函数U16Get_Adc(u8

ch){

//

设置规则组通道

ADC_RegularChannelConfig(ADC1,

ch,

1,

ADC_SampleTime_55Cycles5);

//

启动软件转换ADC_SoftwareStartConvCmd(ADC1,

ENABLE);

//

等待转换完成while(!ADC_GetFlagStatus(ADC1,

ADC_FLAG_EOC));

//

返回转换结果returnADC_GetConversionValue(ADC1);}中位值平均滤波函数#defineN500//

采样次数u16Get_Adc_filter(u8

ch){

u16

filter_buf[N];

u32

filter_sum

=

0;

u16

i,

max_idx

=

0,

min_idx

=

0;

for

(i

=

0;

i

<

N;

i++)

{

//

连续采样N次

filter_buf[i]

=

Get_Adc(ch);

delay_ms(5);

}

//

找出最大值和最小值索引

for

(i

=

1;

i

<

N;

i++)

{

if

(filter_buf[i]

>

filter_buf[max_idx])

max_idx

=

i;

if

(filter_buf[i]

<

filter_buf[min_idx])

min_idx

=

i;

}

for

(i

=

0;

i

<

N;

i++)

{//

计算N-2个数据的平均值

if

(i

!=

max_idx

&&

i

!=

min_idx)

filter_sum

+=

filter_buf[i];

}

return

(u16)(filter_sum

/

(N

-

2));}Get_Adc函数1配置指定ADC通道和采样时间2启动ADC软件转换3等待转换完成标志EOC4读取并返回转换结果滤波算法说明采样次数:N=500次去极值:去除1个最大值和1个最小值计算平均:剩余498个数据求平均优势:消除脉冲干扰,抑制噪声适用:高频振荡系统算法优势中位值平均滤波结合了中位值滤波和算术平均滤波的优点,能有效消除偶然的脉冲干扰,同时对周期性噪声也有良好的抑制作用。CODEIMPLEMENTATIONAD转换代码-主程序应用数据采集与显示函数voidGetDataByADC(void){

u16

adc1,

adc2,

adc3,

adc4;

//

读取通道7(光敏电阻1)

adc2

=

Get_Adc_filter(ADC_Channel_7);

light1

=

adc2

*

99

/

4096;

//

转百分比

light1

=

light1

>=

99

?

99

:

light1;

//

读取通道6(光敏电阻2)

adc1

=

Get_Adc_filter(ADC_Channel_6);

light2

=

adc1

*

99

/

4096;

light2

=

light2

>=

99

?

99

:

light2;

//

读取通道8(光敏电阻3)

adc3

=

Get_Adc_filter(ADC_Channel_8);

light3

=

adc3

*

99

/

4096;

light3

=

light3

>=

99

?

99

:

light3;

//

读取通道9(光敏电阻4)

adc4

=

Get_Adc_filter(ADC_Channel_9);

light4

=

adc4

*

99

/

4096;

light4

=

light4

>=

99

?

99

:

light4;

//

在OLED上显示数据sprintf(displayBuf,

":%02d",

light2);

OLED_ShowStr(16,

2,

(unsigned

char

*)displayBuf,

2);

sprintf(displayBuf,

":%02d",

light1);

OLED_ShowStr(87,

2,

(unsigned

char

*)displayBuf,

2);

//

...

显示其他通道数据}函数说明读取4个通道的ADC值将12位ADC值(0-4095)转换为百分比(0-99)限制最大值为99%通过OLED显示各通道数据传感器布局LDR1通道7light1LDR2通道6light2LDR3通道8light3LDR4通道9light4OLED显示使用sprintf格式化数据,OLED_ShowStr函数在指定位置显示字符串,字号为2,清晰显示各方向光照强度。04CHAPTERFOUR整机联调完成系统硬件验证、软件调试与性能优化,确保系统能够高效、准确地追踪太阳SYSTEMDEBUGGING整机联调-联调准备联调目的整机联调目的是验证系统硬件设计的正确性、软件功能的完整性以及软硬件协同工作的稳定性。通过整机联调,可以及时发现并解决系统中存在的问题,确保系统能够按照设计要求高效、准确地追踪太阳,最大化太阳能的采集效率。硬件检查确保所有硬件组件已正确安装检查连接线路无误电源管理模块工作正常软件烧录编译软件代码无错误通过ISP下载到STM32确保软件正常运行测试环境户外或模拟光照环境搭建测试平台确保光照检测准确测试工具万用表测电压电流示波器监测信号实时监测系统参数联调准备清单1硬件检查组件安装、线路连接2软件烧录ISP下载、程序验证3环境搭建光照条件、测试平台4工具准备万用表、示波器联调目标✓验证硬件设计正确性✓验证软件功能完整性✓确保软硬件协同稳定✓及时发现并解决问题✓最大化太阳能采集效率SYSTEMDEBUGGING整机联调-联调步骤1系统启动与初始化测试上电启动系统,观察OLED显示屏是否能够正常显示初始化信息检查STM32F103微控制器是否能够正确接收光照检测模块的信号,并进行数据处理2手动模式测试通过按键输入模块,切换系统至手动模式操作按键控制步进电机的转动,观察太阳能电池板是否能够按照预定方向进行调整3自动模式测试切换系统至自动模式,观察光照检测模块是否能够实时感知太阳位置的变化记录步进电机的转动角度和速度,验证系统是否能够准确追踪太阳的位置在不同光照条件下进行测试,确保系统能够稳定工作4异常处理与保护机制测试模拟系统异常情况,如电池电压过低、光照强度异常等,观察系统是否能够正确响应并采取相应的保护措施。5性能测试与优化测量系统在不同光照条件下的采集效率,与理论值进行对比分析根据测试结果对软硬件进行优化调整,提高系统的稳定性和采集效率测试要点功能完整性验证控制精度测试稳定性测试异常处理测试SYSTEMDEBUGGING整机联调-效果展示与注意事项联调效果展示太阳能自动追光系统实物演示联调成果所有功能调试通过后,基本实现了太阳能自动追光系统的功能。系统能够准确追踪太阳位置,实时调整太阳能电池板角度,最大化太阳能采集效率。OLED显示模块清晰显示系统状态,按键操作响应灵敏,整体系统运行稳定可靠。联调注意事项安全第一确保测试环境的安全性,避免发生触电、短路等事故。在连接电路和调试过程中,注意用电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论