Difference between revisions of "快速上手 香蕉派 Triode-Car"

From Banana Pi Wiki
Jump to: navigation, search
(巡线行驶)
(使用LM393控制小车)
Line 31: Line 31:
 
==硬件介绍==
 
==硬件介绍==
  
===LM393介绍===
+
在Triode-Car中,有两种模式,其中一个是利用自带的LM393控制小车,另一个则是利用BPI:Bit/Mirco:bit控制小车,可以通过小车上面的SW2按键(如图)切换控制方式。
  
==硬件介绍==
+
在LM393控制小车的模式中,只有一个功能,即巡线,它由几大部分组成,包括了:巡线检测电路,电压比较电路,驱动电路。
 +
 
 +
===巡线检测电路===
 +
 
 +
在Triode-Car的底部,有两个巡线的检测电路,每一路包含了一个光敏电阻和一个LED。当LED的光照到黑色和白色的材料上面时,由于反光率的不同,光敏的阻值会发生明显的变化。
 +
 
 +
在Triode-Car中,光敏电阻使用的是GL5506,这个型号的电阻会随着光照的加强而减小,亮电阻(10Lux)是2-5KΩ,暗电阻是0.2MΩ。(亮电阻:用400-600Lux光照射2小时后,在标准光源(色温2854K)10Lux光下的测试值。暗电阻:关闭10Lux光照后第10秒的阻值。)
 +
 
 +
===电压比较电路===
 +
[[File:LM393_sch.jpg|300px]]
 +
 
 +
电压比较电路主要由LM393和一些电阻组成,LM393是双路电压比较器集成电路,有两个独立的电压比较器构成。它的作用是,比较两个输入电压,并根据两路电压的高低改变输出电压的高低。当比较器的正向(正极)大于反向(负极)电压时,输出高电平,当比较器的正向(正极)小于反向(负极)电压时,输出低电平。由于LM393使用的是集电极开路输出,所以需要在输出端加上上拉电阻。
 +
 
 +
===驱动电路===
 +
 +
电机驱动电路的主角则是三极管,Triode-Car使用的是S8550,它是一种低电压,大电流,小信号的PNP型硅三极管。最大集电极电流为1.5 A。它可以被用来当成一个低电平触发的开关使用。
 +
 
 +
==控制原理==
 +
 
 +
[[File:Triode_line_l.jpg|500px]]
 +
 
 +
如图所示,当小车偏离轨道向左时,右边的光敏电阻会来到黑色跑道的上方,光敏电阻阻值变高,而左边的光敏电阻处于白色地面,此时,LL点的电压会比LR点的电压低,此时,比较器U1A的正向电压高于反向电压,1号引脚输出高电平。同理,U1B的正向电压低于反向电压,7号引脚输出低电平。从而控制左边电机正转,小车右拐,R6和D2离开黑色跑道,直到左边的传感器探测到黑跑道,原理与前面类似。小车在前进过程中不断重复以上动作,从而达到前进的目的。
  
 
=Triode-Car 配合Micro:Bit 使用MakeCode环境编程=
 
=Triode-Car 配合Micro:Bit 使用MakeCode环境编程=

Revision as of 17:11, 24 April 2021


产品介绍

BPI Triode-Car 配合 micro:bit 使用
BPI Triode-Car 配合BPI-Bit STEAM 教育开发板 使用
Triode-Car 配合 BPI:AI AI开发板使用

Banana Pi BPI-TriodeCar,是一款专注于教育的廉价机器人。兼容Web:Bit(BPI:bit)和Micro:Bit两款开发板。小巧的车身,大量可扩展的接口,即插即用,能快速小朋友的注意力,完成图形编程的快速入门,培养独立思考能力和逻辑思维能力

关键特性

  • 两种控制模式,可使用比较器(LM393)或者Micro:bit 与 BPI:bit(Web:bit)控制
  • 支持Makecode图形化编程(与mico:bit配合),支持Webduino图形化编程(BPI:bit配合)及MicroPython编程(Micro:bit 与BPI:bit)
  • 车身小巧,整体性强
  • 直流减速电机
  • 兼容乐高积木扩展螺孔。
  • 可扩展红外发射、红外接收、测速、氛围灯、蜂鸣器、舵机等等......功能齐全,扩展性强
  • 有I2C接口(3.3V)、巡线、超声波接口、排针扩展口
  • 轻松上手

使用LM393控制小车

硬件介绍

在Triode-Car中,有两种模式,其中一个是利用自带的LM393控制小车,另一个则是利用BPI:Bit/Mirco:bit控制小车,可以通过小车上面的SW2按键(如图)切换控制方式。

在LM393控制小车的模式中,只有一个功能,即巡线,它由几大部分组成,包括了:巡线检测电路,电压比较电路,驱动电路。

巡线检测电路

在Triode-Car的底部,有两个巡线的检测电路,每一路包含了一个光敏电阻和一个LED。当LED的光照到黑色和白色的材料上面时,由于反光率的不同,光敏的阻值会发生明显的变化。

在Triode-Car中,光敏电阻使用的是GL5506,这个型号的电阻会随着光照的加强而减小,亮电阻(10Lux)是2-5KΩ,暗电阻是0.2MΩ。(亮电阻:用400-600Lux光照射2小时后,在标准光源(色温2854K)10Lux光下的测试值。暗电阻:关闭10Lux光照后第10秒的阻值。)

电压比较电路

LM393 sch.jpg

电压比较电路主要由LM393和一些电阻组成,LM393是双路电压比较器集成电路,有两个独立的电压比较器构成。它的作用是,比较两个输入电压,并根据两路电压的高低改变输出电压的高低。当比较器的正向(正极)大于反向(负极)电压时,输出高电平,当比较器的正向(正极)小于反向(负极)电压时,输出低电平。由于LM393使用的是集电极开路输出,所以需要在输出端加上上拉电阻。

驱动电路

电机驱动电路的主角则是三极管,Triode-Car使用的是S8550,它是一种低电压,大电流,小信号的PNP型硅三极管。最大集电极电流为1.5 A。它可以被用来当成一个低电平触发的开关使用。

控制原理

Triode line l.jpg

如图所示,当小车偏离轨道向左时,右边的光敏电阻会来到黑色跑道的上方,光敏电阻阻值变高,而左边的光敏电阻处于白色地面,此时,LL点的电压会比LR点的电压低,此时,比较器U1A的正向电压高于反向电压,1号引脚输出高电平。同理,U1B的正向电压低于反向电压,7号引脚输出低电平。从而控制左边电机正转,小车右拐,R6和D2离开黑色跑道,直到左边的传感器探测到黑跑道,原理与前面类似。小车在前进过程中不断重复以上动作,从而达到前进的目的。

Triode-Car 配合Micro:Bit 使用MakeCode环境编程

基础教程

导入扩展积木&用microbit按钮控制电机

打开MakeCode,点击"Advanced",再点击最下面的"Extensions",在上方搜索栏中输入 https://github.com/bpi-steam/pxt-triodecar (右键此连接并复制),点击搜索出来的项目,即可导入Triode-Car专用扩展积木。

扩展积木便于初学者理解程序功能并上手使用。

例程如下图,启动或复位时停车,同时按下AB按钮直行,按下A按钮右转,按下B按钮左转。

Triode-Car motor control 1.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Triode-car_motor_control_1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


调整电机转速

Triode-Car专用扩展积木中有可单独控制左右电机转速的积木,可进行10级调速。

例程如下图所示,按一次A按钮转速加1档,按一次B按钮转速减1档,Micro:Bit显示当前挡位数值。

Triode-Car motor control 2.png

其中"forever"积木会在"on start"积木执行完后开始无限循环执行其内部的积木,而在每次循环的间隙则可执行其他事件处理程序,如on button A/B pressed。

加入了一个"if"判断积木,若变量"speed"值小于0或大于10时,将变量"speed"值设为0,这样可以将值限定在0到10范围内不会溢出而报错。

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Triode-car_motor_control_2.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


采集巡线传感器的电压模拟信号

Triode-Car的巡线传感器由两个光敏电阻组合而成,光敏电阻的物理特性是光照越强,阻值越低,而光照越弱,阻值越高。假设通过光敏电阻的电流恒定的话,则光照增强,光敏电阻两端的电压降低,光照减弱,光敏电阻两端的电压增高。

Triode-Car专用扩展积木中有可采集巡线传感器的电压模拟信号的"read left/right line tracking sensor"积木,Micro:Bit引脚对0至3.3V电压测量精度为10bit即2^10=1024级,所以调用"read left/right line tracking sensor"积木从对应引脚读到的电压模拟值将为0至1023。

例程如下图所示,在程序中,每间隔100ms通过USB串口将读取到的左右两个传感器的电压模拟值发送给电脑,在MakeCode中打开控制台即可查看实时接收到的信息。

Triode-car read LDR.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Triode-car_read_LDR.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。

高阶教程

校准巡线传感器

为了能以较高的灵敏度应用巡线传感器,我们需要手动对两个光敏电阻对应连接的可调电阻进行微调,使其工作在灵敏度较高的区间内,且应该尽量使相同光照强度下输出的电压模拟量保持相等。

我们可以直接应用基础教程中的“采集巡线传感器的电压模拟信号”教程中所示的例程来在电脑上输出采集到的电压模拟量数值,然后使用螺丝刀对可调电阻进行调节。

在Micro:Bit所能测量的0-1023级电压模拟量范围内,越靠近中间值,光敏电阻对光照强弱变化的响应灵敏度就越高。

所以对巡线传感器校准时,应在稳定的环境光下,尽量将两个可调电阻调节到靠近中间值512,并尽量使二者在相同光照强度下输出的电压模拟量的差值减小。

以上实行校准步骤都是建立在保持Micro:Bit与PC连接,Micro:Bit与Triode-Car连接的前提下的,但实际应用中,为了提高使用时的灵敏度,最好直接在实际应用的场景下进行校准。

我们不一定总有条件在实际应用的场景下还能保持Micro:Bit与PC连接。在不能连接PC的时候,就需要提前写好一个可以正确的指引我们校准巡线传感器的程序。

分析校准的步骤:

  1. 首先是需要将其中一个可调电阻调整到在Micro:Bit对应引脚输出的电压模拟量接近中间值。
  2. 在上一个条件满足的前提下调整另一个可调电阻,使其在Micro:Bit对应引脚输出的电压模拟量接近已经调整过的可调电阻。

在程序上这显然是可以通过"if"条件判断来完成的,我们则是需要得到对应条件是否满足的反馈,例如在满足对应条件下使Micro:Bit显示不同图形使人也能得到条件满足的反馈。

例程如下图所示。当启动或复位时,运行校准程序,校准程序内部是一个while循环,反复通过if条件判断检测是否达成规定的条件,当满足左侧或右侧其中一个光敏电阻所对应连接的引脚检测到的电压模拟值大于等于450且小于等于550时,使Micro:Bit将显示一个较小的心形图案以表示满足了这一条件,在这个if条件积木内再放置一个if条件积木,即当满足前一个条件的情况下,再判断两个光敏电阻所对应连接的引脚检测到的电压模拟值的差值的绝对值是否小于等于25,当再满足这个条件时,使Micro:Bit将显示一个较大的心形图案以表示也满足了这一条件,然后延时1s,再在这个if条件积木内再放置一个判断条件与其完全相同的if条件积木,这样做的目的是消除人手工调整可能会产生的偶然偏差,当再次满足条件时,即调整的结果稳定的情况下,使Micro:Bit显示一个表示正确的✔型图案,延时0.5秒后退出整个校准程序,假若运行在校准程序内且不满足任何条件时,则使Micro:Bit显示一个表示错误的X型图案。

Triode-car LDR calibration 1.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Triode-car_LDR_calibration_1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


巡线行驶

在“校准巡线传感器”之后,我们即可开始对巡线传感器进行有效利用。


Triode-car Line Follower.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Triode-car_Line_Follower.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。

Triode-Car 配合BPI:Bit 使用Arduino环境编程

基础教程

高阶教程

Triode-Car 配合BPI:Bit 使用MicroPython环境编程

基础教程

高阶教程