
STM32电机控制
文章平均质量分 50
Car12
嵌入式开发,爱好者
展开
-
ULN2003驱动28BYJ-48单极性步进电机
驱动器和电机stm32 驱动代码 while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ if(x%4==0) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET); } else if(x%4==1) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); } else if原创 2022-05-11 16:50:34 · 562 阅读 · 0 评论 -
数据帧分析
原理分析协议内容: 1、检验数范围是:不包含数据头和位的所有数据(从设备地址到CRC数据之间的内容) 2、起始位 协议头T1=0xAA; T2-T2-T3 为0x000000-0xFFFFFF 的连续序列 3、结束位 协议头T1=0xEE; T2-T2-T3 为0x000000-0xFFFFFF 的连续序列(和数据头一致) 4、小端序方式LSB起始位 设备地址 功能码 数据长度 备用...原创 2021-08-05 18:12:24 · 3141 阅读 · 0 评论 -
PID 多环控制
速度环的后级,再串上一个电流环,以前级的输出 (这里指速度环的输出),作为后级的输入 (这里指作为电流环的输入),最终后级 (电流环) 的输出最终实现在执行机构上, 以形成双反馈控 制的效果。在串级 PID 控制中,最外环一般选择期望控制的参数的环节,例如对应速度快慢的速度环、位置的位置环、电流大小的电流环大小,本代码的选择位置环作为最外环,位置作为控制量,期望控制电机实际位置。...原创 2021-07-05 18:01:42 · 3048 阅读 · 1 评论 -
电机原理和参数
1.编码器增量编码器只输出设备的位置变化和方向;根据信号的相位来判定方向;脉冲的频率判定速度;z通道只有一个信号,可以判定位置绝对编码器,含有多个码道1.1.编码器参数分辨率: 一圈产生的脉冲数量;ppr,其分辨率表示为编码器转轴旋转一圈所产生的脉冲数,即脉冲数/转 也叫多少线精度: 读数和实际位置的最大误差,角度、角分,最大响应频率, 每秒输出的脉冲数量信号输出形式 直接/协议1.2.STM32编码器结构图 1-1STM32编码器结构1.3.电机速度、方向的计算方法编码器原创 2021-07-04 15:55:39 · 3450 阅读 · 0 评论 -
PID算法学习笔记
位置式PID算法积分环节替换为累计的形式实现/** * @brief PID算法实现 * @param actual_val:实际值 * @note 无 * @retval 通过PID计算后的输出 */float PID_realize(float actual_val){ /*计算目标值与实际值的误差*/ pid.err=pid.target_val-actual_val; /*误差累积*/ pid.integral+=pid.err; /*原创 2021-07-04 00:44:28 · 2489 阅读 · 3 评论 -
STM32 编码器的CUBEMX的使用
CubeMx的设置方法CubeMx生成编码的相关代码底层初始化/*** @brief TIM_Encoder MSP Initialization* This function configures the hardware resources used in this example* @param htim_encoder: TIM_Encoder handle pointer* @retval None*/void HAL_TIM_Encoder_MspInit(TIM_Hand原创 2021-07-04 00:08:44 · 1433 阅读 · 2 评论 -
VSCODE打开野火电机代码需要增加的配置 c_cpp_properties.json
不增加配置找不到函数的定义settings.json{ "files.associations": { "bsp_debug_usart.h": "c" }, "C_Cpp.inactiveRegionOpacity": null, "C_Cpp.intelliSenseEngineFallback": "Disabled", //需要添加的 "C_Cpp.intelliSenseEngine": "Tag Parser",}c_cpp_pro原创 2021-07-03 13:56:37 · 360 阅读 · 0 评论 -
PID算法的EXCEL模拟实现
增量式PID算法公式:在表格里可以看见PID算法在目标值和实际值差异较大时,控制量也很大,主要是比例环节起到主要的调节作用,在目标值和实际值相等时,主要的控制量是积分环节,比例和微分环节不参与控制;...原创 2021-07-03 13:16:07 · 1897 阅读 · 0 评论 -
STM32 定时器输出pwm的频率计算方法 PWM 频率检测方法 直流电机的位置控制
调节频率: 定时器重载值 = 定时器分频后的频率 / 最终输出的频率频率测量计算方法 : 检测频率= 定时器分频后的频率 / 定时器的一个周期的计数值有刷电机控制转动圈数,必须要有编码器的存在直流有刷电机的位置控制(控制转动几圈)是通过编码反应电机转动的角度。 如电机旋转一圈编码器输出60000个脉冲,用户要求电机旋转2圈,就是设置PID目标值12000=6000*2, PID 传入的实际值也就是编码器的脉冲数...原创 2021-05-18 17:45:49 · 3431 阅读 · 0 评论 -
STM32 RTC 使用
cubemx中的异步同步分频器的来源如下图原创 2021-05-15 15:50:30 · 157 阅读 · 0 评论 -
stm32f103c8t6 AD DMA连续采集8个通道
时钟设置如下AD基本8个通道设置AD DMA 设置回调函数重写uint16_t data[8]; //注意这里是uint16_t uint8_t eoc=0;void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ if((HAL_ADC_GetState(hadc)&HAL_ADC_STATE_REG_EOC)==HAL_ADC_STATE_REG_EOC) { eoc=...原创 2021-05-13 17:52:26 · 2822 阅读 · 1 评论 -
stm32 断路功能和互补输出
CR2CCxE 和 CCxNE 位同时置 1 并且 MOE 位置 1(如果存在断路)时,将使能死区插入。TIMx_BDTR 寄存器中的 DTG[7:0] 位用于控制所有通道的死区生成。将基于参考波形OCxREF 生成 2 个输出 OCx 和 OCxN。如果 OCx 和 OCxN 为高电平有效:● 输出信号 OCx 与参考信号相同,只是其上升沿相对参考上升沿存在延迟。● 输出信号 OCxN 与参考信号相反,并且其上升沿相对参考下降沿存在延迟。如果延迟时间大于有效输出( O...原创 2021-05-11 00:15:34 · 1035 阅读 · 0 评论 -
高级定时器的各种框图和HAL库重要结构
高级定时器的各种框图和HAL库重要结构原创 2021-04-29 22:21:32 · 202 阅读 · 0 评论 -
霍尔传感器和直流无刷电机
高级定时器TIM1,TIM8用于生成PWM信号驱动电机;接口定时器TIM2,TIM3,TIM4,TIM5 实现和接口定时器的连接,检测电机的位置变化;-------------------------------------TIM3接口定时器的设置--------------------------------------------------TIM3从模式设置为复位模式,通过异或门将3个输入端TI1,TI2,TI3连接在一起,只要发生信号的变化就会导致TI1F_ED的变化,这个变化作为高原创 2021-04-28 01:08:22 · 3692 阅读 · 0 评论 -
STM32编码器的学习笔记
STM32编码器的学习笔记顺时针旋转就是一个递增的计数器逆时针旋转就是一个递减的计数器编码器的使用: 设置从模式寄存器的SMCR(SMS) 工作模式:编码器模式1,编码器模式2,编码器模式3; 设置输入引脚为TI1,TI2 设置触发的极性CCER(CC1P,CC2P) 设置滤波和分频 SCMR(IC1F,IC1PSC IC2F,IC2PSC) 使能计数器 CR1(CEN) 硬件会自动设置CR1(...原创 2021-04-27 21:10:17 · 5003 阅读 · 5 评论