十二
15
2010
GO,Robots – 光电对管
光在均匀介质中以直线传播,遇到不同介质的时候则被吸收或反射或折射或直接穿过。不同波长的光在同一介质上的变化是不一样的,人的眼睛把接收到的不同波长的光识别为不同颜色,于是有了五光十色的世界。
同样的,机器人也可以通过接收识别光线来识别周围的环境。通常情况下,周围反射回来的光线受环境影响比较大。机器人一般自己发射光波,根据光波的反射的情况来识别。
RPR220是一种一体化反射型光电探测器。其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。
塑料透镜以提高灵敏度;
内置的可见光过滤器以减小离散光的影响;
体积小结构紧凑。
它采用DIP4封装。发射器和接收器都有两根引出脚,其中长脚为正极,短脚为负极 。

如果不清楚引脚,可以使用万用表来检测。单向导通的是发光二极管,导通时红表笔接的是正极。接收的光电三极管则会随着环境而改变阻值,红表笔接集电极,黑表笔为发射极。

测试用的电路图。在实际连接的时候,R1我用600欧的电阻接到了VCC,R2用60k电阻,没有用R3。直接接到 Arduino 的模拟输入。VCC为+5v,流过二极管的电流约为8~10ma。

曾经提到过的五路光电探测板。其实就是五个上面电路图的并联,然后每个光电对管引出一条信号输出接到 Arduino 的模拟输入。

背面,非法拉了很多高架桥,一不小心就可能短路了(目前为止还没)。

圆孔座,用来接线。
照例有个测试程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | void setup() { pinMode(13,OUTPUT); // 模拟输入不用设置模式 // Serial.begin(9600); // 初始化串口通信,没有数码管的时候可以把结果输出到电脑上 } void loop() { digitalWrite(ledPin,!digitalRead(ledPin)); display2(analogRead(0)); // 读取模拟信号,并在数码管上显示 // Serial.println(analogRead(0)); // 没有数码管的话可以在电脑上显示 delay(100); } void display2(int i) { // ... } |
最后看下运行的结果,接的是靠边悬空的光电对管。6mm是最佳测量距离,另外也可以接电压比较电路输出开关量。


Leave a Reply