KVIN
获得 8 次赞
帮助过617人
对于STM32,同一个定时器的输出频率是相同的,因为PWM的频率是由分频系数与TIMx->ARR寄存器共同决定的,占空比是由TIMx->CCRx寄存器决定的,同一个定时器只有一个ARR寄存器,同一个分频系数,因此只能输出一样的频率,而输出频率就与ARR与定时器挂在的总线时钟有关,拿F103来说,使用外部晶振,定时器1所挂载的时钟总线最大频率可以到72M,也就是说,如果你分频系数为1分频,那就是72M,如果ARR寄存器给(72 - 1),PWM频率就是72M/72,即1M,则你的CCR寄存器最大只能给72。就是说,频率越大,你的CCR的取值范围就越小,PWM的精度就越低。
使用库的结构体,基本都是初始化配置外设的过程,推荐你用CubeMX,可以帮助你完成配置过程,如果程序中也要使用配置,照猫画虎即可,最主要的还是要明白一些常用英语单词的含义,看得多了便熟能生巧。除此之外,对于除外设配置以外的功能操作,直接使用寄存器会方便很多。我现在的开发过程基本上是HAL库+寄存器操作。CubeMX配置外设,寄存器操作功能,程序开发效率高,执行效率也要快。
简易的位置控制,使用舵机比较好,当然使用两相直流电机也可以,调节好延时时间即可,但没有舵机方便。制作智能锁时,供电推荐直接使用你们宿舍的插座,买一个5V适配器,给单片机供电,注意功耗,在正常时候,单片机进入休眠状态节电,在低功耗领域,TI的芯片是比较有名的,可以考虑,不过也看你实际情况。如果使用电池供电,因为有电机,所以电池的耗电是比较快的,如果电池没电,还会出现各种问题。开锁方式一般的就是直接按键开锁(不安全),按键密码开锁,指纹开锁,IC卡刷卡开锁,手机蓝牙等,蓝牙是比较耗电的,所以要注意蓝牙低功耗,指纹开锁当然需要购买一个指纹识别模块,具体查看淘宝的价格,IC卡也是同样,所以如果仅仅是开锁,就市面上经常见的低成本开锁,指纹一般公司会用,学校实验室等等,在一些公寓酒店,一般就是IC卡或按键密码开锁。当然,除此之外,因为你的电子设备总归是要有点才行的,需要考虑如果发生意外,没电了,能不能以机械方式开门,或者考虑使用电池作为备用电源,在检测到断电之后,便自动切换到备用电源。万事都要考虑全面,不然到时候就得强行爆破入门了。
有条件可以买个小型的两相直流电机,以及驱动器,用霍尔传感器或者编码器作为测速装置,用PID来进行电机调速。当然别买那种带减速机的,转速很慢的看不出效果。还可以调试对比一下电机空载时候的PID,以及电机带载情况下的PID。使用电机来作为PID练手,相对花费便宜一点。当然,也可以尝试温控系统,或者搭建MOS,使用PID配合MOS斩波搭建一个恒流源。
BLDC等电机不正常的软件原因绝大部分都可以归结为:定子电流矢量没给对,而造成这个的原因,大部分是电角度没给对。之后分析不同算法,无感无刷主流算法就是方波与FOC,由于你没有说明你用的什么算法,就分情况看了。如果你用的方波,那么加速到一定转速(非额定转速)后就抖动,很有可能是判断过零点后的延迟30度发波的时间给长了,转速上去之后,延迟30度的时间不对会导致换向时间滞后,而引起震动,题主可以适当减小延迟30度换向的时间试试。 如果你用的FOC,检查观测器程序,因为无感FOC的关键就在于电角度,电角度是使用观测器来算的,而观测器的一个重要部分就是电机方程。电机方程是需要有阻感参数的,一些电机对于阻感参数不敏感,因此稍微给点参数,电机就可以转,而大部分电机对于阻感参数是比较敏感的,因此,当阻感参数与实际电机误差比较大时,电机方程计算出来的估计反电动势误差就大,之后计算出来的电角度估计值误差就大,电角度不准确,当然会抖动。题主可以准确测试一下电机的阻感参数,然后代入程序,进行微调。电机博大精深,总是有千奇百怪的问题,因此我只能说可能是以上原因造成的,答案仅供参考。
一般无人机的电机是BLDC电机,所谓电调其实就是一个BLDC电机驱动器,BLDC电机的具体分类大致分为以下三种:加上三个霍尔传感器,就是有霍尔BLDC,加上绝对位置编码器就是一个伺服电机,什么都不加,就是无传感器BLDC。方波控制:对于有霍尔BLDC,比较古老的控制方式就是六步法,你可以搜到很多六步法控制BLDC的例子;对于无传感器BLDC,若要使用方波控制,总体原理也是六步法驱动,但是无传感器BLDC并没有霍尔传感器,也就是说无法直接通过6个霍尔状态来确定发波状态,也就需要比较器来判断反电动势过零点来使用六步法,说得简单一点,比较器的作用就相当于霍尔传感器,只是稍微复杂一些,需要判断反电动势过零点。无传感器BLDC的方波驱动:无传感器永磁同步机的启动一直是难点,对于无传感器BLDC,由于电机刚开始是静止状态,静止状态下是没有反电动势的,所以静止时候不能直接通过比较器来判断当前的位置,那么就需要强拖启动,所谓强拖启动就是字面意思,强行发某个电角度位置的波,然后把转子强拉过去,只要转子转起来,就有办法通过比较器来判断位置,当然,启动强拖时候的比较器波形是不是那么规则的,所以需要根据自己情况来滤波,转起来切换到正常状态之后,就好判断多了,只需要注意以下消隐即可。当然这个是通用的做法,即电路上构造三相的虚拟中性点,然后通过比较器,也有一些其他方法,楼主自行了解吧。拓展:当前电机的发展趋势是矢量控制FOC,也就是正弦波控制,大疆也在研究FOC来运用在无人机上,以后有可能就会看到正弦波电调了。有霍尔FOC还有编码器FOC就不再多说,因为有传感器的话,电机转子位置很容易获取,而无人机还是无传感器FOC,无传感器FOC的关键就是电角度的获取,没有传感器,当然也不需要比较器,通过正弦电流采样,配合现代控制理论的状态观测器概念来重构出反电动势,进而重构转子位置。
热敏电阻一般手册上会有一个温度曲线,从温度曲线便可知,热敏电阻本身就不是线性变化的,但热敏电阻的公式基本都是通用的,我看过很多热敏电阻的手册,基本公式都是那一个:B = (ln(R1) - ln(R2)) / ((1/T1) - (1/T2)) B为温度曲线系数,B的值为在不同的温度取值范围里略有不同,例如我现在用的手册上为:3380(25℃/50℃) 3435(25℃/85℃) 3453(25℃/100℃)T为温度,单位为K,摄氏度与开尔文单位换算公式为: 摄氏度 = 开尔文 - 273.15 (0℃ = 273.15K) 常温下:25℃对应阻值,看你具体的电阻选型,常用的有10K