你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32单片机太阳能电池板追日光跟踪系统设计

[复制链接]
STMCU小助手 发布时间:2022-5-11 13:48
一.硬件方案
& f; z. w2 A* e& j, b) q6 [) t5 ^本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器。微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实现对太阳的跟踪。
- E# r+ i* p! q/ t/ [! A主要由STM32单片机、2路光敏电阻、步进电机控制及电源组成;如图:0 P$ d0 }$ _# H- n6 X! A2 I

2 d, U) P) g& A) r1 p ]H2}$P5K7OJZ~0G2A]Z(N%5.png
0 r+ n0 ]6 @, |0 e# g5 i; n- l! z
2 K: u, C* k9 t二.设计功能) e: {+ L9 D3 o0 p) P3 D5 D
(1)通过2个光敏电阻来检测光照,光敏电阻放在板子的2端,如果两个光敏电阻的阻值相同,则说明阳光正对,如果两个光敏阻值不同 ,则说明阳光没有正对,则,步进电机调整板子正对。
; t% a! q: j0 r5 I1 N(2)预留一路光敏,属于预留未使用。
  {1 T% C5 {1 q0 O& r& x# d- O9 s7 Y
三.设计原理图, [# o, N6 I( I7 F+ X
(1)原理图主要采用AD软件进行设计,如图:
4 T2 r; s, \, J, t" m; o
0 k7 W0 D, ~1 E. X0 E' @. R1 \ %5I`3)%_N_L3~9$LGDOK1QR.png
- m, S0 i7 w% M6 {. L! v2 G0 y" ?2 `  J2 V- H$ X! j
(2)PCB图如下:
' o9 r- t5 s! a  n& c0 `; @# H# m" ?. B1 H+ ?2 _
3~Z0(W(3~(QWRZT$[S7C6.png 4 u# I7 F0 i' g2 O& U! D

& W# w2 K& b2 g. D四.软件设计$ R7 j. }: X& ?5 a0 h- p
(1)程序流程图  Q+ S1 @6 N2 M9 s6 R

% \  o/ S3 g2 i) Y F~J4SH~RE%BU8TIYB~_ZP8F.png " S) D8 O3 y  }# \! G- c8 L" C
, g- y; [. l- C! y; o/ D
(2)主程序源码( _+ b3 T+ l9 a% C6 g* @' r" J1 {* c1 x
8 w5 r2 V1 O5 e5 |6 d
  1. 1 o, d! U  Q* H7 z0 n+ c+ t0 a/ h
  2. int main(void)
    7 _, z, Y) m/ M' G: K
  3. { $ f1 r* v4 b& [5 L5 s
  4.         u16 adcx;
    0 z2 E+ I% U- N! S" |) o
  5.         char midval;+ l4 ~+ O7 L: l/ S2 X8 a" R
  6.         delay_init();                     //延时函数初始化          8 C. C6 r5 N! `$ A
  7.         uart_init(115200);                 //串口初始化为1152008 O4 m+ I' s- x" e+ q4 Z' ^0 ]
  8.   TIM3_Int_Init(29,7199);//3ms           ; I8 T1 E6 s$ f1 ~* e% J( x
  9.         LED_Init();                                  //初始化与LED连接的硬件接口9 v7 G( r$ R0 R) n8 p
  10.          Adc_Init();                                  //ADC初始化            ! t/ q7 R" Y7 i. P
  11.          
    1 A! _7 \' u6 ]2 D9 V
  12.          while(1)//电机旋转在定时器中处理, ]& A. T# o) R1 |; k7 `% F7 G
  13.         {
    6 \+ }5 O6 H7 ~- O' X& B
  14.                   adcx=Get_Adc_Average(ADC_Channel_2,5);// PA2 AD转换/ h! N# e, u& z" Y4 o5 v' D$ r5 n
  15. //                voltA=(float)adcx*(3.3/4096)*2;               
    ! x+ s* _" U- ~. y
  16.                         adNum1=(char)((long)adcx*999/4096);        
    . y+ d5 a3 q+ K! Y+ r
  17.                         delay_ms(5);( R  S) \4 @* v1 ?/ Q* w9 J# _
  18.                         adcx=Get_Adc_Average(ADC_Channel_1,5);        // PA1: w& Y; R( d0 P3 _  d& O2 S# k& R
  19.                         adNum2=(char)((long)adcx*999/4096);
    - b5 ^4 ^! [: c$ h0 ~8 y/ o
  20.                         if(adNum1>adNum2)//右侧光强
    : m2 t% B1 O$ ~- C! W
  21.                         {4 r( s0 i# m/ @# Y
  22.                                 midval = adNum1-adNum2 ;
    * k/ t4 Q3 b5 l! S. I( ?$ e7 R
  23.                                 if(midval<10)        //左右光差不多时 停止转动
    4 V5 _/ k( j9 l# C- a8 W  g
  24.                                 {1 F: |/ A4 I' y0 Q& T$ W$ S
  25.                                         MOTOR_DIR =0;: z9 p3 v; M. J/ j/ b
  26.                                 }
    - O) ?- Z; ^$ O) [& C6 [
  27.                                 else
    * }5 W$ c8 C9 T
  28.                                 {MOTOR_DIR = 2;}//正转
    3 u* S- m8 x0 R& x8 {4 X
  29.                         }
    & O/ t3 @, |( V! g$ D" l/ ~
  30.                         else                //左侧光强
    ! I/ z4 s/ T$ h, e
  31.                         {& q$ p7 n$ D4 t2 V
  32.                                 midval = adNum2-adNum1 ;$ i" X1 J6 ]2 D; b5 W7 i
  33.                                 if(midval<10)                //左右光差不多时 停止转动
    ' q. g: C9 n1 J* s* c
  34.                                 {
    $ z6 v( g  w* o
  35.                                         MOTOR_DIR =0;0 |8 _3 t/ L- K* d6 P; C9 I
  36.                                 }9 K. Y) W5 L, O5 Z; R
  37.                                 else
    9 S0 `! R0 u8 _8 i  `3 o. t$ W& I
  38.                                 {MOTOR_DIR = 1;}//反转
    ) w0 ~# G& v7 i6 J: J1 M
  39.                         }
    , x+ F, O0 x' O5 [: }+ m
  40.         
    5 {0 N4 C9 G3 G
  41.         }                                                                                            $ E& o0 Q; U1 l( Z" a
  42. }
    $ s) M  F+ u. n% |  a
复制代码

$ ^# C3 a5 P2 Q
( P5 a8 @0 W* t1 q1 ~; q% H; \4 D
收藏 评论0 发布时间:2022-5-11 13:48

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版