智能机器人保姆
串行数据口,数据的传输使用到了单片机的串口0,将采集到的数据通过串行端口发送给无线收发模块,模块在接收到数据后,会自动的将数据转存之后按照设定的波特率发送给接受端,接收端在接收到数据后会返回一个值给发送端,作为发确认接收和送下一数据的信号,这个过程由无线收发模块自动完成。程序设计流程图如图14所示:
图14串行数据发送程序流程图
机械手控制程序设计
机械手的控制是通过分别控制5个舵机来控制的,在机械手控制程序中,根据舵机的控制原理,编程使得单片机能根据串口得到的遥控数据,计算出控制舵机的PWM波的占空比,并输出这个占空比,由此来控制电机。程序设计框图如图15所示:
平台端驱动程序设计
平台端的驱动电机采用12V电压供电的直流减速电机,电机控制信号通过光电隔离器,加载在LM298芯片上,实现单片机对电机的控制,对电机的控制也采用控制PWM波的占空比方式。程序设计框图如图16所示:
图16 平台驱动电机控制程序流程图
总结
本次设计在开始采用的是模块设计的思想,在设计过程遇到了不少的问题。同时最后没有能够最后完成所有模块的组装调试。遇到的主要问题有:
肌电检测不准确,通过本文设计的电路和软件检测肌电信号很不准确,主要是由于设计原理过于简单,所有器件误差大,同时软件上没有很好的处理。从而导致机器人的控制部分没有得到很好的解决,因此在机器人设计部分我们只有采用电位器的方式来进行调试。
在对机械手硬件制作的时候,先测试了用一块单片机采集遥控臂上的电位器电压信号,采用同一块单片机的定时器B输出PWM波来控制机械手,这个过程实现起来没有太大的问题,但后当用一块单片机A采集遥控信号,并通过无线模块将数据发送至另一块单片机B,单片机B根据接收到的数据产生PWM波来控制机械手,这时出现机械手控制失灵甚至失效的问题,从理论上来讲,只要数据一致,定时器B产生的PWM波一致,就不会存在这个问题,但是在实际测试中结果却不如同理论分析结果。
在对机器人软件设计上很多BUG没有处理的很好,比如机器人在得到控制命令后会有误操作的情况,这是由于控制命令发来后,由于数据量相对较大,就造成了误判的产生。同时在舵机的设计上没有很好的硬件设计,有些时候给一个小幅度动作信号,但是手臂运动幅度很大。
TL072APC220智能机器人肌电信号识 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)