2007年8月12日星期日

感想——本文不谈技术问题

本文不谈技术问题,希望看到本文的读者可以把它看完啊。

 关于PID算法调节PWM控制电机转速实验:
      实验要求:设计一个电机转速控制系统,并且带有输入输出设备,输入一个预定的速度,30秒钟之内控制电机到达预定速度,误差不能大于“0.1转/秒”,并且实时的把电机速度通过显示设备显示出来。

      第二个课题其实不算是太难,可是我却花了N多的时间,导致这一段时间上网、体育活动、溜达的时间大为减少,整天就是对着个电脑(但是没心思和没时间上网)。

      其实就是PID算法这个东西啦,花了我N多时间。具体原因是我不知道PID算法是什么东西,可是要调节电机的转速用PID算法是比较好的方法,于是我查资料,问老师,问同学,得到的答案无非是“比列调节、积分调节、微分调节”。我就很郁闷了,我们实验室里大部分人都是用汇编语言编程,可是用汇编语言怎么算积分微分呢?没人可以告诉我。(后来想想,这个跟装神秘的性质是一样的)虽然我是用C语言编程,但是要写出一个积分表达式或者一个微分表达式也是非常困难的事情。于是我就放弃了这种经典的方法,我想自己想一种算法来控制电机,但是我不是神,PID算法这么经典的东西,我如果在几天之类就想出更好的算法我就不在这里混了。方法是有的,但是不能精确的控制转速到“0.1转/秒”。



      郁闷了4天之后,前天,一个偶然的机会,我在跟我们实验室最强的那位帅哥聊天,终于知道了PID算法的内幕:其实就是与三个常数做几个乘法就对了!恍然大悟,当晚把程序写出来,昨天试着去控制,发现精度已经达到只偏差“0.3转/秒”,于是昨天晚上又稍微修改了一下程序,今天测试,yeah,误差只有“0.1转/秒”!

      我设置转速为12.3转/秒,十多秒钟之后,数码管显示即时速度为12.3土0.1 。成功了!

      马上要开始下一个课题了,水温控制,也就是我想要80.3°的温度的水,你不能给我烧出81.3°的水,否则我要抓狂……

没有评论:

发表评论