树莓派4B-高精度驱动步进电机

项目介绍

利用4B树莓派控制步进电机转动,精度可达:0.0144度 (即360度/25000)

适用于非常精密的角度转动。

舵机的精度为1度,无法实现超高精度控制。

硬件需求

硬件型号不同,只要功能相同,代码即可兼用。

  1. 树莓派
  2. CDKU- S100-24开关电源
  3. DM542驱动器
  4. 42bygh34步进电机
  5. 220V插头

硬件介绍

DM542驱动器

概述:

用户使用该驱动器可以设置常用的 8 档电流以及 16 档细分,能够满足大多数场合的应用需要。低中高速运 行都很平稳,噪音小。多种功能可通过外部拨码选择,极大地方便了客户的应用。

应用领域:

适合各种中小型自动化设备和仪器,例如:雕刻机、打标机、切割机、激光照排、绘图
仪、数控机床、自动装配设备等。

电气指标:

控制信号接口:

强电接口:

控制信号时序图:

每转脉冲设定:

工作电流设定:

开关电源

采用 90-264VAC 全范围输入电压,(200W、350W 有拨动开关选择)。可任选一组 5V、12V、24V、36V、48V 单组输出

步进电机

电气指标:

电机接口:

控制信号时序图:

接线方法

共阳极接法

共阴极接法

差分方式接法

接线方式

树莓派GPIO接口和驱动器的接线方式:

如果想要电机低电平响应PUL+,DIR+应需要接正极,脉冲输出端接PUL-,电机方向接DIR-,反之就是PUL- DIR- 接负极,高电平响应。

IN1 = 18 # 接PUL-
IN2 = 16 # 接PUL+
IN3 = 15 # 接DIR-
IN4 = 13 # 接DIR+

步进电机和驱动器的接线方式:

按照步进电机上的A+、A-

### 树莓派4B Python SSD1306 OLED 使用教程 #### 开启I2C接口 为了使树莓派能够通过I2C协议与SSD1306 OLED显示屏通信,需先启用I2C功能。可以通过`raspi-config`工具来完成此操作。 ```bash sudo raspi-config ``` 进入菜单后选择 `Interfacing Options -> I2C`, 启用该选项并重启设备[^2]。 #### 下载必要的库文件 安装Luma.oled库以及依赖项对于Python程序控制OLED屏至关重要: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install python-dev python-pip libfreetype6-dev libjpeg-dev build-essential pip3 install luma.oled ``` 另外还需要安装PIL图像处理库以便于图形绘制: ```bash sudo apt-get install python-pil python3-pil ``` 如果遇到任何问题可以尝试直接编译源码包进行安装[^3]: ```bash git clone https://github.com/rm-hull/luma.oled.git cd luma.oled sudo python3 setup.py install ``` #### 连接硬件部分 按照如下方式使用杜邦线将OLED模块连接至树莓派GPIO引脚: - GND → Ground (Pin 6,9,14,20,25,30,34,or 39) - SDA → GPIO 2 (Pin 3) - SCL → GPIO 3 (Pin 5) 确保连线无误之后再通电启动系统[^5]。 #### 编写测试代码 下面给出一段简单的Python脚本用来验证设置是否成功,在终端里运行这段代码将会在屏幕上显示出“Hello World!”字样。 ```python from time import sleep from PIL import ImageFont, ImageDraw, Image import Adafruit_SSD1306 # 初始化显示器对象 disp = Adafruit_SSD1306.SSD1306_128_64(rst=None) # 清除缓存并将缓冲区同步到物理屏幕 disp.begin() disp.clear() disp.display() width = disp.width height = disp.height image = Image.new('1', (width, height)) draw = ImageDraw.Draw(image) font = ImageFont.load_default() text = "Hello World!" max_lines = int(height / 8) # 假设每行高度约为字体大小的一半左右 line_height = font.getsize(text)[1] for i in range(max_lines): draw.text((0,i*line_height), text, fill=255, font=font) disp.image(image) disp.display() sleep(5) disp.clear() disp.display() ``` 上述代码创建了一个新的空白图像,并在其上绘制文字;最后调用了display方法刷新实际的显示内容[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@KevenDuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值