以下为我去年参加学校智能车培训时做的笔记,包括了整了主板设计的思路流程,以及分析各种模块设计的优缺点。
由于我现在做项目时需要自主设计板子和原理图,所以重新整理出之前在学习智能车时做的笔记。希望能对大家有所帮助。
没有对文章的格式进行整理,格式比较乱,懒得去调格式了,但是文章内容还是非常不错的。
-
1. 如何寻迹
-
光学方法:
- 使用发光二极管发出一个红光,和一个接收管(传感器)接收反射回来的光,若反射回来的光较强,则在白色的地方;若反射回来较弱,则在黑色的地方
-
-
-
- 在淘宝上可以找到套件,使用两个发光二极管和两个光敏电阻
-
原理:
- 红光照在黑色和白色上反射回来的光会导致光敏电阻的阻值不同,进而导致各分得的电压不同。再用一个电压比较器进行比较,将v1和某个电压值Vref(假设为3v)进行比较;若v1为2.5v,比Vref低,则V2输出0v;若V1位4.5v,比Vref高,则V2输出高电平5v。
- 电压比较器特点:如果正端(同向端)比负端(反向端)的电压高,则V2输出高电平(假设为5v);若低,则输出0v
-
所以,光照在白色上,V2输出0v;光照在黑色上,V2输出1v。我们就可以通过这个电路,就可以得到传感器在白色还是在黑色上面,然后我们就可以通过V2的电压控制电机,在白色上电机不转,在黑色上电机就转。
-
-
- 但实际上,用V2直接接在电机上,电机是不会转的。因为电压比较器驱动能力比较小,一般几十毫安,而电机至少需要2安左右。
-
所以,需要加一个驱动电路,通过一个三极管来实现输入小电输出大电流来驱动电机
-
驱动电路
-
-
- 但是,这个电路跑起来太慢了,如何提速呢?对电路升级
-
-
2. 电路板结构设计
-
-
-
- 在电路板上需要一个能够执行控制算法的部件——单片机;还需要一个驱动电机电路,用三极管驱动,但缺点是电流大,在智能车中电机的速度是需要精确调整,速度快且响应要快,要不停地控制他,加速减速反向刹车,这是三极管不能做到的,所以我们可以用多个三极管;
- 舵机驱动电路,单片机输出的是方波,给舵机不同的方波使其转动到不同的位置,这种方式叫PWM控制,脉宽调制;舵机的驱动原理,单片机会发出方波信号,一般来说这个方波周期是20ms,高电平的时间是1-2ms之间。若给高电平时间是1.5ms,舵机会转动中间位置,给舵机高电平时间再1ms,舵机会转到最左边的位置,给的是2ms转的是最右边的位置。所以,只需要控制高电平不同的时间就可以控制舵机转到不同的位置,这种方式就叫PWM,pulse width modulation脉冲宽度调制
-
-
-
-
-
- 信号调理电路,对外部传感器的信号进行处理,变成单片机能够识别的信号;原因:信号传感器连接在电磁传感器和单片机之间,(而摄像头没有是因为摄像头是数字摄像头,其本身是数字量,使用的时候直接单片机IO就可以去读取采集后的数字,但是电磁和光电传感器不能直接用,因为不同光照值的电压值不同,光照强度越强,电压值越高,要用比较器进行处理,处理完后变成一个0101的一个数字信号,就可以被单片机识别了,因为单片机处理数字信号,但也不绝对是,
- 单片机内部还可以集成ADC电路,可以将输入的模拟信号转化成数字信号,有一个量化的过程,ADC原理:横坐标是输入的模拟信号,纵坐标是转化以后的信号,有一个参考电压Vref,把输入的模拟电压值0转化为数字电压值0,如果模拟电压值等于参考电压值(假设为33v),那么会转化为满量程值,若单片机是10bit的,那么转化之后会等于2的10次方=1023)
- 信号调理电路,对外部传感器的信号进行处理,变成单片机能够识别的信号;原因:信号传感器连接在电磁传感器和单片机之间,(而摄像头没有是因为摄像头是数字摄像头,其本身是数字量,使用的时候直接单片机IO就可以去读取采集后的数字,但是电磁和光电传感器不能直接用,因为不同光照值的电压值不同,光照强度越强,电压值越高,要用比较器进行处理,处理完后变成一个0101的一个数字信号,就可以被单片机识别了,因为单片机处理数字信号,但也不绝对是,
-
-
-
-
-
-
- 总结,有两种:1.将模拟信号通过信号处理电路转化成数字信号 2.通过电路输入模拟信号,输出还是模拟信号,因为可能输入的模拟信号幅度比较小,比如只有10mv,需要进行放大,比如放大100倍,变成1000mv,然后再用ADC去采集范围就大了,可以相对精准些
-
-
-
-
-
-
- 交互电路,按键显示电路,通过编程可以去读取按键的状态,比如按键1按下了让他干什么,按键2按下了让他干什么;除了按键,还可以加一个显示部件,比如可以加不同颜色的灯,让他点亮不同的灯代表不同的状态;或者可以用一个液晶屏上去显示一些内容,比如显示现在的速度speed100。
- 无线通信模块,像遥控车,使用的可能是模拟电路,也有可能是数字电路
- 电源转换电路,很重要,因为上面的各种模块电路的所需电压都不太一样,比如常规的单片机需要供电+5v,而电池电压值是7.2v,而电源转换电路就是将电池电压转换为各个模块所需的电压,
- 如何设计电源转换电路,如何将7.2v转换为5v:
-
-
-
-
-
-
- 第一种:分压产生+5v,原理上没问题,但是不能作为电源,因为现在测出来的5v是在空载的情况下,若加一个负载100欧电阻,那么这个点的电压就接近0了,所以这个电路受负载的影响很大,所以不能用这个电路
-
-
-
-
-
-
-
- 第二种:运放,但是作为输出电源的时候,是由运放来提供的,而运放所提供的电流比较小,一般是20mA,若大于20ma,运放就不能运行了
-
-
-
-
-
-
-
- 第三种:稳压管,特点:如果施加的反向电压高于它的击穿电压的情况下,会瞬间导通,那么输出的电压值就等于稳压管的电压值了,
-
-
-
但这种方式一种有缺点,稳压管工作的时候要求它的电流值有一个范围,如果电流值过大或过小,都会导致它输出没有办法稳定下来;还有一种缺点是,如果接上负载后所有的电流都会被电阻或稳压管消耗掉,结果前面的电阻就会发热,效率会特别低;而且稳压电路提供的电流比较小,一般可能就提供几十毫安的电流
-
-
-
-
-
- 如何增大驱动电流呢?
-
-
-
-
在稳压电路上增加一个比较器,用它作为一个参考电压,同时再加一个晶体管,然后用比较器的输出控制这个晶体管的通导状态,最后作为整体的输出,再加一个反馈,采样电路,采样器的输出作为比较器的比较电压,这样就形成了一个相对来说比较完整的一个稳压电路,它既能够保证晶体管来提高它的驱动能力,与此同时输出反馈可以保证输出是稳定的;这就是经典的线性稳压器,也就是线性电源,
优点:1.输出有反馈,可以保证输出是稳定的,2.输出相对误差较小,
缺点:输出的电流从7.2v到5v,中间的2.2v都被晶体管给消耗掉了,结果这个晶体管会特别热,会导致效率很低,因为负载经过的电流都被晶体管消耗掉了
-
-
-
-
-
- 如何解决效率太低的问题呢?
-
-
-
-
将晶体管(NPN)换成开关管,不让他一直处于线性状态工作,一直处于耗散,我们要让他开关进行切换,用一个开关管来实现,其他跟稳压器电路一样,这种电路叫做开关电源/开关稳压器
好处:这个开关不是工作在线性状态的,而是工作在开关状态的,可以通过这个控制电路来控制通断,使其在开的时候有电流流过,消耗电,关闭的时候不耗电,这样效率就会变高
缺点:输出一会有一会没有,这个纹波会比较大,处于波动状态,而前面的线型电源输出是一个稳定的直线,是连续的;需要想办法控制它波动的幅度,不要波动得太厉害,并控制它波动的频率,让其频率尽量稍微高一些,在一定忍受范围内
开关电源有三种拓扑结构
-
-
-
-
-
-
- Buck型,降压型开关电源
- Boost型,升压型开关电源
- Buck-Boost型,升降压型,搭建电感电容二极管
-
-
-
-
-
优点:效率高,可以达到90%95%量级;压差小,像线性电源,低于一定电压,就不输出了
缺点:1.波动大。2.电路复杂
还有一种电源叫:电荷泵,将正电压转化为负电压;特点:输出电流不会特别大,其本质是电容性开关电源,电路比较简单。
如何设计一个电源,给不同的模块供电?
单片机,若需要用到ADC或DAC的模拟部分,则需要纹波要小一些,与此同时,单片机实际上的供电电流是比较大的;要兼顾两种情况,则需要用到两级电源,12v首先经过开关电源降到5v,然后再用线性电源降到3.3v,那么既保证纹波,有保证线性电源不会太烫;
若单片机需要用到数字部分,特点是纹波无所谓,电流比较大,直接用开关电源就OK
-
-
-
-
- 电机驱动电路
-
-
-
只用一个三极管做电路是不能实现电机既能正转又能反转这种功能,
可以用一个H桥,用四个三极管,将电机接在中间,每个三极管接一个控制信号,这四个控制信号可以控制用四个晶体管/开关管控制这四个三极管的导通状态,就可以控制电机正转或者反转,那我们假设下面这种电流流向为电机正转,
再换一种控制方式,另一种电流流向为电机反转
这种控制方式叫做H桥驱动电路,驱动能力取决于四个晶体管的最大电流和内阻,如果晶体管允许最大电流很大,内阻很小,那么电机驱动就会非常有劲,加速快
但是,三极管驱动效果还是不太理想,那么我们可以有以下解决方法
1.找比较常用的驱动芯片