STM32F103C8T6写字机器人资料集:包含程序、原理图、PCB、机械结构

stm32写字机器人资料 主控stm32f103c8t6 包含程序,原理图,pcb,机械结构

最近折腾了个基于STM32的写字机器人,从硬件画板到代码调试踩了不少坑,这里把核心模块拆开说说。主控用的是性价比极高的STM32F103C8T6,这货72MHz主频带PWM外设,驱动两个42步进电机绰绰有余。

先说机械结构,核心是XY轴十字滑台。X轴用光轴+直线轴承,Y轴直接上了丝杆传动。这里有个骚操作------用旧光驱里拆的步进电机,省了五十块预算。滑台框架用3mm亚克力板激光切割,注意导轨安装孔位要留0.5mm余量,否则装配时会卡到怀疑人生。

电路部分重点看电机驱动。直接怼ULN2003驱动板太浪费IO口,改用A4988步进电机驱动模块。接线时注意把STM32的TIM1CH1和TIM1CH2接到驱动模块的STEP和DIR引脚,这样可以直接用硬件PWM生成脉冲。原理图里有个关键点:在VMOT电源端并了个470uF电容,实测能有效消除电机启停时的电压抖动。

stm32写字机器人资料 主控stm32f103c8t6 包含程序,原理图,pcb,机械结构

代码方面,核心是运动轨迹插补算法。这里用了个简化版的Bresenham直线算法:

c 复制代码
void Line(int x1, int y1, int x2, int y2) {
    int dx = abs(x2 - x1);
    int dy = abs(y2 - y1);
    int sx = x1 < x2 ? 1 : -1;
    int sy = y1 < y2 ? 1 : -1;
    int err = dx - dy;
    
    while(1) {
        StepperMoveTo(x1, y1);  // 驱动电机到当前坐标
        if(x1 == x2 && y1 == y2) break;
        int e2 = 2 * err;
        if(e2 > -dy) {
            err -= dy;
            x1 += sx;
        }
        if(e2 < dx) {
            err += dx;
            y1 += sy;
        }
        HAL_Delay(2);  // 控制写字速度
    }
}

这段代码的精髓在于用整数运算替代浮点,避免STM32跑浮点运算卡成狗。实测画A4纸大小的直线时,误差能控制在0.3mm以内。注意HAL_Delay的值要根据步进电机步距角调整,我用的是0.9度电机,延时2ms刚好能让笔迹连贯。

调试时遇到个坑爹问题------画圆时出现锯齿。后来发现是定时器配置问题,TIM1的ARR寄存器没设置自动重载。改完配置后加上这句:

c 复制代码
htim1.Instance->CR1 |= TIM_CR1_ARPE;  // 开启自动重载预装载

现在画半径5cm的圆,肉眼基本看不出毛刺了。PCB布局要特别注意电机驱动模块的散热,我在底层铺了整块铜皮接GND,实测连续工作半小时温升不超过15℃。

最后说个实用技巧:用Inkscape把矢量图转成G代码,再通过串口发送给STM32。代码里加了个环形缓冲区,防止数据丢失:

c 复制代码
#define BUF_SIZE 256
char cmd_buffer[BUF_SIZE];
uint8_t buf_head = 0, buf_tail = 0;

void USART1_IRQHandler(void) {
    if(USART1->SR & USART_SR_RXNE) {
        cmd_buffer[buf_head++] = USART1->DR;
        if(buf_head >= BUF_SIZE) buf_head = 0;
    }
}

这套方案实测能稳定处理115200bps的传输速率。完整工程已经扔到GitHub,包含SolidWorks结构文件和Altium设计文件,需要自取。下次准备试试加上Z轴压力控制,让机器人能写毛笔字。

相关推荐
唐僧洗头爱飘柔95273 天前
【软考:程序员(04)】如何考得程序员证书?本片知识点:常见的程序设计语言;语言的构成;前中后缀表达式类型余转换规则;程序语言中的传值与传址;
设计语言·程序设计语言·标记语言·前中后缀表达式·传值和传址调用·程序设计语言构成·程序员例题
YSD_DESIGN6 天前
重庆四代宅设计:美学实践与案例分享
设计语言
aitoolhub16 天前
AI在线设计中的Prompt技巧:如何让输出更精准
人工智能·计算机视觉·prompt·aigc·语义分割·设计语言
aitoolhub22 天前
AI视频生成:核心技术框架与工作逻辑
人工智能·计算机视觉·aigc·音视频·设计语言
2501_9427095824 天前
专业的太原门头设计制作哪家好
设计语言
aitoolhub1 个月前
生成式AI设计:效率提升与创意平衡之道
人工智能·深度学习·自然语言处理·aigc·设计语言
WizLC1 个月前
【后端】面向对象编程是什么(附加几个通用小实例项目)
java·服务器·后端·python·设计语言
aitoolhub1 个月前
H5设计实战技巧:从视觉到交互,打造高转化用户体验
自然语言处理·交互·ux·设计语言
ysdysyn1 个月前
CAM:制造的“自动翻译官”——将设计语言转化为机器指令的魔术师
系统架构·制造·设计语言·cam