『瀚思彼岸』» 智能家居技术论坛

标题: 玩转ESPHome之九 - - - - 太阳自动追踪控制器 [打印本页]

作者: sorrypqa    时间: 2025-6-10 19:30
标题: 玩转ESPHome之九 - - - - 太阳自动追踪控制器
本帖最后由 sorrypqa 于 2025-6-26 15:16 编辑

      第一版,主要用来验证方案和程序的可行性。


      这款控制器的最大特点是免调试,接线简单,不受刮风下雨等任何外部环境的影响,无需外挂一大堆各种玩具级别的光敏、光照传感器,这类传感器平时被日晒雨淋的,最容易出现异常

      它的主要工作原理是通电后,利用GPS获取控制器所在位置的时间和经纬度并储存在控制器里,以便下次开机时直接调用,然后计算出所在位置的太阳方位角和高度角,用来控制方位电机和仰角电机,到目前为止,控制器和程序运行都非常完美。


     关闭自动跟踪,它就是个单纯的伺服电机控制器,可以手动或者通过HA的自动化控制任意角度,可以用来
控制任意需要使用舵机的设备,比如动物的自动投食等,打开自动跟踪,它就是个太阳自动跟踪控制器

     打开自动跟踪功能后,无需任何复位等动作就能立刻实时追踪太阳的位置,并能在太阳低于地平线时自动返回日出位置,可以无网、无HA主机的情况下独立工作、如果由HA集中管理,能方便实现根据天气状况,比如风速大于XX公里/小时自动置于水平状态,减少背风.


     内置实时时钟,没有WIFI网络和HA服务器也可以正常独立工作。

     内置直流电压、电流、功率检测,用于实时了解太阳能电池板输出状态

     预留了I2C接口的OLED显示屏安装位置,可以用来显示时间、经纬度、电压、电流、功率等


   由于使用了LM5164DDAR和LM2576HVS-5.0/TR的DC-DC电源芯片,
   所以控制器支持工作电压10-60V,支持控制5V、12-60V的伺服电机。
   检测电压0-100V,电流0-30A



[attach]70717[/attach]


GPS模块使用的是大夏龙雀的DX-GP10-A:

[attach]70714[/attach]

目前测试用仰角和方位电机都是180°伺服电机

[attach]70716[/attach]



[attach]70719[/attach]


在完全没有校准的情况下,已经能以很少的误差全程跟踪太阳,而且这误差是来自电机和这支长筒的垂直度

[attach]70726[/attach]

如需要最低成本测试此控制器的自动跟踪功能,可以买个几十元像下图类似的舵机云台:

[attach]70736[/attach]

使用servo组件作为伺服电机控制:
  1. servo:
  2.   - id: elevation_servo
  3.     output: pwm1_output #伺服器使用的输出组件的ID
  4.     min_level: 3% #最小值(-100%)将映射到的PWM占空比。默认为3%。
  5.     idle_level: 7.5% #空闲值(0%)将映射到的 PWM 占空比。这也是启动时伺服的状态。默认为7.5%。
  6.     max_level: 12% #最大值(100%)将映射到的 PWM 占空比。默认为12.0%。
  7.     restore: false #是否在启动时恢复伺服电机的状态。如果您有一个绝对伺服电机并且它在启动时回到其 0 位置,这将很有用。默认为false。
  8.     auto_detach_time: 0s #达到目标值后伺服器分离的时间,如果设置为零,伺服器将不会分离。默认为0s。
  9.     transition_length: 0s #完成一次完整移动所需的时间(-1.0 到 1.0)。这将有效限制伺服器的速度,值越大,伺服器移动的速度越慢。默认为0s。

  10.   - id: azimuth_servo
  11.     output: pwm2_output #伺服器使用的输出组件的ID
  12.     min_level: 2.5% #最小值(-100%)将映射到的PWM占空比。默认为3%。
  13.     idle_level: 7.5% #空闲值(0%)将映射到的 PWM 占空比。这也是启动时伺服的状态。默认为7.5%。
  14.     max_level: 12.5% #最大值(100%)将映射到的 PWM 占空比。默认为12.0%。
  15.     restore: false #是否在启动时恢复伺服电机的状态。如果您有一个绝对伺服电机并且它在启动时回到其 0 位置,这将很有用。默认为false。
  16.     auto_detach_time: 0s #达到目标值后伺服器分离的时间,如果设置为零,伺服器将不会分离。默认为0s。
  17.     transition_length: 0s #完成一次完整移动所需的时间(-1.0 到 1.0)。这将有效限制伺服器的速度,值越大,伺服器移动的速度越慢。默认为0s。
复制代码


使用
number组件作为手动的方位和仰角控制:

  1. number:
  2.   - platform: template
  3.     name: "A1.仰角控制"
  4.     id: "elevation_servo_control"
  5.     min_value: -100
  6.     initial_value: 0
  7.     max_value: 100
  8.     step: 1
  9.     optimistic: true
  10.     set_action:
  11.       then:
  12.         - servo.write:
  13.             id: "elevation_servo"
  14.             level: !lambda 'return x / 100.0;'

  15.   - platform: template
  16.     name: "A2.方位控制"
  17.     id: "azimuth_servo_control"
  18.     min_value: -100
  19.     initial_value: 0
  20.     max_value: 100
  21.     step: 1
  22.     optimistic: true
  23.     set_action:
  24.       then:
  25.         - servo.write:
  26.             id: "azimuth_servo"
  27.             level: !lambda 'return -x / 100.0;'
复制代码

使用
GPS组件获取经度和纬度,
由于GPG需要一定数量的卫星信号,才能获取准确的位置信息,所以利用卫星数量作为条件,只有卫星数量大于6个时,才会把获取到的经纬度保存起来:

  1. gps:
  2.   uart_id: gps_uart #指定gps使用的串口
  3.   latitude:
  4.     name: "C1.纬度"
  5.     id: "gps_latitude"
  6.   longitude:
  7.     name: "C2.经度"
  8.     id: "gps_longitude"
  9.   satellites:
  10.     name: "C3.卫星数量"
  11.     id: "gps_satellites"
  12.     on_value:
  13.       then:
  14.         - if:
  15.             condition:
  16.               - lambda: 'return id(gps_satellites).state > 6 ;'
  17.             then:
  18.               - lambda: |-
  19.                   id(sun_latitude_gl) = id(gps_latitude).state;
  20.                   id(sun_longitude_gl) = id(gps_longitude).state;
  21.                   id(sun_id).set_latitude(id(sun_latitude_gl));
  22.                   id(sun_id).set_longitude(id(sun_longitude_gl));
复制代码

























作者: flysand    时间: 2025-6-10 19:45
啥也没看到
作者: sorrypqa    时间: 2025-6-10 19:47
flysand 发表于 2025-6-10 19:45
啥也没看到

手抖,点错发表了出去,哈哈~~!
作者: flysand    时间: 2025-6-10 19:52
大佬上架构
作者: tanbobo    时间: 2025-6-10 19:57
这个必须顶!

作者: ilongjiang    时间: 2025-6-10 21:08
这个必须顶
作者: innx    时间: 2025-6-10 22:54
666,我只用了6块5w的小板子放阳台,接了小夜灯用了好几年了电量也够
作者: sorrypqa    时间: 2025-6-10 22:55
innx 发表于 2025-6-10 22:54
666,我只用了6块5w的小板子放阳台,接了小夜灯用了好几年了电量也够

我想玩都没地方玩!
作者: fz雪之汐若    时间: 2025-6-10 23:08
感谢楼主分享 回复看看
作者: 隔壁的王叔叔    时间: 2025-6-10 23:15
厉害,厉害,请问太阳方位角怎么算?
作者: sorrypqa    时间: 2025-6-10 23:18
隔壁的王叔叔 发表于 2025-6-10 23:15
厉害,厉害,请问太阳方位角怎么算?

太阳组件:
https://www.esphome.io/components/sun.html
作者: 隔壁的王叔叔    时间: 2025-6-10 23:21
sorrypqa 发表于 2025-6-10 23:18
太阳组件:
https://www.esphome.io/components/sun.html

感谢大佬,可以根据这个方位角,来控制卷帘高度
作者: sorrypqa    时间: 2025-6-10 23:24
隔壁的王叔叔 发表于 2025-6-10 23:21
感谢大佬,可以根据这个方位角,来控制卷帘高度

想法不错!
作者: iamhyde    时间: 2025-6-10 23:35
学习下大佬的东西
作者: bugensui    时间: 2025-6-11 01:18
这个具体的作用是干什么,我怎么没有看懂
作者: sorrypqa    时间: 2025-6-11 06:31
bugensui 发表于 2025-6-11 01:18
这个具体的作用是干什么,我怎么没有看懂

对于太阳能电池板,自动对着太阳,发电效率会比固定式高很多,也可以作为普通的舵机控制器
作者: water3033    时间: 2025-6-11 08:11
看看高手是怎么玩的
作者: lytmkai    时间: 2025-6-11 08:21
看看 太阳方位角 计算的 好方法
作者: hxck    时间: 2025-6-11 08:43
卧槽,这个有点厉害哈
作者: silas3082    时间: 2025-6-11 08:55
这是大佬,学习
作者: shadowba    时间: 2025-6-11 09:52
高手
作者: kittyme    时间: 2025-6-11 11:14
厉害了,农村装光伏可以试试效果
作者: daem    时间: 2025-6-11 11:15
回复看看有什么

作者: sorrypqa    时间: 2025-6-11 11:20
kittyme 发表于 2025-6-11 11:14
厉害了,农村装光伏可以试试效果

哈哈~!一直有这想法,想等过两年回老家躺平过平淡日子时玩玩光伏发电
作者: flim    时间: 2025-6-11 14:43
这个厉害咯。收藏学习一下
作者: 是阿蛋    时间: 2025-6-11 14:44
感谢分享
作者: Tamaki    时间: 2025-6-11 15:38
支持大佬
作者: mqs000    时间: 2025-6-11 15:51
本帖最后由 mqs000 于 2025-6-11 15:55 编辑

正想弄一个这个   怎么附件里面没esphome的代码呢
作者: 深兰之刃    时间: 2025-6-11 16:14
感谢大佬的分享

作者: moz111    时间: 2025-6-11 16:43
真大佬,好想法好操作
作者: 电子电工    时间: 2025-6-11 17:47
学习学习
作者: jjcs    时间: 2025-6-11 18:02
超级羡慕会画板的大佬,我只能用洞洞板
作者: sorrypqa    时间: 2025-6-11 18:11
jjcs 发表于 2025-6-11 18:02
超级羡慕会画板的大佬,我只能用洞洞板

搞这类东西很烦,现在很少玩了,有时间都是玩游戏。
作者: zouguo    时间: 2025-6-11 21:20
厉害了,这个非常有用。屋顶的太阳能板可以改一改了
作者: donghai980    时间: 2025-6-11 23:20
谢谢学习学习
作者: 老皇历    时间: 2025-6-12 10:13
研究研究
作者: lxgxdx    时间: 2025-6-12 10:51
感谢分享

作者: penguinmm    时间: 2025-6-12 11:02
这个项目有意思,收藏备用
作者: lzmit    时间: 2025-6-12 11:07
测试一下。谢谢
作者: holy745    时间: 2025-6-12 13:04
这个不错,谢谢分享
作者: daifhfh    时间: 2025-6-12 14:03
感谢楼主分享
作者: tanbobo    时间: 2025-6-12 18:12
现在嘉立创 没有免费卷了!
作者: sorrypqa    时间: 2025-6-12 18:13
tanbobo 发表于 2025-6-12 18:12
现在嘉立创 没有免费卷了!

哦!是吗?
作者: wz199021    时间: 2025-6-12 20:32
向优秀大佬学习
作者: lovlin999    时间: 2025-6-13 08:54
高手在民间!

作者: s2233    时间: 2025-6-13 20:10
新颖,又是一个新玩法
作者: 大道宽又长    时间: 2025-6-13 21:00
sorrypqa 发表于 2025-6-12 18:13
哦!是吗?

还有,这个月还用了一张
作者: sorrypqa    时间: 2025-6-13 21:03
大道宽又长 发表于 2025-6-13 21:00
还有,这个月还用了一张

现在很少玩了,影响不大,而且20元打一次样也可以接受
作者: jiaxi    时间: 2025-6-14 20:58
挺好,如果有一个完整的设备图就更好了
作者: jpdd521    时间: 2025-6-15 01:29
非常厉害,如果是改成谐波减速版本(蜗杆版本亦可)加反馈,就可以避免舵机静态功耗可以用于微小功率的追日设备了
作者: yongfal    时间: 2025-6-15 07:33
感谢楼主分享!666
作者: llgxdnn    时间: 2025-6-15 15:57
支持一下,不错。
作者: idreamshen    时间: 2025-6-16 07:38
感谢分享
作者: ALLinK    时间: 2025-6-16 13:25
非常的感兴趣, 学习了, 谢谢分享
作者: Cunlixie    时间: 2025-6-16 19:36
瞧一瞧,看一看
作者: wjg186    时间: 2025-6-17 07:26
学习学习
作者: orangetree    时间: 2025-6-18 14:51
谢谢分享!
作者: home太阳能    时间: 2025-6-20 17:42
学习学习
作者: hood2000    时间: 2025-6-22 11:18
有成品吗?
作者: sorrypqa    时间: 2025-6-22 15:18
hood2000 发表于 2025-6-22 11:18
有成品吗?

没有,自己下载打板搞!
作者: hood2000    时间: 2025-6-22 17:54
sorrypqa 发表于 2025-6-22 15:18
没有,自己下载打板搞!

你太高看我们了。。。。
能不能做几块板卖一下?
作者: iytbfnwfn    时间: 2025-6-26 13:45
不错不错
作者: feiniao7168    时间: 2025-7-12 12:30
这个牛 接更大功率的光伏板怎么处理
作者: sorrypqa    时间: 2025-7-12 13:55
feiniao7168 发表于 2025-7-12 12:30
这个牛 接更大功率的光伏板怎么处理

光伏板大小只和云台大小有关,同类型的伺服电机,无论功率和电压是多少,控制信号是一样的
作者: 梅林听风    时间: 2025-7-28 09:43
这个好玩的
作者: Awe7    时间: 2025-8-6 00:25
支持大佬.膜拜
作者: lixiwen    时间: 2025-8-7 18:12
膜拜大佬,参观下!!!!

作者: lixiwen    时间: 2025-8-7 18:22
这个必须顶!




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5