八、数据转换用法
数模转换( DAC)是模数转换的逆过程。DAC把数字信号转换为可变的模拟电压。DAC在某些类型的产品中应用广泛,例如音频压缩光盘上刻录的数字信号经数模转换变成悦耳的声音。
但是,至少在机器人方面,DAC的使用不如ADC广泛,而且在使用时通常只需要较简单的“近似”电路。常用的方法是使用电阻和电容来组成传统的RC时间常数电路。数字设备把周期性的脉冲送经RC电路。电容以更多或少的规定速率放电,在规定的时间内通过的脉冲越多,电容上存储的电压就越高。
直流电机的转速通常由某种数模转换方式确定。最常用的方法不是直接改变电机上的电压,而是使用脉宽调制( PWM)方法。这种电路给电机施加一连串的脉冲。脉冲处于“通”的时间越长,电机就转动越快。这样做是因为电机会把脉冲“集合为”平均电压,因而完全不必单独进行数模转换。
您可以利用专门设计的集成电路来进行数模转换。例如DAC08就是廉价的8位数模转换集成电路,它能把8位的数字信号转换成模拟电压。
九、扩充可用的I/O线
微控制器和计算机控制的机器人的输入/输出脚较少。您的机器人似乎应比计算机或微控制器多一些I/O引脚,因此,您会觉得要么删掉机器人的一两个功能,要么需增加第二个计算机或微控制器。
幸运的是还有一些别的办法。最容易的做法可能是使用数据信号分离器,这种小器件使您可以把少数的I/O线变成许多I/O线。信号分离器有各种类型,常见的一种提供3条输入线和8条输出线。您给3个输入端施加二进制的控制信号,就可以激活8条输出线中的任一条。下表列出输入控制线的取值与对应的被选中的输出。
信号分离器包括历史悠久的74138芯片,其设计目标是使被选择的线变为LOW(低),而所有其他输出线均为HIGH(高)。信号分离器的一个特点是任何时候只有一个输出可以被激活。一旦您改变输入控制信号,老的被输出就不被选中,新选中的输出就取代老的。
避免这种情况的一种方法是使用可选址锁存器如74259;另一种方法是使用串行变并行的移位寄存器如74595。74595芯片使用3个输入(也可再选第4个输入,但从我们的目标来说可以不予考虑),并提供8个输出。通过给74595一个8位的串行字,您可以把您选上的输出变为激活态。例如,
下图说明74595的接口用法。在工作时,机器人的计算机或微控制器向时钟发送8个时钟脉冲。在每个时钟脉冲到来时,数据线发送您想使用的串行字中的一位。当所有8个脉冲都被接收时,锁存线起作用。74595的所有输出从此将一直激活,直到您改变它们为止(或者撤除芯片的电源)。
如果只是要把三根I/O线变成8,上述做法看起来太费功夫。机器人所用的许多微控制器(和某些计算机)都有一条“移出”( Shift-out)命令来做这件事。例如BasIC Stamp lI(但BasicStamp I不在此列)、BasicX-24和其他几种微控制器就是如此,在使用“移出”命令时,您要指出您想发送的数据以及与74595相连的微控制器的I/O引脚,然后向锁存线发送一个短脉冲,这样您就算做完了! 74595的一个关键优点是它们可以级联起来,进一步扩充I/O选择。
还有扩充I/O线的其他方法,其中包括串行外围接口( SPI)、Dallas 1线协议,等等。如果您的计算机或微控制器支持一种或更多的这些系统,当您的机器人用完了其上的l/0线,您可能想研究如何使用这些系统。