机电一体化学生团队设计:全自动双型板材分拣机获一等奖
项目背景
斯科普里机械工程学院《构造与 CAD》课程项目,5 人团队历时一学期完成。任务:自动分拣两类板材——有孔与无孔。在 25 组参赛作品中脱颖而出,获一等奖。
工作流程
- 人工将板材送入入口辊道。
- 对齐辊将板材逐个送入分拣仓底部。
- 板材到位触动微动开关,指示 LED 点亮。
- 光电传感器(光电池)检测透光情况:
- 有孔 → 受光量大 → 电机正转(向左分拣)
- 无孔 → 受光量小 → 电机反转(向右分拣)
- 电机驱动推料板将板材推入对应收集槽,随后复位等待下一件。




电路原理图
核心控制器:PIC16F628A(内部 4MHz 振荡器),使用 MikroElektronika 环境(C 语言)编程。电路包含:
- PORTB 驱动电机正/反转继电器(RB2、RB3)
- PORTA 输入:RA0 微动开关(到位检测)、RA1 光电传感器(孔检测)
- 比较器关闭(
CMCON = 0x07)释放 PORTA 数字 IO 功能

源代码(MikroC for PIC)
/********************************************************************************/
/* Mechatronic Design Team - 自动分拣机 */
/* MCU: PIC16F628A, 4MHz 内部振荡器 */
/********************************************************************************/
void left() {
RB2_bit = 1; // 电机左转
delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); // 走至左极限
PORTB = 0x00; delay_ms(200); // 停车制动
RB3_bit = 1; // 切换继电器换向
delay_ms(20);
RB2_bit = 1; // 电机右转回中
delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500);
PORTB = 0x00; delay_ms(150);
}
void right() {
RB3_bit = 1; delay_ms(30); // 先切换继电器
RB2_bit = 1; // 电机右转
delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); // 走至右极限
PORTB = 0x00; delay_ms(200);
RB2_bit = 1; // 电机左转回中
delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500);
PORTB = 0x00; delay_ms(150);
}
void main() {
TRISB = 0x00; // PORTB 全输出
TRISA = 0xFF; // PORTA 全输入
CMCON = 0x07; // 关比较器
do {
delay_ms(50);
PORTB = 0x00;
if (PORTA.B0 == 1) { // 有板材到位?
delay_ms(100); // 去抖动
if (PORTA.B1 == 0) left(); // 有孔 -> 左
else right(); // 无孔 -> 右
}
} while (1);
}
设计亮点与可改进点
- 机械可靠性:对齐辊 + 重力落料仓结构简单卡料率低。
- 光电检测鲁棒:反射式/透射式光电管对环境光敏感,实测加遮光罩后稳定。
- 时序控制:代码采用阻塞延时,简单但无并发能力;升级建议:引入定时器中断或状态机,支持连续进料。
- 复位逻辑:电机依靠定时回中,无位置反馈;可加限位开关或编码器闭环。
- 扩展性:换用 STM32/Arduino 可轻松增加计数、显示、通讯功能。
这是一个典型的“机械为主、电控辅助”的本科课程设计佳作,展示了机电一体化系统集成的基本思路:明确分工、接口清晰、先机械跑通再优化控制。祝同学们在后续项目中再创佳绩!
制造工艺