久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機械社區

標題: 電腦pc直接控制步進電機驅動器工作的問題 [打印本頁]

作者: liupengxxxx    時間: 2015-8-15 09:00
標題: 電腦pc直接控制步進電機驅動器工作的問題
我想通過pc直接發脈沖給步進電機驅動器(不帶串口通信模塊),控制步進電機啟停動作;脈沖經USB端口DATA+和DATA-連接步進驅動器plus+和plus-,方向接頭懸空。結果電機沒有反應。情況可能如下:1)端口地址沒弄對,脈沖沒輸出去;2)步進驅動器不接受經串口協議封裝的信號。請問如何解決?謝謝。代碼如下:
// pulse_emission.cpp : 定義控制臺應用程序的入口點。//
#include "stdafx.h"
#include <stdio.h>//</stdio.h>
#include <time.h>//</time.h>
#include <conio.h>//</conio.h>

//脈沖寬50ms;
const unsigned pulseWidthPlus = 50;
//脈沖槽寬50ms;
const unsigned pulseWidthMinus = 50;
//脈沖周期寬度100ms;
const unsigned pulseCycle = pulseWidthPlus + pulseWidthMinus;

void delay(clock_t nms)
{
    clock_t start;
    start = clock();
    while((clock() - start) * CLOCKS_PER_SEC / 1000 < nms);
}

void output(int *port, char polarity)
{
    int peak = 0;
    if(polarity == '+') peak = 1;
    else if(polarity == '-') peak = -1;
    *port = peak;
}

void writeWaveform(int *port,unsigned pulseWidth, unsigned cycle, char polarity)
{
    output(port,polarity);
    delay(pulseWidth);
    output(port,0);
    delay(cycle - pulseWidth);
}

int _tmain(int argc, _TCHAR* argv[])
{
    char ch = 0,nch;
    int p = 5; // p的值端口地址(這里用內存單元表示)
    int *port = &p;
    while(1)
        {
        writeWaveform(port,pulseWidthPlus,pulseCycle,ch);
        if(kbhit())
                {
            nch = _getch();
            if(nch == 0X1B) break; // <esc> 退出</esc>
            if(nch == ch && nch != '+' && nch != '-') continue;
            if(nch == '+') printf("正在輸出正脈沖。\n");
            else  printf("正在輸出負脈沖。\n");
            delay(10 * pulseCycle); // 轉換輸出脈沖極性時,需間隔的時間
            ch = nch;
        }
    }
        return 0;
}


作者: 機械社友    時間: 2015-8-15 10:19
本帖最后由 機械社友 于 2015-8-15 10:23 編輯

這個問題在這里討論不討合適,這屬于電子和軟件范圍,不過還是給你大概說下吧
你的方案是不可能實現的,因為usb的信號是有協議的,不是你一直發1數據,那邊就一直數據脈沖為+,協議會自動加上校驗碼之類的。usb的數據率一般幾十m,不管你怎么發數據,1m左右跳變一次少不了的,這個頻率任何步進也響應不了的
要想用電腦控制,得用并口或者usb控制卡之類的

作者: fengmingning    時間: 2015-8-16 16:56
配個驅動不就解決了嗎
作者: 奇酷機械    時間: 2015-8-16 23:17
機械社友 發表于 2015-8-15 10:19
這個問題在這里討論不討合適,這屬于電子和軟件范圍,不過還是給你大概說下吧
你的方案是不可能實現的,因 ...

plc很容易實現
作者: 滿塵青衫染雪    時間: 2015-8-17 20:18
機械社友 發表于 2015-8-15 10:19
這個問題在這里討論不討合適,這屬于電子和軟件范圍,不過還是給你大概說下吧
你的方案是不可能實現的,因 ...

好深奧啊,我這種菜鳥都看不懂上面的代碼

作者: glguolong    時間: 2015-8-18 08:19
直接肯定不能解碼,建議增加CH430,說不定還有用
作者: liupengxxxx    時間: 2015-8-18 09:03
fengmingning 發表于 2015-8-16 16:56
配個驅動不就解決了嗎

有個步進電機的驅動,但沒有USB、串口模塊,不好弄
作者: liupengxxxx    時間: 2015-8-18 09:08
glguolong 發表于 2015-8-18 08:19
直接肯定不能解碼,建議增加CH430,說不定還有用

買了一個USB轉RS232模塊了!解碼什么意思呀?換成9針里面兩個數據針頭嗎?

作者: glguolong    時間: 2015-8-18 09:19
本帖最后由 glguolong 于 2015-8-18 09:23 編輯
liupengxxxx 發表于 2015-8-18 09:08
買了一個USB轉RS232模塊了!解碼什么意思呀?換成9針里面兩個數據針頭嗎?

RS232的電平估計也不能用,另外你不要直接接驅動器,他會給你很多假象,根據你的描述,你的Enable能端也沒接,建議你直接先看,能不能出來固定一定頻率的脈沖,先在示波器上做。

作者: txq453678    時間: 2015-8-19 14:52
直接買一個帶USB的CNC控制板不就得了嗎?
作者: lose2836    時間: 2017-6-13 20:29
想問下,最后您這問題解決了嗎!!!還是換其他方式了




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5