查看: 8084|回复: 15

[原创] 【智能生活-KE02Z】第一篇: 基于KE02Z的功率表项目移植

[复制链接]
  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
    发表于 2016-9-18 10:29:27 | 显示全部楼层 |阅读模式
    本帖最后由 harvardx 于 2016-9-18 10:34 编辑

        如题, 申请时,表面,已经存在这样一个设计,因为从稳定性和平台选择多样性的角度, 欲多一个平台的选择, 顺道对比两者的性能差异和优劣, 同时也是为今后批量多一个供应商选择.


    【KE02Z】基于KE02Z的三相交流功率,频率表的设计
    https://www.nxpic.org.cn/module/forum/forum.php?mod=viewthread&tid=605721&fromuid=2039986
    (出处: 恩智浦技术社区)

    拿到开发板,就着手现有程序和硬件方面的移植工作.


    一, 硬件方面
    FMVM[`SJVTPL]IQ804OV7GH.png


       硬件的设计比较简单 ,因为是用在设备上用于观测输出情况, 计量精度没有特别要求,基本是在0.5或者1.0级左右.因此没有采用专用的电力计量IC, 因为是需要输出频率显示,所以采用了直接数字采样方案 ,功率部分是采用了 直接采样电压 ,电流的办法来实现, 把乘法工作交个单片机来运算, 功率表,也可以采样硬件乘法器的形式,将模拟的电压电流信号直接相乘,从而直接得到功率信号的直流电压.但硬件上易导致复杂化 庞大化, 综合考虑,采用了如今这样一种比较低廉的方案.
          但是对硬件系统的要求比较高.首先 ,电压没有采用隔离采集 ,而是分压,桥整后 ,直接单片机交流采样. 电流采用了 隔离的霍尔 电流互感器. 隔离尚可, 但是此或者电流传感器,是直流的 .会输出与交流电流波形一致的直流电压信号. 因此在软件中,需要进行一个简单的算法处理 .
         如此硬件处理, 相对来说 比较简易, 在满足性能要求的前提下,尽量简化. 也方便可以移植到不同的平台.初步的设想可以在大多数的8位机和M0 平台之间迁移.

    二, 软件移植.
         
          依附于硬件的简易性, 软件方面的移植也变得相对容易. 首先就是一个系统时钟节拍, 这个cortex的单片机都会有,为了通用,建议用一个普通的定时器代替. 现在的单片机普遍有3个以上的定时器.
         例如: 常见的一个单片机定时实现,内含了多个时标定时,

    1. void TMR0_IRQHandler( void )
    2. {   
    3.     u08 i =0;
    4.     /* Clear TIMER0 Timeout Interrupt Flag */
    5.     _TIMER_CLEAR_CMP_INT_FLAG(TIMER0);  

    6.     /* 电流快速采集 */
    7.      sample_current();
    8.    

    9.      //各个软定时器处/////////////////////////////////////////////////
    10.          //10ms定时到=====================================================
    11.           if(   t0_cnt_10ms++  > 5 )  
    12.          {
    13.             t0_cnt_10ms = 0;
    14.             f10ms                  = true;
    15.          }  
    16.          //20ms定时到=====================================================
    17.           if( t0_cnt_20ms++  > 10 )  
    18.          {
    19.                    t0_cnt_20ms = 0;
    20.                   f20ms                  = true;
    21.          }
    22.      
    23.           if( t0_500ms++   > 250 )  
    24.         {
    25.                    t0_500ms = 0;
    26.                   f500ms  = true;
    27.         }     
    28.    
    29.     //1s级定时到=====================================================
    30.     if( t0_1s++   > 500 )  
    31.         {
    32.                    t0_1s = 0;
    33.                   f1s  = true;                  f500ms2  = true;
    34.         }
    35.    
    36.     if( t0_1s_sample++   > 500 )  
    37.         {
    38.                    t0_1s_sample  = 0;
    39.                   f1s_sample    = true;                  
    40.         }
    41.    
    42.                 //////////////////////////////////////////
    43.                 //倒计时定时器处理
    44.                 for(   i =0 ; i< TIMER_N; i++)
    45.                 {
    46.                         /* 软定时器1s到*/
    47.                         if(        t0_cnt_1s[ i ]++ >=        t0_cnt_1s_base[i]        )
    48.                         {
    49.                             t0_cnt_1s[ i ]         =        0;
    50.                                 //////////////////////////////////////
    51.                                 if( Timer[i].TR == ON )
    52.                                 {
    53.                                         //////////////////////////////////
    54.                                         if( Timer[i].second-- == 0 )
    55.                                         {
    56.                                                 //////////////////////////////
    57.                                                 if( Timer[i].minute-- > 0)
    58.                                                 {
    59.                                                         Timer[i].second = 60;
    60.                                                 }
    61.                                                 else
    62.                                                 {
    63.                                                         Timer[i].TF = true;        
    64.                                                 }
    65.                                                 //////////////////////////////
    66.                                         }/////////////////////////////////
    67.                                 }/////////////////////////////////////
    68.                         }
    69.                 }
    70.                 //倒计时定时器处理
    71.                 //////////////////////////////////////////

    72. }
    复制代码

         简单的系统时钟如下, 提供了几个不同级别,溢出周期的时间标记. 用于前后台系统的控制 和系统的简单的定时工作,如下,可以方便的迁移到不同的单片机系统. 现代单片机的编程基本实现了C语言化,甚至是更加高级的语言,电工们关于用c还是汇编的争论得到自然剖析.ARM时代.你再牛B ,也不可能全部去汇编编程了(大牛除外), 大家帮更多的重心放在自己的实现.
        cortex- M为核心的新一代ARM单片机的出现, 极大的便利了入门者. 随着近几年CMSIS的发展普及随着各家固件库或者bsp的完善. 整个ARM单片机构建出了一份十分优良的单片机生态系统. 定时器你不会 ,请看厂家的固件库, 常用的协议你不会 ,请看标准库. 操控一个单片机,入门一个单片机不再困难,花上3-5小时,花上3-5天,实在不行3-5周, 就会很好的入门,说白了.现在的cortex-M为核心的单片机 不是亲兄弟就是表亲, 大同小异. 也是本项目的实现前提和目的之一.

        看看 ,迁移一下 到底要付出什么代价,是不是如想象中那般便利 ,还是困难重重.第一篇,先到这里. 开始KE02Z的探索实践之旅.
















    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-11-22 10:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    56
    最后登录
    2016-12-23
    发表于 2016-9-18 14:25:21 | 显示全部楼层
    老大威武!软件最好提供电压和电流的过零夹角,方便做有功功率的计算,当然也可以用过零点数的方式求频率,可以简化硬件部分,分辨率取决于采样率 也可以做更高精度了
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    10
    最后登录
    2017-2-9
    发表于 2016-9-18 10:41:17 | 显示全部楼层
    本帖最后由 CodeListing 于 2016-9-18 10:45 编辑

    赞赞赞 顶一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    22
    最后登录
    2017-2-6
    发表于 2016-9-18 10:41:52 | 显示全部楼层
    屌,坐等后续帖子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2016-9-18 11:00:10 | 显示全部楼层
    非常好,支持一下,期待分享更多
    开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7907
    最后登录
    2025-4-11
    发表于 2016-9-18 11:09:18 | 显示全部楼层
    来学习一个
    nxp.png
    来根华子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
     楼主| 发表于 2016-9-18 11:33:36 | 显示全部楼层
    谢谢各位同学支持 .
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-10 15:47
  • 签到天数: 1251 天

    连续签到: 1 天

    [LV.10]以坛为家III

    6

    主题

    2396

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    7534
    最后登录
    2025-5-23
    发表于 2016-9-18 11:39:53 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16857
    最后登录
    1970-1-1
    发表于 2016-9-18 13:28:49 | 显示全部楼层
    支持一下
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
     楼主| 发表于 2016-9-18 15:14:26 | 显示全部楼层
    目前频率是采用过零点检测.并且开启了 引脚的debouce滤波功能 . 功率 目前还是一个实在功率, 然后提供了内部修正系数.. 比较粗狂
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-3 01:21 , Processed in 0.100830 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表