单片机裸机复习2/3
接上次有介绍过频率低的好处1.电机起步用低频因为低频时感抗小XL2π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-cntCCR,输出有效电平模式2-cntCCR,输出有效电平②有效电平极性选择OCPolarityTIM_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、CPHACLK的极性与相位决定SCK空闲时高/低电平数据采样是下降/上升沿采样。需要与从机匹配一般模式0均为0低电平上升沿采样。6.CAN差分信号、位仲裁同时发送时自动ID仲裁优先级高先发低的退出、多主架构、短帧结构、CRC硬件错误管理、波特率可调波特率CAN_CLK/[(BS1BS21)*PSC]、双线制。①模式选择正常模式正常通信、回环模式内部测试、静默模式只收不发。②它是异步通信计算波特率时的CAN_CLK指的是挂载总线APB1的低速总线42Mhz。7.APB1外设时钟总线挂载42M——UART2~5\IIC1~3\SPI2~3\CAN1~2\DAC。APB2外设时钟总线挂载84M——UART1和6\SPI1\ADC\GPIOAPB1定时器时钟总线挂载——TIM2~5通用、TIM6和7基本、TIM12~14通用APB2定时器时钟总线挂载——TIM1和8高级、TIM9~11通用8.输入捕获用TIM2或TIM532位PSC84-1,ARR0xFFFFFFFF,溢出需要很久基本不用担心溢出的问题了。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]范围内的随机数——yx % (max - min 1) minmin1,max10。11.低功耗模式睡眠模式只关CPU外设全开。唤醒最快无延迟功耗最高mA级。适合需要快速响应的场合。停止模式关CPU大部分外设时钟也停了但SRAM数据保留。唤醒需要一点时间功耗在μA级。待机模式几乎关掉所有电路SRAM数据也不保了。唤醒时间最长相当于复位功耗最低nA级。唤醒方式RTC周期唤醒WKUP(PA0)上升沿按键唤醒外部中断唤醒WAUP映射到EXTI上附STM32使用SRAM手机/电脑使用DRAM/SDRAM12.ADC STM32的ADC使用12位0~4095所以Vadc_value/4095 *参考电压。F4的ADC不超过36MhzAPB2, 一般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太小。