本发明属于按键检测领域,具体地涉及一种电阻分压式的线控按键的检测方法和电路。
背景技术:
目前较多车用方向盘集成有线控按键组合,这些按键组合的区分一般采用电阻分压式,如不同按键按下的时候,该电阻组合给出不同的阻值,进而转换成不同的电压值输出,以区分按键。不管哪种结构的电阻分压,都需要采用专门的模数转换芯片检测或者检测设备内部的mcu带有adc功能。如果采用专门的模数转换芯片检测的话,会增加成本;采用mcu自带的adc功能检测的话会受引脚的电气性能限制,比如adc功能引脚供电电压有1.2v、1.8v和3.3v,造成adc引脚能检测的电压范围不同。而当线控按键数目较多的时候,低电压供电的adc管脚其检测对电阻分压式按键的电阻组合就有一定的要求。而且这些电阻的组合方式全部由车厂已经确定好的不能随意更改,这对于车载电子设备供应商来说,已有的设备平台可能不一定能满足检测需求,需要重新开发设备平台,延长了开发周期,增加开发成本。
技术实现要素:
本发明的目的在于提供一种电阻分压式的线控按键的检测方法和电路用以解决上述问题。
为实现上述目的,本发明采用的技术方案为:一种电阻分压式的线控按键的检测方法,包括如下步骤:
s1,将电源经过线控按键的电路分压后给电容充电;
s2,检测电容充满的充电时间;
s3,根据检测到的充电时间即可得知对应的被按下的按键。
进一步的,所述步骤s1具体为:将电源经过线控按键的电路分压后通过充电控制电路给电容充电,电容充满电后通过放电控制电路进行放电,充电控制电路和放电控制电路由pwm信号控制进行交替导通和关断。
更进一步的,所述步骤s2具体为:将电容两端的电压通过电平转换电路转换后输出给mcu的i/o口,通过mcu检测i/o口在pwm信号的周期内的电平情况;
所述步骤s3具体为:根据检测到的电平情况即可得知对应的被按下的按键。
更进一步的,所述步骤s2中,通过mcu检测i/o口在pwm信号的周期内的电平情况具体为:mcu在pwm信号的周期内以时间间隔t=t/n不断地扫描i/o口的输入状态,并得到一组代表i/o口状态的数组;其中t为pwm信号的周期,n为大于0的整数。
所述步骤s3具体为:根据得到的数组与预存的数组值表进行对比,即可得知对应的被按下的按键。
本发明还公开了一种电阻分压式的线控按键的检测电路,包括充电电容c1、充电控制电路、放电控制电路和电平转换电路,所述充电电容c1的第一端接地,所述充电电容c1的第二端通过充电控制电路接线控按键电路的输出端,同时,充电电容c1的第二端通过放电控制电路接地,所述充电控制电路和放电控制电路的控制输入端同时接控制芯片的第一i/o口,所述电平转换电路的输入端接充电电容c1的第二端,所述电平转换电路的输出端接控制芯片的第二i/o口,所述控制芯片的第一i/o口用于输出pwm信号控制充电控制电路和放电控制电路交替导通和关断,所述控制芯片通过检测第二i/o的电平情况得出对应的被按下的按键。
进一步的,所述控制芯片为mcu处理器。
进一步的,还包括充电限流电阻ra和放电限流电阻rd,充电限流电阻ra串接在充电电容c1的充电回路上,放电限流电阻rd串接在充电电容c1的放电回路上。
进一步的,所述充电控制电路是由npn三极管q2和pmos管q1构成的二级开关电路。
进一步的,所述放电控制电路是由npn三极管q3和q4构成的二级开关电路。
进一步的,所述电平转换电路包括npn三极管q5和电阻rg,所述npn三极管q5的基极接充电电容c1的第二端,所述npn三极管q5的的发射极接地,所述npn三极管q5的集电极串联电阻接电源vcc,同时接控制芯片的第二i/o口。
本发明的有益技术效果:
本发明能适用于不同电路结构的电阻分压式线控按键电路,适用于不同mcu平台和不同的电源系统,节省了开发成本,缩短了和车厂匹配开发的开发周期,且电路结构简单,易于实现,只需采用一个普通i/o口和一个具有pwm功能的i/o口,无需专门的模数转换芯片检测或者检测设备内部的mcu带有adc功能,成本低。
附图说明
图1为本发明实施例的方法流程图;
图2为本发明实施例的电路原理图;
图3为本发明实施例的电平检测示意图;
图4为本发明实施例的程序流程图。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
如图1所示,一种电阻分压式的线控按键的检测方法,包括如下步骤:
s1,将电源经过线控按键的电路分压后给电容充电。
s2,检测电容充满电的充电时间。
s3,根据检测到的充电时间即可得知对应的被按下的按键。
本具体实施例中,所述步骤s1具体为:将电源经过线控按键的电路分压后通过充电控制电路给电容充电,电容充满电后通过放电控制电路进行放电,充电控制电路和放电控制电路由mcu提供的pwm信号控制进行交替导通和关断,实现对电容进行循环充放电。
本具体实施例中,所述步骤s2具体为:将电容两端的电压通过电平转换电路转换后输出给mcu的i/o口,通过mcu检测i/o口在pwm信号的周期内的电平情况,具体的,mcu在pwm信号的周期内以时间间隔t=t/n不断地扫描i/o口的输入状态,而得到一组代表i/o口状态的数组,由数字0和1构成;其中t为pwm信号的周期,n为大于0的整数。pwm信号的周期t、pwm信号的周期的占空比以及n的取值根据具体的线控按键的电路进行选择,n的取值越大,检测精度越高,但也会相应增大mcu的处理量,因此,可以根据实际情况选择一个合适值,此是本领域技术人员可以轻易实现的,不再详细说明。
本具体实施例中,所述步骤s3具体为:根据得到的数组与预存的数组值表进行对比,即可得知对应的被按下的按键。
首先,对不同的电阻分压式的按键电路进行调试,得到针对该电路结构的代表不同按键按下时候的i/o口状态的数组值,将这些数组值存储在mcu的内部存储器中;然后,在实际使用中将检测到的数组值和预存的数组值表进行对比,最后得出按下的是哪个按键。
下面将结合具体电路原理图进一步阐述本方法的原理。
如图2所示,本发明还公开了一种电阻分压式的线控按键的检测电路,包括充电电容c1、充电限流电阻ra、放电限流电阻rd、充电控制电路、放电控制电路和电平转换电路,本具体实施例中,充电控制电路包括npn三极管q2和pmos管q1,放电控制电路包括npn三极管q3和q4,电平转换电路包括npn三极管q5和电阻rg。
所述充电电容c1的第一端接地,所述充电电容c1的第二端分别接pmos管q1的漏极、npn三极管q5的基极和放电限流电阻rd的第一端,pmos管q1的源极接线控按键电路1的输出端,同时串联充电限流电阻ra接电源vcc,本具体实施例中,图2所示的线控按键电路1为一种方向盘的线控按键电路,但不限于此,其它任何采用电阻分压式的线控按键都适用于本发明。
所述pmos管q1的栅极一路串联npn三极管q2接地,另一路串联电阻rb接pmos管q1的源极,npn三极管q2的基极串联电阻rc接控制芯片(图中未示出)的第一i/o口,本具体实施例中,控制芯片为mcu,第一i/o口用于输出pwm信号,当然,在其它实施例中,控制芯片也可以是其它可以执行程序进行处理计算控制,且具有i/o口的设备,如plc控制器等。
放电限流电阻rd的第二端接npn三极管q3的集电极,npn三极管q3的发射极接地,npn三极管q3的基极一路接npn三极管q4的集电极,另一路串联电阻re接电源vcc,npn三极管q4的发射极接地,npn三极管q4的基极串联电阻rf接第一i/o口。
npn三极管q5的发射极接地,npn三极管q5的集电极一路串联电阻rg接电源vcc,一路接mcu的第二i/o口,mcu的第二i/o口作为检测输入端。
本具体实施例中,所述充电控制电路是由npn三极管q2和pmos管q1构成的二级开关电路,当然,在其它实施例中,充电控制电路也可以采用现有的其它开关电路,如由一个三极管,或一个mos管构成的开关电路等,此是本领域技术人员可以轻易实现的,不再详细说明。
本具体实施例中,所述放电控制电路是由npn三极管q3和q4构成的二级开关电路,当然,在其它实施例中,放电控制电路也可以采用现有的其它开关电路,如由一个三极管,或一个mos管构成的开关电路等,此是本领域技术人员可以轻易实现的,不再详细说明。
本具体实施例中,所述电平转换电路由npn三极管q5和电阻rg构成,当然,在其它实施例中电平转换电路也可以采用现有的其它电平转换电路,此是本领域技术人员可以轻易实现的,不再详细说明。
本具体实施例中,pwm信号的周期t、pwm信号的高电平时间ton、pwm信号的的低电平toff,以及充电电容c1、充电限流电阻ra和放电限流电阻rd需要根据具体的电阻式分压电路选择它们的取值,pwm信号的高电平时间ton和pwm信号的的低电平toff必须满足充电电容c1充满电和放完电,此是本领域技术人员可以轻易实现的,不再详细说明。
检测过程:
当线控按键电路1未有按键按下的时候,充电电容c1的充电电流i=vcc*(r1+r2+....+rn)/(r1+r2+....+rn+ra)/resr(此处resr为电容内阻),在pwm信号的高电平时间ton内pmos管q1和npn三极管q2导通,充电电容c1充电,设在时间t0.6内达到0.6v(充电电容c1的电量充满,具体根据充电电容c1的选型而改变),三极管q5导通,第二i/o口被拉到低电平。在pwm信号的低电平时间toff内pmos管q1和npn三极管q2关闭,充电电容c1停止充电,npn三极管q3关闭,npn三极管q4导通,充电电容c1放电。npn三极管q5截止,第二i/o口被拉到高电平。在t=ton+toff期间,mcu以时间间隔t=t/n不断的扫描第二i/o口输入状态,并得到一组代表i/o状态的数组,数组由数字0、1表示。图3所示为未按下按键时候的检测到的第二i/o口的电平变化,其检测到的数组为[110000001111],代表无按键按下,当然,根据n取值的不同,检测到的数组也不同,但都与线控按键电路1的状态相对应。
n需要根据具体的电阻式分压电路选择它的取值。
当线控按键电路1有任意按键按下的时候,充电电容c1的充电电流i=vcc*(r1+r2+....+rn)/(r1+r2+....+rn+ra)/resr(此处resr为电容内阻),其中rx为任意按键按下的时候,电阻分压式线控按键电路1对外的输出阻值,因此,根据按下的按键不同,rx的值不同,充电电容c1的充电电流i就不同,从而充电电容c1的充电时间也是不同的,最后第二i/o口在时间t内检测到的i/o电平变化的数组值也是不一样的。
对不同的电阻分压式的按键电路进行调试,得到针对该电路结构的代表不同按键按下时候的i/o电平变化的数组值,将这些数组值存储在mcu的内部存储器中,在实际使用中将检测到的数组值和存储的数组值表进行对比,最后得出按下的是哪个按键。具体程序流程图如图4所示。
本发明能适用于不同电路结构的电阻分压式线控按键电路,适用于不同mcu平台和不同的电源系统,节省了开发成本,缩短了和车厂匹配开发的开发周期,且电路结构简单,易于实现,只需采用一个普通i/o口和一个具有pwm功能的i/o口,无需专门的模数转换芯片检测或者检测设备内部的mcu带有adc功能,成本低。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。