——电机控制电路
CPU是接通了,程序也可以跑了,现在得让程序可以控制电机才行。
前面我们知道,单片机是一个运行程序的芯片,当程序里把变量P0.0变成1时,芯片39接口就变成高电位(5v),变量赋值为0时,接口就变成了低电位(0v),很是方便。
但问题来了,这个如何控制电机呢?
先理一下,我们电机有几种功能:正转、反转、刹车、滑行、调速,这几大功能。现在的问题就是考虑如何用0和1来实现这些功能。
正转、反转,小时候玩过电动机的朋友都知道,将电机的两个引线反过来接,那电机就反过来转了,即正负极决定正反转。好了看下面的电路应该就明白了:

中间一个电机,然后当按下开关A、D时 正转,按下B、C时
电机就反转,这样就简单的多了,不用把电机的两根引线拆下来,反过来接,而是按按开关,就可以实现正转、反转了。
仔细看电路,如果把A、C
或B、D按下时,电机没有接通电源,但两个引脚处于短路状态,此时什么状态呢,刹车!! 为什么。。。
这时由于电机的磁力感应,我们知道电机当手动拨转动时,两个极会反向发电,而且发电的正负极与通电正负极后的转向是相反的。
所以说当转动后,产生的电,电再驱动电机转动,此转动又是反向的,与转动的力抵消。所以此时大家可以试一下,电机是转不动的,或是很紧。那的确就是刹车功能了。
电机转动时,突然把四个按健全打开,发现电机还要转一会儿,那这就是滑行咯。
当然,在转动时,按上面的方法,A、C 或B、D 按下,电机会就突然停止,可以验证刹车功能。
好了,现在功能时还差一个调速,这个先等等。
先想另一个功能,刚才说的这些都是开关按来按去,如果接到单片机上,让其控制呢? 不过,看出来,好像这个开关正好是0和1么。
想到在学三极管时,有一个功能就是开关,

当三级管的B(基极)通上电时,C(发射极)E(极电极)就会接通,这不就是我们要的功能么,好电路改进下:

改进后,可以看到,当a=1 b=0时Q13
Q16接通,当a=0 b=1时Q14 Q15接通,这正是我们要的功能。
就按这个电路来么?
实验证明,失败了(可以看到小车图中中间一堆三极管,其实已经废弃了),这样可能控制电机的正反转,但是小车启动很困难,为什么呢。
我们知道,电动机,是一个感性电路,不是一个纯电阻。简单的说,电机的电阻不是一成不变的,转速越低,电阻越小,转速越高,电阻越大。
所以小车启动过程,就是从低速或零速度开始运作。零速度时,电阻最小,只有零点几欧姆,好了,上面图中,三级管,本身也有内阻,这样,电路简化成这样:

这个想必大家都会算,这个0.1欧的电阻两端会有多少电压,非常小吧,也就零点几。那这么低的电压加到电机上,能转吗?
显然转不了。 所以最后的结果是,小车要手动推一把才能运作。
于是大家应该想到了,既然电动机变不了,能不能先个内阻非常小的三极管不就行了么?
对,找个内阻小的,而且要非常小,后来发现三极管是找不到,于是最终换了场效管:

好了,这下安逸了,这个内阻非常小,最后小车启动时也很敏捷。
取个名字,这个电路标准叫法为H桥。
现在还差个功能,就是调速咯,电压变了,速度就会变,这个我们知道,但是对于单片机来说,只会输出0和1,输出不了多种电压啊。于是考虑这样:
我们给场效管的电路,不要一至输出1,而是输出一个方波:

即,输入1时,间歇的输出0,因为频率比较高,输入0时,电机不会立即停。于是当调整t1和t2的比例(称为间歇比)时,电机的速度也就变了下来:

这个就是传说中的PWM控制技术。
好了,到此为止,我们通过0和1也就可以控制小车的一系列的功能了,达到我们的要求的,组织下电路:

注:这个电路是在Multisim软件中绘制,好处是这个软件可以模拟,就是通上电,上面的电压表,电流表都会有读数,这个可以尽可能模拟电路的真实环境。
注:里面的场效管的型号不一定准,以第一章的配件清单来。
好了,直接按这电路来么,当然可以运行。但后来试运行时,发现单片机不稳定了,经常重启。查了很久,后来发现,原来是电机运行时,会导至整个电路电压不稳定,干扰了单片机的运行。所以后来想到,在上面A、B、C三个接电单片机的地方,再加一个光电耦合器,这样,就可以把电机电路与单片机电路分开了。光电耦合这样接:

这里,电路图上就不绘在一起了。接单片机的,直接选几个引脚一接即可。
电路设计好了后,就开始焊接:
当拿到场效管时,有点惊讶,发现非常小,于是没办法,整个电路就围着它来了,而且没有长的引脚,所以只能在万能板的反面焊接先这样排布:

注意:
这个场效管的外脚是这样排的:

同时,电路中,这两个
是不一样的,中间一个进,一个出,所以对就的型号也是A,B两种,所以连接时,不要排错。
写软件时,经常说小步快跑,同样硬件也是,
当这四个管子焊好后,就可以跑一下了,把它当成开关,试着能否控制电机的转动,如果正转、反转都可以,说明这块电路OK,可以继续往下焊了。
四个场效管好了后,就可以继续焊三极管,然后是电阻,最后把引线全部加到边上的与门电路上。

反面是这样的:

好了,控制电路完成了,接下来就等着写程序控制小车吧。