当前位置:文档之家› 基于STM32的舵机控制系统

基于STM32的舵机控制系统

基于STM32的舵机控制系统
基于STM32的舵机控制系统

摘要

随着越来越多的高科技产品逐渐融入了日常生活中,舵机的控制系统发生了巨大的变化。单片机、C语言等前沿学科的技术的日趋成熟与实用化,使得舵机的控制系统有了新的的研究方向与意义。本文描述了一个由STM32微处理器、舵机、LCD 显示器、键盘等模块构成的,提供基于STM32的PWM信号舵机的控制系统。该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对舵机的速度及转角进行控制,并且通过LCD显示出数据。结果表明该系统具有结构简单、工作可靠、精度高等特点.

关键词:STM32微处理器;舵机系统;LCD显示;PWM信号

Abstract

As well as the high-tech products gradually integrated into the daily life,servo control system has undergone tremendous changes.SCM and C language of the frontier disciplines such mature technology and practical,Make steering control system is a new research direction and meaning.This paper describes a STM32 microprocessors, steering, LCD display and keyboard, etc.Based on the STM32 servo control system of PWM signal,This system uses STM32 microprocessor as the core, MDK in the environment, according to the keyboard input programming, STM32 produce periodic PWM signal, with this signal to the velocity and Angle of steering gear control, and through the LCD display data. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system.

Keywords:STM32 microprocessors; Steering system; LCD display;pulse width modulation signal

目录

第1章绪论 (1)

1.1 课题背景 (1)

1.2 课题的研究展望 (2)

课题任务及要求 (2)

1.3 课题内容及安排 (3)

第2章硬件设计 (4)

2.1 STM32微处理单元 (4)

2.2 舵机 (8)

2.3 LCD显示器 (9)

2.4 时钟电路的制作 (10)

第3章软件设计 (12)

3.1 STM32固件库简介 (12)

3.2 软件的总体设计 (13)

3.3 时钟初始化子程序 (14)

3.4 I/O口初始化子程序 (16)

3.5 PWM信号子程序 (17)

3.6 A/D转换初始化子程序 (18)

3.7 LCD显示子程序 (19)

第4章系统调试 (21)

4.1 调试方案 (21)

4.1.1 硬件调试方案 (21)

4.1.2 软件调试方案 (21)

4.2 故障调试及解决方法 (22)

4.3 联调结果 (22)

结论 (26)

社会经济效益分析 (27)

参考文献 (28)

致谢 (29)

附录I 电路原理图 (30)

附录Ⅱ程序清单 (35)

第1章绪论

舵机(servo motor),又名伺服电机,主要是由外壳、电路板、马达、减速齿轮和电位器构成。舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿, 车模和航模的方向控制。舵机的基本工作原理是发一个控制信号给舵机, 经电路板判断转动方向, 再驱动马达开始转动, 透过减速齿轮将动力传至摆臂, 同时由电位器检测送回讯号, 判断是否已经到达指定位置。早期在模型上使用最多,主要控制模型的舵面,所以俗称舵机。舵机接收一个简单的控制命令就可以自动的转动到一个比较精确的角度,仿人型机器人就是舵机应用的最高境界。随着工业的发展,舵机应用到那些需要角度不断变化并可以保持的控制系统,目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。

1.1课题背景

舵机最早出现在航空模型中,飞机的飞行姿态是通过调节发动机和各个控制舵面来实现的。以简单的四通飞机来说,遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机。不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模中用来转向等等。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍,由此可见,凡是需要操作性动作时都可以用舵机来实现,随着舵机的应用越来越广泛,对舵机的精确控制要求也越来越高,因此一个好的舵机控制系统使舵机的控制精确会达到一个新的高度,让舵机达到理想的工作状态。

STM32系列32位闪存微控制器基于突破性的ARM Cortex-M3内核,这是一款专为嵌入式应用而开发的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集,大幅度提高的中断响应,而且所有新功能都同时具有业界最优的功耗水平。STM32F系列产品

的目的是为MCU用户提供新的自由度。它提供了一个完整的32位产品系列,在结合了高性能、低功耗和低电压特性的同时保持了高度的集成性能和简易的开发特性.它的优点有以下几个方面:搭载ARM公司最新的、具有先进架构的Cortex-M3内核,出色的实时性能,优越的功效高级的、创新型外设,最大的集成性易于开发,加速了面市时间整个产品系列具有脚到脚、外设和软件的高度兼容性,为您提供最大的灵活性。

1.2课题的研究展望

舵机是随着生产发展而产生和发展的,而舵机的发展反过来又促进社会生产力的不断提高。以前,舵机的发展过程是由诞生到在工业上初步应用、各种舵机建立和发展。在进入计算机和自动化时代的今天,不仅对舵机提出了诸多性能良好、运行可靠、单位容量的重量轻、体积小等方面越来越多的要求,而且随着自动控制系统的计算装置的发展,在舵机转动的理论基础上,发展出多种高精度、快响应的控制舵机。与此同时,电力电子学等学科的渗透使舵机这一较为成熟的学科得到新的发展。

当前科学技术突飞猛进,因此舵机正向多用途、多品种方向发展,向高精度和高稳定的方向发展。在应用上,由于计算机技术迅速发展,将会出现由机器人工作的无人工厂,以计算机作为这些工厂的“中枢神经”,使实现无人化成为可能。在这种时代里,某些特种舵机必须具有快速响应、高精度运动、快速启动和停止等使机器人比人的手脚更复杂而精巧的运动。理论上,在舵机中应用了控制技术,使舵机具有更好的特性,因此舵机控制系统成为控制一些重要元件的重要的部分。

基于STM32的舵机控制系统会越来越多的应用在精度要求高的舵机系统中,舵机的控制将与其他的元件结合,功能越来越强大,使得舵机的作用也会越来越大。

课题任务及要求

本次设计的基于STM32的舵机控制系统是以STM32微处理器为核心,在MDK 的环境下进行C语言的编程,编写键盘、ADC、显示的子程序,设计键盘中的某个按键,当按下该按键时,通过STM32产生PWM信号,该信号为舵机控制信号,控制多路舵机,实现可通过按键控制舵机的旋转角度和速度等有效准确的控制,并

将其状态通过TFT彩色LCD显示,毕设方案:

1、熟悉科研课题的环境及毕业设计的具体要求;

2、阅读主要参考文献,收集有关资料;

3、学习STM32处理器;

4、学习舵机控制的技术资料;

5、学习基于固件库的程序开发方法;

6、掌握MDK编程环境的C语言开发平台;

7、完成论文。

1.3课题内容及安排

本文对基于STM32的舵机控制系统设计进行了详细的介绍,共分五章。第1章简要介绍了整个课题的研究背景、目的、意义及整个任务的要求安排;第2章是针对此次课题的任务进行方案论证,尤其重要的对STM32微处理器其32位的处理能力及内嵌的语音对本设计的影响进行详细的阐述;第3章具体介绍了整个控制系统的硬件设计,包括键盘输入模块电路,转接板电路,显示电路的设计;第4章阐述了舵机控制系统的软件设计,包括STM32初始化子程序,数据处理子程序,显示子程序的设计。第5章是针对硬件调试、软件调试和整机连调的结果进行了具体的分析和说明。

第2章硬件设计

硬件是整个基于STM32技术的舵机控制系统设计的基础,怎样选择合适的器件来组成整个硬件电路十分关键,也是本章叙述的重点。除此之外,以下部分还会分别阐述本设计运用到的各个模块的特性和原理,以及它们所能实现的功能。

2.1STM32微处理单元

本设计的舵机控制系统需要STM32处理器,STM32微处理器完成键盘输入量对舵机的控制,并且通过LCD显示舵机的转动角度,作为舵机的主控制器,实现对舵机稳定和精确的控制。

作为微型移动机器人上的主控制器,需要处理的数据和事件比较多,因此需要一款功能强大的处理器——STM32这款32位的微处理器正是最佳的选择。下面将着重介绍STM32的强大的功能以及本设计所用到的STM32中的SPI通讯的部分的工作原理。

STM32的突出的功能包括以下几点:

1.性能强劲。在相同的主频下能做处理更多的任务,全力支持劲爆的程序设计。

2.功耗低。延长了电池的寿命——这简直就是便携式设备的命门(如无线网络应用)。

3.实时性好。采用了很前卫甚至革命性的设计理念,使它能极速地响应中断,而且响应中断所需的周期数是确定的。

4.代码密度得到很大改善。一方面力挺大型应用程序,另一方面为低成本设计而省吃俭用。

5.使用更方便。现在从8位/16位处理器转到32位处理器之风刮得越来越猛,更简单的编程模型和更透彻的调试系统,为与时俱进的人们大大减负。

6.低成本的整体解决方案。让32位系统比和8位/16位的还便宜,低端的Cortex‐M3单片机甚至还卖不到1美元。

7.遍地开花的优秀开发工具。免费的,便宜的,全能的,要什么有什么。

正是基于以上这么多的优点,使得STM32成为本设计中微型移动机器人上的主处理器的最佳选择。下图2.1为STM32的系统结构图

图2.1 STM32系统结构图

高级控制定时器由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补PWM……)。使用定时器预分频器和RCC 时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是完全独立的,它们不共享任何资源TIM1 定时器的功能包括:

1.16位上,下,上/下自动装载计数器

2. 位可编程预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值

3. 4个独立通道:输入捕获,输出比较,PWM生成(边缘或中间对齐模式),单脉冲模式输出,死区时间可编程的互补输出

4.使用外部信号控制定时器和定时器互连的同步电路

5.在指定数目的计数器周期之后更新定时器寄存器

6.刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态

7.如下事件发生时产生中断/DMA:

(1)更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

(2)触发事件(计数器启动,停止,初始化或者由内部/外部触发计数)

(3)输入捕获─输出比较─刹车信号输入

高级定时器TIM的框图如下,

图2.2 定时器TIM的框图

2.2舵机

图2.3 舵机实物图

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机都有外接三根线,分别用棕、红、橙三种颜色进行区分,棕色为接地线,红色为电源正极线,橙色为信号线。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源.电压通常介于4~6V,一般取5V

图2.4 舵机的接线图

其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms---------—90度;

1.0ms---------—45度;

1.5ms--------------0度;

2.0ms------------45度;

2.5ms------------90度;

舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。

控制说明:舵机的响应时间对于控制非常重要,一方面可以通过修改PWM周期获得。另一方面也可以通过机械方式,利用舵机的输出转距余量,将角度进行放大,加快舵机响应速度;

2.3LCD显示器

LCD显示器是本课设的主要器件,当键盘的输入量经过STM32微处理器进行数据的处理,由模拟量转换成数据量,传给LCD进行显示数据。LCD模块的连接有两种方法:直接控制和间接控制。直接控制实际指的是LCD模块的总线接口直接与MCU 端口连接,然后MCU通过程序控制端口来模拟LCD的总线时序来完成对其的控制操作;而间接控制指的是MCU本身就有外部总线拉出,与LCD的总线接口对应的连接上,程序中直接操作总线以控制LCD。考虑到电路设计的简洁性及灵活性,本系统采用PWM信号点亮LCD的方式,硬件电路图如下,

图2.5 PWM信号点亮LCD硬件电路

2.4时钟电路的制作

STM32工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲是由STM32控制器中的时序电路发出的,STM32的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,STM32内部电路就在唯一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相关的硬件电路,即振荡器和时钟电路。常用的时钟电路设计有两种方式,一种是内部时钟方式,另一种是外部时钟电路方式。

本系统采用了内部时钟方式,利用STM32内部的振荡器,然后在引脚OSC-IN 和OSC-OUT两端跨接晶体,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,如图2.6所示。

图2.6 STM32内部时钟方式电路

外接晶振时,C1和C2值选择为27pF,C1,C2对频率有微调作用,晶体振荡频率为12MHz。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。

第3章软件设计

3.1STM32固件库简介

STM32的函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。

每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。

所有的驱动源代码都符合“Strict ANSI-C”标准(项目于范例文件符合扩充ANSI-C标准)。驱动源代码已经文档化,他们同时兼容MISRA-C 2004标准(根据需要,我们可以提供兼容矩阵)。由于整个固态函数库按照“Strict ANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。

该固态函数库通过校验所有库函数的输入值来实现实时错误检测。该动态校验提高了软件的鲁棒性。实时检测适合于用户应用程序的开发和调试。但这会增加了成本,可以在最终应用程序代码中移去,以优化代码大小和执行速度。

因为该固件库是通用的,并且包括了所有外设的功能,所以应用程序代码的大小和执行速度可能不是最优的。对大多数应用程序来说,用户可以直接使用之,对于那些在代码大小和执行速度方面有严格要求的应用程序,该固件库驱动程序可以作为如何设置外设的一份参考资料,根据实际需求对其进行调整。

本设计即是利用STM32中的固件库为基础而编写的,直接调用现成的外设驱动函数使得主程序变的更加简洁,可读性比较高。本设计中用到的固件库函数主要有时钟初始化相关的固件库函数、I/O口初始化相关的固件库函数和SPI总线接口相关的固件库函数。

3.2软件的总体设计

本设计的程序编辑完成后放在项目的主程序中是在其中的一个时间片执行的,也就是说主程序周期性的采集所输入的模拟值。在本设计中由于要保证程序的连续的运行,所以要持续的对输入量进行采集,也就是说本设计中的各个初始化工作完成之后程序会死循环在通讯子程序里面,从而连续不断的采集控制的模拟值。

设计原程序时采用模块化的思想,将程序划分为几块,这样做即使得程序结构清晰、增强可读性,又使得程序在调试的时候可以单独对每个子程序分别调试,减少了程序调试的时间。本设计的源程序主要分为以下几个部分:时钟初始化子程序,GIPO初始化子程序,嵌套向量中断控制器(NVIC)初始化子程序和A/D转换子程序。软件的总体流程图如下图3.1所示。

图3.1 软件总体流程图

3.3时钟初始化子程序

系统时钟SYSCLK可以选择三种类型的时钟提供:HSE、HIS和PLLCLK,其中HSE为外部高速时钟,可以由外部晶振电路提供,晶振电路分别接到SOC_IN和SOC_OUT即可,而HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入,由于外部时钟源工作稳定而且时钟频率精确,所以本设计采用外部时钟源作为系统的时钟。

STM32的系统时钟可以有内部的振荡器提供,也可以由外部的由晶振构成是振荡电路提供时钟,本设计中采用外部振荡电路为STM32提供稳定的时钟脉冲。由于STM32中的包含的大部分外设是在连续的时钟脉冲下才能正常工作,所以STM32中存在一些分频器和倍频器,这些分频器或倍频器将系统时钟进行分频或者倍频用来为相应的外设提供合适的时钟信号,下图3.2为STM32时钟树。

图3.2 STM32时钟树

本设计所需的STM32的外设包括TIM2、TIM3和GPIOA口,所以也要对外设的时钟进行设置。由于在APB1和APB2系统总线外设上,所以要对APB1和APB2总线的时钟频率进行设置。经过APB1与APB2的分频,将SYSCLK转换成可以进行外设及TIMX可以接收的系统时钟。在时钟初始化子程序中先对系统时钟的模式进行选择,即将系统时钟设置为HSE模式(外部时钟模式),然后设置AHB时钟等于系统时钟,且设置了低速或高速AHB,最后使能的时钟,时钟初始化子程序的流程图如下图3.3。

图3.3 时钟初始化流程图

3.4I/O口初始化子程序

51单片机程序:按键控制舵机角度

#include "reg52.h" unsigned char count; //0.5ms次数标识 sbit pwm =P2^7 ; //PWM信号输出 sbit jia =P2^4; //角度增加按键检测IO口 sbit jan =P2^5; //角度减少按键检测IO口 unsigned char jd=5; //角度标识 void delay(unsigned char i)//延时 { unsigned char j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() //定时器初始化 { TMOD = 0x01; //定时器0工作在方式1 IE = 0x82; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms TR0=1; //定时器开始 } void Time0_Int() interrupt 1 //中断程序 { TH0 = 0xfe; //重新赋值 TL0 = 0x33; if(count< jd) //判断0.5ms次数是否小于角度标识 pwm=1; //确实小于,PWM输出高电平 else pwm=0; //大于则输出低电平 count=(count+1); //0.5ms次数加1 count=count%40; //次数始终保持为40 即保持周期为20ms } void keyscan() //按键扫描 { if(jia==0) //角度增加按键是否按下 { delay(10); //按下延时,消抖 if(jia==0) //确实按下 { jd++; //角度标识加1 count=0; //按键按下则20ms周期从新开始 if(jd==6) jd=5; //已经是180度,则保持 while(jia==0); //等待按键放开

舵机工作原理

控制思想 该模块的程序框图如图4.5 所示。车模在行驶过程中不断采样赛道信息,并通过分析车模与赛道相对位置判断车模所处赛道路况,是弯道还是直道,弯道时是左转还是右转。直道时小车舵机状态保持不变,弯道时左转或右转,计算转弯半径。我们所用舵机的标准PWM 周期为20ms,转动角度最大为左右90度,PWM调制波如图7.2所示。

当给舵机输入脉宽为0.5ms,即占空比为0.5/20=2.5%的调制波时,舵机右转90度;当给舵机输入脉宽为1.5ms,即占空比为1.5/20=7.5%的调制波时,舵机静止不动;当给舵机输入脉宽为2.5ms,即占空比为2.5/20=12.5%的调制波时,舵机左转90度。可以推导出舵机转动角度与脉冲宽度的关系计算公式为: 注:其中t为正脉冲宽度(ms);θ为转动角度;当左转时取加法计算,右转时取减法计算结果。 当我们根据赛道弯度计算出转动角度以后便可以根据舵机的参数计算出脉冲宽度,控制舵机转动,舵机转角与PWM脉宽关系如表4-1所示。

在具体操作中PWM调制波的周期可以设置在20ms左右一定范围内,比如设置为10ms 或是30ms均可以使舵机正常转动,但是设置周期较长时,系统延迟时间较多,舵机转向会出现滞后,导致赛车冲出跑道;设置周期如果过短,系统输出PWM 调制波不稳定,舵机转动也会受影响,不能实现赛车的精确转向。经过反复测试,最终把输出PWM 调制波周期设定为13ms (用计数器实现)。 运行电机的转速以及舵机的转角,在软件上都是通过对PWM 波占空比进行设置来相应控制的。前面提到,舵机转角控制需要将两个

八位寄存器合成为一个十六位寄存器。程序中的舵机位置信号,当PWM调制波周期设为13ms时,因为总线频率为24MHz,用时钟SB,可计算得到16进制参数为9870H,舵机中间位置时占空比16进制参数为1680H,要分配给PWM6和7,分配时这2个端口的赋值必须是16进制,那么PWM模块初始化赋值为 PWMPER6= 0x98,PWMPER7= 0x70,PWMDTY6= 0x16,PWMDTY7= 0x80,因此这就牵涉到如何将1个十进制数分配为2个十六进制数问题。有2种方案,一种是除法取余,另一种是移位操作,前者编译生成的代码比后者要多,所以采用移位操作来实现,即取高位时与0xFF00先作“&”计算,然后将所得到的数向右移8位(>>8),即可取得高8位;同理,取低8位时只要与0x00FF作“&”计算即可(算法)。 2、结构和控制 一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。 工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

帆板控制系统设计电子信息工程论文

毕业设计(论文) 帆板控制系统 姓名:xxxxxx 系别: 年级: 专业:电子信息工程 指导老师: 帆板控制系统

【摘要】本设计采用STC89C52RC为中心控制器,利用角度传感器来的采集、处理实现对风扇转速的控制,调节风力大小,进而改变帆板转角大小;帆板的角度检测,通过ADXL345模块,实现控制帆板角度的大小;通过充分比较、论证,最终选用小型直流电机作为风扇的制动源,小型直流电机力矩大、操作简单、价格低且能满足设计需求;系统显示采用LCD12864液晶,用于实时显示帆板的角度大小;控制电机是以NPN三极管BU406为驱动,再利用PWM算法算出合理的脉冲占空比;最后经过多次测试表明,系统完全达到了设计要求,不但完成了所有基本和发挥部分的要求,并增加实现了实时显示占空比全程变化的功能。 【关键词】自动控制、帆板、角度测量、小型直流电机、液晶显示、脉宽调制 Panel Control System 【Abstrct】According to the panel control system design requirements, to design the whole system was studied, established the optimal design scheme, using STC89C52RC as the center controller, using the angle sensor to the acquisition, processing of the fan speed control. The power adjustment, and then change the windsurfer windsurfing angle; angle detection. Through the ADXL345 module realization of control panel, in terms of size; by comparison, the final selection of full proof, small DC motor as the braking source fan, small DC motor torque, simple operation, low price and can satisfy the design requirement; display system using LCD12864, used for real-time display panel angle; control motor is NPN three. BU406 drive, then the use of PWM algorithm calculates the reasonable pulse duty ratio; finally after many tests show that.The system meets the design requirements, not only finished all the basic and the requirements to play a part, and to increase the real-time display of the whole function of the variation of duty ratio. 【Keywords】A utomatic Control, Windsurfing, Angle Measurement, Small DC Motor, Liquid Crystal Display, Pulse Width Modulation

帆板控制系统论文

帆板控制系统 摘要:本设计给出了以MSP430F149为核心的帆板控制系统的基本原理与实现方案。由倾角测量模块、电机驱动模块、显示模块、调节模块等模块组成。采用SCA103T倾角传感器,可实现倾角精确测量。采用直流电机驱动风扇。系统功能由按键控制,可对测量结果进行实时显示,人机交互界面友好,经测试,达到了较好的性能指标。 关键词:MSP430F149,倾角传感器,电机驱动 The Panels Control System Abstract: The basic principle and implements solutions of the control system of the panels are given using MSP430F149 as the core. It is composed by inclination measurement modules, motor driver module, display module and adjust module. It can realize precision measurement using the SCA103T tilt sensor. Fan is driver by the dc motor, The system function is controlled by keys and the measurement result can be real-time displayed, the system has good man-machine interface and achieved better performance indicators by test,. Keywords: MSP430F149,Inclination sensor,motor driver

帆板控制系统报告

帆板控制系统 题目:帆板与控制系统组员: 指导老师: 时间:2014. 8. 11

摘要 随着社会的发展,智能化已经成为现代化产品发展的新趋势,帆板角度控制系统成为测量风力大小的产品,即可以节约电能,又可以把测量风力大小的设备向智能化产品方向过渡。 本系统采用SCT89C51单片机作为控制核心,利用角度传感器ADXL335、电机驱动L298N、液晶显示、键盘控制、声光报警等多个模块实现帆板控制系统。安置在帆板上的角度传感器将检测信号通过AD转换后传送给单片机控制系统,计算出帆板旋转角度,并由单片机控制液晶进行信息显示。帆板旋转角度可通过键盘设置风力等级,由单片机通过PWM方式驱动直流电机运转进行调速。配合角度传感器可以实时调节电机转速,进而带动风扇调整帆板转角。 测试结果证明,帆板控制系统运行稳定可靠,可以准确快速地调整帆板角度,液晶显示内容直观。

目录 第一章前言 (1) 第二章系统整体分析 (2) 方案的论证 (2) 输入模块的选择 (2) 系统的整体 (4) 第三章硬件电路 (6) 按键电路 (6) 主控电路 (6) 振荡电路 (6) 复位电路 (7) 风扇控制电路 (7) 显示电路 (8) 硬件系统 (9) 第四章软件系统 (10) 控制算法 (10) 角度测量原理 (10) KEIL简介 (10) Proteus简介 (10) 软件设计 (11) 第五章仿真与调试 (12) 仿真 (12) 测量 (13) 第六章总结 (18) 附录 (19)

第一章前言 随着科学技术的飞速发展,人们生活水平的不断提高,单片机控制成为了人们追求的目标之一,它所给人类带来的方便是不可否定的,但人们对它的要求越来越高,一切向着数字化控制,智能化控制,人性化的方向发展。现代社会对各种信息的准确性也有了更高的要求,自动检测、自动控制技术显露出非凡的能力。对于像帆板这样的自动平衡调节系统在机械、机器人平衡运动以及生活、军事、工业生产的控制和研究中都有着不可磨灭的作用和地位。 在本设计中,首先选择了合适的方案并进行仿真,在实现仿真后进行了电路的得连接及调试。 本系统设计了基于51系列的SCT89S51处理器的帆板控制系统。该系统是通过PWM波控制永磁式直流电机的转速来改变风扇的风力,使得帆板的受力发生变化控制其竖直方向的夹角。使用角度传感器ADXL335采集帆板的角度模拟量,数据通过ADC0809模数转换,将转换后的数据送给处理器,通过一系列的数据处理将其角度用LCD1602显示输出;该帆板控制系统组成虽然简单,但是在设计方面应用了好多领域的知识,如A/D数模转换技术,单片机C编程,直流电机驱动模块,直流稳压电源,角度传感器数据采集等。 、

单片机程序按键控制舵机角度

#i n c l u d e"r e g52.h" unsigned char count; //0.5ms次数标识 sbit pwm =P2^7 ; //PWM信号输出 sbit jia =P2^4; //角度增加按键检测IO口 sbit jan =P2^5; //角度减少按键检测IO口 unsigned char jd=5; //角度标识 void delay(unsigned char i)//延时 { unsigned char j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() //定时器初始化 { TMOD = 0x01; //定时器0工作在方式1 IE = 0x82; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms TR0=1; //定时器开始 } void Time0_Int() interrupt 1 //中断程序 {

TH0 = 0xfe; //重新赋值 TL0 = 0x33; if(count< jd) //判断0.5ms次数是否小于角度标识 pwm=1; //确实小于,PWM输出高电平 else pwm=0; //大于则输出低电平 count=(count+1); //0.5ms次数加1 count=count%40; //次数始终保持为40 即保持周期为20ms } void keyscan() //按键扫描 { if(jia==0) //角度增加按键是否按下 { delay(10); //按下延时,消抖 if(jia==0) //确实按下 { jd++; //角度标识加1 count=0; //按键按下则20ms周期从新开始 if(jd==6) jd=5; //已经是180度,则保持 while(jia==0); //等待按键放开 }

舵机控制程序

在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,

获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占

空比的变化改变舵机的位置。一般舵机的控制要求如图1所示。 图1 舵机的控制要求 单片机实现舵机转角控制可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放 器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV 以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波

电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程: 例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为 20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在

网上购书系统毕业设计

摘要 随着网络技术的发展,Internet已成为最具市场潜力的技术领域,使用Web技术设计的数据库应用软件,是目前Internet市场的技术中坚,各种Web应用如电子商务,网上购物等都采用这种方式实现。 网上购书在国外已经是一个比较常见的购书方式了,而在我国,网上购书才是刚刚起步,但发展的速度却十分的惊人。本系统主要实现了用户的管理、书籍的查找与购买、购物车的实现、订单的管理以及用户留言等功能,为用户提供了迅速、便利的网上购书环境。 本系统采用JSP、Servlet、JavaBean和JDBC等一些JA V A Web相关技术实现了一个简单的网上购书系统,MVC开发模式可以分离数据访问和数据表现,让开发人员可以开发一个可伸缩性强的、便于扩展的控制器,来维护整个流程。本系统通用性强,经过简单的修改就可以应用于更广泛的网上购物系统,具有一定的推广价值。 关键词:书店;数据库;JSP;Servlet;JavaBean

Abstract With the development of network technology, Internet has become the most market potential of technology, the use of Web technology, designed for database application software, is the Internet market, the technical backbone of a variety of Web applications such as e-commerce, online shopping and so using this ways. Online textbook abroad is a relatively common textbook approach, while in China, online textbook is just started, but the pace of development was very amazing. This system mainly achieves the user's management, the search and the sale of books, shopping cart implementation, order management, and user comments and other functions, provides users with fast and convenient online friendly environment. In this system, JSP, Servlet, JavaBean, and JDBC and some other JA V A Web-related technology to achieve a simple online textbook system that versatility, MVC development model can be separated from data access and data performance, so developers can develop a strong scalability, scalable controller, to maintain the entire process. Through a simple modification can be applied to a wider range of online shopping system, with a certain extension purchase. Keywords: bookstore; database;JSP;Servlet;JavaBean

帆板控制系统的设计

2011年全国大学生电子设计竞赛 帆板控制系统 2011年9月2日

摘要 本系统以STC单片机控制电路为核心,基于PID控制方法,采用PWM脉冲调宽的方式对直流电机进行调控,根据角度传感器反馈回来的信号实现可靠的闭环控制,自动稳定精确地控制帆板的倾斜角度。 关键词:PID控制方法 PWM脉冲调宽帆板

帆板控制系统 1系统方案 1.1帆板倾斜角度测量方法的论证与选择 方案一:采用角度测量传感器测量帆板倾斜角度 在轴承处安装角度测量传感器,当帆板转动一定角度时就会带动轴从而带动角度传感器转动。传感器的测量值传给A/D转化器转换成数字量(方便运算),再将数字量传给单片机并予以显示。 图1 角度测量传.感器示意图 优点:便于调控,精确测量。 缺点:造价高,元件易损坏。 方案二:采用电容传感器测量帆板倾斜角度 将电容的一面板作为帆板安装相连,另一面板作为底板,当帆板倾斜时电容改变,进而改变电路的谐振频率,通过频率/电压转换电路,将谐振频率转换为电压信号,再由单片机内部的A/D转换器转换成对应的数字信号,通过运算处理,得到控制信号。 优点:节约材料,方便组装。 缺点:误差较大,不便于测量,参数转换较复杂。 方案三:采用超声波传感器测量帆板倾斜角度 超声波传感器通过发射和接收进行测量帆板所倾斜角度。 优点:与测量装置无接触,没有机械损耗。

缺点:温度影响大,容易受外界干扰。 综合以上几种方案,经过比较,从经济性和实用性角度以及现有元器件情况,我们选择选择方案一。 1.2 风力控制部分的论证与选择 方案一:改变供电电压大小 根据能量转换平衡原理可知:P J=P D 式中:P J——机械功率 P D——电气功率 由上式可知:风量越大所需机械功率越大,另有P= U2/R,所以在电阻一定的前提下,电压越高,电功率越大,电压越小电功率越小,机械功率也小,也就是说:风机的风量越小。通过分析可见,改变直流电压的高低,就能控制风量的大小。 优点:易于调试,容易实现。 缺点:在低电压情况下,电机转矩较小,不易启动。 方案二:改变风口大小 采用挡板调节风口大小控制风量,设定风口面积为S,对应风口进气量Q。 如果S数值减小,Q值亦减小,所以风量减小。S数值增大,Q值亦增大,所以风量增大。 优点:易于制作,方便直接观察。 缺点:增加了材料量会使作品整体质量增加,精度降低,使控制难度加大。 方案三:使用脉冲调宽控制 由于直接改变供电电压大小会导致在小风量时电机无法转动所以我们使用脉冲调宽方式对风扇电机进行控制。 PWM脉冲调宽控制系统能控制高电平有效时间,高电平时间越长则电动机的转速越高,风量越大,帆板角度变大。高电平时间越短电动机的转速越低,风量越小,帆板角度变小。PWM脉冲调宽控制如图所示。 图2 PWM脉冲调宽 优点:准确方便,精度等级高,自控能力强。 缺点:程序复杂。 综合以上三种方案,选择方案三。

51控制舵机程序大全

#include void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0B1; TL0 = 0x0E0; EA = 1; ET0 = 1; TR0 = 1; }void delay(1)(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void main(void) { InitTimer0(); P1_2=0; while(1); } void Timer0Interrupt(void) interrupt 1 { //20ms中断 TH0 = 0x0B1; TL0 = 0x0E0; P1_2=1; delay(1); P1_2=0; }

#include #include #include #define uchar unsigned char #define uint unsigned int sbit IN1=P0^0; sbit IN2=P0^1; sbit EA1=P0^5; sbitdj=P0^7; //舵机口 uint t=0;//中断次数 ucharzk;//高电平中断次数uchar p=0;//定义pwm占空比void delay(uint z) { uinti,j; for(i=0;i>8;//100us一次中断TL0=-100%256; if(t==0)zk=p; if(t=zk) dj=0; t++; if(t>=200) t=0;//20mspwm周期 } void turn_left() { IN1=1;IN2=0;EA1=1;//电机工作p=5;//0.5ms delay(600); } void turn_right() { IN1=1;IN2=0;EA1=1;//电机工作p=25;//2.5ms delay(600);

毕业设计论文——最终版

毕业设计论文 作者学号 系部 专业 题目 指导教师 评阅教师 完成时间:

毕业设计(论文)中文摘要

毕业设计(论文)外文摘要

目录 1 绪论 (1) 1.1J AVA语言的特点 (1) 1.2开发工具E CLIPSE介绍 (2) 1.3开发工具JDK介绍 (2) 1.4应用环境 (3) 2 系统需求分析 (3) 2.1需求分析 (3) 2.2可行性分析 (3) 3 系统概要设计 (4) 3.1游戏流程图 (4) 3.2设计目标 (5) 3.3系统功能模块 (5) 3.4系统数据结构设计 (7) 4 系统详细设计 (10) 4.1程序设计 (10) 4.2贪吃蛇游戏各功能界面截图 (13) 5 系统测试 (16) 5.1测试的意义 (16) 5.2测试过程 (16) 5.3测试结果 (17) 结论 (18) 致谢 (19) 参考文献 (19)

1 绪论 贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。希望通过这次实践,能从中提高自己的编程能力。并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。另外,通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 本游戏的开发语言为Java,开发工具选用Eclipse。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 1.1 Java语言的特点 1.1.1 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java 实现了自动的垃圾收集,简化了内存管理的工作。 1.1.2 平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。 1.1.3 安全性 Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。 1.1.4 面向对象 Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

舵机控制C程序

舵机控制C程序 #include #defineucharunsignedchar #defineuintunsignedint /* 变量定义 */ ucharkey_stime_counter,hight_votage=15,timeT_counter; bitkey_stime_ok; /* 引脚定义 */ sbitcontrol_signal=P0^0; sbitturn_left=P3^4; sbitturn_right=P3^5; /***************************************************************** 名称:定时器0初始化 功能:20ms定时,11.0592M晶振 初值20ms 初值0.1ms *****************************************************************/ voidTimerInit() { control_signal=0; TMOD=0x01;//设置定时器0为工作方式1 EA=1;//开总中断 ET0=1;//定时器0中断允许 TH0=0xFF;//定时器装初值 TL0=0xA3; TR0=1;//启动定时器0 } /********************************************** 定时器0中断服务函数 ***********************************************/ voidtimer0(void)interrupt1using0 { TH0=0xFF; TL0=0xA3;//定时器0重新装入数值

帆板控制系统(基于STM32)

帆板控制系统 加书签收藏下载跳至底部↓ 阅读:123次大小:10KB(共4页) 帆板控制系统 摘要:摘要:本系统以STM32F103ZE 的ARM 芯片为主控CPU,通过程序设计输出PWM 信号给直流电机驱动板以驱动风扇上的直流电机,从而带动风扇的转动。用LSM303DLH3 三轴加速度传感器检测帆板偏转角。可以用键盘设置PWM 占空比来改变风扇风速以控制帆板的偏转角。还可以直接设置帆板偏转角,CPU 根据设置的偏转角和三轴加速度传感器检测的帆板偏转角的差,自动调节PWM 的占空比改变风扇风力大小,使帆板自动偏转到设定角度。通过LCD5110 的液晶显示模块,可以实时数字显示帆板的偏转角和调节风力大小占空比。关键词:关键词:STM32 加速度传感器PWM 偏转角帆板A bstract: This system to the ARM chips STM32F103ZE as control core, through the program design PWM signal output, in the to control dc motor drives board. With LSM303DLH3 sensor chip transmission An gle to signal to adjust the motor to control PWM signal motor speed. At the same time use the keyboard can be set rotation, adjust the pa nels of the chip, reached the PWM signal set the panels rotation Angl e. The keyboard also can adjust the PWM signal, and then chip can adjust the fan speed, to change the panels of the rotation Angle throu gh the regulation, and eventually to test LCD5110 liquid crystal displa y (LCD) module, show the panels of the deflection Angle. Key words: STM32 sailboard Angle sensor 一、帆板控制系统总框架结构图和总体方案帆板控制系统总框架结构图和总体方案根据题目的要求,帆板控制系统由主控芯片模块,电机

单片机按键控制舵机转动

忆飞工作室 https://www.doczj.com/doc/fd1405401.html, 忆飞电子淘宝店欢迎进入 设计者:曾传辉 时间2012年8月13号 手机:134******** QQ:36439133 旺旺:epiapl_cn 程序名称:按键控制舵机控制 程序效果:单片机两个按键控制左右转,转角90度单片 #include #define Sevro_moto_pwm P1_0 //接舵机信号端输入PWM信号调节速度 #define k1 P2_5 //按键控制舵机左转 #define k2 P2_6 //按键控制舵机右转 unsigned char pwm_val_left = 0;//变量定义 unsigned char push_val_left;// =14;//舵机归中,产生约,1.5MS 信号 unsigned int timer=0; //延时基准变量 unsigned char timer1=0; //扫描时间变量 void pwm_Servomoto(void); //函数申明 unsigned int val,val2,fl1,fl2; //变量申明 /************************************************************************/ void delay(unsigned int k) //延时函数 { unsigned int x,y; for(x=0;x

舵机控制型机器人设计要点

课程设计项目说明书 舵机控制型机器人设计 学院机械工程学院 专业班级2013级机械创新班 姓名吴泽群王志波谢嘉恒袁土良指导教师王苗苗 提交日期 2016年4 月1日

华南理工大学广州学院 任务书 兹发给2013级机械创新班学生吴泽群王志波谢嘉恒袁土良 《产品设计项目》课程任务书,内容如下: 1. 题目:舵机控制型机器人设计 2.应完成的项目: 1.设计舵机机器人并实现运动 2.撰写机器人说明书 3.参考资料以及说明: [1] 孙桓.机械原理[M].北京.第六版;高等教育出版社,2001 [2] 张铁,李琳,李杞仪.创新思维与设计[M].国防工业出版社,2005 [3] 周蔼如.林伟健.C++程序设计基础[M].电子工业出版社.北京.2012.7 [4] 唐增宏.常建娥.机械设计课程设计[M].华中科技大学出版社.武汉.2006.4 [5] 李琳.李杞仪.机械原理[M].中国轻工业出版社.北京.2009.8 [6] 何庭蕙.黄小清.陆丽芳.工程力学[M].华南理工大学.广州.2007.1 4.本任务书于2016 年2 月27 日发出,应于2016 年4月2 日前完 成,然后提交给指导教师进行评定。 指导教师(导师组)签发2016年月日

评语: 总评成绩: 指导教师签字: 年月日

目录 摘要 (1) 第一章绪论 (2) 1.1机器人的定义及应用范围 (2) 1.2舵机对机器人的驱动控制 (2) 第二章舵机模块 (3) 2.1舵机 (3) 2.2舵机组成 (3) 2.3舵机工作原理 (4) 第三章总体方案设计与分析 (6) 3.1 机器人达到的目标动作 (6) 3.2 设计原则 (6) 3.3 智能机器人的体系结构 (6) 3.4 控制系统硬件设计 (6) 3.4.1中央控制模块 (7) 3.4.2舵机驱动模块 (7) 3.5机器人腿部整体结构 (8) 第四章程序设计 (9) 4.1程序流程图 (9) 4.2主要中断程序 (9) 4.3主程序 (11) 参考文献 (13) 附录 (14) 一.程序 (14) 二.硬件图 (17)

帆板控制系统(F 题)

F-1 2011 年全国大学生电子设计竞赛试题 参赛注意事项 (1)2011 年8 月31 日8:00 竞赛正式开始。本科组参赛队只能在【本科组】题目中任选一题; 高职高专组参赛队在【高职高专组】题目中任选一题,也可以选择【本科组】题目。(2)参赛队认真填写《登记表》内容,填写好的《登记表》交赛场巡视员暂时保存。(3)参赛者必须是有正式学籍的全日制在校本、专科学生,应出示能够证明参赛者学生身份 的有效证件(如学生证)随时备查。 (4)每队严格限制3 人,开赛后不得中途更换队员。 (5)参赛队必须在学校指定的竞赛场地内进行独立设计和制作,不得以任何方式与他人交流, 包括教师在内的非参赛队员必须迴避,对违纪参赛队取消评审资格。 (6)2011 年9 月3 日20:00 竞赛结束,上交设计报告、制作实物及《登记表》,由专人封存。 帆板控制系统(F 题) 【高职高专组】 一、任务 设计并制作一个帆板控制系统,通过对风扇转速的控制,调节风力大小,改 变帆板转角θ,如图1 所示。

图1 帆板控制系统示意图 二、要求 1、基本要求 (1)用手转动帆板时,能够数字显示帆板的转角θ。显示范围为0~60°,分辨力为2°,绝对误差≤5°。 (2)当间距d=10cm 时,通过操作键盘控制风力大小,使帆板转角θ能够在0~60°范围内变化,并要求实时显示θ。 (3)当间距d=10cm 时,通过操作键盘控制风力大小,使帆板转角θ稳定 d 调节装置 转速控制风 力 角度检测信号 转轴 帆 板 风扇 θ 键盘数字显示 F-2 在45°±5°范围内。要求控制过程在10 秒内完成,实时显示θ,并 由声光提示,以便进行测试。 2、发挥部分 (1)当间距d=10cm 时,通过键盘设定帆板转角,其范围为0~60°。要求θ在5 秒内达到设定值,并实时显示θ。最大误差的绝对值不超过 5°。 (2)间距d 在7~15cm 范围内任意选择,通过键盘设定帆板转角,范围为0~60°。要求θ在5 秒内达到设定值,并实时显示θ。最大误差的绝 对值不超过5°。 (3)其他。 三、说明 (1)调速装置自制。 (2)风扇选用台式计算机散热风扇或其他形式的直流供电轴流风扇,但不能选用带有自动调速功能的风扇。

PWM控制舵机 C程序

#include "reg52.h" sbit control_signal=P0^0; sbit turn_left=P3^0; sbit turn_right=P3^1; unsigned char PWM_ON=15 ;//定义高电平时间 /******************************************************************/ /* 延时函数 */ /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } void display() { if(PWM_ON>=5&&PWM_ON<=7) P1=0xFD; //1灯亮,舵机接近或到达右转极限位置if(PWM_ON>7&&PWM_ON<=10) P1=0xFB; //2灯亮 if(PWM_ON>10&&PWM_ON<=13) P1=0xF7; //3灯亮 if(PWM_ON>13&&PWM_ON<=16) P1=0xEF; //4灯亮,舵机到达中间位置 if(PWM_ON>16&&PWM_ON<=19) P1=0xDF; //5灯亮 if(PWM_ON>19&&PWM_ON<=22) P1=0xBF; //6灯亮 if(PWM_ON>22&&PWM_ON<=25) P1=0x7F; //7灯亮,舵机接近或到达左转极限位置} /******************************************************************/ /* 主函数 */ /******************************************************************/ void main() { //bit Flag; TMOD |=0x01; //定时器设置 0.1ms in 11.0592M crystal TH0=(65536-78)/256; TL0=(65536-78)%256; //定时0.1mS ET0=1;//定时器中断打开 EA=1;//总中断 //IE= 0x82; //打开中断 TR0=1; // PWM_ON=15 //的取值范围是6-25 while(1) { if(turn_left==0) { delay(1000); if(turn_left==0) { while(!turn_left){}

简易风洞及控制系统

简易风洞及控制系统(G题) 摘要:本帆板控制系统由单片机ATMEGA328作为帆板转角的检测和控制核心,实现按键对风扇转速的控制、调节风力的大小、改变帆板转角θ、液晶显示等功能。引导方式采用角度传感器感知与帆板受风力大小的转角θ的导引线。通过PWM波控制电机风扇风力的大小使其改变帆板摆动的角度θ。风扇控制核心采用L298电机驱动模块,用ATMEGA328单片机为控制核心,产生占空比受数字PID 算法控制的PWM脉冲,实现对直流电机转速的控制,同时利用光电传感器将电机速度转化成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。MMA7455三轴加速传感器把角度输出信号传送给ATMEGA328单片机进行处理。 关键词:ATMEGA328,MMA7455,PWM波,PID算法

目录 1. 系统设计 1.1 任务与要求 1.1.1 主要任务 1.1.2 基本要求 1.1.3 说明 1.2总体设计方案 1.2.1 设计思路· 1.2.2 方案论证与比较 1.2.3 系统的组成 2. 单元电路设计 2.1 风速控制电路 2.2小球测距原理 2.3控制算法 3. 软件设计 3.1风速控制电路设计计算 3.2控制算法设计与实现 3.3程序流程图 4. 系统测试 4.1 调试使用的仪器与方法 4.2 测试数据完整性 4.3 测试结果分析 4.4 结束语 5. 总结 参考文献 附录1 元器件明细表 附录2 电路图图纸 附录3 程序清单

1.1任务与要求 1.1.1 主要任务 设计制作一简易风洞及其控制系统。风洞由圆管、 连接部与直流风机构成,如图所示。 圆管竖直放置,长度约40cm,内径大于4cm且内 壁平滑,小球(直径4cm黄色乒乓球)可在其中上下运 动;管体外壁应有A、B、C、D等长标志线,BC段有 1cm间隔的短标志线;可从圆管外部观察管内小球的位置;连接部实现风机与圆管的气密性连接,圆管底部应有防止小球落入连接部的格栅。控制系统通过调节风机的转速,实现小球在风洞中的位置控制。 1.1.2 基本要求 (1)小球置于圆管底部,启动后5s内控制小球向上到达BC段,并维持5s 以上。 (2)当小球维持在BC段时,用长形纸板(宽度为风机直径的三分之一)遮挡风机的进风口,小球继续维持在BC段。 (3)以C点的坐标为0cm、B点的坐标为10cm;用键盘设定小球的高度位置(单位:cm),启动后使小球稳定地处于指定的高度3s以上,上下波 动不超过±1cm。 (4)以适当的方式实时显示小球的高度位置及小球维持状态的计时。(5)小球置于圆管底部,启动后5s内控制小球向上到达圆管顶部处A端,且不跳离,维持5s以上。 (6)小球置于圆管底部,启动后30s内控制小球完成如下运动:向上到达AB段并维持3~5s,再向下到达CD段并维持3~5s;再向上到达AB段 并维持3~5s,再向下到达CD段并维持3~5s;再向上冲出圆管(可以

相关主题
文本预览
相关文档 最新文档