编辑器版本 ×
标准版

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 【毕设】太阳能追光系统

简介:逐日系统,由主控模块、舵机模块、显示模块、按键模块组成。

开源协议: Public Domain

发布时间: 2022-04-27 15:03:10
  • 803
  • 3
  • 8
描述

题目要求

利用单片机及传感器实时采集光照数据,调整太阳能电池板的角度以实现收益最大化。

题目分析

本设计采用STC15系列单片机作为主控,用4个光敏模块作为光线采集,同时用单片机自带的AD转换功能采集4个方向的电池板电压,来判断那个方向的光照强度比较高,从而使用单片机来控制两路舵机来调整角度。

提示:总体设计方案框图 列: image.png                                                                              系统框图

原理图设计说明

原理图使用立创EDA(专业版)进行绘制,原理图包括  主控电路,显示接口电路,电源电路,LED显示电路,电压采集电路,舵机接口电路,独立按键电路,光敏模块采集电路。 image.png 上图为主控电路,主控芯片采用STC15F2K60S2 ,图中绘制了该主控芯片的最小系统。XI、XO为外部晶振输入输出接口。本设计采用了一个12M的无源晶振,为主控芯片提供时钟。该芯片内部自带时钟,所以不接外部晶振也行。但是内部的不如外部的稳定,所以我采用了外接时钟的方式。复位电路:复位端口需要采集到24个时钟周期以上的高电平脉冲,才会进行复位。所以我采用了一按键的形式,实现手动复位。

image.png 信号采集电路,利用电位器对电池板输入的电压进行分压,以免流入单片机引脚电压过大,损坏单片机。单片机通过带有AD转换功能的引脚采集电池板输入的电压值。光敏电阻模块,直接输出一个数字量的信号送入单片机,单片机通过RIN1~4`引脚进行采集。 image.png LED部分,设计有6个LED灯,两个为电源指示灯,剩下四个为方向指示灯,当舵机朝着某一方向偏转一定角度时,对应的单片机引脚输出低电平,点亮对应的LED进行提示。 image.png 系统电源部分,采用的时6P的TYPEC接口作为电源输入接口,拨动开关作为电源输入开关,设计中OLED显示平需要3.3V供电,这里我使用了ASM1117 3.3电压转换芯片,对5V的电压进行降压至3.3V供给给OLED。

image.png 舵机电源是独立的,如果舵机与系统共用一个电源的话,电源会比较吃力,可能带不动这么多负载。所以我对舵机电源使用了一个独立的TYpec供电。、 image.png 独立按键模块:单片机引脚接口默认为高电平,按下按键,将单片机引脚拉低,通过软件来实现按键消抖。每个按键对应不同的引脚,触发不同的功能。其中单片机复位键已经配置成了IO口进行使用,作用为模式切换按键。

image.png  显示模块:使用的时0.91寸OLED  是我在淘宝老王哪里买的裸屏0.8一个,显示屏驱动PCB是立创开源社区里面开源的老王0.8元128x32OLED显示屏转接板 - 立创EDA开源硬件平台 (oshwhub.com)(感谢作者)。屏幕驱动为1306,30脚。通信方式为SPI。

PCB设计说明

PCB设计方面,没什么需要说的就是 电源线  线宽设置粗一点。这个PCB设计的比较小,所以摆放元件的时候要很注意位置。

软件说明

提示:软件可以使用代码块来进行嵌套放置,无需全部软件部分说明,只需说明重要部分即可 代码块:


uint Get_ADC10bitResult(uchar channel) //channel = 0~7 { ADC_RES = 0; ADC_RESL = 0; ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel; nop(); nop(); nop(); nop(); while((ADC_CONTR & ADC_FLAG) == 0); ADC_CONTR &= ~ADC_FLAG; //返回10位AD值 return (((uint)ADC_RES << 2) | (ADC_RESL & 3)); } //AD通道配置程序

uchar i; for(i=0;i<10;i++) {    x0+=Get_ADC10bitResult(0); x1+=Get_ADC10bitResult(1); y0+=Get_ADC10bitResult(2); y1+=Get_ADC10bitResult(3); } x0=x0/30; x1=x1/30; y0=y0/30; y1=y1/30; //AD采集 采集30次 取个平均值 void Timer0_Init(void) { TMOD |=0x01; TH0=-high_ms>>8; TL0=-high_ms; TR0 = 1; //定时器0开始计时 EA = 1; ET0 = 1; } //定时器初始程序

void timer() interrupt 1 {     switch(Pwm_Flag)                 {                     case 1: PWM=1; TH0=-pwm[0]>>8; TL0=-pwm[0]; break; // 高电平持续时间pwm[0]                     case 2: PWM=0; TH0=-(high_ms-pwm[0])>>8; TL0=-(high_ms-pwm[0]); break; //低电平时间10-pwm[0] ms                     case 3: PWM2=1; TH0=-pwm[1]>>8; TL0=-pwm[1]; break; // 高电平持续时间pwm[1]                     case 4: PWM2=0; TH0=-(high_ms-pwm[1])>>8; TL0=-(high_ms-pwm[1]); break; //低电平时间10-pwm[1] ms                     default: TH0=0xff; TL0=0x80; Pwm_Flag=0;                     }             Pwm_Flag++; } //定时器中断子程序,用来产生脉冲驱动 舵机。

实物展示说明

注意事项

提示:这里说明作品在制作中需要注意的一些注意事项(没有可以不写)

演示视频

提示:演示视频上传附件即可,附件最大只能长传50M的文件,大于50M的文件可放置在其他网盘或视频网站上,只需把地址链接放入这里即可

其它附件上传

提示:参加活动的作品必须把工程相关的程序附件上传至开源平台或个人的代码存储云端,附件最大支持50M上传(请勿在立创工作区上传,有限制) 20220424_224621.jpg

设计图
原理图
1 /
PCB
1 /
暂无
工程附件
序号 文件名称 下载次数
1

逐日系统.zip

38
2

20220425_212031 - Compressed with FlexClip.mp4

5054
工程成员
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

  • 开源平台公众号