2018电赛积分赛-简易旋转倒立摆及控制装置

2018电赛积分赛-简易旋转倒立摆及控制装置摘要本系统是基于TM4单片机来完成各项功能的,实现了一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图1所示。电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。摆杆E通过转轴D固定在旋转臂C的一端,当旋转臂C在电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。其中系统的驱动采用了Mos管电机驱动;姿态获取通过角度传感器;控制部分采用PID算法,实现题目在角度等的精度要求和及时性;该系统通过串口通信来进行PID各参数的串口调

在这里插入图片描述

摘 要

本系统是基于TM4单片机来完成各项功能的,实现了一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图 1 所示。电动机 A 固定在支架 B 上,通过转轴 F驱动旋转臂 C 旋转。摆杆 E 通过转轴 D 固定在旋转臂 C 的一端,当旋转臂 C 在电动机 A 驱动下作往复旋转运动时, 带动摆杆 E 在垂直于旋转臂 C 的平面作自由旋转。
其中系统的驱动采用了Mos管电机驱动;姿态获取通过角度传感器; 控制部分采用PID算法,实现题目在角度等的精度要求和及时性;该系统通过串口通信来进行PID各参数的串口调试工作;同时利用按键切换不同的模式。系统供电由12V电源适配器。
图 1  旋转倒立摆结构示意图
图 1 旋转倒立摆结构示意图

关键词:TM4单片机;MOS管电机驱动;角度传感器;PID算法;降压模块

一、系统方案

本系统主要由单片机控制模块、电源模块、电机驱动模块、显示模块、姿态获取模块、串口通信组成,下面分别论证这几个模块的选择。

1、主控制器件的论证与选择

1.1.1控制器选用

单片机比较
方案一:采用传统的STC89C51系列单片机。
方案二:采用TI公司的TM4单片机
通过比较,TM4功能更强大,我们选择方案二。

1.1.2控制系统方案选择

方案一:采用在面包板上搭建简易单片机系统
在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低,不适合本系统使用。
方案二:自制单片机印刷电路板
自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。不宜采用该方案。
方案三:采用单片机最小系统。
单片机最小系统包含了显示、矩阵键盘、A/D、D/A等模块,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。
综合以上三种方案,选择方案三。

2、电源模块的论证与选择

方案一:自己设计电源电路及降压电路,并在洞洞板上焊接。
方案二:采用电源供电,然后利用降压模块来给传感器供电
综合以上两种方案,选择方案二。

3、电机驱动模块的论证与选择

驱动方案一:H桥驱动
驱动方案二:BTN7971或BTN7970驱动
驱动方案三:Mos 管驱动
综合以上三种方案,选择方案三。

4、其他外设模块的论证与选择

4.1:按键模块

方案一:利用串口发送指令选择不同的模式。
方案二:通过按键切换不同的模式。按键控制比较方便。
综合以上两种方案,选择方案二。

4.2:角度获取

结合成本以及应用于本系统的简易性、可移植性,我们采用了角度传感器模块来获取摆杆在摆动时的具体角度。

二、系统理论分析与计算

1、电机驱动模块的分析

(1)该模块采用7.2V供电,由TM4单片机输入四路PWM波,进而有四路输出来驱动两个电机,控制正反转。
(2)总线驱动芯片采用74LS08,不仅可以提高信号驱动能力,同时可隔离MOS管和单片机,保护单片机芯片,防止mos损坏后将电池电压直接输入到单片机,进而烧坏单片机控制引脚;
(3)采用B0512S来进行12V稳压。
(4)采用IRL7843与IR2104S作为驱动芯片

2、转向角度理论分析

通过角度传感器来实现,定1ms的中断,然后通判断是否达到目标角度。

3、PID达到目标速度的计算

利用PID算法来既快又稳地达到目标要求,其中P为比例,I为积分,D为微分。由于有两个电机,故计uo_a为一号电机,uo_b为二号电机,PID公式为uo_a=d_kp_ad_error_a+d_ki_aerror1_a+d_kd_a*dd_error_a,error表示差值,uo_a表示要加或减的占空比。

三、电路与程序设计

1、电路的设计

(1)系统总体框图
系统总体框图如图1所示
在这里插入图片描述

图1 系统总体框图
(2)电机驱动系统框图与电路原理图
电机驱动系统框图
在这里插入图片描述

图2 电机驱动系统框图
(3)电源
电源由电池、降压模块组成。为整个系统提供 5V与 12V电压,确保电路的正常稳定工作。

2、程序的设计

(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现对系统的控制,通过角度传感器获取角度信息; 控制部分采用PID算法,来实现题目在转向角度精度要求和及时性;指令通过zigbee来进行串口通信;整车供电由12V电池与降压电路构成。
(2)程序流程图
在这里插入图片描述
图3 程序流程图

四、测试方案与测试结果

1、测试方案

(1)硬件测试
(2)软件仿真测试
(3)硬件软件联调

2、测试条件与仪器

测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。

3、测试结果及分析

经测试,该简易倒立摆系统能达到目标要求

五、参考文献

[1] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2012
[2] 算法竞赛入门经典.清华大学出版社
[3] 数据结构.清华大学出版社
附录1:电机驱动原理图
在这里插入图片描述

附录2:源程序
电机PID函数:

void dianji_pid(int target)
{ 
   
    error1_a = abs(target)-wheel_1;
    error1_b = abs(target)-wheel_2;
    d_error_a = error1_a - PreError_a;
    dd_error_a = d_error_a - PreDerror_a;
    PreError_a = error1_a;
    PreDerror_a = d_error_a;

    d_error_b = error1_b - PreError_b;
    dd_error_b = d_error_b - PreDerror_b;
    PreError_b = error1_b;
    PreDerror_b = d_error_b;

    uo_a=d_kp_a*d_error_a+d_ki_a*error1_a+d_kd_a*dd_error_a;
    pwm_add_a=(int)uo_a;
    dianji_value_a+=pwm_add_a;

    uo_b=d_kp_b*d_error_b+d_ki_b*error1_b+d_kd_b*dd_error_b;
    pwm_add_b=(int)uo_b;
    dianji_value_b+=pwm_add_b;

    if(error1_a<=1 || error1_b<=1)
    { 
   
        wheel_1=0;
        wheel_2=0;
        tt=0;ttt=0;
        dianji_value_a=0;
        dianji_value_b=0;
        IntDisable(INT_TIMER0B);
        TimerDisable(TIMER0_BASE, TIMER_B);
   // PWMOUTSet(0,0);
        PWMOUTSet(-100,-100);
        return 0;
    }
    if(target>=0)
    { 
   
        PWMOUTSet(dianji_value_b,dianji_value_a);//占空比
    }
    if(target<0)
    { 
   
        PWMOUTSet_Back(dianji_value_b,dianji_value_a);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36916.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注