首页 理论教育 检测真实的世界

检测真实的世界

时间:2022-02-09 理论教育 版权反馈
【摘要】:使用实验32中用过的同一个微调电位器,将其中心端子连接到PICAXE 芯片的逻辑引脚2。2 kΩ 微调电位器的另外两个引脚分别连接到电源的正负端。我们其实是在对PICAXE说:“查看w1的值,无论你得到什么数,请停顿相应的毫秒数”。它需要检查两个光敏电阻器的阻值,并相应地调节各个电机的速度。它可以测量一个引脚上的电压,并改变另外一个引脚上的输出频率。每个PICAXE芯片都至少有一个引脚可以发送脉冲流来控制一种典型的伺服电机。

我们常常希望微控制器可以测量某样东西,并以适当的方式做出响应。例如,它可以测量出低温并发出报警声,正如我在以前的实验中建议的那样。

PICAXE具有3个内建的模数转换器(ADC),可通过逻辑引脚1、2和4来使用,如图5-139所示。使用它们的最好方法是在它们上面施加一个在0 V 到5 V 之间的电压。在这个实验中,我将告诉你如何对芯片的响应进行标定。

以下你需要用到的东西。

□ 微调电位器,2 kΩ 的,数量:1 个。

□ PICAXE 08M芯片以及相应的USB电缆和插座,数量:各1个。

步骤

使用实验32中用过的同一个微调电位器,将其中心端子连接到PICAXE 芯片的逻辑引脚2(即硬件引脚5)。2 kΩ 微调电位器的另外两个引脚分别连接到电源的正负端。这样一来,根据你对微调电位器的设置不同,PICAXE的引脚可以是直接连接到电源的正端(调到刻度的一端时),或者直接连接到电源的负端(调到刻度的另一端时),或者连接到二者之间的某个地方。请看图5-144这个改版后的电路原理图,以及图5-145的面包板电路照片。

图5-144 这个电路原理图的元件布局适合于在面包板上实现。该图说明了用2 kΩ 的电位器来给PICAXE芯片的模数转换逻辑引脚施加可变电压的方法

图5-145 在上一个面包板电路(图5-134)中添加了微调电位器以后的电路

现在我们需要一个程序来告诉芯片该做什么。使用程序编辑器,开始一个新的文档。代码应该如下所示。

main:

readadc 2,b0

debug b0

goto main

命令readadc 2,b0 意味着“从逻辑引脚2 上读取模拟输入,将其转换成数字值,并将结果存储在b0中”。

命令debug b0 告诉芯片进入程序调试模式。在这种模式下,芯片利用USB电缆将程序运行时的所有变量值告诉程序编辑器。这些变量值将显示在一个调试窗口中。

下载程序到芯片,当程序开始执行时,调试窗口将会打开。开始调节微调电位器,同时观察b0的值,你将看到b0的值也在改变。

你可以建立一个表格,并绘制一个图形来显示逻辑引脚2和地之间的电阻值与b0的值之间的关系。只需从面包板上拔下微调电位器,用万用表测量其电阻值,然后增大其电阻值,譬如增大200 Ω,再将其插回到面包板上,并再次观察b0的值。

这是一件很累人的事情,不过给仪器定标永远是一件累人的事情——不管怎样,我还是决定替你做了这件事。所述的图形如图5-146所示。你还可以在下面的表格中看到原始的数据。我很高兴地看到PICAXE芯片对输入给出了十分精确、线性的响应。换句话说,图形是一条直线。

图5-146 当一个ADC 输入引脚连接到一个2 kΩ 的电位器上,而电位器与芯片则连接在同一个供电电源上的时候,你会发现输入引脚与电源负端之间的电阻值将产生如图所示的一系列数字值。请注意电位器必须具有2 kΩ 的电阻值,并且假定电源是精确的5V

下表显示的是PICAXE 08M 控制器测量所得的数值。

现在我们可以修改程序,让它利用所获得的信息来做一点事情。

main:

readadc 2,b0

let w1=5 * b0

high 1

pause w1

low 1

pause w1

goto main

请注意现在到底发生了什么事情。首先我们取得b0的值,然后在接下来的一行里,我们针对它进行了一点算术运算。星号表示“乘以”。因此该语句是在说:“拿出b0中的任何数值,乘以5,将其放到另外一个变量w1中”。我们必须使用一个w变量,这是因为将b0的值乘以5时,我们也许会得到一个大于255的数——太大了无法放在一个单字节的变量中。

最后,我们拿出变量w1,并将它用在一个pause语句中,代替固定的数值。我们其实是在对PICAXE说:“查看w1的值,无论你得到什么数,请停顿相应的毫秒数”。

因此软件的功能是检查一个可变电阻值,将其转换成数字,并应用这个数字来调整LED闪烁的速度。

回过头来考虑一下步进电机驱动小车的需要。它需要检查两个光敏电阻器的阻值,并相应地调节各个电机的速度。显然,这个PICAXE程序已经沿着该方向前进了一步。它可以测量一个引脚上的电压,并改变另外一个引脚上的输出频率。如果有两个PICAXE芯片,那么你可以给每个芯片都连接一个光敏电阻器和一个电机。然后你可以通过编辑前面程序的第二行来调节小车的行为,因为第二行的作用是将b0的值转换成w1的值,再将w1的值用在pause命令中,来确定每秒的脉冲个数。取代乘以5,你可以乘以7或者乘以任何其他的数值,只要能够给你带来需要的结果就行了。由此得出了一个十分重要的结论:可编程芯片的一个很大的优点就是你可以在软件中进行调整

由于PICAXE 08M 芯片实际上不止一个ADC 输入,并且有3 个引脚可以用于输出,因此你也许会问,是否可以仅仅使用一个芯片来控制两个电机,以响应来自两个传感器的输入。问题在于,08M芯片上的3个输出引脚同时也用作3个ADC输入引脚。你最好去购买一个更高级的PICAXE芯片,譬如18M,它拥有更多的引脚可供选择。它使用同样一组编程指令,并且价格也高不了多少。

此外,你也需要阅读PICAXE文档,查看pwmout命令,它是“pulse-width modulation output”(脉宽调制输出)的缩写,不过你可以将其看成是“power motor output”(驱动电机输出)的意思。这是专门用来驱动步进电机的。在芯片执行程序的其他指令时,pwmout指令将建立一个连续的脉冲频率输出。

基础知识

其他特征

介绍08M芯片的完整指南会占用一整本书,而且这种书也已经存在(只需在Amozon.com网站上的图书部分搜索关键词“picaxe”即可找到)。不过在结束我对这种控制器的介绍之前,我要列出它的一些其他特征,以便你自己去查找、探索它们。然后我将提出最好一个实验。

中断

PICAXE 08M让你可以设置一个“中断”。这个特征就是告诉芯片,让它留意如果出现中断的话是否有某个特定的事情发生,例如一个开关是否把电压加到了一个引脚上,它必须停止它所做的任何其他事情,来响应这个中断。

红外输入

PICAXE 08M 的一个引脚可以用于接收一个类似电视遥控器的装置(可以从出售PICAXE的同一个供应商那里买到)发出的红外信号。有了红外传感器接在芯片上,你就可以在远方发布命令。如果你想要搭建一个遥控机器人的话,这个芯片在设计上就专门考虑了这种应用。

伺服电机

每个PICAXE芯片都至少有一个引脚可以发送脉冲流来控制一种典型的伺服电机。在08M芯片上,这个引脚是逻辑引脚2。每个脉冲的宽度告诉电机在停止之前,它应该从其中心位置转动多远。555定时器可以发送这种脉冲流,但是PICAXE更容易做到。你可以在线搜索到更多关于伺服电机的信息,这对于模型汽车的转向、调整航模的机翼、驱动机器人来讲,都是特别有用的。

音乐

PICAXE芯片内部有一个音调发生器,你可以用“音调”命令来播放你自己用简单的代码写出来的曲子。

字母数字式输入/输出

在PICAXE家族的20X2、28X1和28X2,以及40X1和40X2系列芯片中,有一个“kbin”编程命令。你可以往芯片上连接一个标准的计算机键盘,它将读取键入的字符。你也可以连接一个字母数字式的显示器,但是这些程序都不简单。例如,当你想要找出别人到底在键盘上按下了什么键时,你的程序就必须包含键盘产生的特殊十六进制代码的列表。

伪随机数的产生

所有的PICAXE模型都有内建的算法来产生伪随机数。如果你让用户按下一个按钮来初始化伪随机数发生器,通过测量其按下按钮所花费的任意的时间,就可以将该结果作为伪随机数发生器的种子,这样的话,这个伪随机数发生器将具有较少可重复的序列。

请访问http://www.rev-ed.co.uk/docs/picaxe_manual1.pdf,以了解更多的内容。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈