这个供电的引脚,有的面包板不是一整排都是连接的,如果断开需要用跳线把两边连起来
- LED 电路符号,左边是正极,右边是负极。
- LED 实物图,引脚没有剪过的 LED,长脚是正极,短脚是负极。
- LED 内部,较小的一半是正极,较大的一半是负极。
硬件电路:
如何选择?
取决于 IO 口高低电平的驱动能力如何了。(推挽输出模式下,高低电平均有较强的输出能力,此时两种接法均可)但是在单片机的电路里,一般倾向使用第一种接法,因为很多单片机或者芯片,都使用了高电平弱驱动,低电平的强驱动的规则,这样可以一定程度上避免高低电平打架。所以高电平驱动能力弱,就不能使用第二种连接方法了。
限流电阻作用:
- 防止 LED 因为电流过大而烧毁
- 可以调整 LED 的亮度
- 有源蜂鸣器 内部电路图,用了一个三极管开关来进行驱动,在 VCC 和 GND 分别接上正负极的供电,然后中间一个引脚接低电平,蜂鸣器就会响,接高电平,蜂鸣器就关闭。
- 有源蜂鸣器 实物图。
硬件电路:
使用了三极管开关的驱动方案:三极管开关是最简单的驱动电路,对于功率稍微大一点的,直接用 IO 口驱动会导致 STM32 负担过重,此时可以用一个三极管驱动电路来完成驱动的任务。
注意:PNP 的三极管最好接在上边,NPN 的三极管最好接在下边。这是因为三极管的通断,是需要在发射极和基极直接产生一定的开启电压的。如果把负载接在发射极这边,可能会导致 三极管不能开启。
OLED(Organic Light Emitting Diode):有机发光二极管
OLED显示屏:性能优异的新型显示屏,具有
0.96寸OLED模块:小巧玲珑、占用接口少(驱动这个OLED只需要几根线和简单的通信协议)、简单易用,是电子设计中非常常见的显示屏模块(单片机领域金典显示屏);但只有一种颜色,分辨率也很低。
供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64,外型:4/7 根针脚
在单片机中应用按键的一个现象:按键抖动现象
硬件电路:
按键的四种接法:
上面两个是 下接按键 的方式(按键按下是低电平,松手是高电平),下面两个是 上接按键 的方式(按键按下是高电平,松手是低电平)。(左边两种接法要求引脚必须是 上拉/下拉输入模式,右边两种接法可以允许引脚是浮空输入的模式,因为已经外置上拉和下拉电阻)
一般用 下接 的方式,原因与 LED 接法类似,是电路设计的习惯和规范
要求单片机的引脚可以配置为 下拉输入模式,一般单片机可能不一定有下拉输入模式,最好还是用上面的接法。
传感器模块工作原理:利用传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,但是电阻的变化不容易直接被观察,所以通常将传感器元件与定值电阻进行串联分压即可得到模拟电压输出,对于电路来说,检测电压非常容易,再通过电压比较器对模拟电压进行二值化即可得到数字电压输出。
一般我们遇到一端接在电路中,一端接地的电容都可以考虑一下是不是滤波电容。如果是滤波电容,那这个电容就是用来保证电路稳定的,并不是电路的主要框架,我们在分析电路的时候,可以先把这个电容给抹掉,使我们的电路分析更加简单。
采用分压定理分析传感器电阻的阻值变化对输出电压的影响,也可以用上下拉电阻的思维(阻值越小,拉力越强)来分析。 当 N1 阻值变小时,下拉作用就会增强,中间的 AO 端电压就会拉低,极端情况下, N1 阻值为 0,AO 输出被完全下拉,输出 0V; 当 N1 阻值变大时,下拉作用就会减弱,中间的 AO 端由于 R1 的上拉作用电压就会升高,极端情况下, N1 阻值为 无穷大,相当于断路,输出 电压被 R1 拉高至 VCC。
在单片机电路中出现的的弱上拉、弱下拉、强上拉、强下拉中的强和弱就指电阻阻值的大小。上拉和下拉就指接到 VCC 还是 GND。
在这两个电阻的分压下,AO 就是我们想要的模拟电压输出了,所以 AO 电压就直接通过排针输出了,这就是 AO 电压的由来。
数字输出就是对 AO 进行二值化的输出,二值化通过芯片 LM393 来完成的,是一个电压比较器芯片,里面有两个独立的电压比较器电路,剩下的是 VCC 和 GND 供电。VCC 接到了电路的 VCC,GND 接到了电路的 GND,这里有个电容是电源供电的滤波电容。电压比较器其实就是一个运算放大器。
运算放大器当作比较器情况:当同相输入端的电压大于反相输入端的电压时,输出就会瞬间升为最大值,也就是输出接 VCC;反之当同相输入端的电压小于反相输入端的电压时,输出就会瞬间降为最小值也就是输出接 GND。这样就可以对一个模拟电压进行二值化了。
这里同相输入端 IN+ 接到了 AO,就是模拟电压端,IN- 接了一个电位器,电位器接法也是分压电阻的原理,拧动电位器,IN- 就会生成一个可调的阈值电压,两个电压进行比较,最终输出结果是 DO,数字电压输出,DO 最终就接到了 引脚的输出端,这就是 数字电压 的由来。
右边有两个指示灯电路。左边是电源指示灯,通电就亮;右边是 DO 输出指示灯,可以指示 DO 的输出电平,低电平电路,高电平熄灭。
右边 DO 这里多了个 R5 上拉电阻,是为了保证默认输出为 高电平的。
P1 的排针,分别是 VCC、GND、DO 和 AO。
红外传感器 会多一个点亮红外发射管的电路,发射管发射红外光,接收管接收红外光。
- 模拟电压表示接收光的强度。
- 电位器直接换成两个电阻进行分压,数字输出就是固定阈值的二值化了。
- 模块通常用来检测通断,所以阈值不需要过多的调整。
硬件电路:
使用外部中断模块的特性:对于 STM32 来说,想要获取的信号是外部驱动的很快的突发信号。
- 比如旋转编码器的输出信号,我们可能很久都不会拧它,此时不需要 STM32 做任何事,但是一拧它,就会有很多脉冲波形需要 STM32 接收。这个信号是突发的,STM32 不知道什么时候会来;同时它还是外部驱动的,STM32 只能被动读取;最后这个信号非常快,STM32 稍微晚一点来读取,就会错过很多的波形。这种情况就可以考虑使用 STM32 的外部中断。
- 比如红外遥控接收头的输出,接收到遥控数据之后,会输出一段波形,这个波形转瞬即逝,并且不会等你,所以就需要我们用外部中断来读取。
- 按键虽然也是外部驱动的突发事件,但不推荐用外部中断来读取按键,因为外部中断不好处理按键抖动和松手检测的问题。对于按键来说,他的输出波形也不是转瞬即逝的。所以要求不高的话可以在主程序中循环读取。如果不想用主程序循环读取,可以考虑一下定时器中断读取的方式。(既可以做到后台读取按键值、不阻塞主程序;也可以很好的处理按键抖动和松手检测的问题)
作用及原理:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向
类型:机械触点式/霍尔传感器式/光栅式
这只能输出一个方波信号,并不是正交编码器。
这种编码器一般用于进行调节,比如音响调节音量这样的用途,因为是触点接触的形式,不适合电机这种高速旋转的地方。另外几种都是非接触的形式,可以用于电机测速。(电机测速在电机驱动中的应用还是非常常见的)
第三种:直接附在电机后面的编码器。是霍尔传感器形式的编码器,中间是一个圆形磁铁,边上有两个位置错开的霍尔传感器。当磁铁旋转时带动中间的磁铁旋转,两个霍尔传感器 90° 放置,通过霍尔传感器,就可以输出 A 相和 B 相 两个正交的方波信号,是正交编码器。接口的引脚有六根线,最左和最右一般直接接到电机的,然后是靠里一些的两根是编码器电源,最中间的两根就是 A 相和 B 相的输出了。
第四种:独立的编码器元件,输入轴转动时,输出就会有波形,也可以测速和测方向,一般都是正交编码器,当然也有的不是,具体用法看相应手册。接口的引脚一般有六个,两个是编码器电源,两个是 A、B 相,一般还有一个编码器 0 位置的输出,也就是 z 相,0 位置就是编码器每转到一个固定位置的时候,输出一个脉冲,一般应用于位置测量,校准 0 位置用的。最后还有一个引脚,一般是空脚,没有用到。
硬件电路:
中间是旋转编码器,上面按键的两根线并没有使用,是悬空的,下面的就是编码器内部的两个触点了,旋转轴旋转时,这两个触点以相位相差 90 度的方式交替导通,因为这只是个开关信号,所以要配合外围电路才能输出高电平;左边接了一个 10k 的上拉电阻,默认没旋转的情况下,被上拉为高电平,通过 R3 这个电阻输出到 A 端口的就是高电平,当旋转时,内部触点导通,被直接拉低到 GND 了,再通过 R3 输出,A 端口就是低电平了。R3 是一个输出限流电阻,是为了防止模块引脚电流过大的;C1 是输出滤波电容,防止一些输出信号抖动的;右边电路和左边一模一样。最后中间下边这个模块的 C 端口就直接接到了 GND。
右边使用这个模块时,上边 VCC、GND 接电源,下面的 A 相输出和 B 相输出接到 STM32 的两个引脚上。比如 PB0 和 PB1,注意引脚的 GPIO_Pin 编号不要一样就行了。然后中间的 C 引脚,就是 GND,暂时不用。
舵机是一种根据 输入 PWM 信号占空比 来控制舵机输出轴的角度的装置(PWM 波形当作一个通信协议来使用的,这也是一种常用的应用形式,与用 PWM 等效一个模拟输出,关系不大)
型号:SG90
三根输入线:两根电源线、一根信号线,PWM 通过输入到信号线来控制舵机
白色的输出轴:固定在指定的角度不动,固定的位置由信号线的 PWM 信号来决定的
拆解结构:舵机并不是一种单独的电机,内部由直流电机驱动,还有一个控制电路板,是一个电机的控制系统。大概执行逻辑:PWM 信号输入到控制板,给控制板指定一个目标角度,然后电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转,如果小于目标角度,电机就会正转,最终使输出轴固定在指定角度,这就是舵机的内部工作流程。
输入 PWM 信号要求:输入信号脉冲宽度 / 周期为 20 ms,高电平宽度为 0.5 ms~2.5 ms(舵机输出轴转角 -90°~90°,对应关系都是线性分配的,按比例来),占空比是这个范围。
实际应用:机器人,机械臂可以用舵机来控制关节,遥控车,遥控船可以用舵机来控制方向。还有一些其他结构,都可以考虑使用舵机。
引脚电路图:
直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。直流电机是一个单独的电机,里面没有驱动电路,所以要外挂一个驱动电路来控制。
直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作,可以用 PWM 来控制电机的速度。
电机这类器件基本上都属于大功率设备。必须要加驱动电路才能控制,电机驱动电路也是一个研究课题,现在市面上也有很多驱动电路可以选择。比如 TB6612、DRV8833、L9110、L298N 等等,这些都是比较常见的电机驱动芯片,另外还有一些用分离元件 MOS 管搭建的电路,这个功率可以做的更大一些。
TB6612 是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向。
像有些芯片,比如 ULN2003,它里面一路就只有一个开关管,所以它就只能控制电机在一个方向转
使用现成的芯片还是挺方便的,电路已经设计好并集成在芯片里了,我们直接拿来用就行。
H 桥电路的基本结构:
由两路推挽电路组成的,如果左边上管导通,下管断开,那左边输出就是接在VM的电机电源正极;上管断开,下管导通,那左边输出就是接在 PGND 的电源负极。如果有两路推挽电路,中间这里接一个电机,左上和右下导通,那电流就是从左上边流向右下边;右上和左下导通,那电流方向就反过来了,从右上边流向左下边;H桥可以控制电流流过的方向,所以它就能控制电机的正反转,这就是电机驱动芯片内部的部分电路。
三个脚是如何控制电机正反转和速度的呢?取决于右下方表格。
这里输入是 IN1、IN2、PWM 和 STBY,STBY 低电平就待机,高电平就正常工作,然后右边是输出,O1、O2 和模式状态。