สวัสดีครับ พี่ๆ เพื่อนๆ ชาว 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 ขา]
โดยวงจรต่อดังภาพด้านล่างนี้ครับ
การทดลองกด SW เพื่อตั้งค่าการทำงาน โดยผมเขียนโปรแกรมทดสอบดังนี้ ครับ
#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 คร่อมก่อนออกไฟอาจไม่เรียบ หรือเปล่า
ขอความช่วยเหลือหน่อยครับ