查看: 4360|回复: 0

基于ATTiny817自动浇水器

[复制链接]
  • TA的每日心情
    开心
    2018-7-5 13:19
  • 签到天数: 70 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2018-4-9 10:27:18 | 显示全部楼层 |阅读模式
    分享到:
    首先分享一些我学习ATTiny817过程中下载的资料.
    1.ATTiny817数据手册,编程过程中时常查阅,一定会用得到的,尤其AVR单片机结构相对简单,对寄存器要有一些了解。
    ATtiny817datasheet.pdf
    2.ATtiny817 Xplained Mini开发板用户手册,开始时应该粗略看一遍,对板子有一些了解,知道能干些什么。
    ATtiny817 Xplained Mini.pdf
    3.ATtiny817-Xplained-Mini_Design-Documentation,评估板的工程文件,对于硬件深入学习很有帮助,是个很好参考资料。
    ATtiny817-Xplained-Mini_Design-Documentation.zip
    4.三篇应用文章,重点介绍Atmel START和Atmel Studio配合使用做开发。我也将采用这种方式。
    Getting Started with the tinyAVR® 1-series.pdf
    Getting Started with Events on the tinyAVR® 1-series.pdf
    ADC and Power Optimization with tinyAVR® 0- and 1-.pdf

    下面进入正题,我想为家里的花花草草做一个自动浇水的装置,这样在我出差的时候也就不怕花草受渴了,下面说干就干。

    功能划分:
    1采集土壤湿度传感器
      2AC模拟比较器比较传感器电压,当大于基准电压是,输出高电平,控制浇水
      3定时器输出PWM波,控制舵机,实现浇水
      4低功耗处理

    硬件设计
    实际测量土壤湿度传感器,在土壤干燥时阻止大概几十k以上,土壤湿润时在几k以下。我初步设定,湿度在50k欧以上浇水,以下不浇水
    电路如下,S1为土壤湿度传感器,把它理解为一个可变电阻就行。

            我将模拟比较器AIN_N的输入源设置为基准电压2.5v。所以当S1传感器阻值小于50k欧时,[url=]AC_AIN[/url]_P0电压小于2.5V,AC不触发;当阻值大于50k欧时,AC_AIN_P0电压大于2.5V,AC触发。
    AC_OUT输出变换时触发终端,修改pwm,控制舵机旋转,电路如下

    软件设计
    思路:先在Atmel START添加一个AC模拟比较器,一个定时器用于输出pwm,开中断,开睡眠,设置一个指示灯,设置舵机电源控制io。
    具体步骤:
    1进入Atmel START,选择创建新的工程

    2搜索要使用的芯片,创建工程

    3添加需要的软件组件,我添加一个基准电压,一个AC,一个定时器。

    4先设置时钟,选择时钟选项卡,主时钟时钟源设置为内部16m,再做16分频,所以主时钟频率为1mhz,cpu内存和外设都使用主时钟,其他的时钟设置都关掉。


    5选择相应的组件配置,做配置

    6配置基准电压为2.5v,选择dac和ac的

    7配置AC,数字的输出为PA5,比较的正极输入为PA7;使能AC;配置输入源,正为P0,负为基准电压;输出使能,备份模式运行;50mv滞后;中断使能,双沿触发。


    8配置TCA,输出引脚为PB0;使能模块;设置周期为0x4e20,是20000,就是50hz;通道1使能,计数值时0x7d0,就是2000,是2ms。波形生成设置为单坡PWM。


    9开系统中断

    10设置睡眠

    11选择引脚选项卡,设置PC0位指示灯,PC1位舵机电源控制。

    12生成代码

    13打开生成的文件

    14编译,下载


    15测试程序,电压表接PA5和GND测试AC输出。当PA7大于2.5V,PA5输出高;当低于2.5V,PA5输出低。模拟比较器正常。输出pwm,周期20ms,占空比1:9。下图是示波器只是为了展示输出方波,周期和占空比不是这个程序的,不再单补图了。



    下面开始应用程序编写
    1.在driver_isr.c中编写中断服务函数。AC输出为高,设置定时器计数值,调整pwm占空比。

    2.添加睡眠模式,需要包含相关文件,这个没有做成自动生产。具体需要以下3步

    到此软硬件设计基本完成。下周周末实现机械结构部分,把它和硬件电路连接起来,真正实现自动浇水功能。

    最后有几点体验和大家简单分享下:
            我以前用惯ASF3库开发的,它支持SAM系列和xmega系列,对于tiny不支持。
            用Atmel START配置开发,SAM用的是ASF4的库,ASF4库不支持AVR。还没有找到AVR库的API介绍,我现在是加载功能模块后,去源文件看有哪些函数可用。
            ASF3库最大的弱点是代码尺寸偏大,尤其是ARM核的,不过还是很好用的。ASF3和ASF4差别还挺大的,不容易适应。ASF4还不够完善,碰见过几次生成代码编译不通过情况,需要修改错误。

    基于ATtiny817自动浇水器(下)完整演示
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 18:12 , Processed in 0.114561 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.