- 电机选型:N20电机带编码器
- 驱动芯片:TB6612(12V)
| 单片机(IO) | 驱动 | 电机 |
|---|---|---|
| CW(8) | AIN1 | |
| PWM(9) | PWMA | |
| 5V | STBY | VCC |
| GND | GND | GND |
| AOUT1 | M1 | |
| AOUT2 | M2 | |
| EA(2) | C1 | |
| EB(3) | C2 |
- 驱动芯片AIN2=!AIN1,使用反相器实现
- 硬件中断读取编码器值
- 普通IO口控制电机方向
- 输出PWM控制电机速度
- 位置环PID控制,力矩监测复位
- CANopen通信协议:
| COB-ID | 0 | 1 | 2-3 | 4-7 |
|---|---|---|---|---|
| 发送 600+ID 接收580+ID |
命令符 | 索引 | 子索引 | 数据 |
- 命令符:
读取请求:0x40;写入应答:0x60;警告:0x80
| 命令符 | 8Bit | 16Bit | 24Bit | 32Bit |
|---|---|---|---|---|
| 写入 | 0x2F | 0x2B | 0x27 | 0x23 |
| 读取 | 0x4F | 0x4B | 0x47 | 0x43 |
- 索引、子索引详见电机通信协议书
- CANopen协议下,CAN硬件连接故障会不断轮询
| 单片机(IO) | CAN收发器 | 电机 |
|---|---|---|
| CANRX0(4) | CTX | |
| CANTX0(5) | CRX | |
| 3.3V | 3.3V | |
| GND | GND | |
| CANH | CANH | |
| CANL | CANL |
- 使用RGB三色灯模块,控制四个装载仓下方的状态灯,显示当前各个装载仓的使用情况
| 颜色 | 状态 |
|---|---|
| 红色 | 等待扫描 |
| 黄色 | 正在扫描中 |
| 绿色 | 已完成扫描 |
| RGB灯 | 装载仓1 | 装载仓2 | 装载仓3 | 装载仓4 |
|---|---|---|---|---|
| R | 18 | 12 | 7 | 5 |
| G | 19 | 11 | 6 | 4 |
| B | / | / | / | / |
| GND | GND | GND | GND | GND |
- 使用按键检测装载仓是否放在磁铁座子上并下压按钮
| 装载仓1 | 装载仓2 | 装载仓3 | 装载仓4 |
|---|---|---|---|
| 14 | 15 | 16 | 17 |
| 单片机 | PC |
|---|---|
| USB | USB |
| 0 | 1 | 2-5 | 6 | 7 |
|---|---|---|---|---|
| 帧头0xAA | 标识符 | 数据 | 校验位 | 帧尾0xFF |
- PC发送/单片机接收:
| 标识符 | 功能 |
|---|---|
| 0xB1 | X轴绝对运动 |
| 0xB2 | Z轴绝对运动 |
| 0xB3 | 执行机构运动 |
| 0xB4 | LED灯颜色 |
| 0xD1 | X轴单位转换 |
| 0xD2 | Z轴单位转换 |
| 0xD3 | 执行机构单位转换 |
- 单片机发送/PC接收:
| 标识符 | 功能 |
|---|---|
| 0xC0 | 忙碌状态 |
| 0xC1 | X轴绝对位置 |
| 0xC2 | Z轴绝对位置 |
| 0xC3 | 执行机构位置 |
| 0xC4 | 按键状态 |
- 校验方式:CRC-8
- 数据格式为小端优先
- 检测装载仓
- 若检测到紧急装载仓(0号)则标记
- 其余则依次放入队列(1,2,3号)
- 扫描装载仓
- 若紧急装载仓(0号)被标记则优先扫描
- 其余按照队列顺序扫描
- 扫描中亮黄灯,确认显微镜扫描完成,打印扫描进度
- 扫描完成亮绿灯,退出队列
- 连续未扫描到2片,提前结束