直流电机转速测量与控制程序

合集下载

基于C51单片机直流电机测速仪设计

基于C51单片机直流电机测速仪设计

基于C51单片机直流电机测速仪设计摘要:电机的转速是各类电机运行过程中的一个重要监测量,测速装置在电机调速系统中占有非常重要的地位,特别是数字式测速仪在工业电机测速方面有独到的优势。

本文介绍了一种基于C51单片机的光电传感器转速测量系统的设计。

系统采用对射式光电传感器产生与齿轮相对应的脉冲信号,使用AT89C51单片机采样脉冲信号并计算每分钟内脉冲信号的数目,即电机对应的转速值,最终系统通过LCD实时显示电机的转速值。

经过软硬件系统的搭建,分别通过Protues软件系统仿真实验和实际电路搭建检查实验。

仿真实验表明本系统满足设计要求,并且结构简单、实用。

整个直流电机测速系统在降低测速仪成本,提高测速稳定性及可靠性等方面有一定的应用价值。

关键词:转速测量;光电传感器;单片机Based On C51 SCM Single DC Motor Speedometer DesignABSTRACT:Motor speed is all kinds of motor operation is an important process to monitor the amount of speed measuring device in the motor control system occupies a very important position, Especially the digital speedometer in the industrial motor speed has unique advantage. This paper describes a photoelectric sensor 51 SCM-based speed measurement system design. System uses a beam photoelectric sensor generates a pulse signal corresponding to the gear, the use of a sampling pulse signal AT89C51 SCM and calculating the pulse per minute, the number of signals that the speed of the motor corresponding to the value of the final system time through the LCD display the motor speed value.After a hardware and software system structures, respectively, through Protues software system to build the actual circuit simulation and experimental examination. Simulation results show that the system meets the design requirements, and the structure is simple and practical. DC Motor Speed entire system in reducing speedometer costs, improve reliability, speed stability and a certain application value.Keywords: Speed measurement; Photoelectric; Single chip micyoco目录1 绪论 (1)1.1 数字式转速测量系统的发展背景 (1)1.2 转速测量在国民经济中的应用 (1)1.3主要研究内容 (2)1.4 设计的目的和意义 (2)2 转速测量系统的原理 (4)2.1 转速测量原理 (4)2.2 转速测量计算方法 (5)3转速测量系统设计方案 (7)3.1 直流电机转速测量方法 (7)3.2 设计任务及方案 (8)4 直流电机测速系统设计 (9)4.1 单片机AT89C51介绍 (9)4.2 转速信号采集 (14)4.2 转速信号处理电路设计 (16)4.4 最小系统的设计 (17)4.4.1复位电路 (17)4.4.2 晶振电路 (20)4.5 显示部分设计 (20)5 直流测速系统仿真 (24)5.1 直流测速系统仿真 (24)5.1.1单片机最小系统仿真 (25)5.1.2 数码管显示仿真 (25)5.2 主程序流程设计 (26)5.2.1 主程序流程设计 (26)5.2.2 定时器的初始化 (27)5.3 实际电路实验 (28)参考文献 (30)致谢 (31)1 绪论1.1 数字式转速测量系统的发展背景在现代工业自动化高度发展的时期,几乎所有的工业设备都离不开旋转设备,形形色色的电机在不同领域发挥着很重要的作用。

直流电机PWM控制

直流电机PWM控制
4)直流电机运营800转停止 5)直流电机上下限速光电报警
直流电机PWM控制
参照原理图如下所示: 1)查询式键盘原理图
2)6位串行静态显示原理图
直流电机PWM控制
3)直流电机控制原理图
PWM基本原理及其实现措施
• PWM基本原理 • PWM是经过控制固定电压旳直流电源开关频率,
从而变化负载两端旳电压,进而到达控制要求旳 一种电压调整措施。PwM能够应用在许多方面, 如电机调速、温度控制、压力控制等。 • 在PWM驱动控制旳调整系统中,按一种固定旳频 率来接通和断开电源,并根据需要变化一种周期 内“接通”和“断开”时间旳长短。经过变化直 流电机电枢上电压旳“占空比”来变化平均电压 旳大小,从而控制电动机旳转速。所以,PWM又 被称为“开关驱动装置”。

* 经过本例程了解PWM 旳基本原理和使用
*

*
*

* 请将直流电机线接在+5V P12相应旳端子上(步进马达接口出)
*

*
*

* 请学员仔细消化本例程
*

*********************************************************************************/

------------1000/(0.02ms*250)=200Hz

*************************************/

void T1zd(void) interrupt 3 //3 为定时器1旳中断号 1 定时器0旳中断号 0 外
部中断1 2 外部中断2 4 串口中断

main()

直流电机测速系统课程设计

直流电机测速系统课程设计

西安邮电学院单片机课程设计报告书题目:电机测速系统院系名称:自动化学院学生姓名:专业名称:自动化班级:自动XXXX班时间:20XX年X月X日至 X月XX日电机测速系统一、设计目的随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。

在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。

为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。

因此设计一种较为理想的电机测速控制系统是非常有价值的。

二、设计要求1.用按键控制电机起停;2.电机有两种速度,通过按键来改变速度;3.通过数码管显示每分钟或每秒的转速。

四、设计方案及分析(包含设计电路图)1. STC89C52单片机介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。

该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

(1)单片机最小系统单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成。

单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。

图单片机最小系统(2)晶振电路(3)复位电路复位是单片机的初始化操作。

其主要功能是把PC 初始化为0000H ,使单片机从0000H 单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

2. ST151光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。

直流电机转速测控实验

直流电机转速测控实验

直流电机转速测控实验一、实验目的1. 掌握电机转速的测量原理;学会根据被测环境、对象不同选择合适的传感器测量转速;2. 掌握电机转速控制的原理;学会用计算机和传感器组成转速测控系统。

二、实验原理图1所示为计算机直流电机转速测控系统原理图。

图1 计算机测控直流电机转速原理框图根据被测环境和对象选择不同转速传感器(光电、霍尔、磁电)实现直流电机转速的测量及控制。

三. 实验仪器和设备1. CSY-5000型传感器测控技术实训公共平台;2. 环形带综合测控实验台;3. 数据采集模板及测控软件(LabVIEW试用版);4. 12V直流电机调节驱动挂箱;5. 光电式、霍尔式、磁电式转速传感器各一件;6. PC机及RS232通讯接口。

四.实验预习要求1.查阅资料,了解旋转轴转速测量的常用方法;2.掌握采用光电式、霍尔式、磁电式传感器测量转速的原理及特点;3.理解计算机测控直流电机转速的系统工作原理;4.熟悉CSY-5000型传感器测控技术实训平台的硬件配置。

五. 实验步骤及内容第一部分:转速测量1、在关闭公共平台主机箱电源开关的前提下,连接数据采集模板电源线、RS232通讯线;2、根据你选用的转速传感器,按转速传感器附录图1、图2、图3示意图安装接线;(注意光电、霍尔传感器为+5V供电,磁电传感器为+15V供电)3、主机箱上0~12V可调电源与电压表(电压表量程选择20V档)及环形带综合测控实验台电机(环形带综合测控实验台背面)接口并接(注意接口的相应极性);4、检查接线无误后,首先将主机箱上0~12V可调旋钮逆时针方向缓慢调节到底(起始输出电压最小);然后桌面“环形带综合测试软件”(或者启动计算机中的测试软件目录“SensorTest.vi”),双击打开,显示图2环形带综合测试程序软件界面;再打开主机箱电源开关给测量系统供电。

图2 环形带综合测试软件界面5、在计算机的环形带综合测试程序软件界面采单栏下方栏点击运行按钮,串口通讯正常后选择测试软件中“手动转速控制与测量”选项,软件界面显示为图3转速测量选择传感器类型界面;在界面下方选择“传感器类型”为现在做测量转速实验相对应的转速传感器。

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计一、引言直流电机在工业自动化领域中广泛应用,其调速系统的设计是实现自动控制的关键。

本文将介绍一种基于单片机控制的直流电机调速系统设计方案,主要包括电机原理、硬件设计、软件设计以及实验结果与分析等内容。

二、电机原理直流电机是一种将直流电能转换为机械能的装置,其原理基于电磁感应和安培定律。

电机由定子和转子两部分组成,定子上绕有恒定电流,产生磁场,而转子上带有电流,与定子的磁场互相作用,产生力矩使电机旋转。

三、硬件设计1.单片机选择在本设计中,选择了一款功能强大、性能稳定的单片机作为控制核心,例如使用ST C89C51单片机。

该单片机具有丰富的GP IO口和定时器/计数器等外设,适合进行电机控制。

2.电机驱动电路设计电机驱动电路主要包括功率电源、运放电路和驱动电路。

其中,功率电源为电机提供稳定的直流电源,运放电路用于信号放大和滤波,驱动电路则根据控制信号控制电机的转速。

3.速度测量电路设计为了实时监测电机的转速,需要设计速度测量电路。

常见的速度测量电路包括光电编码器、霍尔传感器等,通过测量转子上感应物体的变化来获得电机的转速信息。

四、软件设计1.程序框架软件设计的目标是实现对电机转速的控制和监测。

基于单片机的软件设计主要包括主程序的编写、中断服务程序的编写以及定时器的配置等。

2.控制算法常见的直流电机调速算法包括电压调速法、P WM调速法等。

根据实际需求选择合适的算法,并根据测量到的转速信号进行反馈控制,实现对电机转速的精确控制。

五、实验结果与分析设计完成后,进行实验验证。

通过设置不同的转速需求,观察电机的实际转速与设定转速的误差,并分析误差原因。

同时还可以测试电机在不同负载下的转速性能,以评估系统的稳定性和鲁棒性。

六、总结基于单片机控制的直流电机调速系统设计是实现自动控制的重要应用。

本文介绍了该系统的硬件设计和软件设计方案,并展示了实验结果。

通过系统实现电机转速的精确控制,可以广泛应用于工业自动化领域。

基于STM32直流电机控制程序

基于STM32直流电机控制程序

STM32 直流减速电机控制直流减速电机控制中,最常用的方法就是通过PWM来控制直流电机的转速。

在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制,以后的文章中会专门叙述)。

因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。

程序第一步:设置GPIO,略(输出PWM的管脚用Mode_AF_PP即可)程序第二步:设置定时器,(保证产生两路PWM即可,我用的是TIM4)void TIM4_Configuration(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;//时间基初始化TIM_TimeBaseInitStructure.TIM_Period=144; //18K/144=125Hz,这个是电机PWM的频率TIM_TimeBaseInitStructure.TIM_Prescaler=4000; //72000000/4000=18KTIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0x0000;TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);//输出比较模式设置,用于4路PWM输出TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; //输出PWMTIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能正向通道TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable; //失能反向通道TIM_OCInitStructure.TIM_Pulse=PWM_L; //左轮DIR的占空比TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //输出极性为低电平TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//互补输出极性为高电平TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;TIM_OC1Init(TIM4,&TIM_OCInitStructure); //PWM_L初始化TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应TIM_OCInitStructure.TIM_Pulse=PWM_R; //左轮PWM的占空比TIM_OC2Init(TIM4,&TIM_OCInitStructure); //PWM_R初始化TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应//使能定时器4TIM_Cmd(TIM4,ENABLE);TIM_CtrlPWMOutputs(TIM4,ENABLE);}程序第三步:在SysTick中断中,读取两个轮子的速(具体的方法是:每0.1秒读一次,并以此人作为速度的依据),并比较,如果以右轮为基准,则调整左轮的PWM占空比。

直流电机转速计算机控制实验结论

直流电机转速计算机控制实验结论

直流电机转速计算机控制实验结论
在本次实验中,我们通过计算机控制技术实现了对直流电机转速的有效调节。

实验结果表明,计算机控制技术在直流电机控制领域具有显著的优势和应用前景。

首先,通过实验数据的分析,我们发现计算机控制技术可以实现对直流电机转速的精确控制。

在实验过程中,我们通过改变输入的电压或电流,观察到了直流电机转速的相应变化。

这表明计算机控制技术可以快速、准确地响应指令,实现对电机转速的精细调节。

其次,计算机控制技术还具有灵活性高的优点。

在实验中,我们通过编写不同的控制程序,实现了对直流电机不同转速模式和响应时间的控制。

这使得计算机控制技术在不同的应用场景中具有广泛的应用前景。

此外,我们还发现计算机控制技术可以有效地提高直流电机的能效。

在实验中,我们通过优化控制算法,减少了电机的能耗并提高了其运行效率。

这为节能减排和可持续发展提供了重要的技术支持。

综上所述,直流电机转速计算机控制实验结果表明,计算机控制技术在直流电机控制领域具有广泛的应用前景和重要的价值。

未来,我们可以通过进一步研究和开发,实现更加高效、智能的电机控制系统,为工业自动化和智能制造的发展做出更大的贡献。

直流电机控制(PID)实验报告

直流电机控制(PID)实验报告
b = speed1 / 100;
s = speed1 % 100 / 10;
g = speed1 % 100 % 10;
sent(table[b]);
sent(table[s]);
sent(table[g]);
sent(0); sent(0);//预期值
sent(table[speedset/100]);
out=0;
uk1=uk;//为下一次增量做准备
e2=e1;
e1=e;
PWMTime=out; //out对应于PWM高电平的时间
return(0);
}
void PWMOUT()
{
//PWM=1;
if(cnt<PWMTime)//若小于PWM的设定时间,则输出高电平
PWM=1;
else//否则输出低电平
三、仪器及原理图
实验仪器:THKL-C51仿真器
四、实验代码
%增量式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ufloat unsigned float
sbit PWM=P1^2;
sbit DIN=P1^0;
sbit CLK=P1^1;
uint num;
float count=0;
uint cnt,n=0;
uint out;
uint PWMTime;
uchar code table[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x7B,0x71,0x00,0x40 };
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直流电机转速测量与控制程序
#include "reg51.h"
#include "absacc.h"
#define LEDLen 6
#define Tick 10 // 10 x 100us = 1ms
unsigned int C100us; // 100us记数单元
xdata unsigned char CS0832 _at_ 0xb000;
xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char IN _at_ 0x8001; // 键盘读入口
unsigned char LEDBuf[LEDLen]; // 显示缓冲
code unsigned char LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
code unsigned char KeyTable[] = { // 键码定义
0x16, 0x15, 0x14, 0xff,
0x13, 0x12, 0x11, 0x10,
0x0d, 0x0c, 0x0b, 0x0a,
0x0e, 0x03, 0x06, 0x09,
0x0f, 0x02, 0x05, 0x08,
0x00, 0x01, 0x04, 0x07
};
long int n;
unsigned char flag;
unsigned char DA;
unsigned char Key_temp;
unsigned char k_TEMP[2];
void time1_int(void);
void delay(unsigned char CNT)
{
unsigned char i;
while (CNT-- !=0)
for (i=50; i !=0; i--);
}
unsigned char TestKey()
{
OUTBIT = 0; // 输出线置为0
return (~IN & 0x0f); // 读入键状态(高四位不用) }
unsigned char GetKey()
{
unsigned char Pos;
unsigned char i;
unsigned char k;
i = 6;
Pos = 0x20; // 找出键所在列
do {
OUTBIT = ~ Pos;
Pos >>= 1;
k = ~IN & 0x0f;
} while ((--i != 0) && (k == 0));
// 键值 = 列 x 4 + 行
if (k != 0) {
i *= 4;
if (k & 2)
i += 1;
else if (k & 4)
i += 2;
else if (k & 8)
i += 3;
OUTBIT = 0;
do delay(10); while (TestKey()); // 等键释放
return(KeyTable[i]); // 取出键码
} else return(0xff);
}
void DisplayLED()
{
unsigned char i;
unsigned char Pos;
unsigned char LED;
Pos = 0x20; // 从左边开始显示 for (i = 0; i < LEDLen; i++) {
OUTBIT = 0; // 关所有八段管 LED = LEDBuf[i];
OUTSEG = LED;
OUTBIT = Pos; // 显示一位八段管 delay(5);
Pos >>= 1; // 显示下一位
}
OUTBIT = 0; // 关所有八段管}
void time1_int(void) interrupt 3
{
C100us--;
if (C100us == 0)
{
C100us = Tick;
TR0 = 0;
TR1 = 0;
n=TH0*256+TL0;
TH0 = 0;
TL0 = 0;
TH1 = 255 - 50;
TL1 = 255 - 50;
flag = 1;
TR0 = 1;
TR1 = 1;
}
}
void main()
{
unsigned char i = 0;
//TMOD = 0X05; // T0计数方式 C100us = Tick;
n = 0;
TMOD = 0X15;
TH0 = 0;
TL0 = 0;
TH1 = 255 - 50; // 定时100US
TL1 = 255 - 50;
ET1 = 1; // 开中断
EA = 1;
while(1){
if (TestKey())
{
Key_temp = GetKey() & 0x0f ;
LEDBuf[i] = LEDMAP[Key_temp];
k_TEMP[i] = Key_temp;
i++;
if(i==2)
{
i = 0;
break;
}
}
}
Key_temp = k_TEMP[0]*10+k_TEMP[1];
DA = 0x2f;
CS0832 = DA;
TR0 = 1;
TR1 = 1;
while(1){
while(flag)
{
LEDBuf[4] = LEDMAP[n/10];
LEDBuf[5] = LEDMAP[n%10];
if(n>Key_temp)
{ DA--;
CS0832 = DA;
}
if(n<Key_temp)
{
DA++;
CS0832 = DA;
}
if(n==Key_temp)
{TR0=0;
TR1=0;
}
flag = 0;
}
DisplayLED(); // 显示计数值
}
}
(注:素材和资料部分来自网络,供参考。

请预览后才下载,期待你的好评与关注!)。

相关文档
最新文档