电机学习基础
文章平均质量分 72
他日若得脱身法
这个作者很懒,什么都没留下…
展开
-
STM32HAL库电机开发-速度环-位置式PID-无刷直流电机
工作原理无刷电机和有刷电机不同,无刷电机采用三相控制,大概是这样,原理就是安培定则,也叫右手螺旋定则,电生磁来控制转子,也就是说我们需要输出的pwm波有三条通道。无刷电机用到的传感器是霍尔传感器。霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应:当电流垂直于外磁场通过半导体时, 载流子发生偏转,垂直于电流和磁场的方向会产生一附加电场,从而在半导体的两端产生电势差, 这一现象就是霍尔效应,这个电势差也被称为霍尔电势差。在BLDC中一般采用3个开关型霍尔传感器测量转子的位置,由其输出的3位二进制编原创 2022-03-11 19:53:33 · 13141 阅读 · 2 评论 -
STM32HAL库电机开发-三环控制-位置式PID-有刷减速电机
承接上文,我们分别实现了速度环、电流环、位置环的控制,我们接下来讲解三环控制,三环控制使得电机控制精度更高,其中电流环为最内环,其次是速度环,最外圈是位置环。代码讲解相对于单独的单环控制来说多环控制的工程包括了所有,编码器电流检测,其中的pid.c文件中的pid计算变成了三份,初始化了三套pid算法。如图在每次的pid代码中添加了限制闭环死区和积分分离方舟跑偏。闭环死区是指执行机构的最小控制量,无法再通过调节来满足控制精度,如果仍然持续调节,系统则会在目标值前后频繁动作,不能稳定下来。比如某个原创 2022-03-11 11:01:45 · 2603 阅读 · 4 评论 -
STM32HAL库电机开发-位置环和电流环-位置式PID-有刷减速电机
PID讲一下pid算法先。基本pid算法有两种位置式和增量式,下面两张图片分别是位置式和增量式,各有优缺点,自行百度后选择,本实验采用位置式,当你想换一个的时候改一下pid.c里面的算式就行。为了提高控制精度,我们可以采用多环控制,或者与其他控制算法相结合,一般多环控制是三环,最内层是电流环,其次是速度环,最外层是位置环。位置环的意思有两个,一个是你想要电机转动的圈数位置,另外你可以根据实际应用进行反馈,例如做真空泵的就根据实际测量的真空度作为位置环来控制精度。多环控制:与其他算法结合:原创 2022-03-10 21:48:46 · 3038 阅读 · 2 评论 -
STM32HAL库电机开发-速度环-位置式PID-有刷减速电机
工程来自野火电机程序包,有需要可自行下载野火下载程序流程代码解读mian.c中的函数,各种初始化,之后在while(1)里面的函数,下面括号代表函数定义所在板级支持包接受上位机数据(protocol.c) receiving_process();扫码按键按下或者处理上位机数据(key.c protocol.c)实现功能例如使能电机,停止电机,加减速电机速度(motor_control.c)led.c和key.c就不讲了,很基础。下图是位置式PID在实际运行中的过程分析原创 2022-03-09 22:07:52 · 1205 阅读 · 1 评论 -
STM32-HAL库电机开发编码器
编码器编程基于STM32F407IG,前置基础知识是定时器输入捕获。原理详解编码器的种类有增量式编码器、绝对式编码器、混合式绝对式编码器。本实验使用增量式编码器基本编码器的原理示意图如下图所示。旋转编码器内部大都由码盘、光电检测装置和信号处理电路等部分构成。码盘上刻了若干圈线槽, 线槽等距并且可透光,当码盘旋转时就会周期性的透过和遮挡来自光电检测装置的光线,这样检测装置就会周期性的生成若干电信号。 但是这些电信号通常比较微弱,需要加入一套处理电路对信号进行放大和整形,最后把信号整形为脉冲信号并向外输原创 2022-03-09 15:43:44 · 4707 阅读 · 2 评论 -
STM32学习HAL库ADC电压采集保护和DMA储存
ADC实验原理电机的控制需要电流电压数据来加强精度控制。ADC有三种模式,独立模式,双重模式,三重模式。独立模式使用ADC1\ADC2\ADC3中的一个。双重模式使用ADC1和ADC2。三重模式就是三个 ADC 同时使用。电压输入范围ADC输入范围为:VREF- ≤ VIN ≤ VREF+。由VREF-、VREF+ 、VDDA 、VSSA、这四个外部引脚决定。我们在设计原理图的时候一般把VSSA和VREF-接地, 把VREF+和VDDA 接3V3,得到ADC的输入电压范围为:0~3.3V原创 2022-03-08 20:59:20 · 4375 阅读 · 0 评论 -
STM32定时器学习 hal库PWM输入捕获实验
PWM输入捕获原创 2022-03-06 22:29:41 · 3364 阅读 · 0 评论 -
STM32定时器学习-PWM输出
基本定时器最基础功能定时,两个基础定时器TM6和TM7,基本定时器时钟源只来自内部时钟。如果我们想要一个1s的定时,那么我们应该怎么设置定时器呢?首先了解定时器的基本初始化结构体 typedef struct { uint16_t Prescaler; // 预分频器 uint16_t CounterMode; // 计数模式 uint32_t Period; // 定时器周期 uint16_t ClockDi原创 2022-03-04 11:05:52 · 19226 阅读 · 0 评论