构建物体检测直流电机控制器
出处:维库电子市场网 发布于:2024-08-16 16:51:48 | 349 次阅读
Raspberry Pi(型号 A+、B、B+ 或 Pi 2)
(Q1)2N2222 NPN 或等效晶体管
(R1)220 欧姆电阻(红色、红色、棕色、金色),1/4W,5%
(D1)1N4001 整流或等效元件
(M1)3-6VDC 电机或同等电机
(Pi 1)Raspberry Pi Cobbler或同等产品
(R2)光电管
DMM(数字万用表)或 VOM(伏特-欧姆-毫安表)
跳线(手工剥线 22 AWG [美国线规])实心线或 Adafruit 面包板线 产品 ID:153)
(VCC1)6VDC电池组
1.5VDC AAA 或 AA 电池 x 4
(S1)触觉按钮开关
光检测和光电管 光电管是一种。电气教科书或电子爱好者杂志中使用的另一个术语是光敏电阻或 LDR。如果您从未见过光电管,图 2 显示了 LDR 的电气符号和组件视图。
构建简单的光传感器开关 我们将使用光电管和上拉电阻制作一个简单的光传感器开关。图 6 显示了连接到 RPi GPIO 引脚的简单光传感器开关的基本电路原理图。电压降将与光电管电阻的大小成正比。例如,将物体或手放在光电管上将在 LDR 上产生约 +3,3VDC 的电压降。移开物体或手将降低光电管的电阻,从而在其上产生成比例的小电压降。电压降将由 RPi GPIO 引脚读取。Python 代码将读取光的消失和存在,即 +3.3VDC 或 0VDC。因此,将使用简单的光传感器电路模拟普通触觉按钮 - 数字开关的电气行为。 项目的下一阶段是构建和测试由晶体管操作的直流电机。
构建晶体管电机驱动电路 项目构建的下一阶段是连接一个电子电路,该电路将操作一个小型直流电机。具有适当放大系数(Beta)的单个双极结型晶体管(BJT)可用于操作或驱动小型直流电机。您可以通过在无焊面包板上构建电路(如图7所示)轻松构建晶体管直流电机驱动器。我还提供了电子电路原理图作为附加接线参考资料,如图8所示。在无焊面包板上构建电路后,按下触觉按钮开关将打开连接到晶体管集电极引线的小型直流电机。如果直流电机不旋转,请从电路中取出电池组,重新检查您的接线以及1N4001整流二极管和2N2222 NPN晶体管的正确组件方向。纠正接线错误后,重新连接电池组并再次测试电路,恭喜您构建了一个功能齐全的晶体管电机驱动器电路!现在,让我们通过回顾基本的晶体管理论来了解直流电机驱动器电路的工作原理。
图 7.晶体管电机驱动器无焊面包板接线图
基本晶体管理论
晶体管能够操作直流电机是因为电源电流从 +6VDC 电池组通过集电极 - 发射极引线流到地。直流电机绕组串联在集电极引线和 +6VDC 电池组之间。来自 +6VDC 电池组的电流流过直流电机绕组,使其旋转。为了使电流流过集电极-发射极引线和直流电机绕组,必须打开晶体管。要打开晶体管,必须使用一种称为正向偏置的电子电路操作技术。正向偏置晶体管包括施加到基极-发射极结的输入电压,该电压大于 0.7V(700 mV)。此外,必须根据半导体元件类型正确连接晶体管。BJT 元件类型由 PNP 或 NPN 引脚配置组成。2N2222 晶体管是 NPN 元件。 集电极和发射极引线为负极(N 材料),基极为正极(P 材料)。图 9 显示了 2N2222 NPN 晶体管的引脚配置和封装类型。如图 8 所示,基极通过触觉按钮开关和 220 欧姆串联限流电阻连接到 +6VDC 电池组正极红线,发射极连接到地线(黑线)。220 欧姆电阻连接到晶体管的基极,以减少满电池电流和热量损坏晶体管。220 欧姆电阻的电阻值很合适,可以允许足够量的基极电流流动,从而使晶体管正常开启。此外,1N4001 二极管可防止直流电机绕组的反向峰值反向电流在晶体管关闭时损坏晶体管。如果您有兴趣了解有关此半导体器件的更多信息,请阅读 AAC 关于 双极结型晶体管的文章以获取更多电气理论信息。让我们继续进行项目的最终硬件构建。
图 10.组装在无焊面包板上的完整物体检测直流电机控制器接线图。请注意,触觉按钮开关、+6VDC 电池组的移除以及无焊面包板上电子元件的新放置位置。
检测 Python 代码
下面显示的 Python 代码是从 LED 闪光灯项目中重复使用的程序。变量名称已更改为反映连接到 RPi 的物理组件。代码的工作原理是将一个物体放在光电管上以打开直流电机。将物体第二次放置在传感器上将关闭直流电机。如前所述,上拉电阻是一个使用以下 Python 代码行编程的组件:
GPIO.setup(光电管引脚,GPIO.IN,上拉下拉=GPIO.PUD_UP)
通过使用 Linux 命令 ~sudo nano object detection.py 打开 nano 编辑器,即可将整个 Python 程序输入到 LXTerminal 中。此外,还可以通过单击下面的代码按钮将 Python 程序保存到 RPi 的 SD 卡上。
# ***********Object Detection code******************
#
# inspired by Simon Monk, Raspberry Pi Cookbook, 2013
#
# modified by Don Wilcher Dec 18, 2015
#
# Placing a object over the photocell will turn on the dc motor.
# Placing an object over the photocell a 2nd time turns off the motor.
# Add libraries to python script
import RPi.GPIO as GPIO
import time
# Include BCM I/O pins into python script and define pin numbers
GPIO.setmode(GPIO.BCM)
photocell_pin = 4
motor_pin = 18
# Create photocell pin as an active low switch (use RPi internal pullup resistor)
# and define motor pin as an output.
GPIO.setup(photocell_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(motor_pin, GPIO.OUT)
# Define and set (initialize) the motor output state as False and the old input event as True
motor_state = False
old_input_event = True
# pbswitch event monitoring loop: check pbswitch_pin and toggle dc motor output based on input events
# being True or False
while True:
new_input_event = GPIO.input(photocell_pin)
if new_input_event == False and old_input_event == True:
motor_state = not motor_state
old_input_event = new_input_event
GPIO.output(motor_pin, motor_state)
time.sleep(0.1)#provides a 100 msec motor actuation on/off time
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//tgdrjb.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。