c语言写字机器人,写字机器人(基于STM32简易实现)
写此博客的主要目的是为了记录下来调试过程中所遇到的问题,更重要的是记录下来解决遇到的那些问题的方法,以供之后此后遇到问题之参考。
该写字机器人或叫机械臂的主控芯片为STM32F103C8T6,机械臂拥有三个水平自由度,一个竖直自由度,该机械臂的关节处均用的是舵机驱动。
从此出发,我们便需要用STM32的定时器外设产生四路能够准确驱动舵机的PWM波。初始化定时器外设的部分代码如下。
GPIO_InitTypeDefGPIO_InitStructure;
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_OCInitTypeDefTIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//①使能tim3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//①使能GPIO外设时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//TIM3_CH1
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值80K
基于Arduino UNO的光驱写字机制作
功能说明:本写字机的绘图范围是40mm×40mm,可以书写汉字、手写字、图片(BMP格式)等等,可以进行逐行、Z字型走线、逐点、轮廓等四种模式进行绘图。硬件材料:ArduinoUno(必须是MEGA328P的芯片)、两片A4988电机驱动芯片、一块CNCShiled扩展板、两块废旧光驱、一个9G的舵机、热熔枪、硬纸板、鱼线(不容易断的绳子)、带弹簧的圆珠笔、12V/1A电源适配器或者可调电源。上位机软件:BachinDraw(测试过)、微雕大师(没测试过)等制作步骤:①准备两块废旧台式光驱,拆机,留下里面的步进电机
②把两块步进电机的线按1234或者4321的顺序外接出来
③制作写字机Y轴平面,找出其中一块光驱,找个硬纸板,用热熔枪固定在移动的电机上(必须确保水平,否则影响绘图精确度,这里调试了很久,可以把水平仪或者手机下载一个水平仪放在硬纸板上,在完全水平之前,一直调整硬纸板的角度直至完全水平)
④找出圆珠笔,将弹簧取出,放置笔芯的最上面,之后外壳上打个洞,将鱼线套在笔芯上,用热融枪固定,从圆孔中取出,装上外壳固定后可以通过拉拽鱼线实现抬笔落笔的操作。
⑤将笔固定在X轴上后尝试将X轴光驱放在Y轴上,调整笔的位置直至笔可以碰到Y轴的硬纸板,之后将从孔中穿出的鱼线固定在舵机上,确保舵机运动时可以使笔抬起来,这里需多次尝试找到对的位置⑥第五步的位置确定好后,将X轴固定在Y轴上,至此,光驱写字台已经制作完成。⑦拿出ArduinoUno,烧录固件和软件代码。先烧固件,后烧软件。
UNO:
固件: 软件:
⑧:烧录完成后拿出CNCshiled,固定在UNO上,两块板子形状一样,然后将A4988插在X轴和Y轴上。如图
⑨连线,将两块光驱上接出的线路按1234连接到开发板CNC的X轴和Y轴上,将舵机的三条线、VCC、GND、信号线接在CNC上。如图:
⑩上电,将开发板和驱动芯片上电,驱动芯片的电在CNCshiled的12V的接口那里上电。11.打开上位机、添加图,我这里添加了一条龙和一个哆啦A梦。画出来的效果是不是很棒啊。
赶快来动手制作属于你自己的光驱写字机吧,成本不到50元哦~