当前位置: 首页 > news >正文

插补算法(逐点比较法)+PWM配置操作

插补算法分为:1,脉冲增量插补算法;2,数字增量插补算法;

这里采用脉冲增量插补算法的逐点比较法

---------------------------------------------------------------------------------------------------------------------------------

逐点比较法:每走一步都将加工点的瞬时坐标同规定的图形轨迹比较,判断其偏差,决定下一步的走行。

---------------------------------------------------------------------------------------------------------------------------------

递推算法:

---------------------------------------------------------------------------------------------------------------------------------

终点判别:将终点位置的x,y坐标相加求和,得出总步数,开始插补时,无论是给哪个轴给进一步,总步数都减一,直到为0时,代表已到达终点,就停止插补;

---------------------------------------------------------------------------------------------------------------------------------

任意象限直线插补

---------------------------------------------------------------------------------------------------------------------------------

直线插补代码思路

初始化定时器:初始化IO,设置ARR,PSC,计数方式以及脉冲输出模式(PWM2);

电机旋转方向判断:实现任意象限直线插补,需提前判断所属现象,设置电机旋转方向;

编写直线插补算法:实现插补第一步,偏差判别,坐标给进,偏差计算并开启脉冲输出与中断使能;

编写中断服务函数:实现除第一步以外的其他步数的偏差判别,坐标给进,偏差计算,终点判别;

---------------------------------------------------------------------------------------------------------------------------------

课堂复习:

当到达ARR时,进入一次中断

PWM2向上计数:小于CCR的值输出低电平,大于CCR输出高电平

PWM1向上计数:小于CCR的值输出高电平,大于CCR输出低电平

 /* 设置通道的比较值 */__HAL_TIM_SET_COMPARE(&g_atimx_handle,st_motor[AXIS_X].pulse_channel,Speed);   //修改CRR的值__HAL_TIM_SET_COMPARE(&g_atimx_handle,st_motor[AXIS_Y].pulse_channel,Speed);   //修改CRR的值__HAL_TIM_SET_AUTORELOAD(&g_atimx_handle,Speed*2);  /* ARR设置为比较值2倍,这样输出的波形就是50%的占空比 */TIM_CCxChannelCmd(TIM8, st_motor[axis].pulse_channel, TIM_CCx_DISABLE); /* 使能通道输出 */TIM_CCxChannelCmd(TIM8, st_motor[g_pol_par.act_axis].pulse_channel, TIM_CCx_ENABLE); /* 使能通道输出 */

对PWM进行操作的函数;

PWM波形的占空比用什么函数去改,周期用什么函数改?定时器配置好之后,打开中断的函数是什么?pwm输出怎么到io口上?

1:修改占空比:__HAL_TIM_SET_COMPARE(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t CompareValue);

2:修改周期:__HAL_TIM_SET_AUTORELOAD(TIM_HandleTypeDef *htim, uint32_t Autoreload);

---------------------------------------------------------------------------------------------------------------------------------

3:打开中断:1. 使能定时器中断源(HAL 库),2. 配置中断优先级 + 使能中断通道(HAL 库),3. 启动定时器(HAL 库)

__HAL_TIM_ENABLE_IT(TIM_HandleTypeDef *htim, uint32_t IT);
HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); // 设置优先级
HAL_NVIC_EnableIRQ(IRQn_Type IRQn); // 使能中断通道
HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);

---------------------------------------------------------------------------------------------------------------------------------

4:输出到IO口:1:IO 口复用配置(底层初始化);步骤 2:开启 PWM 通道输出(关键函数)

GPIO_InitTypeDef gpio_init_struct;
gpio_init_struct.Pin = ATIM_TIMX_PWM_CH1_GPIO_PIN; // X轴PWM引脚
gpio_init_struct.Mode = GPIO_MODE_AF_PP; // 复用推挽输出(关键)
gpio_init_struct.Pull = GPIO_PULLUP;
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;
gpio_init_struct.Alternate = ATIM_TIMX_PWM_CHY_GPIO_AF; // 复用为TIM8功能
HAL_GPIO_Init(ATIM_TIMX_PWM_CH1_GPIO_PORT, &gpio_init_struct);HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

---------------------------------------------------------------------------------------------------------------------------------

http://www.dtcms.com/a/597848.html

相关文章:

  • 唐山网站制作app新郑市网站建设
  • 买完阿里云域名如何做网站网站商业授权
  • QEMU 使用 Open vSwitch网桥连接虚拟机网络
  • 充气泵方案:充气泵与汽车的关系
  • 北京P2P公司网站建设网站建设合同 模板 下载
  • 贴片机编程:提高生产效率与精度的关键技术 | 贴片机编程技巧与注意事项详解
  • 深度学习_三层神经网络传播案例(L0->L1->L2)
  • 营销类网站建设需要注意的问题国家信用信息公示系统官网山东
  • 第四章:C# 面向对象编程详解:从类与对象到完整项目实践
  • DDoS防护:为企业业务保驾护航的高可用盾牌
  • 企业产品做哪个网站推广好建筑培训课程有哪些
  • 模版 c++
  • LLaMA Factory微调大模型
  • UaGateway构建高可用OPC UA架构:实现冗余通信与数据聚合
  • Linux之vmlinux文件段布局和arm64 的链接脚本vmlinux.lds.S分析
  • C#6、三种主要的错误类型是什么
  • 使用Selenium进行网页自动化
  • 论坛网站建设推广优化wordpress主题下载资源
  • 网站推广文章范例在哪里查企业信息最准确
  • MCP驱动的Rgentic RRG(向量数据库+网络搜索)
  • 网站漏洞怎么修复上海劳务市场招聘信息查询
  • 异常的分类
  • 做时时网站要多少钱用虚拟机做网站服务器
  • 任性动图教程2 -如何让诗词生成动图
  • 零基础学JAVA--Day29( StringBuffer+ StringBuilder)
  • 做源码演示的网站果洛wap网站建设多少钱
  • Zabbix7设置告警邮件提醒
  • 【九、Linux访问网络附加存储】
  • 网站模块分析枣庄有做网站的吗
  • 记事本做网站怎么改字体出入合肥最新通知今天