基于s08的机器人控制器设计内容摘要:
成电路 舵机内部的控制电子电路是一个 M51660 电子电路, M51660 电子电路接受从微控制器输入的控制信号,控制电机转动,电机带动减速齿轮组,减速后传动至输出舵盘。 舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计输出一个电压信号到控制电路板,进行信号反馈,然后控制电路板根据所在位置决 定电机的转动方向和速度,达到目标停止。 M51660 是舵机的马达驱动 IC,内部集成了电压整流,有较大的驱动能力,可直接驱动 12KG,外加 MOSFET 可驱动 7KG。 可用于微型直流马达的定位或调速控制。 其引脚图如图 34 所示。 参考电压 定时电容 定时电阻 外部 PNP晶体管驱动 1 (信号)输入 (控制) 1 输出 接地 接地 错误脉冲输出 (控制) 2 输出 反馈输入 外部 PNP晶体管驱动 2 调制电压输出 电源 图 34 M51660引脚图 M51660 内部嵌有电压调节电路和有差分比较器的比较电路,使 M51600 有非常稳的电压波动特性和温度变化特性。 M51660 内部结构图如图 35 所示。 13 减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动 马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令纠正脉冲趋于为 0,从而达到使伺服马达精确定位的目的。 M51660 控制电路如图 36 所示。 图 35 M51660 内部结构图 图 36 M51660控制电路 14 舵机工作的稳定性 舵机电路中使用一个线性的比例电位器作位置检测,此电位器是合成碳膜电位器,电阻体是经过研磨的碳黑、石墨、石英等材料涂敷于基体表面,是目前应用最广泛的电位器。 其特点是分辨力高、耐磨性好、寿命长。 但其缺点是电流噪声大,耐潮湿性以及阻值稳定性差。 舵机在使用的时候经常会出现抖动的现象,经过长 时间的实验发现是由一下原因造成的: (1) 因电源电压不足或电源容量过小造成的。 由于电源电压波动,输出波形失常,引起舵机抖动。 就是在电机单独供电时,如果电源容量过小,又同时配接了多只舵机(特别是功耗较大的强力舵机时)也会产生这种情况、因电源电压不足或因电源容量小而引起的抖舵,只要将电源充足电,或更换大容量的电源即可解决。 当然有时也可以用减小动力消耗的办法来解决,比如更换一只工作电流较小的动力电机。 在多个舵机同时工作时一定要检查一下电源电压是否充足。 在电源电压充足的情况下,启动驱动电路,测量电源电压其波动值应 不超过 10%,波动越小越好。 当然这只是起码的要。 采用控制电路、舵机分开供电的方法能有效地消除因电源波动带来的抖舵。 (2) 还有很大一部分抖舵现象是因电位器内部接触不良或电阻碳膜面磨损造成的。 对于舵机来说电位器是十分重要的。 舵机内的电位器在舵机驱动电机的带动下起着校准脉冲的作用,如果接触不良或碳膜面不良同样会使舵机在不良点上产生抖动。 由于主控电位器和舵机电位器经常处在搬动或运转状态,故这二种电位器损坏是造成舵机抖动的最常见原因之一。 目前国内电位器厂家提供的电位器寿命都在 l2 万次左右,其碳膜面往往 没有进口的光滑。 不过因电位器引起的抖舵故障处理起来还是十分简便的。 可以把电位器拆开,用软棉团用力将电阻碳膜面擦磨光滑后再装上即可消除抖舵故障。 如果感觉电位器的触点压力偏小,可以将触点抬高些,以增加其压力。 在操作过程中一定要注意不要把触点碰变形了。 遇到磨损严重或电阻面欠光滑的情况,如果用棉花团擦磨仍不能解决问题的话,可以用少许铅笔芯粉进行擦磨。 15 4 小型双足步行机器人运动控制模块 双足步行机器人控制系统采用模块化设计,这样有利于研制开发以及调试。 控制系统部分分为三部分,运动控制模块 :实现双足步行机器人 稳定行走,各电机的实时角坐标以及机器人每一瞬时位置; 触摸感应模 :实现机器人的触摸感应功能,使机器人更加人性化;通讯模块:完成运动控制模块与触摸感应模块之间的通信。 整个系统的方块图如图如图 41 所示: 外 界 触 碰触 摸 式 电 容 传感 器 ( M P R 0 8 4 )M C F 5 1 J M 1 2 8运 动 控 制 模 块( M C 9 S 0 8 A C 6 0 )舵 机L E D 显 示触 摸 感 应 模 块 图 41 控制系统方块图 MC9S08AC60 微控制器 图 42 64Pin 封装的 S08AC60 引脚图 16 双足步行机器人运动控制系统需要同时控制 19 个电机,控制各电机在不同瞬时的角坐标、角位移以及机器人运动平衡重心实时位置以及控制重心移 动速度。 从而实现双足步行机器人整体运动的平稳性,以及实现所规定的动作。 运动控制模块采用飞思卡尔公司的 MC9S08AC60 微控制器作为主芯片。 设计 中 使用的 S08AC60 芯片为 64Pin 封装。 其封装引脚如图 42 所示: S08AC系列是 Freescale公司推出的新一代 S08系列微控制器中的一款增强型 8位微控制器,它不仅集成度高、片内资源丰富,接口模块包括 SPI、 SCI、 IIC、 A/D和 PWM 等,还具有很宽的工作温度范围(- 40~+ 125) ,在汽车电子、工业控制和中高档机电产品等领域具有广泛的用途。 S08AC 微控制器采用 8位 S08CPU,片内总线时钟频率最高可达 20Hz;片内资源包括 2KBRAM,约 62KB Flash;串行接口模块( SCI,SPI 和 IIC);两个可选的定时模块( TPM);并可选择宽范围时钟频率;还提供一个 8 位 /10 位精度的模 /数转换器 (ADC),并支持后台调试模式 BDM。 定时器 TPM 模块是 S08 微控制器的基本功能模块, S08 微控制器共提供了两个定时器,定时器 1 有 6 个通道,定时器 2 有 2 个通道,一共是 8 个通道。 TPM的核心是一个 16位的计数器,该计数器既可以自由运行,也可作为预置数模式运行,或作 为中央对齐 PWM 使得向上递增 /向下递减计数器运行。 计数器的计数时钟来源于外部时钟、固定系统时钟或总线时钟,经过预分频后再送计数器计数,两个独立的定时器可以使用不同的分频因子。 同一个定时器的所有动作都以这个经过分频的频率作为参考,所以相互之间都有确定的关系,可以通过读取计数器的值确定延时时间。 每个定时器都含有一个 16位的预置数寄存器( TPMxMODH:TPMxMODL),用来控制计数器的比较值。 当预置数寄存器为 0x0000 或 0xFFFF 时,计数器为自由运行计数,计数器计数到 0xFFFF 后产生溢出。 设置了预置 数寄存器的情况下(预置数寄存器的内容不为 0x0000 或 0xFFFF),计数器计数到预置数寄存器的值时,计数器产生溢出。 所以合理使用预置计数功能可以得到精确的可软件设定的溢出时间。 在计数器运行时,软件可随意读取该计数器的值,而不影响计数时序。 TPM 每个通道可独立配置为输入捕捉、输出比较或边缘对齐 PWM模式, TPM 计数器为输入捕捉、输出比较和边缘对齐 PWM 功能提供定时参考。 定时器状态控制寄存器中的 CPWMS 位允许 TPM 所有通道配置为中央对齐 PWM(CPWM),当通道被设置为中央对齐 PWM 时,该通道所在定时器的 其他通道功能无效,这意味着当 CPWMS=1(中央对齐 PWM)时, TPM中的所有使能通道必须采用于中央对齐 PWM 模式。 17 通道被设置为 PWM 输出时(边缘对齐或中央对齐),周期和占空比是可以改变的。 通过预置数寄存器和通道值寄存器( TPMxCnVH:TPMxCnVL)的设置, S08AW 系列微控制器可以产生频率高、占空比可调、范围宽的 PWM 信号。 定时器模块如图 43所示: 图 43 S08 定时器功能框图 74LS373 锁存电路 S08AC60微控制器内部有两个定时器,一共 8个 PWM通道 ,设计采用三个 74LS373来对 PWM 通道进行扩展,以实现对机器人身上 19个舵机的控制。 74LS373 的输出端 O0~O7 可直接与总线相连。 当三态允许控制端 OE 为低电 18 平时, O0~O7 为正常逻辑状态,可用来驱动负载或总 线。 当 OE 为高电平时, O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,但 锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时, O 随数据 D 而变。 当 LE 为低电平时, O 被锁存在 已建立的数据电平。 当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 其外部引脚图、逻辑图和真值表分别如图 4 4 46所示: 图 44 74LS373的外部引脚图 图 45 74LS373的逻辑图 图 46 74LS373的真值表 19 运动控制模块原理 MC9S08AC60 微控制器内部有两个定时器,一共 8个 PWM 通道 ,设计采用三个74LS373 来对 PWM 通道进行扩展,以实现对机器人身上 19个舵机的控制。 硬件电路中三个 74LS373 的片选信号分别接在 MC9S08AC60 微控制器的 PTA0、 PTA PTA2 口上,通过对 I/O 口的设置可实现对三个 74LS373 的分时调用,以控制不同舵机。 MC9S08AC60 微 控制器上的 8 个 PWM 通道同时接到三个 74LS373 的输入端,实现型号的扩展。 74LS373 的输出端分别接到相应的舵机控制信号线上。 其硬件电路原理图如图 47: 图 47 运动控制模块的电路原理图 20 运动控制的软件 所有运动控制的软件是在 freescale codewarrior 软件平台上编写。 软件流程图如图 4 49所示: 舵 机 初 始 化是 否 开 始 行 走。 行 走 子 程 序是 否 结 束。 站 立 子 程 序 NYNY 主 程 序 开 始 结 束 初 始 化发 送 脉 冲高 电 平相 应 舵机 转 动 定 时 器 0。 关 节 相 应舵 机 转 动 脉 冲 周 期 到。 N Y Y N 开 始 图 48 单舵机控制流程图 图 49 主程序流程图 运动控制的主程序如下已列出,其中所有子程序参见附录Ⅰ。 主程序节选 include /* for EnableInterrupts macro */ include /* include peripheral declarations */ void main(void) { EnableInterrupts。 /* enable interrupts */ PTADD=0XFF。 /* 设置端口 A全部为输出 */ PTAD=0X40。 /* 设置端口 PTA6 输出为高电平 */ PTADD_PTADD3=0 /* 设置端口 PTA3 为输入 */ PTADD_PTADD4=0 /* 设置端口 PTA4 为输入 */ PTADD_PTADD5=0 /* 设置端口 PTA5 为输入 */ for(。 ) 21 { While (PTAD_PTAD3) /* 判断 A3口是否接受到高电平 */ { hand()。 } While (PTAD_PTAD4) /* 判断 A4口是否接受到高电平 */ {walk()。 } While (PTAD_PTAD5) /* 判断 A5口是否接受到高电平 */ {stand()。 } } __RESET_WATCHDOG()。 /* feeds the dog */ } 单个舵机初始化程序: void test (void) { EnableInterrupts。 /* enable interrupts */ PTADD=0XFF。 /*设置 A口为输出,作为 373的片选 */ PTAD=0X43。基于s08的机器人控制器设计
相关推荐
调试和数据转换。 SQL Server 2020 带有交互式调节和调试查询、从任何数据源快速移动和转化数据、 以及按 TransactSQL 方式定义和使用函数等功能。 您可以从任意 Visual Studio 工具以可视化方式设计和编写数据库应用程序。 简化的管理和调节。 使用 SQL Server 2020,您可以很容易地在企业资源旁边集中管理数据库。
速 8 P0700 1 内控 1,外空 2 模式选择 9 P1000 1 内控 1,外空 2 模式选择 10 P1080 0 最小频率 11 P1082 50 最大频率 12 P1120 10 斜坡上升时间 13 P1121 10 斜坡下降时间 14 P3900 1 结束 快速调试 电机类型修改为异步电机步骤 步骤 参数名 设定值 参数说明 备注 1 P0010 1 进入快速调 试 2
图 4 电梯二层外呼向下允许标志 Fig. 4 Sign of elevator is allowed to go down the second floor 105 图 5 电梯二层外呼下指示灯 Fig. 5 Display of elevator is allowed to go down the second floor 4 中国 科技论文在线 110 115 120 125 130
0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I
组件来使用。 槽 用于接收信号,而且槽只是普通的对象成员函数。 一个槽并不知道是否有任何信号与自己相连接。 而且对象并不了解具体的通信机制。 信号与槽的连接 如果这个类是从 QObject 或其子类派生的 ,那么这个 类 就包含了信号和槽。 这是因为 QObject 的 connect() 成员函数是用来实现信号和槽的连接的。 connect(sender, SIGNAL(signal),
e作为顶级容器设计图形化界面。 Qt 的图形使用者接口的基础是 QWidget。 Qt 中所有类型的 GUI 组件如按钮、标签、工具列等都继承自 QWidget,而 QWidget 本身则为 QObject 的子类别。 Widget负责接收鼠标,键盘和来自窗口系统的其他事件,并描绘了自身显示在屏幕上。 每一个 GUI组件 都是一个 widget, widget还可以作为容器,在其内包含其他