楼主最近还看过
用plsv发脉冲。比较编码器增量和脉冲增量之间的差值,差值供pid计算。差值作为过程量,0作为设定值。得到结果,转换成给定和方向,供plsv指令发脉冲。是正值plsv发正向脉冲。是负值发反向脉冲。正反脉冲之间需要一个周期的off时间。结果的绝对值大小,换算成plsv指令的频率。这样有频率,频率有大小,大小有方向,就可以控制电机的转到哪就转到哪。形成软件半闭环。
听见都怕。是不是?
pid是用来计算误差进行调节的,因为plsv没有脉冲数量限制,你无法准确地发50个脉冲。只能通过很多个周期进行调节。M8338加减速控制最好不要加减速。以便更快对调整做出反应。3U的脉冲当前数量,有的情况会比实际发出的脉冲数少一个,成因有点复杂,不跟你说那么多。说都不明白,做过就知道。
我也想听听3U除了上面的方法还能有什么方法做到电子手轮的动作?
你是指pid不好控制还是指制造这种曲线变化有困难?
首先pid没有限定设定值不准变化。然后,偏差小当然比偏差大好控制。设定值按照曲线走,始终没有稳态,那当然偏差自然会很大。pid就一直都在大幅度调整。这个是必然的了。
至于曲线,制作一个表,间接寻址找表。一个凸轮周期有多少个编码器脉冲就做多长的表,第0个脉冲对应的凸轮半径填在D0。第n个脉冲对应的半径填在Dn。脉冲数直接写进去V,用带V的间接寻址直接可以找到对应的值。把值写到pid的设定值。也可以设定值恒设定0,用位置偏差和表值之间的偏差作为当前值。(pid的设定值和当前值感觉好像是差动放大器的同相端和反相端,两端都相等的情况下,给同相端加一个正偏就等于,反相端加一个负偏。类似。)
我想是这样想,看看你怎么想?