稚晖君的最新开源机械臂(粗浅认识)
没有使用无刷伺服电机(因为驱动系统比较复杂);用的是步进电机,采用谐波减速(自行设置一体式的驱动,可以做到体积更小)。
采用铝CNC加工(轻度高、重量轻)
主控芯片:stm32F4和ESP32双主控
人机交互:蓝牙、WiFi,2.4G、CAN,、app控制,RPC框架&上位机,无线智能小终端,AR
空间定位装置:双目视觉、AHRS系统、力传感和力回馈系统
机械臂末端效应器(可自由更换): 夹爪,激光器等
核心在于运动学正逆解算的算法以及动力学模型的实现!!!
运动学正逆解算:得出机械臂的每个关节角度和最终末端位置之间的正逆求解关系。
动力学模型:实现碰撞检测、柔性控制,力学反馈等
有大量复杂的矩阵和偏微积分计算
PWM的互补输出
PWM模式一和PWM模式二是用来规定计数器在大于或小于比较值时,是否是有效电平的。
例如:PWM模式1的情况下,向上计数,当计数器的值小于比较值时,输出有效电平;当计数器的值大于比较值时,输出无效电平。
高级控制定时器可是输出两路互补信号,并管理输出的关断与接通瞬间(例如插入死区)。
这两路输出可以初始化一次就行,然后独立选择输出极性。(不要因为名字中有“互补”,就认为它们的在同一时刻输出电平就一定不同)
例如进行如下初始化设置的时候,其实同一互补输出的两路信号输出的就是互补信号
极性设置只是设置输出电平反不反向。HIGH(电平不反向),LOW(电平反向)。
注意事项
在极性都设置为HIGH的情况下,只有在一组互补通道的两个通道都开启的时候,才会默认主通道有效极性是高电平,互补通道有效极性是低电平;
在极性都设置为HIGH的情况下,在只有一个通道start的时候,不管是主输出通道,或者是互补输出通道,单个通道启动的情况下,都是高电平为有效电平。
验证
用TIM8的通道1的主输出通道及其互补输出通道测试实际输出(PWM模式1,极性都设置为HIGH,空闲极性都是RESET,预分频值168-1,比较寄存器值1000-1, 比较值设置为100-1)(直接测引脚电平,没有经过光耦)
只开启主输出通道(PC6):输出0.45V(正常来说因该是测到0.33才对呀,可能是硬件问题) 未开启的互补输出通道此时是测到低电平
只开启互补输出通道(重映射到PH13):输出0.33V 未开启的主输出通道此时输出是高电平(与理论不符)
主输出通道和互补输出通道都开启:
主输出通道输出:0.45V (0.45除以3.3= 0.136 ,高电平大约占%10)
互补输出通到输出:2.96V (2.96除以3.3 =0.897, 高电平大约占90%)
(用TIM8的通道二机器互补输出通道测试也一样,还未找到主输出通道输出电平偏差及在未开启通道时空闲电平与理论不符的原因)
故上述注意事项中的说法大体是正确的,可以先这么理解着先。
单极性控制的代码实现
(上面这个图是H桥的单极性输出,拿来作参考的,驱动直流无刷电机不是这种电路)
电枢的电压极性是单一的(需要用到一组互补输出通道),同一个桥的上下桥臂输出一组互补PWM,另一桥的下桥臂一直导通。
在主输出通道为低电平的时候,其互补输出通道输出高电平,。根据楞次定律,存在自感电动势,电流还是原来的方向,一样能形成回路,所以效率比受限单极模式要高。
可以刹车能耗制动,速度低时减速效果差,动态性能不太好(不能突然倒转)。可以能量反馈。
BLDC霍尔传感器驱动代码实现:相应的计数周期要长于传感器上两次变化的时间隔时间
PWM输出频率不要小于20kHz,不然会让人听到电机发出的噪音。
(硬石的通过霍尔传感器控制BLDC例程)
硬石的例程中主输出通道和互补输出通道的极性都设置为了HIGH(不反向),所以互补通道都是高电平为有效电平。
双极性控制的代码实现
(上面这个图是H桥的双极性输出,拿来作参考的,驱动直流无刷电机不是这种电路)
电机的极性是交替变化的,需要用到两组互补输出通道(两组通道占空比相同。极性相反,选择不同PWM模式即可),占空比为50%的时候速度可快速降低到零。动态性能好,可以突然倒转,但是功率损耗较大。