① 三菱 信捷plc如何用編碼器控制步進電機
步進電機的話程序上需要寫一些運動控制指令。因為步進電機不太好設置的剛好滿足你的要求。這個需要專業的人員來處理。
但是如果用伺服電機的話,因為伺服電機自帶電子齒輪比,可以調節到和你需要的移動距離一樣,那麼就可以把編碼器的AB相直接進入驅動器。而你PLC要做的只是接受Z脈沖計數(本身PLC能接收的脈沖數頻率是有要求的 大約20KHZ左右),Z脈沖是1圈一個,所以轉的快一些也能接收。判斷滿10個脈沖就切換的方向(這里如果驅動器有外部控制端子最好,如果沒有,可以通過繼電器來切換編碼器的AB相的信號來完成,如果是信捷的PLC自帶485通訊,也可以選擇帶通訊的驅動來實現,只要切換參數就可以了)來完成。具體請自行測試,突然想到如果是完整的10圈就切換速度的話 這個方法也挺玄的。只是編程方便罷了。。。。
② 51單片機控制步進電機
這個簡單,讓我來教樓主怎麼玩
首先我說下思路:
我們採用P1口來採集ADC0832的8位數據,用P0.0口控制步進電機動作,利用T0的時間中斷來採集P1口的ADC0832數據並做出比較後設置步進電機啟動標志位start=1;並設置他的運行頻率,當然,樓主沒說怎麼比較,我這就只是寫了個簡單的例子,一通百通,希望對你有幫助
下面是程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned int m=0,n=0; //設置循環的周期
unsigned char start=0,t0temp=0;
sbit Y0=P0^0; //控制步進電機的管腳
delay()
{
unsigned char i,j;
for(i=m;i>0;i--)
for(j=n;i>0;j--);
}
main()
{
//自檢測T0時間設置
ET0=1;
TMOD|=0x01;
TH0=0XFC; //1ms中斷掃描
TL0=0X66;
IT0=1; //下降沿觸發
TR0=0; //關閉掃描
/***********************初始化完畢***********************/
//****************I/O口程序
while(1)
{
while(start)
{
delay();
Y0=~Y0;
}
}
}
void counter1(void) interrupt 1 //T0計時器中斷
{
if(t0temp%4)t0temp++; //4ms時間才採集一次P0口的數據
else
{
t0temp++;
//這里就寫你怎麼做對比的程序,我舉個例子
if(P1>150)
{start=1;n=1000;m=0;} //入錯採用12M晶振,那這時候控制步進電機的輸出周期就是1ms一次,也就是1000HZ
else {start=0;n=0;m=0;}
}
}
//PS:我在輸出頻率中用了兩個全局變數m,n可以延遲很長時間,樓主可以根據需要選用,一般16位的,選用一個就可以了,另一個放棄
OK,至於電路圖,我軟體沒有ADC0832的封裝,不然就發給你了,但想來樓主完全就沒必要擔心,ADC0832的8位數據接到P1口,P0.0控制步進電機啟動的三極體,電路圖就那麼簡單!
③ 脈沖數據採集卡是什麼卡
脈沖數據採集卡實際上就是 計數器卡 和 編碼器輸入卡。
編碼器輸入卡實際上也是計數器卡,所以脈沖數據採集卡就是計數器。
它可以計算 脈沖的個數 從而得到很多有用的信息。
比如說 步進電機 或 伺服電機 轉動的時候,電機的編碼器反饋出來的信號就是脈沖信號。
我們可以計算 單位時間內的 脈沖數, 從而確定 電機轉動的速度。