文档库 最新最全的文档下载
当前位置:文档库 › 使用STM32CubeMx搭建平衡小车代码框架

使用STM32CubeMx搭建平衡小车代码框架

使用STM32CubeMx搭建平衡小车代码框架
使用STM32CubeMx搭建平衡小车代码框架

使用STM32CubeMx快速搭

建平衡小车代码框架

硬件平台:STM32CubeMx

HAL代码库:STM32F1xx

项目平台:MDK5.17A

1.项目总体框架如下:

MPU6050的数据读取采用软件模拟IIC,可使用MPU的DMP库直接生成角度值,减轻MCU计算负担;(DMP库资源详见,正点原子MPU6050资料)

电机驱动部分采用市面上常见的直流电机驱动,引脚分布如下:

PWMA,PWMB,A0,A1,B0,B1;

其中PWMA、PWMB为电机驱动信号;

A0、A1、B0、B1为电机方向控制信号,其控制电平如下:

A0 A1 电机

高高制动

高低正转

低高反转

低低停止

其中,制动为电机锁死,而停止为电机停转;

2.项目搭建:

Step1.打开STM32CubeMX,单击“New Project”,选择芯片型号,STM32F103C8Tx。

Step2.配置Debug,根据实际选择

Step3.配置外部时钟信号

Step4.配置TIM2(PWM发生器)

Step5.配置模拟IIC引脚

Step6.配置电机控制引脚

Step7.配置TIM3(用作微妙延时时钟),CubeMx生成的代码中不包含微妙延时,此部分用于实现模拟IIC的微妙延时

Step8.配置USART1(用于串口调试)

Step9.时钟配置

注:关于输入时钟一定要按实际晶振频率填写,否则会造成时序混乱;Step10.TIM2参数配置(10KHz)

Step11.配置TIM3(微妙延时定时器)

定时器时钟频率的计算:

定时器时钟频率:72MHz

72MHz/(PSC+1)/ARR=72/(71+1)/1=1Mhz=1us;

Step12.配置GPIO口

Step13.生成项目配置

至此,关于平衡小车的软件框架配置已全部完成,点击项目生成,进入MDK编写代码:

代码片段1:微妙函数的实现

#include "delay.h"

#include "tim.h"

void Delay_us(uint32_t us){

uint16_t counter=us&0xffff;

HAL_TIM_Base_Start(&htim3);

__HAL_TIM_SetCounter(&htim3,counter);

while(counter>1){

counter=__HAL_TIM_GetCounter(&htim3);

}

HAL_TIM_Base_Stop(&htim3);

}

void Delay_ms(uint32_t ms){

Delay_us(1000*ms);

}

代码片段2 模拟IIC:

#define HIGH 1

#define LOW 0

#define SDA_IN() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x40000000;} #define SDA_OUT() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x10000000;} #define IIC_SCL(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_Write Pin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET)) //SCL

#define IIC_SDA(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_Write Pin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET)) //SDA

#define READ_SDA HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)

void IIC_Init(void)

{

IIC_SDA(HIGH);

IIC_SCL(HIGH);

}

void IIC_Start(void)

{

SDA_OUT();

IIC_SDA(HIGH);

IIC_SCL(HIGH);

Delay_us(4);

IIC_SDA(LOW);

Delay_us(4);

IIC_SCL(LOW);

}

void IIC_Stop(void)

{

SDA_OUT();

IIC_SDA(LOW);

Delay_us(4);

IIC_SCL(HIGH);

IIC_SDA(HIGH);

Delay_us(4);

}

uint8_t IIC_Wait_Ack(void)

{

uint8_t ucErrTime=0;

SDA_IN();

IIC_SDA(HIGH);Delay_us(1);

IIC_SCL(HIGH);Delay_us(1);

while(READ_SDA)

{

ucErrTime++;

if(ucErrTime>250)

{

IIC_Stop();

return 1;

}

}

IIC_SCL(LOW);

return 0;

}

void IIC_Ack(void)

{

IIC_SCL(LOW);

SDA_OUT();

IIC_SDA(LOW);

Delay_us(2);

IIC_SCL(HIGH);

Delay_us(2);

IIC_SCL(LOW);

}

void IIC_NAck(void)

{

IIC_SCL(LOW);

SDA_OUT();

IIC_SDA(HIGH);

Delay_us(2);

Delay_us(2);

IIC_SCL(LOW);

}

void IIC_Send_Byte(uint8_t txd)

{

uint8_t t;

SDA_OUT();

IIC_SCL(LOW);

for(t=0;t<8;t++)

{

IIC_SDA((txd&0x80)>>7);

txd<<=1;

Delay_us(2);

IIC_SCL(HIGH);

Delay_us(2);

IIC_SCL(LOW);

Delay_us(2);

}

}

uint8_t IIC_Read_Byte(uint8_t ack) {

uint8_t i,receive=0;

SDA_IN();

for(i=0;i<8;i++ )

{

IIC_SCL(LOW);

Delay_us(2);

IIC_SCL(HIGH);

receive<<=1;

if(READ_SDA)receive++;

Delay_us(1);

}

if (!ack)IIC_NAck();

else IIC_Ack();

return receive;

}

代码片段3 PID控制器

//50

#define P_DATA 70.0

#define I_DATA 46.7

//1.25

#define D_DATA 0

//以上三值需根据实际调整参数

typedef struct PID{

int SetPoint;

double Proportion;

double Integral;

double Derivative;

int LastError;

int PrevError;

}PID;

void IncPIDInit(PID* sptr)

{

sptr->LastError=0;

sptr->PrevError=0;

sptr->Proportion=P_DATA;

sptr->Integral=I_DATA;

sptr->Derivative=D_DATA;

sptr->SetPoint=0;

}

int IncPIDCalc(PID* sptr,int nextPoint)

{

int iError,iIncpid;

iError=sptr->SetPoint-nextPoint;

iIncpid=sptr->Proportion*iError-\

sptr->Integral*sptr->LastError+\

sptr->Derivative*sptr->PrevError;

sptr->PrevError=sptr->LastError;

sptr->LastError=iError;

return iIncpid;

}

代码片段4 PWM发生器

HAL_GPIO_WritePin(Left_Dir0_GPIO_Port,Left_Dir0_Pin,GPIO_PIN_SET);

HAL_GPIO_WritePin(Left_Dir1_GPIO_Port,Left_Dir1_Pin,GPIO_PIN_RESET );

HAL_GPIO_WritePin(Right_Dir0_GPIO_Port,Right_Dir0_Pin,GPIO_PIN_SET) ;

HAL_GPIO_WritePin(Right_Dir1_GPIO_Port,Right_Dir1_Pin,GPIO_PIN_RES ET);

__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,0);

__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,0);

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);

注:更改PWM的占空比使用

HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,val)函数即可,其占空比的为用户设定的值除以ARR的值,即val/99+1;即val直接等于占空比;

后记:

关于DMP的代码直接参考正点原子的MPU6050的代码即可;

两轮自平衡小车毕业设计毕业论文

两轮自平衡小车毕业设计毕业论文 目录 1.绪论 (1) 1.1研究背景与意义 (1) 1.2两轮自平衡车的关键技术 (2) 1.2.1系统设计 (2) 1.2.2数学建模 (2) 1.2.3姿态检测系统 (2) 1.2.4控制算法 (3) 1.3本文主要研究目标与内容 (3) 1.4论文章节安排 (3) 2.系统原理分析 (5) 2.1控制系统要求分析 (5) 2.2平衡控制原理分析 (5) 2.3自平衡小车数学模型 (6) 2.3.1两轮自平衡小车受力分析 (6) 2.3.2自平衡小车运动微分方程 (9) 2.4 PID控制器设计 (10) 2.4.1 PID控制器原理 (10) 2.4.2 PID控制器设计 (11) 2.5姿态检测系统 (12) 2.5.1陀螺仪 (12) 2.5.2加速度计 (13) 2.5.3基于卡尔曼滤波的数据融合 (14) 2.6本章小结 (16) 3.系统硬件电路设计 (17) 3.1 MC9SXS128单片机介绍 (17) 3.2单片机最小系统设计 (19) 3.3 电源管理模块设计 (21) I

3.4倾角传感器信号调理电路 (22) 3.4.1加速度计电路设计 (22) 3.4.2陀螺仪放大电路设计 (22) 3.5电机驱动电路设计 (23) 3.5.1驱动芯片介绍 (24) 3.5.2 驱动电路设计 (24) 3.6速度检测模块设计 (25) 3.6.1编码器介绍 (25) 3.6.2 编码器电路设计 (26) 3.7辅助调试电路 (27) 3.8本章小结 (27) 4.系统软件设计 (28) 4.1软件系统总体结构 (28) 4.2单片机初始化软件设计 (28) 4.2.1锁相环初始化 (28) 4.2.2模数转换模块(ATD)初始化 (29) 4.2.3串行通信模块(SCI)初始化设置 (30) 4.2.4测速模块初始化 (31) 4.2.5 PWM模块初始化 (32) 4.3姿态检测系统软件设计 (32) 4.3.1陀螺仪与加速度计输出值转换 (32) 4.3.2卡尔曼滤波器的软件实现 (34) 4.4平衡PID控制软件实现 (36) 4.5两轮自平衡车的运动控制 (37) 4.6本章小结 (39) 5. 系统调试 (40) 5.1系统调试工具 (40) 5.2系统硬件电路调试 (40) 5.3姿态检测系统调试 (41) 5.4控制系统PID参数整定 (43) II

智能循迹小车设计与实现

智能循迹小车设计与实现 摘要本文介绍的是基于单片机STC89C52控制智能循迹小车的设计。利用红外对光管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的运动,从而实现自动循迹避障的功能。其中小车的电机由LG9110驱动,整个系统的电路结构简单,可靠性高。 关键词STC89C52 LG9110 红外对光管循迹小车

The manufacture of intelligent tracking car Abstract This articale introduces the design of intelligent tracking car based on the STC89C52 single chip computer.Based infrared detection of black lines and the road obstacles,and use a STC89C52 MCU as the controlling core for the movement.A electronic drived,which can automatic track and avoid obstacle,was designed and fabricated.In which,the electric machinery of car is drived by the LG9110.The electric circuit stuction of whole system is simple,and the function is dependable. Keywords STC89C52 LG9110 Infrared emitting diode Tracking car

单片机控制单轴双轮自动平衡小车设计开题报告

毕业设计(论文) 开题报告 题目:单片机控制单轴双轮自动平衡小车设计系别:电气工程系 专业:电气工程及其自动化 班级: 学号 学生姓名: 指导教师: 2016年 3月

中原工学院信息商务学院 毕业论文(设计)开题报告 论文(设计)题目单片机控制单轴双轮自动平衡小车 姓名系别电气工程系专业 班级 电气121学号6 1选题目的和意义: 平衡车是一个不稳定、强耦合、非线性系统,对平衡车的研究有利于我们更熟练得运用自动控制理论,并且发展更可靠稳定的控制方法。在实际应用中,平衡车由于体积小,灵活方便,不管是在军用或者民用领域都有广阔的应用空间,两轮自平衡小车可以作为一种小范围的移动式服务平台。通过本课题的研究学习,会使自己更加了解单片机,熟悉电子电路,提升自己的对整个设计的把握,更透彻的掌握自动控制方法。 2本选题在国内外的研究状况及发展趋势: 国外方面:JOE 是瑞士研制的用DSP和FPGA 控制并基于倒立摆理论双轮车。通过倾斜传感器和倾角传感器来检测车体。通过电机上的编码盘检测电机的速度。采用了基于状态反馈的线性控制策略,车的运动被分解成直线和旋转运动,然后分析直线运动和旋转运动,得到电机需要的控制量,最终把控制量耦合叠加。他主要的设计思想依然是:使车子朝车体倾斜的方向运动来保持车身的平衡。主控芯片是HC11 微处理器,此处理器是David P.Anderson 专门的针对nBot 车设计的。传感器在得到车的车身信息后,再比例整合,当作模糊控制器的输入,按照之前设定的控制原则得到两个电机需要的PWM 电压。该控制只能能让小车平衡运动,而不能让小车自主直立。Segway 拥有更多的姿态传感器,它有5个陀螺仪传感器,然而事实是检测车身前倾斜只需要3个传感器就够了,其他的两个传感器只是增加安全性。传感器的信息会被传送到一个电路板,这个电路板是微处理器的集群,效率是个人电脑的三倍。这个集群是为了保证本载人平衡车在其中任何一个处理器出现问题时能报告错误,给驾驶者以处理问题的时间余量,保证了平衡车的安全性。 国内方面:哈工大尹亮制作的双轮移动车Sway,车身倾斜度采用AD 推出的双轴加速度传感器ADXL202 及反射式红外线距离传感器来获得。基于PWM 动态控制直流电机的速度。车与上位机间的数据通信使用PTR2000 超小型超低功耗高速无线收发数传MODEM。人机交互界面使用图形液晶点阵、方向摇杆、按键。依靠这些可靠并且完备

智能循迹小车C程序(完美-详尽)

-----------------------小车运行主程序------------------- -------------------------------------------------------- 简介:@模块组成:红外对管检测模块----五组对管,五个信号采集端口 直流电机驱动模块----驱动两个直流电机,另一个轮子用万向轮 单片机最小系统------用于烧写程序,控制智能小车运动 @功能简介:在白色地面或皮质上用黑色胶带粘贴出路线路径宽度微大于相邻检测管间距。 这样小车便可在其上循迹运行。 @补充说明:该程序采取“右优先”的原则: 即右边有黑线向右转, 若无,前方有黑线,向前走, 若无,左边有黑线,向左转, 若全无,从右方向后转。 程序开头定义的变量的取值是根据我的小车所调试选择好的, 如果采用本程序,请自行调试适合自己小车的合适参数值。 编者:陈尧,黄永刚(江苏大学电气学院二年级,三年级) 1.假定:IN1=1,IN3=1时电机正向转动,必须保证本条件 2.假定:遇到白线输出0,遇到黑线输出1; 如果实际电路是:遇到白线输出1,遇到黑线输出0, 这种情况下只需要将第四,第五句改成: #define m0 1 #define m1 0 即可。 3.说明1:直行---------------速度full_speed_left,full_speed_right. 转弯,调头速度------correct_speed_left,correct_speed_right. 微小校正时---------高速轮full_speed_left,full_speed_right; 低速轮correct_speed. 可以通过调节第六,七,八,九,十条程序,改变各个状态 下的占空比(Duty cycle ),以求达到合适的转弯,直行速度 4.lenth----------length检测到黑线到启动转动的时间间隔 5.width----------mid3在黑线上到脱离黑线的时间差 6.mid3-----------作为判断中心位置是否进入黑线的标志,由于运行的粗糙性和惯性, 常取其他对管的输出信号作为判断条件 7.check_right----若先检测到左边黑线,并且左边已出黑线,判断右端是否压黑线时间拖延

线控两轮平衡车的建模与控制研究

线控两轮平衡车的建模 与控制研究 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

线性系统理论 上机实验报告 题目:两轮平衡小车的建模与控制研究 完成时间:2016-11-29 1.研究背景及意义 现代社会人们活动范围已经大大延伸,交通对于每个人都十分重要。交通工具的选择则是重中之重,是全社会关注的焦点。 随着社会经济的发展,人民生活水平的提高,越来越多的小汽车走进了寻常百姓家。汽车快捷方便、省时省力,现代化程度高,种类繁多的个性化设计满足了不同人的需求。但它体积大、重量大、污染大、噪声大、耗油大、技术复杂、使用不便、价格贵、停放困难,效率不高,而且还会造成交通拥堵并带来安全隐患。相比之下,自行车是一种既经济又实用的交通工具。中国是自行车大国,短距离出行人们常选择骑自行车。自行车确实方便,但在使用之前需要先学会骑车,虽然看似简单,平衡能力差的人学起来却很困难,容易摔倒,造成人身伤害。另外,自行车毕竟不适宜长距离的行驶,遥远的路程会使人感到疲劳。 那么,究竟有没有这样一种交通工具,集两者的优点于一身呢?既能像汽车一样方便快捷又如自行车般经济简洁,而且操作易于掌握,易学又易用。两轮自平衡车概念就是在这样的背景下提出来的。 借鉴目前国内外两轮自平衡车的成功经验,本文提出的研究目标是设计一款新型的、结构简单、成本低的两轮自平衡车,使其能够很好地实现自平衡功能,同时设计结果通过MATLAB进行仿真验证。

2.研究内容 自平衡式两轮电动车是一个非线性、强耦合、欠驱动的自不稳定系统,对其控制策略的研究具有重大的理论意义。我们通过分析两轮平衡车的物理结构以及在平衡瞬间的力学关系,得到两轮车的力学平衡方程,并建立其数学模型。运用MATLAB 和SIMULINK 仿真系统的角度θ、角加速度? θ、位移x 和速度的? x 变化过程,对其利用外部控制器来控制其平衡。 3.系统建模 两轮平衡车的瞬时力平衡分析如图1所示。下面将分析归纳此时的力平衡方程[1-3],并逐步建立其数学模型。 对两轮平衡车的右轮进行力学分析,如图2所示。 依据图2对右轮进行受力分析,并建立其平衡方程: =R R R R M X f H ? - (1) R R R R J C f R ??? =- (2) 同理,对左轮进行受力分析,并建立其平衡方程: =R L L L M X f H ? - (3) L L L L J C f R ??? =- (4) 两轮平衡车摆杆的受力分析如图3所示,由图3可以得到水平和垂直方向的平衡方程以及转矩方程。 水平方向的平衡方程: H H x R L p m +=? ? (5) 其中θsin L x x m p +=,则有:

智能循迹小车分析方案

智能循迹小车设计 专业:自动化 班级:0804班 姓名: 指导老师: 2018年8月——2018年10月 摘要:

本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车<特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛

轮胎动平衡机操作规程实用版

YF-ED-J7378 可按资料类型定义编号 轮胎动平衡机操作规程实 用版 In Order To Ensure The Effective And Safe Operation Of The Department Work Or Production, Relevant Personnel Shall Follow The Procedures In Handling Business Or Operating Equipment. (示范文稿) 二零XX年XX月XX日

轮胎动平衡机操作规程实用版 提示:该操作规程文档适合使用于工作中为保证本部门的工作或生产能够有效、安全、稳定地运转而制定的,相关人员在办理业务或操作设备时必须遵循的程序或步骤。下载后可以对文件进行定制修改,请根据实际需要调整使用。 一、安装车轮时,首先将弹簧和选择好的与被平衡车轮钢圈孔相对的锥体装到匹配器上,再将车轮装到锥体上,装好后盖,然后用快速螺母锁紧; 二、操作时,严格按规定程序进行操作,一定要注意保护匹配器及轴部,装卸车轮时,要轻拿轻放; 三、用卡规测量钢圈到机箱的距离,旋转对立的旋钮,使之对应于测量值; 四、打开机箱前右上方的电源开关,当显示板显示GB-10后,可按下“START”键,此时

平衡采样开始,传动部分带动车轮旋转,自动停稳后,其结果显示在显示板上; 五、用手缓慢转动车轮,其不平衡位置字符“∧”或“∨”会移动,如测量显示出现“点陈符”,同时会听到制动的声音,即停止转动车轮,这时垂直于轴线上方的外测钢圈位置,即是外侧应配重的位置,同样方法对于左侧,找出相对应配重的平衡位置,先在失重大的一侧进行平衡; 六、经过几次的配重,当不平衡量小于5克时,显示OK,说明已达满意效果; 七、试验结束时,关掉电源。

智能循迹小车程序代码

/**************************************************************** ************ 硬件连接 P1_4接驱动模块ENA使能端,输入PWM信号调节速度 P1_5接驱动模块ENB使能端,输入PWM信号调节速度 P1_0 P1_1接IN1 IN2 当P1_0=1,P1_1=0; 时左电机正转驱动蓝色输出 端OUT1 OUT2接左电机 P1_0 P1_1接IN1 IN2 当P1_0=0,P1_1=1; 时左电机反转 P1_2 P1_3接IN3 IN4 当P1_2=1,P1_3=0; 时右电机正转驱动蓝色输出 端OUT3 OUT4接右电机 P1_2 P1_3接IN3 IN4 当P1_2=0,P1_3=1; 时右电机反转 P1_0接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1 P1_1接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 P1_2接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3 P1_3接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4 八路寻迹传感器有信号(白线)为0 没有信号(黑线)为1 ***************************************************************** ***********/ #include #define Right_moto_pwm P1_4 //接驱动模块ENA使能端,输入PWM 信号调节速度 #define Left_moto_pwm P1_5 //接驱动模块ENB使能端,输入PWM 信号调节速度 #define Left_1_led P2_0 //四路寻迹模块接口第一路 #define Left_2_led P2_1 //四路寻迹模块接口第二路 #define Right_1_led P2_2 //四路寻迹模块接口第三路 #define Right_2_led P2_3 //四路寻迹模块接口第四路 #define Left_moto_go {P1_0=0,P1_1=1;} //左电机前进 #define Left_moto_back {P1_0=1,P1_1=0;} //左电机后退 #define Left_moto_stop {P1_0=1,P1_1=1;} //左电机停转 #define Right_moto_go {P1_2=0,P1_3=1;} //右电机前转

轮胎动平衡机安全操作规程通用版

操作规程编号:YTO-FS-PD473 轮胎动平衡机安全操作规程通用版 In Order T o Standardize The Management Of Daily Behavior, The Activities And T asks Are Controlled By The Determined Terms, So As T o Achieve The Effect Of Safe Production And Reduce Hidden Dangers. 标准/ 权威/ 规范/ 实用 Authoritative And Practical Standards

精品规程范本 编号:YTO-FS-PD473 2 / 2 轮胎动平衡机安全操作规程通用版 使用提示:本操作规程文件可用于工作中为规范日常行为与作业运行过程的管理,通过对确定的条款对活动和任务实施控制,使活动和任务在受控状态,从而达到安全生产和减少隐患的效果。文件下载后可定制修改,请根据实际需要进行调整和使用。 一、 操作前应穿好工作服,注意扎紧袖口,女同志应戴好帽子,润滑机器各部,低速运转数分钟,检视运转情况。 二、 要测试的工件必须符合机器的应用范围。 三、 工件要卡紧,锁紧装置要灵活可靠,装卡取活要停车,严禁用手触摸转动部分或用手制动旋转中的工件。 四、 在轮胎上加平衡块后,人员严禁面对转动的方向。 五、 工件校正前应保持清洁,以免有异物飞出。 六、 机器应经常保持清洁,发生故障及时找维修人员修理。。 七、 平衡完毕,切断电源,清扫机器及工作场地。 该位置可输入公司/组织对应的名字地址 The Name Of The Organization Can Be Entered In This Location

智能循迹小车设计

智能循迹/避障小车研究 工作报告 一、智能循迹小车程序结构框图 二、Proteus仿真图 三、软件程序设计

一、智能循迹小车程序结构框图 经过几天在网上的查找,对智能循迹/避障小车有了大致的了 解, 一般有三个模块: 1、最基本的小车驱动模块,使用两个二相四线步进电机对小车的两个后轮分别进行驱动,前轮最好用万向轮,能使小车更好地转弯; 2、小车循迹模块,在小车底部有三个并排安装的红外对管,对黑色与白色的反射信号不同,经单片机处理后对小车进行相应处理; 3、避障模块,我写的程序中对于避障模块是用中断来处理的(即安装在小车车头的红外对管检测到有障碍物后,就会向单片机的P3_2口输出一个高电平或是低电平,这时中断程序将对小车进行预先设定好的避障处理),但是在程序结构框图中,我不太会表示中断处理方式,所以就用查询的方式画了。

N Y N Y 二、Proteus 仿真图 我用Proteus 大概地仿真了小车的运行状态。图中的两个二相四线步进电机就代表小车的左右轮(假定步进电机顺时针转动方向为小车前进方向),网上有很多种驱动芯片,在仿真时我只使用L298N 芯

片来驱动步进电机。用三个单刀双制开关模拟用于小车循迹的三个红外对管的输出信号,经一个与门与三极管开关连接到P3_3口,中断程序对P1_0, P1_1, P1_2三个口进行检测,并做出相应处理。同时因为避障模块的优先级高于循迹模块,所以将外部中断0用于避障,外部中断1用于循迹。P1_3口则用于检测小车是否到达终点。 1、小车驱动模块: 使用一片298芯片驱动一个二相四线步进电机,电机的电压为12V。

自平衡小车设计报告

2012年省电子竞赛设计报告 项目名称:自平衡小车 姓名:连文金、林冰财、陈立镔 指导老师:吴进营、苏伟达、李汪彪、何志杰日期:2012年9月7日

摘要: 本组的智能小车底座采用的是网上淘宝的三轮两个电机驱动的底座,主控芯片为STC89C52,由黑白循迹采集模块对车道信息进行采集,将采集的信息传送到主控芯片,再由主控芯片发送相应的指令到电机驱动模块L298N,从而控制电机的运转模式。 关键词: STC89C52 L298N 色标传感器 E18-F10NK 自动循迹 引言: 近现代,随着电子科技的迅猛发展,人们对技术也提出了更高的要求。汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要。智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势。本文设计的小车以STC89C52为控制核心,用色标传感器 E18-F10NK作为检测元件实现小车的自动循迹前行。 一、系统设计 本组智能小车的硬件主要有以STC89C52 作为核心的主控器部分、自动循迹部分、电机驱动部分。 1.1方案论证及选择: 根据设计要求,可以有多种方法来实现小车的功能。我们采用模块化思想,从各个单元电路选择入手进行整体方案的论证、比较与选择。 本方案以STC89C52作为主控芯片,通过按键进行模式的选择切换,按键一选择三轮循迹,按键二进行两轮循迹。 1.1.1模式一(三轮循迹): 模式一(按键一控制):三轮循迹的时候,通过色标传感器和激光传感器进行实时的数据采集,反馈给主控芯片,主控芯片通过驱动L298来控制两路直流减速电机,从而保证路线的准确性。

动平衡机操作规程完精编版

动平衡机操作规程完精 编版 MQS system office room 【MQS16H-TTMS2A-MQSS8Q8-MQSH16898】

多功能硬支承平衡机操作规程 工作准备 1、操作人员必须经过培训的且具有操作能力的工作人员,必须熟悉平衡机的性 能,掌握操作动平衡机的功能,非动平衡机操作者不允许私自开启动平衡试验机; 2、动平衡机在启动前需要检查电机、皮带、工装等部件是否处于良好状态。检 查动平衡实验机的各各电线接头是否连接牢靠,有无松动现象,润滑部位要加油润滑; 3、在实验操作的过程中,应站到操作台位置处,并且一定要将防护罩移动到指 定的位置,以防止工件在转动的过程中添加物松动飞出对工作人员造成伤 害; 4、准备好要做动平衡试验的工件以及实验工件所用的工装。 工作期间 1、操作流程 1、“SET定标”功能键,作定标参数设定用,一下用(S)表示。 2、“HALT选停”功能键,用作删除按键。在定标过程中作停止及记录 用,详见“平衡机定标操作”。以下用(H)表示。 3、“+/-”功能键,在测量时为加重和去重方式的切换,详见“测平 衡操作”;在转子参数设置中又作滚动指针用,详见“基本参 数设置”。以下用(+)表示。

4、“QUIT退出”功能键,作各子界面退回到主菜单用,详见各界面操 作提示。一下用(Q)表示。 5、“0~9”为数字键,主要用于数字设定及修改。 6、“*”为小数点的输入键。在测量过程中作打印功能键,在转子参 数设置中又作翻页用,详见“基本参数设置”。一下用(*) 表示。 7、“EXE执行”功能键,为回车确认键。一下用(E)表示。 注:1、外接的键盘接口(作为选件)可从前面板插入。操作与上述按键对应。 3、操作使用 打开电源开关,计算机自动完成自检后,直接进入测量界面。在测量界面中按(Q)退到主菜单界面。主菜单左下角的数据为现在所选着的参数,可以通过“设参数”来修改。右下角有5个子菜单,按对应的数字键来选着,光标指针指到该选择项后按(E)进入该子菜单。 在进入平衡操作前应注意所用平衡的转子类型是否选择好并且是否已做过参数设定,如未设定则应按以下步骤处理。 1、转子型号选择 在主菜单上选择数字键“4”,然后按执行键(E),进入参数设置界 面。 (+/-)键:选择下一行 (Q)键:选择当前转子类型以及参数并退到选择主菜单。 “0~9”键:选择当前0~9#转子类型。 (E)键:进入参数设定。 a、首先选择支撑方式,根据图示选择相应的支撑模式输入对应的编 号。 b、转子参数的设置: NO:根据支撑点类型选择; Speed:设定该种转子平衡转速。一般为200~3000转/分 a为左支撑点到左加重点质心的垂直距离 b为两加重点质心之间的垂直距离

动平衡机操作规程汇总

动平衡机操作规程 水泵的转子部件的动不平衡量对整台泵稳定运行有很大的影响。水泵叶轮由于材料组织不均匀及零件加工后产生的形状、尺寸等误差,致使恒态<刚性>转子在对应的工作转速频率下旋转时产生离心力,所引起的振动或运动作用于轴承时该转子所处状态称为该转子的动不平衡。根据GB/T9239.1-2006/ISO 国标。对恒态(刚性)转子平衡品质分级指南,具体到泵类叶轮为G6.3级。为在动平衡机上求得小于转子允许的剩余不平衡量,特制定叶轮动平衡作业指导规程: 一、使用前的准备工作: 1、根据叶轮实际重量选择适合该机允许试验范围的动平衡机。 2、使用前一定要做好清洁工作,特别是轴颈,滚轮摆架底部与轨道之间,都要进行擦试清洁,并在滚轮上加少许清洁的机油,严禁转子与联轴节未接好就开车。 3、根据转子和联轴节尺寸配好接头,其要求是形状对称,在强度允许的情况下,重量要轻;各挡内外园同心,工件和联轴节凹孔配合精度为D1/d要保证同心和端面垂直。 4、为减少示值晃动,工件轴颈和滚轮外R应避开相同或接近以免干扰,其比例最好在0.8以下或1.2以上。 二、电气控制部分:(控制原理见说明书附图) 1.本机电动机电源采用380V/50HZ。 2.电机通电后“停止”按钮红灯亮,如联轴节与转子联接好,则行程开关2XK闭合,将转速转换开关拨到高速或低速档(中间为停车档),即可启动。停车时可按停止按钮或车头箱右侧的制动手柄,制动后应将制动手柄抬起,为下次开车接通电路。 3.本机规定转子转动方向为:由车尾向车头看,转子应顺时针方向旋转。 三、操作程序: 1.将叶轮过动平衡心轴(或转子轴)上定位装夹。 2.调整好两摆架间距离。 3.放置转子部件. 4.连接好适合的联轴节接头。 5.放下安全架压紧转子(或心轴)。 6.从低速位启动,由低速至中速和高速逐渐调整提速,最后达到该叶轮在工况时最大转速。7.观察显示屏上显示的左右两处不平衡量G左、G右及测量点半径值R左、R右,G左、G右不计相位角只计量值。 8.按(G左×R左)+(G右×R右)≤U许用g.mm 根据U左= G左×R左U右= G右×R右 U许用值为设计允许不平衡值为:U许用=D2/2?G(g.mm) 其中:D2——叶轮最大外径(mm) G——设计允许不平衡重量(g) 注意:U左和U右比值应尽可能接近分别为:0.3U许用<U左<0.7U许用 0.3U许用<U右<0.7U许用 9、对显示的不平衡量作在相应位去除金属层处理。 10、反复进行上述工步试验和处理,直至合格。 四、维护与保养注意事项: 1.经常保持机器清洁,导轨面上应经常涂油防锈,非常用导规面上涂油后应加贴油纸保护。2.滚轮表面更不准粘有任何灰尘杂物,每次使用前应仔细清洁滚轮表面,移动摆架时应同

智能循迹小车程序

智能循迹小车程序 Document number:BGCG-0857-BTDO-0089-2022

#include<> #define uchar unsigned char #define uint unsigned int //D0-D7:f,b,a,e,d,h,c,g 共阴依次编码 //74LS04反相器驱动数码管 uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7}; uchar i = 0; //用于0-3数码管轮流显示uint j = 0; //计时的次数 uint time=0; //计时 uint pwm=16; //占空比 uint speed; //调制PWM波的当前的值 sbit R=P3^2; //右边传感器 P3^2 sbit L=P3^3; //左边传感器 P3^3 //电机驱动口定义 sbit ENB=P1^0; //前轮电机停止控制使能 sbit ENA=P1^1; //后轮控制调速控制端口 sbit IN1=P1^2; //前轮 sbit IN2=P1^3; //前轮 sbit IN3=P1^4; //后轮

sbit IN4=P1^5; //后轮 void Init() { TMOD = 0x12; //定时器0用方式2,定时器1用方式1 TH0=(256-200)/256; //pwm TL0=(256-200)/256; TH1 = 0x0F8; //定时2ms TL1 = 0x30; EA = 1; ET0 = 1; ET1 = 1; TR0 = 1; TR1 = 1; } void tim0(void) interrupt 1 //产生PWM { speed ++; if(speed <= pwm) //pwm 就相当于占100的比例{ ENA = 1; }

自平衡循迹小车设计报告

题图:自平衡小车系统 摘要:本自平衡小车由单片机芯片STC80C52为主控制器。通过电机驱动和寻迹电路完成三轮(两轮为驱动,一轮为万向轮)寻迹来按照竞赛要求来完成基本部分;在运用MMA7455数字加速度传感器和角速度传感器(ENC03陀螺仪)以及运用电磁线性偏差来完成两驱动轮的直立寻迹。 关键词 STC80C52、小车寻迹、自平衡小车。 Abstract:The self balancing car by single-chip microcomputer chip STC80C52 primarily controller. Through the motor drive and tracing circuit complete three (two wheel for drive, round for universal wheel) tracing to according to the competition requirements to complete basic parts; Using MMA7455 digital acceleration sensor and angular velocity sensor (ENC03 gyroscope) and the use of electromagnetic linear deviation to complete two driving wheel of upright tracing. Keywords STC80C52, car tracing, self balancing car

1系统方案 (3) 1.1模块方案比较与论证 (3) 1.2车体设计 (3) 1.3控制器模块 (3) 1.4寻迹模块 (4) 1.5直流电机驱动模块 (4) 1.6小车直立 (5) 1.7小车速度控制 (5) 1.8小车方向控制 (6) 1.9最终方案 (6) 2 理论分析和计算 (6) 2.1直流电机的转速如何控制?(建立数学模型) (6) 2.2电磁线性偏差检测数学模型建立 (8) 3电路设计1(两轮为驱动轮,一轮为万向轮) (9) 3.1电路总设计框图 (9) 3.2介绍单片机最小系统原理图及其功能 (9) 3.3介绍驱动模块原理图及其功能 (10) 3.4介绍寻迹模块原理图及其功能 (11) 3.5怎样来控制车模直立?(建立数学模型) (12) 3.6车模的方向控制 (14) 3.7车模倾角测量 (14) 4 电路设计2(两驱动轮直立行走) (17) 4.1整个电路的框架接结构 (17) 4.2介绍数字三轴加速度传感器模块与陀螺仪原理图及其功能 (18) 4.3介绍电磁线偏差检测系统电路及其原理 (20) 4.4 整个过程的注意事项 (21) 5 测试方案与结果分析 (22) 5.1寻迹测试方案(7个红外对管用TCR5000) (22) 5.2电机驱动测试方案(主芯片L298N) (22) 6.结论 (23) *参考文献 (23) *附录 (24) 附录1主要元器件芯片 (24) 附录2仪器设备清单 (24) 附录3主要程序清单 (24)

智能循迹小车c程序完美-详尽)

/*------------------------------------------------------ -----------------------小车运行主程序------------------- -------------------------------------------------------- 简介:@模块组成:红外对管检测模块----五组对管,五个信号采集端口 直流电机驱动模块----驱动两个直流电机,另一个轮子用万向轮 单片机最小系统------用于烧写程序,控制智能小车运动 @功能简介:在白色地面或皮质上用黑色胶带粘贴出路线路径宽度微大于相邻检测管间距。 这样小车便可在其上循迹运行。 @补充说明:该程序采取“右优先”的原则: 即右边有黑线向右转, 若无,前方有黑线,向前走, 若无,左边有黑线,向左转, 若全无,从右方向后转。 程序开头定义的变量的取值是根据我的小车所调试选择好的, 如果采用本程序,请自行调试适合自己小车的合适参数值。 编者:陈尧,黄永刚(江苏大学电气学院二年级,三年级) 1.假定:IN1=1,IN3=1时电机正向转动,必须保证本条件 2.假定:遇到白线输出0,遇到黑线输出1; 如果实际电路是:遇到白线输出1,遇到黑线输出0, 这种情况下只需要将第四,第五句改成: #define m0 1 #define m1 0 即可。 3.说明1:直行---------------速度full_speed_left,full_speed_right. 转弯,调头速度------correct_speed_left,correct_speed_right. 微小校正时---------高速轮full_speed_left,full_speed_right; 低速轮correct_speed. 可以通过调节第六,七,八,九,十条程序,改变各个状态 下的占空比(Duty cycle ),以求达到合适的转弯,直行速度 4.lenth----------length检测到黑线到启动转动的时间间隔 5.width----------mid3在黑线上到脱离黑线的时间差 6.mid3-----------作为判断中心位置是否进入黑线的标志,由于运行的粗糙性和惯性, 常取其他对管的输出信号作为判断条件

动平衡机操作规程

动平衡机操作规程

————————————————————————————————作者: ————————————————————————————————日期:

动平衡机操作规程 水泵的转子部件的动不平衡量对整台泵稳定运行有很大的影响。水泵叶轮由于材料组织不均匀及零件加工后产生的形状、尺寸等误差,致使恒态<刚性>转子在对应的工作转速频率下旋转时产生离心力,所引起的振动或运动作用于轴承时该转子所处状态称为该转子的动不平衡。根据GB/T9239.1-2006/ISO国标。对恒态(刚性)转子平衡品质分级指南,具体到泵类叶轮为G6.3级。为在动平衡机上求得小于转子允许的剩余不平衡量,特制定叶轮动平衡作业指导规程: 一、使用前的准备工作: 1、根据叶轮实际重量选择适合该机允许试验范围的动平衡机。 2、使用前一定要做好清洁工作,特别是轴颈,滚轮摆架底部与轨道之间,都要进行擦试清洁,并在滚轮上加少许清洁的机油,严禁转子与联轴节未接好就开车。 3、根据转子和联轴节尺寸配好接头,其要求是形状对称,在强度允许的情况下,重量要轻;各挡内外园同心,工件和联轴节凹孔配合精度为D1/d要保证同心和端面垂直。 4、为减少示值晃动,工件轴颈和滚轮外R应避开相同或接近以免干扰,其比例最好在0.8以下或1.2以上。 二、电气控制部分:(控制原理见说明书附图) 1. 本机电动机电源采用380V/50HZ。 2. 电机通电后“停止”按钮红灯亮,如联轴节与转子联接好,则行程开关2XK闭合,将转速转换开关拨到高速或低速档(中间为停车档),即可启动。停车时可按停止按钮或车头箱右侧的制动手柄,制动后应将制动手柄抬起,为下次开车接通电路。 3.本机规定转子转动方向为:由车尾向车头看,转子应顺时针方向旋转。 三、操作程序: 1.将叶轮过动平衡心轴(或转子轴)上定位装夹。 2.调整好两摆架间距离。 3. 放置转子部件. 4. 连接好适合的联轴节接头。 5. 放下安全架压紧转子(或心轴)。 6. 从低速位启动,由低速至中速和高速逐渐调整提速,最后达到该叶轮在工况时最大转速。7.观察显示屏上显示的左右两处不平衡量G左、G右及测量点半径值R左、R右,G左、G右不计相位角只计量值。 8.按(G左×R左)+(G右×R右)≤U许用g.mm 根据U左=G左×R左U右= G右×R右 U许用值为设计允许不平衡值为:U许用=D2/2?G(g.mm) 其中:D2——叶轮最大外径(mm) G——设计允许不平衡重量(g) 注意:U左和U右比值应尽可能接近分别为:0.3U许用

智能循迹小车详细源代码程序MSPID

巡线车程序(完整版) 1 #ifndef _Macro.h_ 2 #define _Macro.h_ 3 #include 4 #include 5 #define uchar unsigned char 6 #define uint unsigned int 7 #define one 11.11 8 #define LMAX 1999 9 #define RMAX 3999 10 #define CPU_F ((double)8000000) 11 #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 12 13 #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) 14 #define PC 20 // 比例放大系数 15 #define IC 0 //积分放大系数 16 #define DC 85 //大系数 17 #define LEFTOUT TACCR1 18 #define RIGHTOUT TACCR2 19 #define SensorIn P5IN 20 #define F 5000//5000hz 21 #define Period (8000000/F) 22 #define EnableLeftPos P3OUT|=BIT1 23 #define UnenableLeftPos P3OUT&=~BIT1 24 25 #define EnableLeftNeg P3OUT|=BIT0 26 #define UnenableLeftNeg P3OUT&=~BIT0 27 28 #define EnableRightPos P3OUT|=BIT2 29 #define UnenableRightPos P3OUT&=~BIT2 30 31 #define EnableRightNeg P3OUT|=BIT3 32 #define UnenableRightNeg P3OUT&=~BIT3 33 34 #define Basic_Left 100//百分之八十 35 #define Basic_Right 100//Basic_Left 36 #define MAX (100) 37 #define MIN (-100) 38 #define foreward 1 39 #define backward 0

平衡机操作规程、故障排除

平衡机安全操作规程 1.操作前检查设备、电气是否正常,防护装臵是否齐全,并加注润滑油,空转试车。 2.吊装工件要平稳地放在机床架上,夹持牢固,擦净油污。 3.平衡块要紧固牢靠,不能有松动现象。要有防止工件跳出的保险装臵。运转时,操作人员要站在侧面不准接触转动部分。 4.刹车时不准用手刹转子,测量和加平衡块时必须待转动停止,方准进行,并要防止工件挂碰。机架上禁止放一切东西。 5.使用手持电动工具时,要按手用电动工具安全操作规程进行。 6.工作完毕,切断电源,清理工作现场。 平衡机常见异常现象的故障判断 1、大部分平衡机的测量系统都具有“自检”功能,此功能可以检测测量系统本身是否正常。与“自检”功能对应的操作按键可能会标注为“自检”或“TEST”等。用户可以在平衡机正常时,将各种设定的支承条件(支承方式及a、b、c 及两个半径等)固定,然后使测量系统进入“自检”状态,记录下对应此支承条件下的“自检”状态的显示读数。当操作者认为测量系统有问题时,可以使测量系统恢复到对应原设定的支承条件下的“自检”状态,然后检查测量系统的显示读数是否正常。 2、平衡机显示的不平衡量的角度总在大致相差180 度或0 度左右。首先确认平衡机正常运转测量而且转子仍有一定的残余不平衡量(甚至可以在两个配重面上分别给转子加装两个不同相位的不平衡量),在转子正常旋转测量的情况下:拔下1 号传感器线插头,看仪表显示数值有无变化。如有明显变化,则证明此传感器线和传感器一切正常。 如无变化,则证明此传感器线或传感器有问题。将1 号插头插好,再将2号传感器线插头拔下,同样的方法可以判断2号传感器线和传感器是否正常。使用者可以找专业人员对照另一个传感器线和传感器对有故障的传感器线或传感器进行修理。 3、平衡机在残余不平衡量较大时,故障不明显。但在残余不平衡量较小时,一次启动平衡机进入测量时,显示不平衡量值的角度总在变化。有时角度在一定范围内变化,有时角度在360 度范围内变化。①为减少同频、倍频、分频干扰, 工件支承轴径应避开与支承滚轮外径或其整倍数整分数相同或接近,以免干扰。比如:滚轮外径为101 毫米,那么,最好避开使用91~111、46~55、32~36 毫米范围内的轴径支承。②严格检查转子装配部分的稳定性。如使用工艺轴,则应着重检查轴和孔的配合。③检查转子轴(工艺轴)与滚轮接触处的状态,如果轴径粗糙、刀纹明显或滚轮表面有伤,均会导致小信号时不稳定。④检查滚轮与转子轴(工艺轴)接触处的状态,如果滚轮接触面上连续的光洁的外表面已经破坏,也会导致小信号时不稳定。当滚轮的接触面上出现较明显的伤痕时,平衡量的显示是非常不稳定的。⑤停车状态下清洁滚轮与转子轴(工艺轴)的接触面,加适量润滑油。⑥认真计算一下,是否你的平衡精度要求太高了。 4、平衡机在残余不平衡量较大时,故障不明显。但在残余不平衡量较小时,每次配平衡后重新启动测量时,显示不平衡量值的角度总是以大致相差180 度的方式变化。①所配平衡量偏多。②严格检查转子装配部分的稳定性。如使用工艺轴,则应着重严格检查配合轴和孔的间隙、椭圆度和锥度误差,尤其是椭圆度和锥度误差。 按以上方法检测、维修完成后,如果故障仍然存在,可以按本站介绍的平衡机四点检验法对平衡机进行检验。(详见〈〈平衡机四点法故障诊断〉〉)__平衡机四点法故障诊断 按以上方法(见本站《平衡机常见异常现象的故障判断》)检测、维修完成后,如果故障仍然存在,可以按下面介绍的平衡机四点检验法对平衡机进行检验。一般情况下,用户可以依此用实物转子进行。如果有必要,用户可以将下面过程及所有数据进行记录,然后提供给平衡机的制造厂家,制造厂家可以根据这个记录判断90%以上的故障。 1、首先将转子平衡至能够达到的最高精度,然后准备一个大于转子残余不平衡量30~50 倍的可拆装的配重块(以下过程按:使用配重块重100 克,转子残余量应该小于2~3 克)。转子与平衡机的联结及装载形式不变,直接进入下面的试验过程。 2、检查平衡机的各种设臵是否正常。

相关文档
相关文档 最新文档