Raspberry Pi HAT 是 Raspberry Pi 的附加板,尺寸与 Pi 相同。它可以直接安装在 Raspberry Pi 的顶部,不需要任何进一步的连接。市场上有许多 Raspberry Pi HAT。在本教程中,我们将构建一个Raspberry Pi 电机驱动器 HAT来驱动直流和步进电机。此电机驱动器 HAT 包含一个 L293D 电机驱动器 IC、16*2 LCD 显示模块、四个按钮和用于 SIM800 模块的额外引脚和一个 3.3V 稳压器。这个 Raspberry Pi HAT 将在构建机器人项目时派上用场。
Raspberry Pi 电机驱动器 HAT 所需的组件
L293D集成电路
4 个按钮
贴片电阻(1×10K、12×1K)
1×10K电位器
4× SMD LED
LM317 稳压器
2×螺丝端子
16*2液晶模组
L293D电机驱动IC
L293D 是一种流行的 16 引脚电机驱动器 IC。顾名思义,它用于控制单极、双极步进电机、直流电机,甚至伺服电机。单个 L293D IC 可以同时驱动两个直流电机。此外,这两个电机的速度和方向可以独立控制。该 IC 带有两个电源输入引脚,即“Vcc1”和“Vcc2”。Vcc1 用于为内部逻辑电路供电,应为 5V,Vcc2 引脚用于为电机供电,可为 4.5V 至 36V。
L293D 规格:
电机电压 Vcc2 (Vs):4.5V 至 36V
最大峰值电机电流:1.2A
最大持续电机电流:600mA
Vcc1(VSS) 的电源电压:4.5V 至 7V
转换时间:300ns(在 5V 和 24V 时)
自动热关断可用
Raspberry Pi 电机驱动器 HAT 的电路图
下图显示了带有 Raspberry Pi 的 L293D 电机驱动器的完整原理图。原理图是使用 EasyEDA 绘制的。
该 HAT 由 L293D 电机驱动 IC、16*2 LCD 显示模块和四个按钮组成。我们还为带有 3.3V 稳压器的 SIM800 模块提供了引脚,该稳压器使用 LM317 可变稳压器设计用于未来的项目。Raspberry Pi 电机驱动器 HAT 将直接安装在 Raspberry Pi 顶部,从而更容易使用 Raspberry Pi 控制机器人。
为 Raspberry Pi 电机驱动器 HAT 制造 PCB
原理图完成后,我们可以继续布置 PCB。您可以使用您选择的任何 PCB 软件来设计 PCB。我们已经使用 EasyEDA 为这个项目制造 PCB。您可以通过从“层”窗口中选择层来查看 PCB 的任何层(Top、Bottom、Topsilk、bottomsilk 等)。除此之外,还提供了 PCB 的 3D 模型视图,了解它在制造后的外观。下面是 Pi Motor Driver HAT PCB 顶层和底层的 3D 模型视图。
组装Raspberry Pi 电机驱动器 HAT PCB
几天后,我们收到了整齐包装的 PCB,PCB 质量一如既往地好。板子的顶层和底层如下图所示:
在确保轨道和脚印是正确的之后。我继续组装PCB。此处的图像显示了完全焊接的电路板的外观。
树莓派设置
在对 Raspberry Pi 进行编程之前,我们必须安装所需的库。为此,首先,使用以下命令更新 Raspberry Pi OS:
sudo apt-get 更新 sudo apt-get 升级
现在为 LCD 模块安装Adafruit_CharLCD 库。该库适用于 Adafruit LCD 板,但也适用于其他品牌的 LCD 板。
sudo pip3 安装 Adafruit-CharLCD
树莓派电机驱动代码说明
在这个项目中,我们正在对 Raspberry Pi 进行编程,以在两秒的时间间隔内同时驱动正向、反向、向左和向右方向的两个直流电机。电机的方向将显示在 LCD 上。完整的代码在文档末尾给出。在这里,我们将解释代码的一些重要部分。
像往常一样,通过导入所有必需的库来启动代码。RPi.GPIO 模块用于使用 Python 访问 GPIO 引脚。模块时间用于将程序暂停一段预定义的时间。
导入 RPi.GPIO 作为 GPIO 进口时间 进口板 导入 Adafruit_CharLCD 作为 LCD
之后,为 L293D 电机驱动器 IC 和 LCD 显示器分配 GPIO 引脚。
液晶显示器 = 0 液晶显示器 = 5 lcd_d4 = 6 电机 1A = 4 电机 1B = 17 电机 1E = 12
现在,将 6 个电机引脚设置为输出引脚。接下来的四个是输出引脚,其中前两个用于控制右侧电机,接下来的两个用于控制左侧电机。接下来的两个引脚是左右电机的启用引脚。
GPIO.setup(Motor1A,GPIO.OUT) GPIO.setup(Motor1B,GPIO.OUT) GPIO.setup(Motor1E,GPIO.OUT) GPIO.setup(Motor2A,GPIO.OUT) GPIO.setup(Motor2B,GPIO.OUT) GPIO.setup(Motor2E,GPIO.OUT)
在 while 循环内,以两秒的间隔同时向前、向后、向左和向右移动两个直流电机。
GPIO.输出(电机 1A,0) GPIO.输出(电机 1B,0) GPIO.输出(电机 2A,1) GPIO.输出(Motor2B,0) lcd.message ('左') 打印(“左”) 睡觉(2) #向前 GPIO.输出(电机 1A,1) GPIO.输出(电机 1B,0) GPIO.输出(电机 2A,1) GPIO.输出(Motor2B,0) lcd.message ('转发') 打印(“转发”) …………………………………………
测试 Raspberry Pi 电机驱动器 HAT
完成 PCB 组装后,将电机驱动器 HAT 安装在 Raspberry Pi 上,然后启动代码。如果一切正常,连接到 Raspberry Pi 的直流电机将每两秒同时向左、前、右和反向移动,电机方向将显示在 LCD 显示屏上。
导入 RPi.GPIO 作为 GPIO
从时间导入睡眠
进口板
导入 Adafruit_CharLCD 作为 LCD
# 树莓派引脚设置
液晶显示器 = 0
液晶显示器 = 5
lcd_d4 = 6
lcd_d5 = 19
lcd_d6 = 26
液晶显示器 = 21
液晶背光 = 2
#定义 16x2 LCD 的 LCD 列和行大小。
lcd_columns = 16
lcd_rows = 2
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
# 电机驱动器输入引脚
电机 1A = 4
电机 1B = 17
电机 1E = 12
电机 2A = 27
电机 2B = 22
电机 2E = 13
GPIO.setwarnings(假)
GPIO.setmode(GPIO.BCM)
GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)
GPIO.setup(Motor2A,GPIO.OUT)
GPIO.setup(Motor2B,GPIO.OUT)
GPIO.setup(Motor2E,GPIO.OUT)
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.输出(电机 1E,1)
GPIO.输出(Motor2E,1)
而真:
input_state = GPIO.input(14)
打印(输入状态)
如果 input_state == False:
#剩下
GPIO.输出(电机 1A,0)
GPIO.输出(电机 1B,0)
GPIO.输出(电机 2A,1)
GPIO.输出(Motor2B,0)
lcd.clear()
lcd.set_cursor(6,0)
lcd.message ('左')
打印(“左”)
睡觉(2)
#向前
GPIO.输出(电机 1A,1)
GPIO.输出(电机 1B,0)
GPIO.输出(电机 2A,1)
GPIO.输出(Motor2B,0)
lcd.clear()
lcd.set_cursor(4,0)
lcd.message ('转发')
打印(“转发”)
睡觉(2)
#正确的
GPIO.输出(电机 1A,1)
GPIO.输出(电机 1B,0)
GPIO.输出(Motor2A,0)
GPIO.输出(Motor2B,0)
lcd.clear()
lcd.set_cursor(5,0)
lcd.message ('对')
打印(“右”)
睡觉(2)
#撤销
GPIO.输出(电机 1A,0)
GPIO.输出(电机 1B,1)
GPIO.输出(Motor2A,0)
GPIO.输出(Motor2B,1)
lcd.clear()
lcd.set_cursor(4,0)
lcd.message ('反向')
打印(“反向”)
睡觉 (2)
#停止
GPIO.输出(电机 1A,0)
GPIO.输出(电机 1B,0)
GPIO.输出(Motor2A,0)
GPIO.输出(Motor2B,0)
lcd.clear()
评论
查看更多