树莓派Python控制步进电机

步进电机控制在Python

树莓派Python控制步进电机

玩了LED,开关和蜂鸣器后,我觉得自然的下一步是用步进电机或两个。这可能构成了一个想法的一部分,我不得不创建一个自动停止动画动画“转台”,用于旋转和拍摄对象。

有大量的电机可供选择,但我决定用ULN2003控制板实验一台28BJY-48。

我选择这个设备的原因在哪里:

  • 它很便宜

  • 广泛供应海外和英国卖家

  • 使用控制板轻松获取

  • 小但比较强大

  • 运行在5V

  • 易于界面

我在eBay上从“4tronix_uk”下订了两个,第二天到了。步进电机28BJY-48数据手册中还有其他细节

与Pi接口

树莓派Python控制步进电机

电机通过预先提供的连接器连接到控制器板。控制器板有4 + 2个引脚需要连接到Pi头(P1)。

  • 5V(P1-02)

  • GND(P1-06)

  • Inp1(P1-11)

  • Inp2(P1-15)

  • Inp3(P1-16)

  • Inp4(P1-18)

上面的P1-XX参考表示我使用的Pi头引脚。这些在下面的StepPins列表中的Python示例中进行了定义,因此如果使用不同的引脚,一定要更新Python列表。如果需要,您可以使用其他GPIO引脚,只需记住更新您的Python脚本。

为了旋转步进电机,您可以按顺序为每个4个输入提供“高”和“低”电平序列。通过设置正确的高低电平顺序,电机主轴将旋转。方向可以通过反转顺序来反转。

Python脚本

树莓派Python控制步进电机

树莓派Python控制步进电机

以下是用于旋转步进电机的步进电机脚本的副本。它使用RPi.GPIO库并定义了4步和8步序列。

#!/usr/bin/python

您可以直接下载到您的Pi使用:

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/stepper.py

与使用GPIO库的所有Python脚本一样,它需要使用“sudo”运行:

sudo python stepper.py

按Ctrl-C退出。

要指定不同的等待时间,您可以使用以下命令在命令行中传递几毫秒作为参数:

sudo python stepper.py
 20

其中20是毫秒数。

在此示例中,默认等待时间设置为0.01秒(10毫秒)。要更改旋转速度,您可以更改此值。我发现在电机停止工作之前,我可以将其减小到4ms。如果脚本运行太快,电机控制器不能跟上。这种性能可能因您的电机及其控制器而异。

4步序列更快,但转矩较低。握住电机主轴很容易停止旋转。8步顺序较慢,但扭矩要高得多。对于我的转盘应用,我更喜欢扭矩超速,所以我将使用8步序列。

您现在可以使用Raspberry Pi和一些Python脚本控制步进电机。添加另一个电机,你已经开始一个小机器人!

树莓派Python控制步进电机

原文始发于:树莓派Python控制步进电机

|

树莓派使用Python控制1602LCD模块

1602 使用Python控制LCD模块

树莓派使用Python控制1602LCD模块

一旦玩过LED,开关和步进电机,下一个自然步骤就是16×2字母数字LCD模块。这些模块便宜(少于10美元),并且易于与Raspberry Pi接口。它们有16个连接,但您只需要在Pi上使用6个GPIO引脚。

大部分16×2模块可与日立HD44780 LCD控制器兼容。这允许您购买几乎任何设备,并确保它将以与其他任何方式相同的方式工作。eBay上可以选择不同颜色的背光灯。我购买的那个有一个蓝色的背光。

LCD模块硬件

树莓派使用Python控制1602LCD模块

该模块的引脚分配是:

  1. 地面

  2. VCC(通常+ 5V)

  3. 对比度调整(VO)

  4. 寄存器选择(RS)。

    RS = 0:命令,RS = 1:数据

  5. 读/写(R / W)。

    R / W = 0:写,R / W = 1:读

  6. 启用

  7. 位0(4位运算时不需要)

  8. 位1(4位操作不需要)

  9. 位2(4位操作不需要)

  10. 位3(4位操作不需要)

  11. 位4

  12. 位5

  13. 位6

  14. 位7

  15. LED背光阳极(+)

  16. LED背光阴极( – )

通常,器件需要8条数据线才能向0-7位提供数据。然而,该设备可以设置为“4位”模式,允许您以4位的两个块(或半字节)的形式发送数据。这是很好的,因为它减少了与您的Pi连接时所需的GPIO连接数。

这是我如何连接我的LCD:

LCD引脚 功能 Pi功能 皮Pin
01 GND GND P1-06
02 + 5V + 5V P1-02
03 对比 GND P1-06
04 RS GPIO7 P1-26
05 RW GND P1-06
06 Ë GPIO8 P1-24
07 数据0
08 数据1
09 数据2
10 数据3
11 数据4 GPIO25 P1-22
12 数据5 GPIO24 P1-18
13 数据6 GPIO23 P1-16
14 数据7 GPIO18 P1-12
15 + 5V通过560ohm
16 GND P1-06

注意: RW引脚允许器件进入读写模式。我想要发送数据到设备,但不希望它向Pi发送数据,所以我把这个引脚绑在地上。Pi不能容忍其GPIO头上的5V输入。将RW连接到地,确保设备不会尝试将数据线拉至5V,从而损坏Pi。

为了控制对比度,您可以调整引脚3的电压。这必须在0到5V之间。我将这个引脚绑在地上。

引脚15为背光LED提供5V。在我的设备上不清楚是否可以直接连接到5V,所以我玩安全,并放置一个560ohm电阻符合这个引脚。

树莓派使用Python控制1602LCD模块

接线检查

在您第一次启动电路之前,请先进行一些健康检查:

  • 引脚1(GND),3(对比度),5(RW)和16(LED – )(应连接到地)。

  • 引脚2应连接到5V。引脚15应具有内置5V电阻以保护背光。

  • 引脚7-10未连接

  • 引脚11-14连接到Pi上的GPIO引脚

Python

您可以使用任何您喜欢的编程环境来控制HD44780风格的显示器,但我的选择武器是Python。我使用RPi.GPIO库来访问GPIO。

这是我的代码:

#!/usr/bin/python

此脚本可以使用此链接或直接下载到您的Pi使用以下命令:

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/lcd_16x2.py

然后可以使用以下命令运行:

sudo lcd_16x2.py

如果您使用此代码,您需要更改的唯一的事情是GPIO引脚映射,取决于您在Pi GPIO头上使用的引脚。以下是一些照片:

注意事项:当发送命令到LCD时,RS为低电平,发送字符时为高电平。RW始终很低,以确保我们只将数据输入到模块中。8位字节一次发送4位。前4位,最后4位。在某些步骤之间添加延迟,以确保模块在更改之前对信号做出反应。

上面的代码灵感来源于“texy”在RaspberryPi.org论坛上提交的代码。我改变了字节被分解为位,因为这显着增加了显示的响应时间。

故障排除

如果您有问题,请尝试:

  • 仔细检查接线。

  • 尝试调整对比度引脚上的电压在0V和3.3V之间。

  • 将E_PULSE和E_DELAY参数从0.0005更改为0.001。一些屏幕对这些时间很敏感,如果它们太小,将不会初始化。

  • 使用Python 2.我还没有使用Python 3测试。

原文始发于:树莓派使用Python控制1602LCD模块

|

小治和他DIY的激光雕刻机

这几天突然想起了小治同学DIY的激光雕刻机,说起“DIY”也还真是考验童鞋们的兴趣和动手能力。因为制作一台属于自己的激光雕刻机也是费时费力的,还需要一路淘些元器件,例如中控板、二手光驱、小功率激光头、丝杆、步进电机、支架。

 

小治和他DIY的激光雕刻机

使用了两个Arduino作为中控系统,作为用户界面管理和电机驱动,可以实现选择多种打印图案的功能,并在木头、纸制品上打印上相应的图案。

系统整体设计:本激光雕刻机使用两个ATMAGE328P芯片,其中一块芯片负责解析G代码并控制步进电机驱动以及激光雕刻机的继电器来控制激光头的开关,而另一个芯片负责读取SD卡中的由矢量图转换而来的G代码文件,并把文件名称显示到LCD屏幕上,用户可以通过按键进行文件的选择,当用户确认后该芯片通过串口把文件的数据通过串口传到另一块芯片进行解析来控制打印。
硬件设计框图如下:
小治和他DIY的激光雕刻机
程序设计框图如下:
小治和他DIY的激光雕刻机
最终实现:
 

小治和他DIY的激光雕刻机
是的,上图应该倒着来看,哈哈。
 

小治和他DIY的激光雕刻机
 

通过单片机把sd卡中的G代码文件名显示到TFT屏幕上,并通过按键选择需要打印的文件,通过串口发送到负责控制单片机上,打印效果如上图,史努比。