单片机/MCU论坛
直播中

松山归人

10年用户 4193经验值
擅长:可编程逻辑,RF/无线
私信 关注
[讨论]

【大四生实习日记】毕设记载《基于单片机的太阳能光伏双轴追光系统设计》

` 本帖最后由 松山归人 于 2021-2-24 13:26 编辑

  大家好!我是一名大四学生LiY,我在张飞实战电子实习,从今天开始着手做毕业设计,确定题目为《基于单片机的太阳能光伏双轴追光系统设计》,今后的一段时间,直到答辩结束,我会将我每天的进度、遇到的问题、用什么方法解决等,分享给大家,希望大家可以一起见证整个过程,一起讨论问题。同时也欢迎大家指正!

2021221日 Day 1

预想功能:

1、太阳能板采集光能转化为电能;
2、两路步进电机驱动电路,两个步进电机形成两个自由度,实现上下翻滚和左右转动;
3、包括自动模式和手动模式。
4、彩屏显示电池容量和电机转动角度。

` 摄像框架 图5.png 图6.png 图1.png 图2.png 图3.png 图4.png 附图1 图4 图片3.png 图片1.png 图片2.png 图2 图3 1.2.png 2.1.png 2.2.png 2.3.png 2.png 3.png 1.1.png 1.png 图片2.png 图片1.png 图1 项目记录 项目记录 2.23.png 附图3 附图2

回帖(12)

松山归人

2021-2-24 13:27:48
本帖最后由 松山归人 于 2021-2-24 13:42 编辑

2021年2月22日 Day2

大家好,今天是我在张飞实战电子的第二天,也是毕设开始的第二天,经过讨论,我找到了几个首先要考虑的问题。
问题1:怎么能让太阳能板跟着太阳转?
解决方案:经过查找资料和调研,需要用到的器件为光敏电阻,利用光敏电阻工作原理传输信号给单片机,单片机分析光照强度,将指令传输给步进电机,步进电机按照指令做出相应动作。(光敏电阻:入射光强,电阻减小,入射光弱,电阻增大)
问题2:当太阳光照射到光敏电阻时,怎么使太阳能板转动到合适的位置,使其正对着太阳?
解决方案:经过初步分析,问题的关键在于光敏电阻的位置,我计划使用四个光敏电阻 ,焊接在电路板的四个方向,如下图所示,当电路板正对着太阳时,各个方位光敏电阻阻值相同;当电路板没有正对着太阳,对着太阳的光敏电阻阻值减小,信号传送到单片机上,单片机再控制步进电机转动,转动到各处光敏电阻阻值相同的位置。
2 举报
  • 阳光155: 这样的焊接方式,是使电机向着光照强的方向转动吧?等到太阳光正好照射板子中间时,四个光敏电阻的阻值正好相同
  • 松山归人 回复 阳光155: 是的。当电路板正对着太阳时,各个方位的光敏电阻阻值可以保证相同。

松山归人

2021-2-24 13:41:34
2021年2月23日 Day3

昨天初步设想了光敏电阻的位置,今天就对光敏电阻选型,由于我基础比较差,我先看了张飞实战电子开设的硬件电路中电阻的视频,对电阻有一个基本的了解,在光敏电阻选型中,主要是从JCHL(晶创和立),森霸,Seeed(矽递科技)这几家公司进行选择,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料,从价格、性能、光谱特性等方面考虑,根据光敏电阻的光谱特性,我们选择可见光光敏电阻器,可见光波长范围390nm-780nm,我们需要选择可以感应到这个波长范围的光敏电阻,经过调研,暂定为由森霸出产的性号为GL5516的光敏电阻,亮电阻5-10KΩ,暗电阻0.8MΩ,暗阻值越大越好。(图1是GL5516的温度特性曲线和光谱回应曲线,图2是它的价格表,大家可以参考一下)。大家有什么更好的建议,可以下方留言。(如果大家希望更多的了解GL5516光敏电阻,可以下载附件文档)
举报

松山归人

2021-3-1 10:40:49
2021年2月24日
大家好,今天是在张飞实战电子实习的第四天,今天对我的毕设项目宏观的讨论了一下,我们调研了市面上现有的太阳能光伏双轴追踪系统,发现有很多不合理的地方。主要是有以下几个方面:
问题1:市面上的追踪系统是有一个主控电路板,然后将光敏电阻单独的放到了一个光敏电路板上,不仅加大了成本,而且多出一条线路,每个电机上有一条线路,这样一共有三条线路使得电机运转时导致线路的缠绕。
解决方案 :我们计划将所有器件放在一个电路板上,背面安装器件,正面粘贴放置太阳能板。整体的电路板与步进电机焊接,使其成为一个整体,具体设想整体框架如下图。
问题2:电机运转时,没有设定一个固定的角度,使得两个步进电机可以360度旋转,即不符合实际的情况,又会导致线路缠绕。
解决方案:在程序上对步进电机进行设定,具体根据现实中太阳的旋转角度进行设定,对照上图,步进电机2左右旋转正负九十度用于横向追踪太阳,步进电机1改变太阳板的俯仰角,用于改变上下角度,预设角度为九十度。
如果大家有更合理的方案,可以讨论一下。
举报

松山归人

2021-3-1 10:41:17
2021年2月25日
大家好,今天是在张飞实战电子做毕设的第五天,有了昨天的整体框架,今天对整个系统的功能进行规划,规划完成后会理清所需要的器件,之后也可以开始进行器件选型了。
1,太阳能板通过采集光能转化为电能,这时就需要通过一个稳压电路,接着通过锂电池保护模块给锂电池充电。由于锂电池是3.7V的,需要通过一个升压稳压模块,将电压稳定到5V,然后给整个系统供电。
2,系统上电后,默认是自动模式,太阳能板自动寻找太阳;可以通过按键切换为手动模式。由于可见光范围为390nm-780nm,无论是手动模式还是自动模式,设定显示屏实时显示光敏电阻采集数据范围是0nm-1000nm,四个光敏电阻,光敏电阻分为上下左右四个方位,两路步进电机焊接在一起,形成两个自由度,可实现左右旋转和上下翻滚,其中上端步进电机焊接在电路板上。(由于单片机的驱动能力比较弱,所以在驱动电机时需要加装一个驱动电路,驱动电路驱动电机运转)
3,自动模式:自动寻找光照较强的方向,如果上面光照高于下面光照,单片机驱动上面电机向上翻转;如果下面光照高于上面光照,单片机驱动上面电机向下翻转;如果上下光照几乎一样,上端电机不动作;同样,如果左侧光照采集高于右侧光照,单片机驱动下端电机向左侧转动;如果右侧光照采集高于左侧光照采集,单片机驱动下端电源向右侧转动;如果左右光照采集几乎一致,下端电机不动作。从而可以实现上下光照平衡,左右光照平衡,并且朝向光照强的方向。
4,手动模式:通过按键,设置进入手动模式,其他四个按键分别控制步进电机:上翻,下翻,左转,右转。按键按一下,步进电机稍微动一点,持续按下步进电机持续动作。可以实现步进电机运行到某一状态。
5,单片机采集锂电池电压换算成容量大小,显示在屏幕上,如果电量过低,红色显示提醒。加装一个充电模块,如果锂电池电量不足,天气又不好,可以使用充电模块对锂电池充电。
举报

松山归人

2021-3-1 10:44:01
2021年2月26日
发现问题与解决方案:昨天在写功能规划时,突然想到了一个问题,按键部分和屏幕显示部分是不可以放到主板上的,如果放到主板上,按键和屏幕会跟着太阳能板一起转动,很不合理。经过讨论,我们决定把按键部分和屏幕显示部分单独拿出来放到另一个单片机上,利用蓝牙模块传输信息。
单片机选择:今天就开始器件的选型了,先从单片机开始。我是个小白,也不太懂怎么选择,在张飞实战电子单片机课程上有关于单片机选型的讲解,我大概说一下:
(1)选级别(民用,工业还是汽车级)
(2)引脚数目和功能(满足设计使用要求)
(3)选择性价比高的单片机(商业角度)
(4)选主流单片机(使用人多交流,在附件里有分类,包括主流、高性能、超低耗等分类)
(5)最新的单片机(防淘汰)
(6)货源方便的单片机(先到手才最好)
(7)开发工具好的单片机(工具好才是真的好)
具体第一个问题是选择51单片机还是STM32单片机?我们得先清楚两者的区别:首先库函数不同,由ST厂推出的STM32系列单片机,ST厂商提供了丰富的函数库,可以直接使用库函数,比起普通的51单片机在程序编写方面更省时。然后是运行速度不同,普通的51单片机运行速度比较慢,而STM32单片机运行速率比较高;资源不同,STM32的内部资源(寄存器和外设功能)较普通的51单片机都要多,在编程语言上有更多的选择;编程语言选择不同,STM32单片机基本上不会选择汇编语言,因为工程量巨大,寄存器和位数太多,而51单片机多使用汇编语言。因为STM32单片机都是程序都是模块化的,接口相对简单一点,自身带有很多的功能,工作速度也快,而51单片机自身功能太少,需要的外围元件比较多,要求对电子元件比较熟悉。综上我选择STM32单片机。
STM32单片机的优点:
(1)使用ARM最新的、先进架构的Cortex-M3内核
(2) 优异的实时性能
(3) 杰出的功耗控制
(4) 出众及创新的外设
(5) 最大程度的集成整合
(6) 易于开发,可使产品快速将进入市场
STM32单片机选型:首先进行设计需求分析,具体就是确定电路板具有的硬件功能,我们根据上篇的功能规划,理清所需要的器件及各器件所需要的引脚功能。从STM32手册上进行选择能够实现功能的单片机,最终我们选择了型号为STM32F103C8T6的单片机。图1为此单片机为接口类型和各接口数量;图2是器件手册截图;图三是价格。(具体选型请下载附件)
举报

松山归人

2021-3-1 10:51:40
2021年2月27日
将整个系统分为各个模块,我们对每个模块单独研究。今天主要分析升压模块,升压电路也就是BOOST电路,升压电路的主要目的是将3.7V的锂电池进行升压,使上升后的电压稳定在5V,可以对整个系统进行供电。
首先我们分析一下BOOST电路的基本工作原理,对照下图,我们假定开关(三极管或者MOS管)长时间处于断开状态,所有元件都处于理想状态,此时并联的电容电压处于输入电压,在充电过程中,三极管导通,此时输入电压流过电感,由于输入是直流电,所以电感上的电流以一定的比例线性增加,这个比例跟电感的大小有关,随着电感电流的增加,电感里储存了一些能量。在放电过程中,三极管截停时(开关断开),由于电感电流保持的特性,经流电感不会马上变为0,而是缓慢的由充电完毕时的值变为0,而原来的电路已经断开,于是电感只能通过新电路放电,即电感开始给电容充电,电容两端电压升高,此时电压已经高于输入电压,升压完毕。
下图2和图3是我们选择升压模块的引脚图和运行原理图,运行原理与上面说的BOOST电路相同。(具体信息可以下载附件)
但是具体在项目中我们要怎么实现呢?下图4为此项目完整的升压模块电路。下图中电路中的电容均为滤波电容,使电压更加稳定的输入输出,开关闭合后,升压模块正常的工作,将3.7V的锂电池电压升压到5V。
举报

松山归人

2021-3-4 09:43:28
2021年3月1日
大家好,昨天是休息天,今天正常接着做毕业设计。先说一下出现的问题,每一次给器件选型时,对于器件的价格,我是没有多大概念,总是忽略,公司里的指导老师非常注重这个价格问题,每一次都要着重的给我强调这个价格的重要性。总是对我说在能够实现功能的基础上,价格是商业上最看重的问题,如果咱们实现这个功能用的器件价格比别的公司高,那咱们公司在价格方面就没有竞争优势,就会被别人打败。
今天我们对分压电路进行设计,在原理图中会多处用到分压电路。是通过串联分压的原理,在串联电路中,各电阻上的电流相等,各电阻上的电流相等,各电阻两端的电压之和等于电路总电压,可知每个电阻上的电压小于电路总电压,故称串联电阻分压。我们的设计中,供电模块,采集到的电压信号超过了选择的A/D模块最大采集电压值,则需要采用分压电阻,讲采集到的电压调低后再进行采集。
图1这张电路图,就是将输入端3.7V的电压进行分压,每个电阻值为10K,即将3.7V电压的1/2输出给单片机。图2是通过串联一个电阻实现光敏电阻的分压,电阻为分压电阻,同时也保护光敏电阻。
举报

松山归人

2021-3-4 09:46:50
2021年3月2日
大家好,昨天完成分压模块的设计,今天的主要任务就是驱动电路的设计与驱动模块的选择。步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,在非超载的情况下,电机的转速和停止位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按照设定的方向转动一个固定的角度,称为“步距角”。它的旋转是以固定的角度一步一步运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率,来控制电机转动的速度和加速度。
步进电机不能够直接接到直流或交流电上工作,必须使用专用的驱动电源,其实单片机也是可以驱动步进电机的,但是呢,单片机的驱动能力太弱了,所以就得另外选择驱动模块来驱动步进电机。
关于这个驱动模块的原理,刚才公司的指导老师给我讲了一下,我们来具体探讨一下。我们从它的Datasheet里看到驱动模块中每个引脚的原理图,我们来具体分析一下,这个原理图到底是怎么实现功能的。因为数字I/O口的电流比较小,所以,可以使用晶体管将电流进行放大。当然如果直接利用晶体管的方法来驱动,就需要我们对晶体管和电机的参数有一定的了解,才能够选择恰当的参数来匹配他们,还必须使用二极管来处理当电机内部线圈产生自感电动势逆向流入晶体管而对晶体管造成的伤害。UL2003模块采用的是达林顿管的方式来增强对大电流负载的驱动,就像下图所示,而所谓的达林顿管其实就是二级放大的三极管而已,如同下图,经过两次三极管放大汇集到一起,两次放大的三极管驱动能力比一个三极管更强,我们看到并联一个二极管,这部分就是防止电动势对三极管造成损害。
根据用途我们选择了5V四相步进电机,由于我们需要的步进电机功率很小,所以我们就直接使用一个ULN2003芯片驱动。下图为是芯片的引脚连接图和价格,(具体有关ULN2003的信息,请下载附件)。
5V四相步进电机也就是步进电机有五根线,其中一条线为5V电源线,四相就是其他四条线,每条线都连接了内部的一个线圈,转子可以看作是磁铁,给四个线圈依次通电,线圈通电产生磁性,使转子旋转,具体的电路图连接如下图所示。
举报

松山归人

2021-3-4 09:50:27
2021年3月3日
今天我们继续电路的设计和器件的选择,主要是任务是锂电池充电模块电路设计。我们用的3.7V 的锂电池,要对锂电池进行充电,我上网搜到了一些信息,可以使用TP4056模块对锂电池进行充电,现在市面上也有完整TP4056充电模块板,不需要对TP4056模块再进行电路设计,只需要将充电模块板与锂电池连接即可。但如果我们没有模块版,怎么用TP4056来设计一个充电电路呢。所以我们还是要来研究一下TP4056的工作原理和基TP4056的锂电池充电模块的电路设计。
工作原理:TP4056是专门为1节锂电子或锂聚合物电池而设计的线性充电器电路,利用芯片内部的功率晶体管对电池进行恒流和恒压充电,充电电流可以用外部电阻编程设定,最大持续充电电流可达到1A,不需要另加阻流二极管和电流检测电阻。TP4056包括两个TP4056 包含两个漏极开路输出的状态指示输出端,充电状态指示端GHRG和电池故障状态指示输出端STDBY 。当输入电压大于电源低电压检测阈值和芯片使能输入端接高电平时,TP4056开始对电池充电,GHRG管脚输出低电平表示充电正在进行。如果电池电压低于3V时,充电器用小电流对电池进行预充电,当电池电压高于3V时,充电器采用恒流模式对电池充电,充电电流由PROG管脚和GND管脚之间的电阻R来确定。当电池电压接近4.2V电压时,充电电流逐渐减小,TP4056进入恒压充电模式,当充电电流减小到充电结束阈值时,充电周期结束,CHRG端输入高组态,STDBY端输入低电位。下图1典型的充电循环状态图。
接着我们通过工作原理管脚信息来进行电路模块的设计。通过数据手册我们看到下图2,3的封装和管脚信息。
我们对照着数据手册给出的典型应用和引脚功能信息来进行设计。
根据上图引脚功能,TPMP接到GND端,PROG串联一个电阻后再接到GND端;CHRG和STDBY为指示端,串联一个发光二极管;BAT则为电池连接段,连接电池座;CE为芯片输入使能端,连接VCC与指示端。具体如下图所示。
因为方便,我们直接使用了TP4056模块板,具体电路连接如下图(器件具体信息请下载附件):
举报

松山归人

2021-3-10 10:12:18
2021年3月4日
咱们今天继续对电路进行完善,首先来看一下外部晶振的连接和数值。
晶振,全称石英晶体振荡器,是一种高精度高稳定度的振荡器。通过一定的外接电路,可以生成频率和峰值稳定的正弦波。而单片机运行的时候,需要一个脉冲信号,作为自己执行指令的触发信号,可以简单的想象为,单片机收到一个脉冲,就执行一次或多次指令。它是一种时钟元件,结合单片机内部电路 ,产生单片机内部电路,产生单片机所必须的时钟频率,单片机一切执行的指令都是建立在这个基础上,晶振提供的时钟频率越高,单片机运行速度越快。
旁边为什么并联两个电容?
并联的两个电容为负载电容,固定频率能力强,防止其他频率的干扰。
为什么要用两个晶振?晶振的数值是怎么选择的?
我们从下面的性能框图1中STM32提供两个外部时钟输入接口:HSE(外部高速时钟)、LSE(外部低速时钟)。一般HSE选用8MHz,LSE选用32.768KHz。8MHz晶振提供外部高速时钟,用于提供更精确的系统时钟。32.768KHz晶振提供外部低速时钟,为精确时钟服务,可用于RTC电路时钟源,可为低功耗提供计时,如果没有RTC,可不焊接此晶振。如果不需要精确的频率,可以不使用外部晶振,只用内部震荡电路提供的时钟。具体电路的设计连接如图2所示。
接着我们看一下复位引脚如图3。STM32复位引脚NRST是低电平有效,VCC通过电阻R为电容充电,刚开始电容C上没有电荷积累,电容两端没有电压,相当于短路,此时充电电流最大,NRST接收到的是低电平,只要这个时间差足够的话,就会形成上电复位;随着电荷在电容上积累,电容两端的电压逐渐升高,充电电流减小,充电速率逐渐变缓,直到电容两端的电压等于VCC,此时电流为0,电阻R上没有压降,此时NRST接收到高电平。当按下复位按键,电容C被短路放电,电阻下端为低电平,这时候NRST有接收到了低电平,单片机系统复位。
举报

松山归人

2021-3-10 10:13:25
2021年3月5日
原理图部分快结束了,还剩下一部分,我们今天把剩下分析一下。
首先我们来看单片机的BOOT0和BOOT1启动模式的理解,STM32三种启动模式对应的存储介质均是芯片内置的,他们是
(1)主闪存存储器:芯片内置的Flash;
(2)系统存储器:芯片内部一块特定的区域,芯片出场时在这个区域预置了一段Bootloader,就是通常说的        ISP(串口下载方式)程序,如果程序硬件程序出现错误的话可以切换BOOT0/1到这种模式下重新烧写Flash即可恢复正常;
(3)内置SRAM:就是内存。
每个STM32的芯片上,都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。要注意的是,一般不使用内置的SRAM启动(BOOT1=1,BOOT0=1),因为SRAM掉电后数据就会丢失,多数情况下SRAM只在调试的时候使用。
我们选择第一种启动模式,就是一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面的,重启后也直接从这启动程序。在连接时我们将BOOT1和BOOT0都接地。我们看到图二中有一个CON2,这是在ISP下载的情况下,跳线接到高电平,BOOT0=1,BOOT1=0,下载完成后把BOOT0的跳线接回0,也就是转换为BOOT0=0,BOOT1=0。具体原理图如图二三所示。两个接口的电阻主要是起到上拉电阻和下拉电阻的作用,上拉电阻主要是将不确定的信号通过电阻钳位在高电平,电阻同时起到限流的作用,上拉电阻一般是一端接电源,一端接芯片管脚的电路中的电阻;下拉电阻一般是一端接芯片管脚,一端接地的引脚。
举报

松山归人

2021-3-10 10:16:45
2021年3月8日
原理图画的差不多了,今天主要是查漏补缺的,看看有什么地方是不合理的,有什么地方是可以改进的。首先我们看一下整体的情况。整个系统分为了两个部分,第一部分是由光敏模块、驱动模块、蓝牙模块、电源模块和烧录模块组成的主电路部分;第二部分是由显示屏模块、蓝牙模块、按键、电源模块和烧录模块的遥控器部分。之前我们讨论后改正的是把整体分为两个部分,把按键和显示屏单独拿出来组成一个无线遥控的系统。然后我就重新用了一个单片机来控制按键和显示屏,每部分用了一个蓝牙模块用来相互传递信息。刚开始没有考虑到蓝牙模块的输入电压,在遥控器部分设计电源模块时没有升压,后面又给电源模块重新加入了升压模块,将锂电池的电压从3.7V上升到蓝牙模块使用的5V。
将画好的原理图给公司的指导老师看了一下,指导老师指出了一些细节问题,我都一一改了过来,包括复位电路的按键重新串联了一个电阻,按键电路加上一个上拉电阻等,如图三所示,直连式按键电路,当电路按键按下时,IO口电平为0V,不按的时候,上拉电阻将IO口上拉到3.3V。还有就是遥控器部分,指导老师让我考虑一下功耗问题,锂电池是不是足够对显示屏进行供电。
我们来看一下整体的原理图,图1是主电路的电路原理图,图2是遥控器的原理图:
接下来一段时间的任务,本应该是画PCB图,我准备再储备一下知识再开始画PCB图,看看单片机和硬件的课程,接下呢我会把我看课程的收获和感想分享给大家,预计下周会继续做项目(电路图PDF在附件)。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分