码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 直流有刷电机开环调速基于STM32F302R8+X-NUCLEO-IHM07M1(三)


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    文章目录

    • 前言
    • 一、STM32F302R8+X-NUCLEO-IHM07M1直流电机的开环调速
      • 1.1.功能需求
      • 1.2.硬件设计
      • 1.3.软件设计
        • 1.3.1.底层配置
        • 1.3.2.应用层与底层的接口开发
        • 1.3.3.应用层开发
          • 1.3.3.1.应用层开发
          • 1.3.3.2.占空比设置
          • 1.3.3.3.LED程序运行指示
          • 1.3.3.4.仿真验证
          • 1.3.3.5.输入输出接口设置
          • 1.3.3.6.代码生成设置
          • 1.3.3.7.代码生成
        • 1.3.4.应用层与底层的代码集成
        • 1.3.5.下载验证
    • 总结


    前言

    主控板STM32F302R8+驱动板X-NUCLEO-IHM07M1+直流减速电机37GB3530,实现电机的开环调速控制。区别于上两章节,本章节工具链采用STM32CubeMX+Matlab/Simulink+Keil,在STM32CubeMX中配置底层,在Matlab/Simulink写应用层,在Keil环境中写应用层与底层的代码接口,并完成程序的集成。

    一、STM32F302R8+X-NUCLEO-IHM07M1直流电机的开环调速

    1.1.功能需求

    通过按键控制直流电机的转速,由于STM32F302R8控制器只有一个按键,因此只能单方向控制电机的加速或者减速,本次实验为加速实验,每按一次按键,电机的转速将增加。

    1.2.硬件设计

    控制板:STM32F302R8
    驱动板:X-NUCLEO-IHM07M1
    直流电机:37GB3530,额定功率10W,额定电压12V,额定电流0.3A
    在这里插入图片描述

    1.3.软件设计

    1.3.1.底层配置

    1、RCC设置为外部时钟,72MHz
    2、PC13设置为输入,无上下拉电阻;PC10,PC11设置为输出,无上下拉电阻,高速,初值为0;PB13设置为输出,下拉电阻,高速,初值为0
    3、PA8设置为TIM1_CH1,PA9设置为TIM1_CH2;TIM1时钟源设置为内部时钟,两通道均设置为PWM输出;TIM1时钟分频值设置为36-1,向上计数,ARR设置为100-1,PWM输出的周期为1/(72000000/36)100=510^-5s,也即20KHz,其余值保持默认即可
    4、IDE设置为Keil,在Keil环境中进行应用层编程
    在这里插入图片描述
    在这里插入图片描述

    1.3.2.应用层与底层的接口开发

    在这里插入图片描述
    在这里插入图片描述

    1.3.3.应用层开发

    1.3.3.1.应用层开发

    在这里插入图片描述
    在这里插入图片描述

    1.3.3.2.占空比设置

    检测到按键按下,占空比增大
    在这里插入图片描述

    1.3.3.3.LED程序运行指示

    LED灯指示程序运行,0.5s闪烁
    在这里插入图片描述

    1.3.3.4.仿真验证

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    仿真结果符合自己的设计需求

    1.3.3.5.输入输出接口设置

    根据底层的接口配置,设置输入输出的名称及信号类型,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.3.3.6.代码生成设置

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.3.3.7.代码生成

    在这里插入图片描述

    1.3.4.应用层与底层的代码集成

    将Matlab生成的代码文件夹复制到底层生成的工程下:DC_Driver
    在这里插入图片描述
    在工程中将DC_Driver目录中的.c文件都添加进工程
    在这里插入图片描述
    添加头文件路径
    注:此时编译会报错,未定义“solver_zc.h”头文件,该头文件在Matlab安装路径下面,可以直接把该文件粘贴复制到DC_Driver文件夹下,也可以将该文件的路径进行添加。
    在这里插入图片描述
    添加DC_Driver.h头文件
    在这里插入图片描述
    在主函数中调用DC_Driver_initialize()
    在这里插入图片描述
    在While循环中调用DC_Driver_step(),根据DC_Driver_step()的运算结果进行电机驱动
    注:调用DC_Driver_step()函数一次,相当于在Matlab中运行模型一次,Matlab中设置10ms模型运行一次,在工程中也要确保DC_Driver_step()10ms被调用一次
    在这里插入图片描述

    1.3.5.下载验证

    编译下载到开发板,观察实验现象
    在这里插入图片描述

    总结

    主控板STM32F302R8+驱动板X-NUCLEO-IHM07M1+直流减速电机37GB3530,实现电机的开环调速控制,工具链采用STM32CubeMX+Matlab/Simulink+Keil,为后续章节的分析奠定基础

  • 相关阅读:
    【Python】函数式编程
    基本程序单元Activity
    2023_Spark_实验十二:Spark高级算子使用
    Windows10神州网信政府版的配置修改
    java-net-php-python-jsp学生党团管理信息系统2020演示录像计算机毕业设计程序
    期末前端web大作业——名侦探柯南网页制作 Hbuiderx制作网页 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
    map和set
    使用FastReport报表动态更新人员签名图片
    矩阵白化原理及推导
    java 运算符
  • 原文地址:https://blog.csdn.net/weixin_42650162/article/details/126681067
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号