Hi, Robots(一):基于PIC硬件的PWM
其实我很早就有自己做一个机器人的想法了,受到两部《Iron Man》的刺激,曾热血沸腾,不过苦于没有经验,不知道从何入手。2010年第1期的《无线电》来了,我欣喜地发现上面有个关于机器人入门的专题。读了这次专题,我才知道,其实机器人也很好做。当然,敢说这句话,只是因为我有单片机基础,至于电子方面的问题,可以和老爸合作。我的想法是做一个最简单的机器人:避撞机器人,说白了就是一只车。
虽说是避撞,但是第一步还是要撞的。我的初步构想是,前面弄一根杆,杆上弄一排微动开关,撞上东西了微动就被触发,电平变化,单片机做出指示:倒退、转弯。等这个作品完成了,再来真正的避撞,大概用红外线来搞吧。
本以为撞只是简单的事情,但看到后面才想起来:电机是模拟的,而单片机输出的信号确是数字的(即要么高电平,要么低电平),无法控制电机的快慢。这才注意到应该用PWM来实现。根据维基百科上面的解释:脉冲宽度调制(Pulse Width Modulation, 缩写为 PWM),简称脉宽调制,是将模拟信号 转换为脉波的一种技术,一般转换后脉波的周期固定,但脉波的占空比会依模拟信号的大小而改变。
占空比说白了就是在一个周期内,高电位时间占总时间的多少,例如下面,占空比就是T1/T。
也就是利用占空比,可以调整输出的“电压”,从而来控制模拟器件的运行。要控制直流电机,就要学会PWM!PIC16F877A单片机中带有两路的CCP模块,也就是支持两路PWM。不过这两路共用TMR2计时器,所以它们频率相同,但是可以设置独立的占空比。经过一个早上的奋斗,终于弄懂了基于PIC硬件的PWM。
Read on →