直流电机测速课程设计
Ⅰ 求《直流电机测速》实验电路图。
直流电机控制电路
伺服电机是一种传统的电机。它是自动装置的执行元件。伺服电机的最大特点是可控。在有控制信号时,伺服电机就转动,且转速大小正比于控制电压的大小。去掉控制电压后,伺服电机就立即停止转动。伺服电机的应用甚广,几乎所有的自动控制系统都需要用到。在家电产品中,例如录相机、激光唱机等都是不可缺少的重要组成部分。
1.简单伺服电机的工作原理
图22示出了伺服电机的最简单的应用。电位器RV1由伺服电机带动。电机可选用电流不超过700mA,电压为12~24V的任一种伺服电机。图中RV1和RV2是接成惠斯登(Wheatstone)电桥。集成电路LM378是双路4瓦功率放大器,也以桥接方式构成电机驱动差分放大器。
当RV2的任意变化,都将破坏电桥的平衡,使RV1—RV2之间产生一差分电压,并且加以放大后送至电机。电机将转动,拖动电位器RV1到新的位置,使电桥重新达到新的平衡。所以说,RV1是跟踪了RV2的运动。
图23是用方块图形式,画出了测速传感器伺服电机系统,能用作唱机转盘精密速度控制的原理图。电机用传统的皮带机构驱动转盘。转盘的边缘,用等间隔反射条文图形结构。用光电测速计进行监视和检测。光电测速计的输出信号正比于转盘的转速。把光电测速计输出信号的相位和频率,与标准振荡器的相位和频率进行比较,用它的误差信号控制电机驱动电路。因此,转盘的转速就精确地保持在额定转速上。额定转速的换档,可由操作开关控制。这些控制电路,已有厂家做成专用的集成电路。
2.数字比例伺服电机
伺服电机的最好类型之一,是用数字比例遥控系统。实际上这些装置是由三部份组成:采用集成电路、伺服电机、减速齿轮盒电位器机构。图24是这种系统的方块图。电路的驱动输入,是用周期为15ms而脉冲宽度为1~2ms的脉冲信号驱动。输入脉冲的宽度,控制伺服机械输出的位置。例如:1ms脉宽,位置在最左边;1.5ms在中是位置,2ms在最右边的位置。
每一个输入脉冲分三路同时传送。一路触发1.5ms脉宽的固定脉冲发生器。一路输入触发脉冲发生器,第三路送入脉宽比较电路。用齿轮盒输出至RV1,控制可变宽度的脉冲发生器。这三种脉冲同时送到脉宽比较器后,一路确定电机驱动电路的方向。另一路送给脉宽扩展器,以控制伺服电机的速度,使得RV1迅速驱动机械位置输出跟随输入脉宽的任何变化。
上述伺服电机型常用于多路遥控系统。图25示出了四路数字比例控制系统的波形图。
从图中可以看出是串行数据输入,经过译码器分出各路的控制信号。每一帧包含4ms的同步脉冲,紧接在后面的是四路可变宽度(1~2ms)顺序的“路”脉冲。译码器将四路脉冲变换为并行形式,就能用于控制伺服电机。
3.数字伺服电机电路
数字伺服电机控制单元,可以买到现成的集成电路。例如ZN409CE或NE544N型伺服电机放大器集成电路。图26和图27示出了这两种集成电路的典型应用。
图中元件值适用于输入脉冲宽度为1~2ms,帧脉冲宽度大约为18ms的情况。
图28是适用上述伺服电机型的通用测试电路。伺服电源电池通常为5V。输入脉冲经标准的伺服插座送到伺服电路。帧脉冲的宽度为13—28ms;用RV1调节控制。RV2调节控制脉冲宽度在1—2ms之间。用RV4微调中间值为1.5ms.输出电平由RV3进行调节。
两个集成电路为时基电路CMOS7555型,电源电压可以低到3V仍然工作。IC1为无稳多谐振荡器,产生帧时间脉冲,它的输出触发IC2。而IC2是一个单稳电路,产生输出测试脉冲。
http://www.autooo.net/classid48-id13154.html
http://www.elecfans.com/article/88/131/190/2009/2009021624847.html
供参考
Ⅱ 直流电机测速
上网找资料自己做呗~~~你有解码器?
Ⅲ 求 直流电机测速
去电子城买个测速仪最简单了.
不到200元.
Ⅳ 谁有'直流电机调速测速电路设计'的课程设计谢谢!
用UC3625芯片.望上有很多着方面的资料. 对于大功率的ML4428芯片好点。中文资料全。外接电路简单
Ⅳ 直流电机转速测量的课程设计怎么做
我可以给你一套详细的资料 把邮箱给我 并采纳我的答案!
Ⅵ 利用单片机实现直流电机的测速
用的8051的吧,用计数器功能就行了单位时间内数下降沿个数,12个下降岩一个周期,看来还要结合定时器第一秒,或更多。总之,计数器计数,定时器定时,在运算
Ⅶ 单片机直流电机测速实验程序
^#include<reg52.h>
#include"delay.h"
#define uchar unsigned char
#define uint unsigned int
//*********************//
sbit ENA = P2^2; //驱动芯片使能,若为0则电机停止;
sbit IN1 = P2^1; //控制电机正转和反转
sbit IN2 = P2^0; //控制电机正转和反转
sbit key1 = P1^0; //此键按下,电机正转;IN1=1;IN2=0 ;ENA=1
sbit key2 = P1^1; //此键按下,电机反转;IN1=0,IN2=1 ;ENA=1
sbit key3 = P1^2; //此键按下,电机刹停; IN1=1,IN2=1 ;ENA=1
//*********************//
int motor_change_mank=0;
// 按键设置
//**********************//
uint keylogo()
{
if(key1==0)
{
delayms(2) ;
//while(key1==0);
motor_change_mank=1;//正转标志位
}
if(key2==0)
{
delayms(2) ;
//while(key2==0);
motor_change_mank=2;//反转标志位
}
if(key3==0)
{
delayms(2) ;
//while(key3==0);
motor_change_mank=0;//刹停标志位
}
return(motor_change_mank);
}
//**********************//
//控制驱动芯片函数
//**********************//
void execute_motor()
{
switch(motor_change_mank)
{
case 0: //刹停标志位
{
IN1 = 1;
IN2 = 1;
ENA = 1;
}break;
case 1: //正转标志位
{
IN1 = 1;
IN2 = 0;
ENA = 1;
}break;
case 2: //反转标志位
{
IN1 = 0;
IN2 = 1;
ENA = 1;
}break;
default:break;
}
}
//**********************//
void main()
{
while(1)
{
keylogo();
execute_motor();
}
}
/**********************************************************************/
/**********************************************************************/
#define uint unsigned int
void delayms(uint n)
{
int i;
for(;n>0;n--)
for(i=0;i<1;i++);
}
/**********************************************************************/
/**********************************************************************/
#ifndef delay_h
#define delay_h
#define uint unsigned int
extern void delayms(uint n);
#endif
Ⅷ 跪求!单片机直流电机转速控制带速度显示的,课程设计!!有图有!程序!!急啊!!
#include <showfun.h>
#include <stdio.h>
extern char fnLCMInit(); // LCM 初始化
extern void at(unsigned char x,unsigned char y);/*设定文本x,y值*/
extern void cls(); // 清屏
extern void charout(unsigned char *str); //ASCII(8*8) 显示函数
extern void fnSetPos(unsigned char urow, unsigned char ucol); // 设置当前地址
extern uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 汉字(16*16) 显示函数
extern uchar fnPR12(uchar uCmd); // 写无参数的指令
extern uchar fnPR13(uchar uData); // 写数据
extern unsigned int Adc0832(unsigned char channel);
extern void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
extern void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);
uchar dsp[10]={0,0,0,0,0,0,0,0,0,0,};
char abc[3]={0,0,0,};
uchar key=0;
uint a=100;
uchar n=5;
uchar count=1;
uint k1=0;
uchar GeyKey();
void delay(uchar i);
void control();
main()
{
fnLCMInit();
fnSetPos(0,0);
dprintf(0,0,"直流电机加-减速及测速系统");
dprintf(0,12,"键盘+:步长加速");
dprintf(0,24,"键盘-:步长减速");
dprintf(0,36,"键盘=:顺时针转");
dprintf(0,48,"键盘on/c:逆时针转");
dprintf(0,72,"方向:");
dprintf(0,84,"转速:");
P1_1=0;
TMOD=0x15;
TH1=0x3c;
TL1=0xb0;
TH0=0x00;
TL0=0x00;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
while(1)
{ key=GeyKey();
switch(key)
{ case '1': { a=10;
//sprintf(abc,"%3.2f",a/255.0);
dprintf(0,96," 5 r/min");
//dprintf(0,96,abc);
dprintf(60,96,"r/min");
break; }
case '2': { a=25;dprintf(0,96," 25 r/min"); break; }
case '3': { a=40; dprintf(0,96," 40 r/min"); break; }
case '4': { a=55; dprintf(0,96," 60 r/min"); break; }
case '5': { a=70; dprintf(0,96," 80 r/min"); break; }
case '6': { a=90; dprintf(0,96,"100 r/min"); break; }
case '7': { a=110; dprintf(0,96,"120 r/min"); break; }
case '8': { a=130; dprintf(0,96,"135 r/min"); break; }
case '9': { a=150; dprintf(0,96,"150 r/min"); break; }
case '+': { dprintf(0,72,"方向: 顺时针");
control();
break;
}
case '-': { P1_0=0;
dprintf(0,72,"方向: 逆时针");
control();
break;
}
case '=': {P1_0=1;dprintf(0,72,"方向: 顺时针");break;}
case 'c': {P1_0=0;dprintf(0,72,"方向: 逆时针");break;}
case '/': {dprintf(0,72,"方向: 顺时针");
control();}
default: break;
}
}
}
uchar GeyKey()
{
P1_4=0;
P1_5=1;
P1_6=1;
P1_7=1;
P3_0=1;
P3_1=1;
P3_2=1;
P3_3=1;
_nop_();_nop_();
if(!P3_0)return '7';
if(!P3_1)return '8';
if(!P3_2)return '9';
if(!P3_3)return '/';
P1_4=1;
P1_5=0;
P1_6=1;
P1_7=1;
_nop_();_nop_();
if(!P3_0)return '4';
if(!P3_1)return '5';
if(!P3_2)return '6';
if(!P3_3)return '*';
P1_4=1;
P1_5=1;
P1_6=0;
P1_7=1;
_nop_();_nop_();
if(!P3_0)return '1';
if(!P3_1)return '2';
if(!P3_2)return '3';
if(!P3_3)return '-';
P1_4=1;
P1_5=1;
P1_6=1;
P1_7=0;
_nop_();_nop_();
if(!P3_0)return 'c';
if(!P3_1)return '0';
if(!P3_2)return '=';
if(!P3_3)return '+';
return 0;
}
void delay(uchar i)
{ uchar j,k;
for(;i>0;i--)
for(j=15;j>0;j--)
for(k=11;k>0;k--);
}
void time()interrupt 3
{
TR1=0;
count++;
k1+=TL0;
if(count==51)
{
sprintf(dsp,"%3d",k1);
dprintf(0,108,dsp);
dprintf(60,108,"r/min");
count=1;
k1=0;
}
TH1=0x3c;
TL1=0xb0;
TH0=0x00;
TL0=0x00;
TR1=1;
}
void control()
{
EA=1;
while(1)
{ if(a>=150)
a=150;
if(a<=10)
a=10;
P1_1=0;
delay(160-a);
P1_1=1;
delay(a);
key=GeyKey();
if(key=='-') a-=n;
else
if(key=='+') a+=n;
else
if(key=='=')
{ P1_0=1;
dprintf(0,72,"方向: 顺时针");
}
else
if(key=='c')
{ P1_0=0;
dprintf(0,72,"方向: 逆时针");
}
else
if(key=='*')
{ P1_1=0;
break;
}
else
if(key!=0)
break;
}
EA=0;
}
Ⅸ 基于单片机的直流电机调速系统设计怎么测速
基于单片机的直流电机调速系统设计怎么测速
发资料给你
拟出框架,你照着弄就可以了