2584|7

305

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【RISC-V MCU CH32V103测评】- 9:电动机控制板 [复制链接]

  本帖最后由 MianQi 于 2021-3-17 10:56 编辑

这次测试:[RISC-V MCU 应用开发] 第八十章、CH32V103应用教程——直流有刷电机按键控制

网址:https://bbs.21ic.com/icview-3088792-1-1.html

 

先看一下总的方案:

 

物料清单:

1、BD139  1个

2、BD140  1个

3、1.5kΩ电阻器  1个

4、1kΩ电阻器  2个

5、LED  1个

6、9v电池  2节

7、按键开关  5个

8、直流有刷电动机  1个

9、面包板、跳线  若干

10、电源开关  1个

 

示例中提到了电动机驱动板,但没有照片,也没有文字说明,于是,将两个三极管接成推挽输出:

1、NPN型发射极接电源(两个9v电池串联)负极,PNP型发射极接电源正极;

2、电源中点在两节电池的串接点;

3、两个三极管的集电极接电动机一端;

4、电源中点接电动机另一端;

5、两个三极管的基极各通过一个1kΩ电阻器分别接到PA8与PA11;

6、1.5kΩ电阻器串联LED作为电源指示灯;

7、电源地要接到板子(CH32V103C8T6)的GND。

 

演示视频:


 

最新回复

我们可以共同学习一下   详情 回复 发表于 2021-3-18 07:13
点赞 关注
个人签名

“Everyone wants the project to be good, fast, and cheap... pick two.”

- Unknown

 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

是用PWM输出的吧

建议楼主把电路也发上来,或者main函数贴一下

大家好好研究研究

点评

[attachimg]528661[/attachimg]  详情 回复 发表于 2021-3-17 18:06
 
 
 

回复

305

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
本帖最后由 MianQi 于 2021-3-17 18:09 编辑
Jacktang 发表于 2021-3-17 17:07 是用PWM输出的吧 建议楼主把电路也发上来,或者main函数贴一下 大家好好研究研究

这是接线图,需要说明的是,我实际用的是BD139和BD140,而这个制图软件只有小信号管,管脚的分布不同。

个人签名

“Everyone wants the project to be good, fast, and cheap... pick two.”

- Unknown

 
 
 

回复

305

帖子

0

TA的资源

纯净的硅(初级)

4
 
本帖最后由 MianQi 于 2021-3-17 18:15 编辑

这是main.c:

(我直接从工作空间中粘过来地,因为我发现有些从论坛里拷贝或者下载的代码在工作空间中要做局部的修改才能用,主要是语法上的小错)

    /********************************** (C) COPYRIGHT *******************************
    * File Name          : main.c
    * Author             : WCH
    * Version            : V1.0.0
    * Date               : 2020/09/29
    * Description        : Main program body.
    *******************************************************************************/
    #include "debug.h"
    #include "led.h"
    #include "key.h"
    #include "timer.h"

    int main(void)
    {
        u8 t=0;
        static u16 ChannelPulse = 0;
        static u8  direction = 0;

            USART_Printf_Init(115200);
        Delay_Init();                         //延时函数初始化
            LED_Init();                           //LED初始化
            KEY_Init();                           //按键初始化
            TIM1_PWMOut_Init();                   //PWM输出初始化
            TIM_CtrlPWMOutputs(TIM1, DISABLE );

            printf("SystemClk:%d\r\n",SystemCoreClock);

            while(1)
        {
            t=KEY_Scan(0);      //得到键值

            switch(t)
            {
                case KEY0_PRESS:
                    TIM_CtrlPWMOutputs(TIM1, ENABLE );  //控制电机开
                    GPIO_ResetBits(GPIOA,GPIO_Pin_0);   //LED1指示当前开关状态,LED1亮电机开,LED1灭电机关
                    break;

                case KEY1_PRESS:
                    TIM_CtrlPWMOutputs(TIM1, DISABLE );  //控制电机关
                    GPIO_SetBits(GPIOA,GPIO_Pin_0);
                    break;

                case KEY2_PRESS:
                    ChannelPulse += 50;                  //增加占空比,提高电机转速
                    ChannelPulse = ARR < ChannelPulse ? ARR : ChannelPulse;    // 检查占空比的合法性
                    if(direction%2==0)
                    {
                        TIM_SetCompare1(TIM1,ChannelPulse);
                        TIM_SetCompare4(TIM1,0);
                    }
                    else
                    {
                        TIM_SetCompare4(TIM1,ChannelPulse);
                        TIM_SetCompare1(TIM1,0);
                    }
                    break;

                case KEY3_PRESS:
                    ChannelPulse -= 50;                  //减小占空比,降低电机速度
                    ChannelPulse = ARR < ChannelPulse ? ARR : ChannelPulse;    // 检查占空比的合法性
                    if(direction%2==0)
                    {
                        TIM_SetCompare1(TIM1,ChannelPulse);
                        TIM_SetCompare4(TIM1,0);
                    }
                    else
                    {
                        TIM_SetCompare4(TIM1,ChannelPulse);
                        TIM_SetCompare1(TIM1,0);
                    }
                    break;

                case KEY4_PRESS:
                    if(direction%2==0)                   //切换电机转速,即设置两路PWM输出
                    {
                        TIM_SetCompare1(TIM1,0);
                        TIM_SetCompare4(TIM1,0);
                        Delay_Ms(200);
                        TIM_SetCompare4(TIM1,ChannelPulse);
                        TIM_SetCompare1(TIM1,0);
                        GPIO_ResetBits(GPIOA,GPIO_Pin_1);  //LED2指示当前旋转方向,LED2灭表示正向旋转,LED2亮表示反向旋转
                        printf("DIR:%d\r\n",direction);
                        direction++;
                    }
                    else
                    {
                        TIM_SetCompare1(TIM1,0);
                        TIM_SetCompare4(TIM1,0);
                        Delay_Ms(200);
                        TIM_SetCompare1(TIM1,ChannelPulse);
                        TIM_SetCompare4(TIM1,0);
                        GPIO_SetBits(GPIOA,GPIO_Pin_1);
                        printf("DIR:%d\r\n",direction);
                        direction++;
                    }
                    break;
                default:
                    Delay_Ms(10);
            }
            }
    }

 

点评

我们可以共同学习一下  详情 回复 发表于 2021-3-18 07:13
个人签名

“Everyone wants the project to be good, fast, and cheap... pick two.”

- Unknown

 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

5
 

楼主工况可以呀,台钳暴露实力。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

6828

帖子

0

TA的资源

五彩晶圆(高级)

6
 
MianQi 发表于 2021-3-17 18:09 这是main.c: (我直接从工作空间中粘过来地,因为我发现有些从论坛里拷贝或者下载的代码在工作空间中要 ...

我们可以共同学习一下

点评

在这里(https://bbs.eeworld.com.cn/thread-1159766-1-1.html#pid3049030)谈到了下一步实验的设想,驱动电路依然用分立元器件。邀请你参与。  详情 回复 发表于 2021-3-19 08:19
当前只能加减速,不能启停和换向。猜测是因为没有用到示例中提到的电动机驱动板。针对我现在的驱动电路,你看代码应该怎样改。  详情 回复 发表于 2021-3-19 08:17
 
 
 

回复

305

帖子

0

TA的资源

纯净的硅(初级)

7
 
Jacktang 发表于 2021-3-18 07:13 我们可以共同学习一下

当前只能加减速,不能启停和换向。猜测是因为没有用到示例中提到的电动机驱动板。针对我现在的驱动电路,你看代码应该怎样改。

个人签名

“Everyone wants the project to be good, fast, and cheap... pick two.”

- Unknown

 
 
 

回复

305

帖子

0

TA的资源

纯净的硅(初级)

8
 
Jacktang 发表于 2021-3-18 07:13 我们可以共同学习一下

在这里(https://bbs.eeworld.com.cn/thread-1159766-1-1.html#pid3049030)谈到了下一步实验的设想,驱动电路依然用分立元器件。邀请你参与。

个人签名

“Everyone wants the project to be good, fast, and cheap... pick two.”

- Unknown

 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表