1. 项目概述与设计背景
在服装制造业中,缝纫机的针脚计数一直是个需要人工监控的环节。传统机械式计数器存在读数误差大、无法预警等问题。这个基于STM32的智能检测系统,通过霍尔传感器实时捕捉缝纫机转轴运动,实现了精确的圈数统计和智能预警功能。
我选择STM32F103C8T6作为主控,主要看中其72MHz主频和丰富的外设接口,能够轻松处理传感器数据并驱动OLED显示。整个系统包含五个核心模块:霍尔传感器负责运动检测,OLED显示实时数据,按键用于参数设置,声光报警模块提供预警,EEPROM则确保关键数据断电不丢失。
这个设计最实用的地方在于:当剩余圈数(B值)低于预设阈值(D值)时,系统会持续声光报警,直到操作人员手动复位。这解决了传统缝纫过程中需要人工紧盯计数器的问题,特别适合批量生产时的质量管控。
2. 硬件系统设计详解
2.1 核心控制器选型
STM32F103C8T6这款Cortex-M3内核单片机,具有64KB Flash和20KB RAM,完全满足本项目的需求。我在PCB布局时特别注意了以下几点:
- 在VDD和VSS引脚就近放置0.1μF去耦电容
- 复位电路采用10K上拉电阻+0.1μF电容的组合
- 预留SWD调试接口,方便后期固件更新
实际调试中发现,如果不加去耦电容,当缝纫机电机启停时,电源波动会导致单片机意外复位。这是工业环境应用要特别注意的。
2.2 霍尔传感器电路设计
选用A3144霍尔效应传感器,其特点:
- 工作电压4.5-24V宽范围
- 开漏输出,需接10K上拉电阻
- 响应频率可达100kHz
安装时要注意:
- 将传感器固定在距离缝纫机转轴2-3mm处
- 在转轴上粘贴小磁铁,确保每次旋转都能触发信号
- 信号线建议使用屏蔽线,防止电机干扰
测试时我用示波器观察发现,电机运行时会在传感器信号线上产生约200mV的毛刺。后来在信号线对地加了个100nF电容,问题完美解决。
2.3 显示与交互模块
OLED选用0.96寸I2C接口的SSD1306模块,其对比度高、可视角度大。显示布局经过多次优化:
code复制+-------------------+
| 针行智检系统 |
| 实际圈数: 125 |
| 剩余圈数: 75 |
| 设定圈数: 200 |
| 预警值: 50 |
+-------------------+
按键电路采用4个轻触开关,通过10K电阻上拉到3.3V。软件上做了20ms消抖处理,长按支持快速增减数值。
3. 软件设计与关键算法
3.1 主程序流程图
c复制void main() {
hardware_init(); // 硬件初始化
load_settings(); // 从EEPROM读取设定值
while(1) {
read_hall_sensor(); // 检测霍尔信号
update_counter(); // 更新圈数计数
refresh_display(); // 刷新OLED显示
check_alarm(); // 检查报警条件
process_keys(); // 处理按键输入
}
}
3.2 圈数检测算法
霍尔传感器每检测到一个脉冲,就代表缝纫机转了一圈。但在实际测试中,发现两个问题:
- 机械振动可能导致误触发
- 高速运转时可能漏计数
我的解决方案:
c复制// 使用定时器捕获边沿信号
void TIM2_IRQHandler() {
if(TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) {
static uint32_t last_time = 0;
uint32_t curr_time = TIM_GetCapture1(TIM2);
// 两次触发间隔>5ms才视为有效信号
if(curr_time - last_time > 5000) {
circle_count++;
last_time = curr_time;
}
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
}
}
3.3 数据存储方案
使用STM32内部Flash模拟EEPROM存储设定值。关键代码如下:
c复制#define SETTINGS_ADDR 0x0800FC00 // 最后一页Flash
void save_settings() {
FLASH_Unlock();
FLASH_ErasePage(SETTINGS_ADDR);
FLASH_ProgramHalfWord(SETTINGS_ADDR, set_circle);
FLASH_ProgramHalfWord(SETTINGS_ADDR+2, alarm_value);
FLASH_Lock();
}
注意:Flash写入前必须先擦除整个页,且写入操作会暂时中断程序执行。建议在按键确认时再触发存储操作,避免影响实时计数。
4. 系统调试与优化
4.1 抗干扰措施
在工厂环境测试时,遇到以下干扰问题:
- 电机启停导致电源波动
- 解决方案:在电源输入端增加1000μF电解电容
- 电磁干扰导致传感器误触发
- 解决方案:所有信号线使用双绞线,并加磁环
4.2 功耗优化
虽然本设计采用有线供电,但仍做了低功耗处理:
- OLED动态刷新,只有数据变化时才更新显示
- 关闭未用外设时钟(ADC、DAC等)
- 主循环中加入__WFI()指令,降低CPU负载
实测电流从原来的85mA降到了52mA,系统发热明显改善。
4.3 报警功能调校
声光报警模块包含:
- 有源蜂鸣器(接PWM可实现不同音调)
- 高亮LED(通过MOSFET驱动)
调试时发现连续报警太吵,改进为:
- 前3分钟持续报警
- 之后改为每10秒响一次
- 按下任意键可暂时静音
5. 生产应用建议
经过三个月产线实测,总结出以下经验:
-
安装位置选择
- 传感器应远离电机至少15cm
- 控制盒最好加装金属外壳屏蔽
-
参数设置规范
- 设定圈数C = 标准缝制圈数 + 10%余量
- 预警值D建议设为总圈数的20%
-
维护要点
- 每周清洁传感器表面
- 每月检查磁铁固定情况
- 每季度校准圈数计数(与机械计数器对比)
这个系统在我们工厂推广后,缝制工序的次品率下降了37%,操作员也不再需要时刻盯着计数器了。特别在夜班生产时,声光报警功能避免了多起批量性错误。