0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【合宙Air105开发板试用体验】PWM+ADC+TIME联测

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-12-01 11:00 次阅读

本文来源电子发烧友社区,作者:z赵先森, 帖子地址:https://bbs.elecfans.com/jishu_2290905_1_1.html


pwm测试视频(开发板体验视频,详见作者原文链接内容)

@TOC

**本文使用环境:

电脑:windows10

主控:air105(204MHZ)**

注意:本文默认已经搭建好平台。

前言

首先非常感谢电子发烧友合宙的大力支持。

这篇文章主要记录air105的初始lutaos尝试,之前一直在使用C语言进行开发,这次换一个开发方式。

主要使用ADC-TIM-PWM,为了提升技术难度,将三个串起来:

使用PC7/PWM5(其他的PWM都不方便接出来)产生1MHZ动态变化的的PWM,然后由PC4的ADC5获取,并转化成实际的电压。C7产生的PWM通过不断的改变比较值可以输出不同的电压,所以就能够满足ADC的采集要求,这里需要注意的是,不能直接测量电源电压,要不然要烧。。。。。ADC的电压范围为0-1.8V

LuatOS对于方案来说非常友好,对新手也比较友好,隔离了底层的驱动,不需要关心底层怎么实现,只需要调用官方的API就行,极大的解决了不同芯片重复使用相同外设的问题,非常方便。

一、手册

1、 AIR105的硬件手册

查看105的手册了解其IO分布和各方面的性能,主要看以下几个:

手册分别为:

在线wiki

105手册

1.1、主频:

在这里插入图片描述

1.2、ADC和PWM:

在这里插入图片描述

2、LutaOS编程手册

2.1. PWM编程

找到在线文档的LuatOS-SOC接口文档,并找到PWM模块,

在这里插入图片描述

往下翻官方给出了demo实例,手册中有详细的说明对于每一个参数

-- 打开PWM5, 频率1kHz, 占空比50%
pwm.open(5, 1000, 50)
-- 打开PWM5, 频率10kHz, 分频为 31/256,即31的高电平256-31的低电平
pwm.open(5, 10000, 31, 0, 256)

本文需要关心占空比和PWM的频率,ADC测量电压时,最好将PWM的频率稍微打一下二,否者检测的数据可能不准,因为电路没有滤波采样到的数据不是那么准确。两个函数都可以使用。后续只需要改变占空比即可。

2.2. ADC编程

同样找到ADC的数模转换章节:

在这里插入图片描述

adc有三个函数:open、read、close。功能和名字一样非常简单,各参数也都有详细的讲解,不再赘述。特别要注意。==AIR105的ADC只能检测外部1.8V的电压,不能超过==。。。。。如果需要检测高电压,采用电阻分压的方式,两个电阻串联检测中间的电压即可。

在这里插入图片描述

2.3. TIME编程

查看sys库,定时器在sys中:

在这里插入图片描述

如图该函数为循环定时功能函数,需要注意该函数内==不能使用wait函数。==

二、编程

本文采用定时器对pwm进行调节,首先对定时器和ADC进行编程介绍,然后是PWM。

1、 TIME和ADC编程

local time_num = 0;
local dir_num = 0;
sys.timerLoopStart(function()

    if time_num >= 55 then
        dir_num = 0
    elseif time_num <= 0 then
        dir_num = 1
    end
    
    if dir_num == 1 then
        time_num = time_num + 1;
    else 
        time_num = time_num - 1;
    end
    
   log.info("task", time_num,"adc_read:",adc.read(5)) -- 500毫秒后才会执行
    
end, 500)

首先定义两个变量,一个自加,一个方向。当自加到最大值时,方向取反,依次内推,减到最小亦是如此。==最大值为什么设置为55?因为IO口电压为3V3,按照0-100等份,及55为1.8V左右== 根据前面的介绍可知,ADC打开后仅使用读取函数即可,故在输出的位置进行打印读取。

测试结果如下:

在这里插入图片描述

可以看见测试结果和预想的一样。

2、PWM编程

有了前面的基础,PWM编程就会非常简单,只需要调用相关的函数即可,同时需要在程序循环之前的位置打开adc。直接上程序:

sys.taskInit(function()
    adc.open(5) -- 5通道是PC4, 0~1.8v,不要超过范围使用!!!,其它通道也是同样的范围
    while 1 do
        pwm.open(5, 1000000, time_num, 0, 100)  
        sys.wait(200)
    end
    adc.close(1)
end)

这里只看pwm.open(5, 1000000, time_num, 0, 100)即可。time_num为定时器修改的PWM值,范围是0-55。最后的100表示比较的最大值为100。

为了对PWM进行测试,使用万用便测量IO口的电压。测试结果如下:

见开头视频

3、 完整程序

话不多说直接上程序。

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "mytest"
VERSION = "1.0.0"

log.info("mymain", PROJECT, VERSION)

-- 一定要添加sys.lua !!!!
local sys = require "sys"
local time_num = 0;
local dir_num = 0;

--添加硬狗防止程序卡死
if wdt then
    wdt.init(15000)--初始化watchdog设置为15s
    sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
end
--定时器1s

sys.timerLoopStart(function()

    if time_num >= 55 then
        dir_num = 0
    elseif time_num <= 0 then
        dir_num = 1
    end
    
    if dir_num == 1 then
        time_num = time_num + 1;
    else 
        time_num = time_num - 1;
    end
    
    log.info("task", time_num,"adc_read:",adc.read(5)) -- 1000毫秒后才会执行, 打印 task A B C
    
end, 500)


sys.taskInit(function()
    adc.open(5) -- 5通道是PC4, 0~1.8v,不要超过范围使用!!!,其它通道也是同样的范围
    while 1 do
        pwm.open(5, 1000000, time_num, 0, 100)  
        sys.wait(200)
        --log.info("adc_read:",adc.read(5))
    end
    adc.close(1)
end)


-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

4、测试

电压是先变小再变大,然后再变小变大,依次循环。

见末尾视频

pwm_adc测试视频(开发板体验视频,详见作者原文链接内容)



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 合宙通信
    +关注

    关注

    0

    文章

    147

    浏览量

    1734
  • Air105
    +关注

    关注

    0

    文章

    48

    浏览量

    299
收藏 人收藏

    评论

    相关推荐

    干货分享:Air780E开发板如何使用?

    ​ 一、概述 CORE-AIR780E 开发板通信推出的基于 Air780E 模组所开发
    的头像 发表于 10-25 17:46 285次阅读
    干货分享:<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>如何使用?

    如何使用Air780E开发板?看这篇就够了!

    ​ 一、综述 CORE-AIR780E 开发板通信推出的基于 Air780E 模组所开发
    的头像 发表于 10-23 17:07 361次阅读
    如何使用<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>?看这篇就够了!

    RNDIS网卡应用看这篇!Air780EP低功耗4G模组AT开发示例

    ** ​ 1.1 硬件准备 EVB_Air780EP开发板一套,包括天线、SIM卡; USB线 WIN10以上PC电脑 1.2 软件准备 串口工具 如果没有准备,推荐使用LLCO
    的头像 发表于 09-30 06:59 520次阅读
    RNDIS网卡应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模组AT<b class='flag-5'>开发</b>示例

    FTP应用看这篇!Air780EP低功耗4G模组AT开发示例

    780EX/Air724UG… **一、相关准备工作 ** ​ 1.1 硬件准备 EVB_Air780EP开发板一套,包括天线、SIM卡
    的头像 发表于 09-29 09:36 1798次阅读
    FTP应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模组AT<b class='flag-5'>开发</b>示例

    低功耗4G模组AIR780EX ——开发板使用说明

    EVB-AIR780EX 开发板通信推出的基于 Air780EX 模组所开发的,包含电源,
    的头像 发表于 09-11 11:55 658次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模组<b class='flag-5'>AIR</b>780EX ——<b class='flag-5'>开发板</b>使用说明

    4G模组Air780E开发板使用手册

    开发板Air780E使用说明
    的头像 发表于 09-09 18:22 656次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>4G模组<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>使用手册

    LuatOS开发板Core_Air780EP使用说明

    Core-Air780EP 开发板通信推出的基于 Air780EP 模组所开发的,包含电源
    的头像 发表于 09-03 17:38 530次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>Core_<b class='flag-5'>Air</b>780EP使用说明

    低功耗4G模组Air700EAQ——开发板使用说明

    低功耗4G模组Air700EAQ——开发板使用说明
    的头像 发表于 08-30 17:14 1066次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模组<b class='flag-5'>Air</b>700EAQ——<b class='flag-5'>开发板</b>使用说明

    LuatOS开发板使用手册——Air700EAQ

    本文详细讲解了Air700EAQ开发板的使用说明。
    的头像 发表于 08-28 14:37 507次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>使用手册——<b class='flag-5'>Air</b>700EAQ

    Air700EAQ硬件设计手册——应用接口2

    Air700EAQ硬件设计的详细介绍
    的头像 发表于 08-27 14:23 400次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700EAQ硬件设计手册——应用接口2

    LuatOS开发板使用手册——Air700ECQ

    LuatOS开发板使用说明——Air700ECQ
    的头像 发表于 08-23 16:28 539次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>使用手册——<b class='flag-5'>Air</b>700ECQ

    Air700ECQ硬件设计手册——应用接口3

    Air700ECQ硬件设计手册——应用接口部分介绍
    的头像 发表于 08-22 18:34 428次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700ECQ硬件设计手册——应用接口3

    Air700ECQ硬件设计手册——应用接口1

    Air700ECQ硬件设计手册——应用接口1
    的头像 发表于 08-21 18:46 363次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700ECQ硬件设计手册——应用接口1

    Air780EP模块——AT指令MQTT接入OneNET开发指南

    过程,Air780EP和MQTT是最佳拍档,让设备互联变得轻松又靠谱。想不想试试这简单又神奇的操作?那就来吧!本文详细讲解了基于Air80EP
    的头像 发表于 08-19 16:40 2117次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP模块——AT指令MQTT接入OneNET<b class='flag-5'>开发</b>指南

    Air780EP模块Lua开发阿里云应用指南

    Air780EP模块Lua开发阿里云超详细教学!看完包学会!
    的头像 发表于 08-08 09:00 899次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP模块Lua<b class='flag-5'>开发</b>阿里云应用指南