直流電機測速課程設計
Ⅰ 求《直流電機測速》實驗電路圖。
直流電機控制電路
伺服電機是一種傳統的電機。它是自動裝置的執行元件。伺服電機的最大特點是可控。在有控制信號時,伺服電機就轉動,且轉速大小正比於控制電壓的大小。去掉控制電壓後,伺服電機就立即停止轉動。伺服電機的應用甚廣,幾乎所有的自動控制系統都需要用到。在家電產品中,例如錄相機、激光唱機等都是不可缺少的重要組成部分。
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;
}
Ⅸ 基於單片機的直流電機調速系統設計怎麼測速
基於單片機的直流電機調速系統設計怎麼測速
發資料給你
擬出框架,你照著弄就可以了