Skip to content

Yanshee传感器 3 懂礼貌的触摸传感器

UBTEDU edited this page Aug 31, 2018 · 4 revisions

课程目标:

通过本课程你可以学习一些物理学基本概念。另外你还可以学到什么叫触摸传感器,在生产生活中人们为什么会使用触摸传感器,而触摸传感器又是如何在我们的机器人Yanshee身上使用的呢?你还可以发现触摸传感器的使用方法和应用场景。最后,我们会通过一个有趣的实验来加强对触摸传感器的实际操作认知。

课程引入原因:

日常生活中,当我们接触到一个物体的时候,我们的手部就会感觉到物体,而且感觉到它的温度高低。这样的过程包含了触觉的过程,我们接触到了一个物体,这个信号在机器人身体体现为触摸传感器的功能。它能分辨出是否有人手靠近。于是在实际应用中我们就引入了触摸传感器来让机器人变的更加智能。

基础概念及知识点介绍:

电容:

电容(Capacitance)亦称作“电容量”,是指在给定电位差下的电荷储藏量,记为C,国际单位是法拉(F)。一般来说,电荷在电场中会受力而移动,当导体之间有了介质,则阻碍了电荷移动而使得电荷累积在导体上,造成电荷的累积储存,储存的电荷量则称为电容。电容是指容纳电场的能力。任何静电场都是由许多个电容组成,有静电场就有电容,电容是用静电场描述的。一般认为:孤立导体与无穷远处构成电容,导体接地等效于接到无穷远处,并与大地连接成整体。电容(或称电容量)是表现电容器容纳电荷本领的物理量。电容从物理学上讲,它是一种静态电荷存储介质,可能电荷会永久存在,这是它的特征,它的用途较广,它是电子、电力领域中不可缺少的电子元件。主要用于电源滤波、信号滤波、信号耦合、谐振、滤波、补偿、充放电、储能、隔直流等电路中。

多点触摸感应原理:

多点触摸系统的核心是一对相邻电极组成的电容感应。当一个导体如手指接近这些电极时,两个电极之间的电容就会增加。可以通过微控制器检测到。另外,电容感应还可以用于接近感应,传感器和用户身体并不需要接触到。这可以通过提高传感器的灵敏度来达到。(如下图所示)

多点触摸感应原理

电容触摸感应MCU工作原理:

IREF是一个内部参考电流源,CREF是内部集成的充电电容,ISENSOR属于内部集成的受控电流源,CSENSOR为外部电容传感器的充电电容,由于人体的触摸引起CSENSOR的变化,通过内部调整过的ISENSOR对CSENSOR进行瞬间的充电,在CSENSOR上产生一个电压VSENSOR,然后相对内部参考电压经过一个共模差分放大器进行放大。同理IC内部的IREF对CREF充电后也产生一个参考电压并相对同样的VREF经过差分放大,最后将两个放大后的信号通过SAR(逐次逼近模数转换器)式的ADC采样算出ISENSOR的值。

电容触摸感应MCU工作原理

电容式感应的工作原理:

下面示意图显示了一个电容式按钮的横截面。如图所示,在外覆盖层材料之下,存在导电的铜块区域和导电的传感器。在两个导电元件相互之间靠的很近时,就会产生一个电容值,本体中标为Cp,这个电容值是由于传感器垫板与接地板之间的耦合现象而形成的。Cp属于寄生电容,典型数量级为10pF-300pF。传感器与接地板靠近时也会形成一个边缘电场,这个电场能够穿透外覆盖层。基本上,人体组织也属于导电体。将一根手指放在边缘电场附件时,就会增加这个电容系统的导电表面面积。这个图中,标为CF的附加手指电容值的数量级为0.1pF~10pF。虽然手指的存在会导致电容发生变化,但是与寄生电容相比,该变化幅度较小。而传感器测得的电容值为Cx。在没有手指存在的情况下Cx基本上等于Cp,而存在手指时,Cx则为Cp和CF的和。(如下图所示:)

电容式感应的工作原理

环境准备:

硬件需求:

Yanshee机器人一台、触摸传感器一个

软件需求:

树莓派Rasbian系统、python环境

实物图:

Yanshee配套的触摸传感器:

触摸传感器

触摸传感器硬件连接图:

树莓派连触摸传感器

工作原理:

触摸传感器,采用电容式触摸感应技术、通过检测人体的电容变化来检测传感器周围是否有手指。通过MCU对这种变化来读取数字值,进而测得相应的触摸电容感应结果,输出相应的操作。 原理框图:

原理框图

Yanshee机器人身上的触摸传感器安装图

Yanshee身上的触摸传感器安装图

举例:通过python编程实现触摸传感器应用场景体验

基础实验:

基本数据读取,我们通过Yanshee SDK API进行python代码编程。然后执行相关代码:

#!/usr/bin/python
# _*_ coding: utf-8 -*-

importtime
importRobotApi

RobotApi.ubtRobotInitialize()
#------------------------------Connect----------------------------------
gIPAddr=""
robotinfo=RobotApi.UBTEDU_ROBOTINFO_T()
#The robot name you want to connect
robotinfo.acName="Yanshee_0A7E"
ret=RobotApi.ubtRobotDiscovery("SDK", 15, robotinfo)
if (0!= ret):
print ("Return value: %d"% ret)
exit(1)

gIPAddr=robotinfo.acIPAddr
ret=RobotApi.ubtRobotConnect("SDK", "1", gIPAddr)
if (0!= ret):
print ("Can not connect to robot %s"%robotinfo.acName)
exit(1)

#---------------------------Read Sensor Value---------------------------

touch_sensor=RobotApi.UBTEDU_ROBOTTOUCH_SENSOR_T()
whileTrue:
time.sleep(2)
ret=RobotApi.ubtReadSensorValue("touch",touch_sensor,4)
if ret !=0:
print("Can not read Sensor value. Error code: %d"% (ret))  
else:
print("Read Touch Sensor Value: %d "% (touch_sensor.iValue))    

#---------------------------Disconnect----------------------------------
RobotApi.ubtRobotDisconnect("SDK","1",gIPAddr)
RobotApi.ubtRobotDeinitialize()

结果输出分析:

结果为0代表没有触摸发生,结果为1代表左边被触摸,结果为2代表右边被触摸,结果为3代表两边同时被触摸。总之,为0就没被触摸,其它就被触摸,来判断是否有人与机器人握手。

高级实验:会握手的Yanshee

首先Yanshee机器人会伸出手来,对实验者说:“你好,我们可以握握手吗?”,这时实验者把手递过去,用手触摸机器人胳膊上的触摸传感器,此时机器人感受到人手触摸信号,并上下摇动自己的手臂,同时说:“非常感谢您的光临!我是您的智能机器人助手Yanshee,祝您玩的愉快!”。当人手离开的时候,机器人手臂回到正常位置,并说:“认识您很高兴,再会!”

拓展阅读:

后续有了触摸传感器我们就可以通过它获得机器人的距离障碍物的远近来编写出各式各样有趣的场景了。它就像是机器人的皮肤触觉,让机器人变的更加聪明智慧。

应用场景:

实际生活中的智能手机、PAD、商场广告终端、智能音响、智能电饭煲等等各种跟触控相关的场合都是触摸传感器的使用场景。

Clone this wiki locally