會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





如何透過使用驅動IC控制直流馬達正轉、逆轉與停止
新會員
註冊日期:
2015/12/21 18:02
所屬群組:
註冊會員
文章: 5
等級: 1; EXP: 34
HP : 0 / 8
MP : 1 / 27
離線
各位前輩,由於最近想透過18F4520去控制直流馬達

達到正轉、逆轉與停止,由於新手比較沒頭緒,可能麻煩

各位大大指點。

馬達為有刷直流馬達(3V~12V),驅動IC目前為hg7881。

2016/12/29 21:39
轉換PDF檔 列印


Re: 如何透過使用驅動IC控制直流馬達正轉、逆轉與停止
資深會員
註冊日期:
2012/05/04 19:18
所屬群組:
註冊會員
文章: 162
等級: 11; EXP: 78
HP : 0 / 269
MP : 54 / 3721
離線
查一下hg7881 Truth Table你就知道怎麼控制了!

2016/12/30 08:12
轉換PDF檔 列印


Re: 如何透過使用驅動IC控制直流馬達正轉、逆轉與停止
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13827
等級: 71; EXP: 97
HP : 1064 / 1774
MP : 4609 / 66054
離線
使用 PIC18F4520 的 ECCP 模組就有提供 Helf Bridge & Full Bridge 的驅動。參考圖片的 Full Bridge 的接線。PWM 提供轉速的控制,方向則是切換對腳的導通控制電壓的極性。

附加檔案:



jpg  擷取.JPG (49.44 KB)
16_5865c7c8cffa3.jpg 785X510 px

2016/12/30 10:34
轉換PDF檔 列印


Re: 如何透過使用驅動IC控制直流馬達正轉、逆轉與停止
新會員
註冊日期:
2015/12/21 18:02
所屬群組:
註冊會員
文章: 5
等級: 1; EXP: 34
HP : 0 / 8
MP : 1 / 27
離線
MCU:P18F4520 實驗版:APP025
各位前輩,目前我已經做出來正、逆轉,目前在量測正轉PWM是有波型
(如圖1),但是我再按壓RB0開關(FLT0)為逆轉時卻沒有PWM波型,
想請教一下有什麼問題,程式如下面。

由於目前已經抓到光遮斷訊息,想請教一下如何設定透過兩個開關,來
分別控制正轉與逆轉,之後透過光遮斷(外部中斷)來停止,再麻煩各位
前輩給點提示。

http://imgur.com/VOYd27C Open in new window (圖一)




#include <p18f4520.h> // 微控制器硬體名稱宣告
#include <timers.h> // 納入時間延遲函式庫函式原型名稱定義
#include <pwm.h> // 納入PWM函式庫函式原型名稱定義

// 設定微處理器相關結構位元
#pragma config OSC=HS, WDT=OFF, LVP=OFF

// 宣告時間相關變數並初始化為0
unsigned char sec=0, update=0;

// 宣告TIMER1計時器中斷執行程式
void timer1_isr (void);

#pragma code low_vector=0x18 // 定義高優先中斷執行程式位址
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}

#pragma code

#pragma interruptlow timer1_isr

void timer1_isr (void)
{
PIR1bits.TMR1IF = 0; // 清除中斷旗標
WriteTimer1(0x8000); // 設定計時器初始值
update=1; // 設定更新旗標
}

void main() {
ADCON1=0x0F; // 非常重要!將所有類比腳位設定為數為輸出入腳位
TRISBbits.TRISB0=1; // 將RB0設為輸入,以觸發INT0/FLT0
TRISD=0; // 設定LED
PORTD=0;
OpenPWM1(0x9C); // 設定PWM頻率為4K Hz 0X9C
OpenTimer2(TIMER_INT_OFF&T2_PS_1_4&T2_POST_1_1); //開啟TIMER2 1_4、1_1
PWM1CON=0xFF; // 開啟自動重新開啟並設定空乏延遲時間為128 Tcy 0XFF
SetOutputPWM1 (HALF_OUT , PWM_MODE_1); // 設定為半橋式,所有腳位active high HALF_OUT PWM_MODE_1
SetDCPWM1(0); // 初始化PWM工作周期為0
ECCP1AS=0x42; // 按壓FLT0時馬達為逆轉。

OpenTimer1( TIMER_INT_ON & // 初始化計時器Timer1
T1_16BIT_RW &
T1_SOURCE_EXT &
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_OFF );
WriteTimer1(0x8000); //0x8000=1sec @32786Hz Crystal

PIR1bits.TMR1IF = 0; // 清除中斷旗標
INTCONbits.PEIE = 1; // 啟動週邊中斷功能
INTCONbits.GIE = 1; // 啟動全部的中斷功能

while (1) { // 永久迴圈
if(update) {
PORTDbits.RD0=~PORTDbits.RD0; // 每秒閃爍

++sec; // 將秒數遞加
if (sec >= 60) sec-=60; // 作進位處理

update=0; // 清除更新旗標
}
if (sec == 0)
SetDCPWM1(512); // 開啟PWM,須配合RB0按鍵 //512
else if (sec == 10) // sec == 0
SetDCPWM1(0); // 關閉PWM SetDCPWM1(0)
}
}

附加檔案:



jpg  正轉.jpg (142.50 KB)
48397_5881e4720b3ff.jpg 1477X1108 px

1月20日 18:23:09
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088221 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project