jinglixixi 发表于 2024-2-14 12:51

【CH32X035DIY】+步进电机驱动控制

<div class='showpostmsg'> 本帖最后由 jinglixixi 于 2024-2-14 12:52 编辑

<p align="left">在绣花机仿真系统中,是靠托板的二维运动来实现绣针的相对位移,所采用的步进电机及导轨的形式如图1所示。其中,滑台丝杠的螺距为4mm/圈。</p>

<p align="left"> &nbsp;&nbsp;&nbsp;</p>

<p align="left">图1 行走装置结构</p>

<p align="left">&nbsp;</p>

<p>所选用的电机为步进电机,见图2所示。</p>

<p> &nbsp;</p>

<p>图2 步进电机</p>

<p>&nbsp;</p>

<p>该电机的工作电流为1.0~1.5A,扭矩为0.3N.m,步进角为1.8&deg;,200脉冲/圈,其排线各引脚的作用及排列关系见图3所示。</p>

<p> &nbsp;</p>

<p>图3 引脚信号排列</p>

<p>&nbsp;</p>

<p align="left">为驱动步进电机,选取的是双极微步电机评估板,见图4所示。</p>

<p> &nbsp;&nbsp;&nbsp;</p>

<p>图4 双极微步电机评估板</p>

<p>&nbsp;</p>

<p>步进电机与驱动板的连接关系为:</p>

<p>其中VM与GND引脚是连接12V直流电源。</p>

<p>驱动板的信号则由CH32X035开发板提供,是由扩展接口引出,见图5所示。</p>

<p> &nbsp;</p>

<p>图5&nbsp;扩展接口</p>

<p>&nbsp;</p>

<p>其中:</p>

<p>步进脉冲信号输入端CLK连接PA4</p>

<p>步进方向信号输入端DIR连接PA5</p>

<p>使能信号输入端EN连接PA6</p>

<p> &nbsp;&nbsp;&nbsp;</p>

<p>图6 实物连接</p>

<p>&nbsp;</p>

<p>步进脉冲信号输入端CLK连接PA4(一个脉冲走一步,脉冲频率决定着步进电机速度)</p>

<p>步进方向信号输入端DIR连接PA5(可使用按键来切换步进电机的方向)</p>

<p>使能信号输入端EN连接PA6(低电平时关闭芯片的功率输出)</p>

<p>测试电机转动的程序为:</p>

<p>实现引脚输出模式配置的函数为:</p>

<pre>
<code class="language-cpp">void BSP_BJDJ_Init (void)
{
    GPIO_InitTypeDefGPIO_InitStructure = {0};
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &amp;GPIO_InitStructure);
}</code></pre>

<p>&nbsp;</p>

<p>所用引脚输出高低电平的语句定义为:</p>

<p>#define CLK_high&nbsp; &nbsp;GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET)</p>

<p>#define CLK_low&nbsp;&nbsp; GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_RESET)</p>

<p>#define DIR_high &nbsp;&nbsp;GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET)</p>

<p>#define DIR_low&nbsp; &nbsp;&nbsp;GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_RESET)</p>

<p align="left">#define EN_high&nbsp;&nbsp; &nbsp;GPIO_WriteBit(GPIOA, GPIO_Pin_6, Bit_SET)</p>

<p align="left">#define EN_low&nbsp;&nbsp; &nbsp;&nbsp;GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_RESET)</p>

<p>&nbsp;</p>

<p>测试电机转动的程序为:</p>

<pre>
<code class="language-cpp">int main(void)
{
    uint16_t i = 0 ;
    uint16_t M=60000;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    SystemCoreClockUpdate();
    Delay_Init();
    BSP_BJDJ_Init();
    EN_high;
    DIR_high;
    for(i=0; i&lt;M; i++)   
    {
         CLK_high;
         Delay_Us(200);
         CLK_low;
         Delay_Us(200);
    }
    Delay_Ms(500);
    DIR_low;
    for(i=0; i&lt;M; i++)
    {
         CLK_high;
         Delay_Us(200);
         CLK_low;
         Delay_Us(200);
    }
    EN_low;
}</code></pre>

<p>经程序的编译与下载,其执行效果如视频所示。</p>

<p>&nbsp;</p>

<p>演示视频:</p>

<p>802b09b40f029c5bc96b5c819d8da797<br />
&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

秦天qintian0303 发表于 2024-2-14 23:09

<p>这个功率能做多大啊,感觉快充功率带不动啊&nbsp;&nbsp;</p>

lugl4313820 发表于 2024-2-15 11:58

<p>老师这是整上大工程了呀,这平台可以呀,多少钱可以买到?</p>

jinglixixi 发表于 2024-2-15 12:44

lugl4313820 发表于 2024-2-15 11:58
老师这是整上大工程了呀,这平台可以呀,多少钱可以买到?

<p>嗨买贵了,上当的就我这一份,200多。</p>

jinglixixi 发表于 2024-2-15 12:46

本帖最后由 jinglixixi 于 2024-2-16 09:22 编辑

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3300139&amp;ptid=1271845" target="_blank"><font color="#999999">秦天qintian0303 发表于 2024-2-14 23:09</font></a></font> 这个功率能做多大啊,感觉快充功率带不动啊&nbsp;&nbsp;</blockquote>
</div>

<p>24V供电,约1.0~1.5A。</p>

jinglixixi 发表于 2024-2-15 12:50

lugl4313820 发表于 2024-2-15 11:58
老师这是整上大工程了呀,这平台可以呀,多少钱可以买到?

<p>看图是2轴的,到手才发现是单轴的!</p>

lugl4313820 发表于 2024-2-15 15:32

jinglixixi 发表于 2024-2-15 12:50
看图是2轴的,到手才发现是单轴的!

<p>再买一轴,整个大工程我们学习学习一下。</p>

jinglixixi 发表于 2024-2-16 09:22

lugl4313820 发表于 2024-2-15 15:32
再买一轴,整个大工程我们学习学习一下。

<p>先攒经费再说吧,哈哈。。。</p>

LitchiCheng 发表于 2024-2-18 09:33

<p>这个用PWM控制会不会更流畅点,阻塞的话其他应用加上去不太好写了</p>

jinglixixi 发表于 2024-2-18 21:35

LitchiCheng 发表于 2024-2-18 09:33
这个用PWM控制会不会更流畅点,阻塞的话其他应用加上去不太好写了

<p>它主要靠节拍脉冲工作,用PWM恐怕够呛吧。</p>
页: [1]
查看完整版本: 【CH32X035DIY】+步进电机驱动控制