I2CStepper 是一个基于 Arduino Nano 的独立模块,自带步进电机、四个继电器、一个外部传感器、一块 16×2 LCD 和一个编码器。当前固件使用 I2C v3 协议。
该模块可以作为独立设备使用:既可以单独通过 16x2 LCD 屏幕上的菜单和编码器控制,也可以接到 Samovar 上控制。
扩展器通过 I2C 总线用四根线接到 Samovar(与 LCD 屏幕相同)。Samovar 会识别出已连接的扩展器,并可以控制它。
Samovar 最多支持十块地址为 1–10 的板:奇数地址为搅拌器,偶数地址为泵/灌装板。每种类型中使用地址最小的那块板。搅拌器按转速、运行时间和暂停工作;泵按 ml/h 工作;灌装模式按设定的体积和速度工作。
如果设备报告支持继电器,可以在 I2CStepper 页面上切换第一个继电器,在 Lua 中可以切换全部四个。继电器的用途由用户自行决定:Samovar 固件不做规定。
Samovar 启动时在总线上搜索模块。如果找到模块,在蒸馏(«Дистилляция»)、醪塔(«Бражная колонна»)和啤酒(«Пиво»)模式的页面上会出现“I2CStepper”选项卡;它打开该板的手动控制页面:速度、步数、启动和停止、继电器 1。板自身的设置(地址、模式、速度、搅拌器运行时间和暂停、泵的进料量、灌装体积和速度、每 1 ml 的步数)在设置(«Настройки»)→“I2CStepper”选项卡中编辑,并保存在 Nano 的存储器中。外部泵校准通过 I2CStepper 页面上的“外部泵校准”(«Калибровка внешнего насоса»)按钮启动;结果写入该板的“步/毫升”(«Шагов/мл»)字段。
接线图
外设连接引脚:
// I2C Master 引脚——连接屏幕以及可能的其他设备
// SDA_PIN 0 //A0
// SCL_PIN 2 //D2
// I2C Slave 引脚——与 Samovar 通信
// SDA_PIN A4
// SCL_PIN A5
// 步进电机引脚
#define STEPPER_STEP 3
#define STEPPER_DIR 4
#define STEPPER_EN 5
//继电器引脚
#define MIXER_PUMP_PIN 13 // RELE_PIN1
#define RELE_PIN2 10 // RELE_PIN2
#define RELE_PIN3 11 // RELE_PIN3
#define RELE_PIN4 12 // RELE_PIN4
// 编码器引脚
#define ENC_CLK 7 //S2
#define ENC_DT 8 //S1
#define ENC_SW 9 //KEY
提示。
如果打算把扩展器作为单独的设备装在自己的外壳里,用 USB A-B 电缆(电脑—打印机用的那种)把它接到 Samovar 比较合理。模块的 +/- 5 伏电源和两路 I2C 总线信号直接取自 Samovar 的显示屏接口。Samovar 外壳上装一个 USB-B 插座。
扩展器外壳上装一个 USB-A 插座。
这样接到 Samovar 时,Arduino Nano 同时获得电源和 I2C 总线。作为独立设备使用时,用单独的电源代替 Samovar,例如手机充电器。
如果使用内置电源,在电源输出端装一个 USB-B 插座,用同样的 USB A-B 电缆供电,这样就不会误把 +5 伏送进 Samovar。
外设。
继电器模块使用 5 伏的,最好带光耦控制。也可以使用 12 伏继电器,接法与 Samovar 中的原理相同
可以使用任何泵:直流电机,或交流单相、三相电机均可。因为泵电机是先经继电器、再经任意功率开关(接触器或固态继电器)启停的。小容量可以考虑 15RM 磁力驱动泵:不锈钢、安静、出力好。
搅拌器或 NBK(连续醪塔)可以使用任何双极步进电机,只要功率和扭矩足够。推荐 Nema 23 配合适的驱动器。
当前的 Arduino Nano 固件和 v3 协议说明见I2CStepper 仓库。改用 v3 协议后,请检查板地址、模式和“步/毫升”(«Шагов/мл»)校准:版本变更时,EEPROM 结构会重新初始化。
当前模式:
— Mixer:搅拌器,每分钟转数、运行时间、暂停、暂停后反转和软启动。
— Pump:以 ml/h 连续进料,可选暂停。
— Fill:按设定体积(ml)定量灌装。
外部传感器可以停止泵或使其暂停。如果 I2C 卡死,模块会自行停止步进电机并关闭继电器;恢复后需要用编码器确认。
警告。
Lua 函数 set_stepper_target(spd, direction, target) 只控制 I2CStepper 泵(工作中的偶数地址板):速度、方向和步数。如果泵在总线上没有响应,函数返回 0;它不控制 Samovar 内置的步进电机。
--set_stepper_target(spd, direction, target) //spd - 速度,单位为步/秒,
direction - 正向或反向,
target - 步数
spd = 0 时步进电机停止。
示例
set_stepper_target(950, 0, 1000)
该示例设定速度 950、方向 0,移动 1000 步。