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

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

3天内不再提示

英创信息技术工控主板PWM应用于步进电机控制介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-03 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

工业控制中,许多场合都可以看到电机的身影。特别是步进电机,以其精度高,运行可靠等优势,广泛地应用于数字控制系统中。像这一类步进电机的控制,通常都是使用的脉冲信号来实现的。当步进电机接收到一个脉冲信号,会转动一个固定的角度,所以可以通过控制脉冲的个数来控制转动的角度,从而实现精确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度,从而实现控制速度的目的。

英创嵌入式工控板提供了两种控制步进电机的方法给用户,第一种方法是使用GPIO发出脉冲来实现控制电机的目的,根据需要转动的角度和速度,通过调用GPIO的API函数来发出相应个数和频率的脉冲就能够达到这一目的。但是如果控制电机的实时性要求比较高,需要达到10ms以内的精度,那么第一种方法可能就不能满足要求了,因为控制GPIO是通过了操作系统来执行的,这样程序就涉及到了系统调度等因素,在实时性方面肯定就不能满足太高的需求。于是英创公司推出了另外一种实时性较高的方法,即使用PWM脉冲来控制电机。

英创工控主板EM928x系列上共有4路PWM输出,其最高输出频率可达12MHz,但如果希望保证一定精 度的占空比(1%的精度),则输出最高频率只能到240KHz。而EM335x系列上也有4路PWM输出,其最高输出频率可达50MHz,但如果希望保证一定精度的占空比(1% 的精度),则输出最高频率只能到1MHz。从频率和占空比上看,应该是完全满足控制速度的要求,但是如果要实现精确定位的功能,还需要控制脉冲的个数,所以英创公司修改了PWM脉冲驱动,在原来的基础上增加了对PWM波个数控制和计数的功能,使应用程序能控制发出的脉冲个数,从而精确步进电机的动作。

本文以下部分将介绍这一新增加的功能以及在应用程序中的调用方法。

实现这一功能是通过利用CPU内部的计数器来记录PWM脉冲的个数,当达到预定的值,就产生中断将PWM脉冲停止,这样就能够对PWM脉冲的计数并且产生指定个数的脉冲,这一部分的功能英创公司已经在驱动中完成,用户只需要在应用程序中通过接口调用,就可以启用、停止计数功能,并且实时查询脉冲数。支持这一功能的PWM波有两路:PWM1和PWM2,能产生的最小波形数为2。对PWM的操作可归为2种基本操,在原有的普通使能和停止功能基础上加入了计数功能的操作,所对应的命令参数,定义如下:

#define EM9280_COUNT_START 12//启动带计数功能的PWM脉冲输出
#define EM9280_COUNT_STOP 13//强制停止带计数功能的PWM脉冲输出

接下来来看头文件中定义的PWM 的数据结构,包括频率、占空比以及极性等参数:

struct pwm_config_info
{
unsigned int cmd;//= 0, 1, 2, ....
unsigned int freq;/* in Hz */
unsigned int duty;/* in % */
unsigned int polarity;
unsigned int count;
};

cmd表示指令:就是上面说的两种操作。
freq表示输出的脉冲频率,单位为 Hz。Freq 的取值范围 和板卡的最高支持频率有关。
duty表示输出脉冲的占空比,单位为%。
Duty的取值范围:1 – 99。
Polarity表示输出脉冲的极性,选择 0 或者 1。
count是新加入的参数,表示需要生成的PWM波的个数。

进行PWM操作时,首先打开相应的设备节点文件,然后再调用 write( )函数进行 pwm 的设置、启动计数等操作,以下为启动计数功能的相关应用代码:

int PWM_COUNT_Start(int fd, int freq, int duty, unsigned int count)
{
int rc;
struct pwm_config_info conf;
conf.cmd = EM9280_COUNT_START;
conf.freq = freq;
conf.duty = duty;
conf.polarity = POLARITY;
conf.count = count;
rc = write(fd, &conf, sizeof(struct pwm_config_info));
return rc;
}

这样就只需要调用PWM_COUNT_Start()这个函数,并将参数带入即可,我们就以产生5个占空比为1KHZ的波形为例:

int npwm = 1;
int fd;
char device[32];
unsigned int freq = 1000;
unsigned int duty = 50;
unsigned int count = 5;
sprintf( device, '/dev/em9280_pwm%d', npwm );
fd = open(device, O_RDWR);
if ( fd < 0)
{
printf('can not open /dev/em9280_pwm%d device file!\n', npwm);
return -1;
}
printf( 'Open %s\n', device );
PWM_COUNT_Start( fd, freq, duty, count );

在脉冲输出的过程中,可以调用read函数读取已经输出的脉冲数,如果到达某一个值的时候需要停止输出,就调用write( )函数进行pwm的停止,详细的代码如下:

int PWM_COUNT_Stop(int fd )
{
int rc;
struct pwm_config_info conf;
memset( &conf, 0, sizeof(struct pwm_config_info));
conf.cmd = EM9280_COUNT_STOP;
rc = write(fd, &conf, sizeof(struct pwm_config_info));
return rc;
}
//读取已发送脉冲数
read(fd, &buf, sizeof(buf));
if( buf>=5 )//当输出脉冲数到达某个值则停止
PWM_COUNT_Stop( fd );

生成5个占空比为1KHz的波形的程序运行的结果如下图:

通过对PWM脉冲计数功能的实现,就可以对电机进行精确的控制了,详细的代码请参考光盘中的例程。

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

    关注

    7

    文章

    6107

    浏览量

    36948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何通过PWM脉冲控制电机

    到原来的70%。 总之,单片机通过PWM脉冲控制电机转速,可以实现精准、高效、智能化的电机控制,被广泛
    发表于 11-28 06:58

    3A6000四核龙芯工控主板,推动信工控深度融合

    当今信科技快速发展,技术的不断演进和市场需求的变化,在工控领域也在进行源源不断地创新,其中最引人注目的是国产龙芯主板在其中的发展应用。
    的头像 发表于 11-14 09:10 205次阅读

    工控主板的设计特性

    在工业自动化、智能装备、物联网等领域,工控主板作为核心控制单元,其设计质量直接决定了整个系统的稳定性、可靠性与运行效率。与消费级主板不同,工控
    的头像 发表于 11-13 08:58 291次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的设计特性

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控主板的自主可控程度直接决定信创新基
    的头像 发表于 11-05 13:54 132次阅读

    工控主板的三大核心技术

    在工业自动化的浪潮中,工控主板如同“工业大脑”的核心载体,支撑着各类设备的稳定运行与智能升级。相较于消费级主板工控主板需在复杂工况下实现长
    的头像 发表于 10-16 11:05 229次阅读

    基于MT6835磁编码器IC的步进电机全闭环伺服控制策略

    步进电机作为一种常见的执行元件,因其结构简单、控制方便等优点被广泛应用于工业自动化、机器人、医疗设备等领域。然而,传统的开环控制方式存在失步
    的头像 发表于 08-27 17:55 686次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板正发挥着
    的头像 发表于 08-11 09:14 565次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 556次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6290次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    数据采集卡与步进电机

    本文介绍步进电机的工作原理,以及如何使用数据采集卡控制步进电机动作。
    的头像 发表于 05-26 15:53 1092次阅读
    数据采集卡与<b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产主板的发展提供了广
    的头像 发表于 05-09 09:24 566次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    工控主板特点与应用场景介绍

    工控主板(IndustrialMotherboard)是专为工业环境设计的计算机主板用于控制、监测和管理工业设备及自动化系统。与普通消费级
    的头像 发表于 03-06 14:39 901次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>特点与应用场景<b class='flag-5'>介绍</b>

    步进电机控制实现方法

    电机能够实现高精度的位置控制和速度控制。本文将详细介绍步进电机
    的头像 发表于 01-21 16:43 2265次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>实现方法

    工业级主板工控主板的区别?

    在工业领域,主板的重要性是被无限放大的。在大型工厂里日夜不停运转的自动化生产线、精准控制的智能电网系统、以及在极端环境下依然稳定采集数据的石油勘探设备,它们背后都依靠着工业级主板工控
    的头像 发表于 01-02 10:01 840次阅读

    步进电机的详解解答

    步进电机,别名脉冲马达,是一种将电脉冲信号转变为角位移或线位移的开环控制电机。它是现代数字程序控制系统中的主要执行元件,广泛
    的头像 发表于 12-29 09:41 1565次阅读