STM32F103实现的自动浇水电路

需求

  我在家中种植了几盆观赏植物,基本2-3天浇一次水。最近有长时间出差的情况,时长会超过一个周。在这种情况下植物可能因为缺水而干枯死亡。为了保证植物的茁壮成长,考虑用自动化装置进行浇水。

早期方案

  由于家里正好有一个闲置的LS产电PLC,所以第一版方案采用了以PLC进行自动浇水控制。整体结构为:一个6V电源电源适配器,用于给310水泵供电;一个310水泵,用于将盆里的水吸出并通过管路输送到各个花盆;一个PLC,负责按周期和时间长度导通电源适配器和310水泵。
在这里插入图片描述

在这里插入图片描述
  通过这个方案度过了第一次出差,植物们都还活着。不需要记住哪天浇水哪天没浇水的感觉真好!决定将自动浇水长期化!
  但使用PLC进行控制有两个问题:1、我的花平时都是放在楼梯间拐角,室外电箱很小,根本无法装下PLC;2、PLC的待机功耗有十几瓦,一年下来要100多度电。由此想到了使用网上能买到的时控开关作为控制器的方案👇。
在这里插入图片描述
  改造完成后又发现了时控开关方案的局限性:1、时控开关是按照星期几进行制定周期的,而在当前的季节我需要每两天浇一次水,这就造成我要么设置周一、三、五、七浇水(周日和下周一连续浇水),要么设置周一、三、五浇水(周五到下周一变为了三天一浇);2、时控开关需要使用电池,而我追求的是免维护的效果;3、时控开关的开关最小间隔以分钟为单位,而我的植物们只需要水泵工作半分钟就可以了。

STM32方案

方案确定

  为了避免上述方案的局限性,最终决定使用手上的一块STM32F103C8T6最小系统板进行控制,最终实现浇水天数可调、浇水时长可调、不需要使用电池、体积足够小。
  由于给电机供电的电源适配器电压为6V,所以打算使用7805芯片产生5V的电压为STM32F103C8T6最小系统板供电。但查询了7805的手册后发现7805需要至少7V的输入电压才能正常工作,经过试验发现为7805供6V电的情况下只能输出3V多的电压。于是又改为增加一个5V电源适配器(手机充电器)为最小系统板进行供电。
  然而在确定洞洞板的布局时又悲催的发现STM32F103C8T6最小系统板上居然没有5V引脚。最终在某宝上看了又看之后,选择了STM32F103C6T6最小系统板(比C8T6便宜几块钱,板上有5V引脚)。
  最终的方案为:使用STM32F103C6T6最小系统板作为控制器,使用ULN2003A驱动继电器,使用继电器开关310水泵的电源。而浇水天数和浇水时长通过一个6位的拨码开关来进行,其中0、1、2位用于确定间隔天数,天数=1+(n0x4+n1x2+n2);3、4位用于确定浇水时长,时长=15+(n3x2+n1)秒;第5位则用于手动触发浇水。

程序编写

  使用STM32Cube进行配置和KEIL5代码的初始生成

  在STM32Cube里配置了PA1到PA6共6个输入引脚用于读取6位拨码开关的值。然后PB4、PB5配置为输出,用于驱动ULN2003A的两个输出脚(实际上只配置一个就可以实现功能,之所以配置两个是为了在ULN2003A的一个输出脚失效后存在一个冗余)。👇
在这里插入图片描述
在这里插入图片描述
  时钟是单片机的心跳,在配置完IO后紧接着对时钟进行配置,虽然STM32F103C6T6最高频率可以达到72MHz,但是对于我的这个项目完全没有必要。考虑到频率低一点理论上运行更稳定,最终时钟频率被配置为32MHz。👇
在这里插入图片描述
  为了实现定时(浇水间隔、浇水时长本质都是定时),使用了单片机的TIM1定时器。在配置时将TIM1进行了32(在STM32Cube里配置的时候需要输入31)倍的分频,使定时器计数周期为1MHz,再通过设置1000(在STM32Cube里配置的时候需要输入999)的计数使TIM1的实际触发周期为1ms。👇
在这里插入图片描述

  计时实现

  上面已经说了,TIM1每1ms触发一次,所以我们每次在TIM1被触发的时候对ms数+1,当ms数=1000时即过了一秒0。👇
在这里插入图片描述
  同理,我们对秒、分、小时进行类似的处理,最终即可获得对天数的计时。当实际的天数等于我们设定的天数时,即可启动PB4、PB5实现浇水。👇
在这里插入图片描述

  电路板结构

在这里插入图片描述

最终效果

程序代码优快云下载
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soar3033

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值