接上次有介绍过频率低的好处
1.电机起步用低频,因为低频时感抗小(XL=2πfL),电流容易通过,驱动能力强;而高频时,感抗太大,电流不易通过,启动扭矩不足。
名词:V/f 控制(恒压频比控制):
频率从低开始:利用低频时感抗小、电流容易建立的特点,为产生足够启动扭矩打下基础。
电压也按比例从低开始:根据
U/f ≈ 常数的原则,频率低,电压也同步降低。这样就强行把启动电流限制在了安全范围内。
FOC(也叫矢量控制):
FOC矢量控制,核心就是解决交流电机的“老大难”问题:电流既负责产生磁场,又负责产生扭矩,两者“纠缠”在一起,互相干扰,很难精确控制。
FOC的妙招是用数学方法,把缠在一起的电流“解耦”成两个独立变量:
Id(励磁电流):专职管磁场,好比控制马匹的“步伐”;
Iq(转矩电流):专职管扭矩,好比控制马匹的“力度”。
这样一来,交流电机就变得像直流电机一样好驾驭,可以独立调节“力度”而不影响“步伐”,最终实现平稳、高效、低噪音、响应快的运转。
一些伺服电机,FOC在驱动器内部做好了。比如获取Q轴电流信息:扭矩电流(D轴电流(Id)=励磁电流)本质上是向驱动器索取它内部经过FOC算法计算后的结果。整个复杂的FOC计算过程(如Clarke/Park变换、PID调节、SVPWM生成等),是由驱动器内部的MCU或DSP(数字信号处理器)完成的,你的主控芯片只负责发送“目标位置/速度”和接收“当前状态”这类高层指令
FOC算法流程:①电流采样-三相电;
②Clarke-三个关联变量降维为两个独立的正交变量;
③Park-把两个正弦量,变成两个恒定的直流量(静态坐标系->随转子旋转的旋转坐标系);
④PID调节-根据目标值与实际值的偏差,计算出需要输出的控制量;
⑤逆Park变换-PID调节后得到的目标电压Vd和Vq,需要重新变回两相静止坐标系的电压Vα和Vβ;;
⑥SVPWM(空间矢量脉宽调制)-将Vα和Vβ转换为能直接控制逆变器(三相全桥)MOSFET/IGBT开关的PWM占空比信号,从而产生驱动电机的三相正弦波电压。
2.PWM配置关键点
①模式选择OCMode:模式1-cnt<CCR,输出有效电平;模式2-cnt>CCR,输出有效电平;
②有效电平极性选择OCPolarity:TIM_OCPolarity_Low 低电平;TIM_OCPolarity_High 高电平。
3.电机常见类型:直流电机、交流电机、有刷电机、无刷电机、伺服电机。
| 对比维度 | 直流电机 | 交流电机 |
|---|---|---|
| 输入电源 | 直流电(如电池、整流后的直流) | 交流电(如市电220V/50Hz) |
| 工作原理 | 依靠换向器或电子换向,使转子在固定磁场中持续旋转。 | 利用旋转磁场(由交流电相位变化产生)带动转子转动。 |
| 调速方式 | 调节电压(有刷)或PWM占空比(无刷) | 调节频率(变频调速)或电压 |
| 启动特性 | 启动扭矩大,响应快 | 启动扭矩相对较小,需要辅助启动(如电容启动) |
| 典型应用 | 电动车、无人机、机器人、电动工具 | 工业风机、压缩机、电梯、空调压缩机 |
伺服电机=电机本体+编码器+智能驱动器
有刷电机:线圈绕组为转子,永磁铁为定子,有换向器和AB电刷。电刷是易损耗品,需要定期更换,寿命1-5年,一般用于低端产品。
无刷电机:线圈绕组为定子,永磁铁为转子。寿命高10-15年(受限于轴承),控制和结构更复杂且几乎免维护,所以价格更贵,但低噪且控制精准。交流伺服电机一般用无刷电机。直流伺服都有可能。
关键点:①直流电机靠电流方向切换产生连续旋转(有刷靠机械换向,无刷靠电子换向);交流电机靠交流电本身的正弦变化在定子中产生旋转磁场,带动转子。②直流电机与交流电机的应用场景也不绝对,电池供电的机器人也可以使用交流电机,一般伺服交流电机(无刷),电池输出直流电 → 驱动器(逆变)→ 三相交流电 → 伺服电机(旋转)→ 减速机 → 机器人行走。
4.IIC:通过SCL与SDA的组合->起始条件、停止条件、应答位等协议标志->同步串行数据通信。
①SCL高电平,SDA下降沿:起始条件;②SCL高电平,SDA上升沿:停止条件;③SCL低电平,SDA变化为传输数据,但SCL高电平时,SDA需要稳定在当前自身电平。
注:STM32也要使用软件模拟IIC,①STM32虽然有硬件IIC功能,但是使用起来也是有些鸡肋。原因是飞利浦有IIC设计的专利,因此STM只能将IIC的电路设计的很复杂,其硬件IIC的稳定性也不太好。②软件模拟IIC更容易移植,省的不同类型的单片机单独配置。
5.SPI:①CS片选,低电平有效,且同一时刻只能一个CS为低电平(CS任意GPIO指定,需要多少配置多少个)。②CS模式选择:硬件模式与软件模式(SPI_NSS_SOFT):1对1时,CS的控制方式可选硬件控制(自动);多个从设备选择软件控制(手动)。③CPOL、CPHA:CLK的极性与相位,决定SCK空闲时高/低电平,数据采样是下降/上升沿采样。需要与从机匹配,一般模式0:均为0,低电平上升沿采样。
6.CAN:差分信号、位仲裁(同时发送时,自动ID仲裁,优先级高先发,低的退出)、多主架构、短帧结构、CRC+硬件错误管理、波特率可调(波特率=CAN_CLK/[(BS1+BS2+1)*PSC])、双线制。①模式选择:正常模式(正常通信)、回环模式(内部测试)、静默模式(只收不发)。②它是异步通信,计算波特率时的CAN_CLK指的是挂载总线APB1的低速总线=42Mhz。
7.APB1外设时钟总线挂载(42M)——UART2~5\IIC1~3\SPI2~3\CAN1~2\DAC。
APB2外设时钟总线挂载(84M)——UART1和6\SPI1\ADC\GPIO
APB1定时器时钟总线挂载——TIM2~5(通用)、TIM6和7(基本)、TIM12~14(通用)
APB2定时器时钟总线挂载——TIM1和8(高级)、TIM9~11(通用)
8.输入捕获用TIM2或TIM5(32位),PSC=84-1,ARR=0xFFFFFFFF,溢出需要很久,基本不用担心溢出的问题了。
9.RTC:外部晶振(32.768Khz)->分频->1Hz。
APB1 总线时钟:CPU 通过 APB1 总线来读写 RTC 的寄存器。
影子寄存器:为了保证数据一致性,当你读取时间时,实际上读取的是一个“备份副本”,而不是正在被硬件实时更新的主寄存器。
BCD 格式:用二进制数来表示十进制,比如 0x35 表示数字 35,这样处理日历更直接。
备份域:RTC 的寄存器、后备寄存器都位于备份域(Backup Domain),由V_BAT引脚供电,主电源掉电后数据不丢失。
10.RNG随机数发生器:噪声-采集、放大、处理-得到32位随机数。
相比软件rand(),它不可预测,但速度相对较慢。
配置时非常简单:挂载相应的APB1or2后直接使能RNG,之后等待数据就绪,读取 32 位随机数即可。
如生成[1,10]范围内的随机数——>y=x % (max - min +1) + min,min=1,max=10。
11.低功耗模式:
睡眠模式:只关CPU,外设全开。唤醒最快(无延迟),功耗最高(mA级)。适合需要快速响应的场合。
停止模式:关CPU,大部分外设时钟也停了,但SRAM数据保留。唤醒需要一点时间,功耗在μA级。
待机模式:几乎关掉所有电路,SRAM数据也不保了。唤醒时间最长(相当于复位),功耗最低(nA级)。
唤醒方式:RTC周期唤醒,WKUP(PA0)上升沿按键唤醒,外部中断唤醒(WAUP映射到EXTI上)
附:STM32使用SRAM,手机/电脑使用DRAM/SDRAM
12.ADC STM32的ADC使用12位(0~4095),所以V=adc_value/4095 *参考电压。F4的ADC不超过36Mhz,APB2, 一般84M/4 =21Mhz。配置为模拟输入。
右对齐直接用,独立通道,单次,软触发
DAC也配置为模拟输入
13.光敏电阻:光越强,D越小。
14.参数配置保存:①EEPROM(AT24C02)②后备寄存器(VBAT供电)。报文或实时保存数据量大才选择FLASH或外挂SPI FLASH(W25Q128)【若少量动态——磨损均衡算法】。
15.外挂SRAM:AHB3->FMC时钟->外挂SRAM。STM32F407ZGT6的SRAM-192k,对于图像数据、GUI显存、大数据缓冲(FFT运算)等来说自身的SRAM太小。