การควบคุมความเร็วมอเตอร์กระแสตรงแบบ PWM โดยใช้ไมโครคอนโทรลเลอร์
ส่วนประกอบวงจร
- 8051 ไมโครคอนโทรลเลอร์
- 11.0592 MHz Crystal
- ตัวเก็บประจุ - 33pF x 2, 10µF
- ตัวต้านทาน - 1KΩ x 4, 10KΩ x 2
- มอเตอร์ 12V DC
- L298N ขับมอเตอร์
- กดปุ่ม x 5
- 1KΩ x 8 ตัวต้านทานแบบดึงขึ้น
- สายเคเบิลอนุกรม
- แบตเตอรี่หรืออะแดปเตอร์ 12V
- สายเชื่อมต่อ
code
#include<reg51.h>
sbit PWM_Pin = P0^0;
sbit low = P0^4;
sbit medium = P0^5;
sbit high = P0^6;
sbit off = P0^7;
void InitPWM_timer(void);
unsigned char PWM = 0;
unsigned int temp = 0;
char a=1;
int main(void)
{
low=1;
medium=1;
high=1;
off=1;
PWM_Pin=0;
InitPWM_timer();
while(1)
{
if(low==0)
{
PWM=102;
a=0;
}
else if(medium==0)
{
PWM=153;
a=0;
}
else if(high==0)
{
PWM=255;
a=0;
}
else if(off==0)
{
a=1;
PWM_Pin=0;
}
}
}
void InitPWM_timer (void)
{
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = 0x00;
TL0 = 0x00;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void Timer0_ISR (void) interrupt 1
{
TR0 = 0;
if(PWM_Pin==1 && a==0)
{
PWM_Pin = 0;
temp = (255-PWM);
TH0 = 0xFF;
TL0 = 0xFF - temp&0xFF;
}
else if(PWM_Pin==0 && a==0)
{
PWM_Pin = 1;
temp = PWM;
TH0 = 0xFF;
TL0 = 0xFF - temp&0xFF;
}
TF0 = 0;
TR0 = 1;
}
ความคิดเห็น
แสดงความคิดเห็น