Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: mararm on July 14, 2013, 04:21:59 PM



Title: PIC microcontroller กับ มอเตอร์ 24 V DC
Post by: mararm on July 14, 2013, 04:21:59 PM
สวัสดีครับ พี่ๆ เพื่อนๆ ชาว thaimicrotron ทุกท่านครับ วันนี้ผมีข้อสงสัยเกี่ยวกับการทำงานของ PIC ใช่ร่วมกับ DC MOTOR

อุปกรณ์
1. PIC 18F452 ต่อ Crystal ภายนอก 4MHz
2. ULN2003A
3. DC MOTOR 24V
4. Adapter 5V By ETT
5. หม้อแปลง 24 V AC
6. DB104G [Diode Bridge ชนิด IC 4 ขา]

โดยวงจรต่อดังภาพด้านล่างนี้ครับ

(http://www.uppic.org/image-02FF_51E26C87.jpg) (http://www.uppic.org/share-02FF_51E26C87.html)

การทดลองกด SW เพื่อตั้งค่าการทำงาน โดยผมเขียนโปรแกรมทดสอบดังนี้ ครับ

Code:
#define m1_L PORTC.F0
#define m1_R PORTC.F1
#define m2_L PORTC.F2
#define m2_R PORTC.F3
char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int j=0;

void interrupt ()
{
     j++;
     delay_ms(125);
     if(j>4)j=0;
     INTCON.INT0IF=0;
}

void main()
{
     TRISB=0x01;
     TRISD=0;
     TRISC=0;
     j=0;
     m1_L=0;m1_R=0;
     m2_L=0;m2_R=0;
     INTCON2.INTEDG0=0;
     INTCON.INT0IE=1;
     INTCON.INT0IF=0;
     INTCON.GIE=1;
     while(1)
     {
             if(j==1)
             {
                     PORTD=segment[j];
                     m1_L=1;
                     while(j==1){delay_ms(100);}
             }else
             if(j==2)
             {
                     PORTD=segment[j];
                     TRISB=0;
                     m1_L=0;
                     delay_ms(1000);
                     m2_L=1;
                     delay_ms(5000);
                     m2_L=0;
                     delay_ms(500);
                     m2_R=1;
                     while(j==2){TRISB=0x01;delay_ms(100);}
             }
             if(j==3)
             {
                     PORTD=segment[j];
                     m2_R=0;
                     while(j==3){delay_ms(100);}
             }
             if(j==4)
             {
                     PORTD=segment[j];
                     m1_R=1;
                     while(j==4){delay_ms(100);}
             }else
             {
                     PORTD=segment[j];
                     delay_ms(50);
                     m1_L=0;m1_R=0;
                     m2_L=0;m2_R=0;
             }
     }
}

การทดลองผ่านโปรแกรม Simulate อย่าง Proteus ผ่านไปด้วยดี จากนั้นลอง Burn โดยใช้โปรแกรม PICkit2 ของทาง Microchip และตัว โปรแกรม PICkit USB V.2 ของทาง ETT ทำการโปรแกรม

การทำเงานเมื่อต่อ relay 5 V ออกมาได้อย่างไม่มีปัญหา แต่พอหลังจาก ต่อมอเตอร์เท่านั้นแหล่ะครับ รวนอย่างกะปืนกล แต่ไม่ถึงกับดับนะครับ ก็ทำงานอยู่แต่ข้ามสเตป ไปๆ มาๆ ครับ เพราะงั้นผมคิดว่าปัญหาน่าจะมาในช่วงของการต่อมอเตอร์ ที่ผมต่อควรมีอะไรค่อมมอเตอร์ หรือ ค่อมรีเลย์ไว้ไหมครับ หรือต่ออย่างนี้ก็ได้ แล้วทำไม IC ถึงเพี้ยนเวลาต่อกับ motor หล่ะครับ ตอนไม่ต่อก็ปกตินะครับ

ไฟของ IC และไฟของ มอเตอร์คนละตัวกันนะครับ หม้อแปลง AC 24V ผ่าน Bridge ไม่ได้เอา C คร่อมก่อนออกไฟอาจไม่เรียบ หรือเปล่า

ขอความช่วยเหลือหน่อยครับ


Title: Re: PIC microcontroller กับ มอเตอร์ 24 V DC
Post by: MicroX on July 15, 2013, 04:42:03 PM
ปกติแล้ว power supply ที่จ่ายให้ไมโครฯ จะแยกกับ power supply ที่จ่ายให้โหลดที่ใช้กระแสสูงๆครับ
- อาจจะแยกหม้อแปลง หรือต่อโหลดนอก Regulator ครับ
ลองดู
http://www.thaimicrotron.com/webboard2/index.php/topic,945.msg2441.html#msg2441


Title: Re: PIC microcontroller กับ มอเตอร์ 24 V DC
Post by: mararm on July 27, 2013, 01:11:47 AM
ขอบคุณมากมายเลยครับ ^^
เด่วผมขอไปลองก่อนนะครับ ขอบคุณครับ