[demo程序]

[NV32F101单轴伺服控制板]用PWM脉冲驱动伺服精确定位

[复制链接]
1736|9
手机看帖
扫描二维码
随时随地手机跟帖
eyancool|  楼主 | 2018-5-15 09:31 | 显示全部楼层 |阅读模式
还在玩流水灯?来学学怎么如何发PWM脉冲驱动伺服电机做精确定位控制.
1.修改汇川伺服驱动器(IS620P)以下参数
H02-00:  1    位置控制模式
H05-00:  0    脉冲指令
H05-01:  0    脉冲指令选择低速端子输入
H05-02:  10000  电机旋转一圈的脉冲数量
H05-15:  3    脉冲形态  CW+CCW
H05-17:  2500   编码器分频脉冲数
2.NV32F101单轴与伺服IO硬件连接
NV32                       IS620P
PD0----------------------S-ON           伺服使能
PD1----------------------ALM+          伺服报警
PH0----------------------CW A相       正转脉冲
PH1----------------------CCW B相     反转脉冲
3.NV32F101单轴板软件程序
设置PD0为输出端口,当PD0为高电平伺服电机使能,PD0为低电平伺服电要失能
设置PD1为输入端口,当PD1为高电平伺服电机报警状态,PD1为低电平伺服电机正常状态
void IO_INIT()
{
GPIO_PinInit(GPIO_PTD0, GPIO_PinOutput);
GPIO_PinInit(GPIO_PTD1, GPIO_PinInput);

}
PWM初始化设置
void PWM_Config()
{

    SIM_RemapETM2CH1Pin();  //映射ETM2_CH1至PH1   PWM脉冲输出通道1
    SIM_RemapETM2CH0Pin();  //映射ETM2_CH0至PH0   PWM脉冲输出通道0
    ETM_PWMInit(ETM2, ETM_PWMMODE_EDGEALLIGNED, ETM_PWM_LOWTRUEPULSE);  //ETM2被设置为边沿对齐PWM脉冲
    ///关闭其它不用的6个PWM通道//////////
    ETM_disblechannel(ETM2,2);
    ETM_disblechannel(ETM2,3);
    ETM_disblechannel(ETM2,4);
    ETM_disblechannel(ETM2,5);
    ETM_disblechannel(ETM2,6);
    ETM_disblechannel(ETM2,7);
    NVIC_SetPriority(ETM2_IRQn,0);   //设置ETM2中断为0,最高优先级
    NVIC_EnableIRQ(ETM2_IRQn);     //打开ETM2中断
    ETM_SetCallback(ETM2, PWM_Task);  //设置中断回调函数
}

ETM2 中断对PWM脉冲进行计数,当数量相等关闭PWM脉冲输出
uint32_t PWMcount;
void PWM_Task(void)
{
        PWMcount++;

       if(PWMcount==20000)
        {
        ETM_ClockSet(ETM2,ETM_CLOCK_NOCLOCK,ETM_CLOCK_PS_DIV1);  //关闭ETM2时钟
        ETM_DisableOverflowInt(ETM2);     //关闭ETM2溢出中断               
        }
        ETM_ClrOverFlowFlag(ETM2); //清除溢出标志位
}

主函数
int main (void)
{
    /*系统初始化*/
    sysinit();               
    cpu_identify();

    IO_INIT();
    PWM_Config();
    GPIO_PinSet(GPIO_PTD0);//使能伺服电机
    ETM_SetModValue(ETM2, 479);      //PWM脉冲频率100K   48000000(48M)/100000=480-1=479
    ETM_SetChannelValue(ETM2, ETM_CHANNEL_CHANNEL1, 120);
    ETM_ClockSet(ETM2, ETM_CLOCK_SYSTEMCLOCK, ETM_CLOCK_PS_DIV1);
    ETM_EnableOverflowInt(ETM2);
    while(1)
    {
    }
}
IS620P位置控制连接图.png

相关帖子

123ycli| | 2018-5-19 10:03 | 显示全部楼层
都开始用101的芯片啦?太先进了。

使用特权

评论回复
HKingS| | 2018-5-19 15:50 | 显示全部楼层
图片上介绍的驱动好复杂,PWM的电机驱动没搞过,支持下。

使用特权

评论回复
余三水| | 2018-5-29 09:20 | 显示全部楼层
楼主的驱动图已经把人绕晕了,表示太高大上了。

使用特权

评论回复
ouyunhuai| | 2018-7-16 10:26 | 显示全部楼层
这个有加减速控制的嘛

使用特权

评论回复
sevenliyumei| | 2020-8-18 14:10 | 显示全部楼层
您好:
目前有个液晶显示的立项项目,视频输入信号为差分的YPbPr信号,即Y+、Y-、Pb+、Pb-、Pr+、Pr-,抄了竞品的板子,用EL5375将差分的YPbPr信号转换成了单端的信号,然后送给视频芯片,经视频芯片处理后输出LVDS接液晶
目前的问题是EL5375代理商瑞萨不是体系内供应商,能帮忙找个EL5375的替代料吗,万分感谢。微信同手机号
13592414905

使用特权

评论回复
考哥| | 2020-8-23 18:22 | 显示全部楼层
谢谢分享

使用特权

评论回复
スモモ| | 2020-8-23 18:55 | 显示全部楼层
驱动图看着有些复杂

使用特权

评论回复
怎么叫都可以| | 2020-8-23 19:37 | 显示全部楼层
还没用过

使用特权

评论回复
自己的灌饼| | 2020-9-18 11:42 | 显示全部楼层
终于等到这个帖子了,这个帖子不错的,感觉很棒,能够了解其中的开发流程的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

105

帖子

4

粉丝