hjælpe mig 10kHz PWM at kontrollere DC-motor ved AT89c52

M

member_tdh

Guest
Hej alle!
Jeg har et projekt er kontrol en DC-motor (1KW).Jeg forsøgte at generere puls PWM på 10kHz, men ikke successed.Kan nogen hepl mig hvordan man generere puls PWM på 10kHz benytte IC AT89C52.
Tak alle!

 
Her er et eksempel på hvordan man kan generere PWM hjælp Timer0 Interrupt ..

Prøv at følge det, og hvis du har yderligere problemer - kommer tilbage ..
http://www.iguanalabs.com/pwm.htm

Hilsen,
IanP

 
Hej!
Jeg vil gerne skrive en kode med C language.Can nogen hjælpe mig!

 
member_tdh:
Det er ikke klogt at bruge en AT89c52 producere 10K PWM, med mindre opgaver, du giver chippen er få.
Men jeg vil besvare dit spørgsmål.
Brug Keil C til at udarbejde følgende C-programmet

/ / Brug 24M oscillator

# define T0_Init_Data 0x38
sbit PWM_Pin = P0 ^ 0;
unsigned char High_V_Data;
unsigned char Low_V_Data;
unsigned char PWM_Flag = 0;

void Init_T0 (void) / / indlede T0
(
TH0 = T0_Init_Data;
TL0 = TH0;
/ / T0 brug Timer funktion og driftsmåde 2
TMOD & = 0xf8;
TMOD = 0x02;
/ / give interrupt
EA = 1;
ET0 = 1;
)

void Set_PWM (unsigned char data) / / den parameter betyder PWM høj voltage.The data sortiment :0 --- (0xff-T0_Init_Data)
(
/ / stop T0 timer
TR0 = 0;
/ / sæt nye PWM parameter
High_V_Data = 0xff-(T0_Init_Data data);
Low_V_Data = data;

PWM_Flag = 1;
TH0 = High_V_Data;
/ / start T0 timer
TR0 = 1;
)

/ / T0 overflow afbrydelse tjene
void int_T0 afbryder 1
(
if (PWM_Flag == 1)
(
PWM_Pin = 0;
PWM_Flag = 0;
TH0 = Low_V_Data;
)
if (PWM_Flag == 0)
(
PWM_Pin = 1;
PWM_Flag = 1;
TH0 = High_V_Data;
)
)

Det er lang tid, jeg har ikke brug 51Core chip, hvis der nogen fejl i programmet, jeg undskylder for det.
Hvis nogen spørgsmål, plz sende mig en E-mail: aaaaaaaaaalyl (at) 163.com
Jeg vil gøre mit bedste for at hjælpe dig.

 
hej!
dette er min test kilde: (. c) efter din kode, som du gived mig, men denne kode er ikke fint køre.Kunne u ordne det for mig?
tak!

void Init_T0 (void)
(
TMOD | = 0x22; / / Timer1, mode 2, Timer0, mode 2
TH0 = T0_Init_Data;
TL0 = TH0;
ET0 = 1;
EA = 1;
)

void Set_PWM (BYTE PWM)
(
TR0 = 0;
High_V_Data = 0xff-(T0_Init_Data PWM);
Low_V_Data = PWM;
PWM_Flag = 1;
TH0 = High_V_Data;
TR0 = 1;
)

void int_T0 () afbryder TF0_VECTOR / / 1
(
if (PWM_Flag & 1)
(
PWM_Pin = 0;
PWM_Flag = 0;
TH0 = Low_V_Data;
)
anden
(
PWM_Pin = 1;
PWM_Flag = 1;
TH0 = High_V_Data;
)
)

void main (void)
(
Init_T0 ();

while (1)
(
Set_PWM (pwm_val);
SenChr (PWM_Pin);

if (Inc_pwm_val == 0)
(
forsinkelse (12000);
while (Inc_pwm_val == 0)
(
pwm_val = 1;
if (pwm_val> 250) pwm_val = 250;
)
)
anden
(
if (Dec_pwm_val == 0)
(
forsinkelse (12000);
while (Dec_pwm_val == 0)
(
pwm_val-= 1;
if (pwm_val <5) pwm_val = 5;
)
)
)

) / / End mens
) / / End vigtigste

 
hi IanP,

denne side kan ikke åbne, og jeg har samme problem

Jeg har brug for montering kode ...23 marts 2006 10:11 Re: hjælp mig 10kHz PWM at kontrollere DC-motor ved AT89c52

-------------------------------------------------- ------------------------------

Her er et eksempel på hvordan man kan generere PWM hjælp Timer0 Interrupt ..

Prøv at følge det, og hvis du har yderligere problemer - kommer tilbage ..
h ** p: / / www.iguanalabs.com / pwm.htm

Hilsen,
massive angreb

 
Det ligner IGUANALABS server har problemer, eller det er gået ..
I mellemtiden, måske dette korte eksempel vil være til nogen nytte for dig ..
Kode:

$ NOPAGING

$ MOD252, 8.051 og PWMORG 0000h

LJMP StartORG 000Bh

LJMP TimerStart:

mov TMOD, # 00000001b

mov TH0, # 11101010b

mov TL0, # 01111001b

setb TR0

setb ET0

setb EA

mov R0, # 0d

mov R1, # 85D

mov R2, # 170d

mov P2, # 11111111b

mov A, # 255d

Igen:

inc A

mov B, R0

cjne A, B, Next_1

CLR P2.0

Next_1:

mov B, R1

cjne A, B, Next_2

CLR P2.1

Next_2:

mov B, R2

cjne A, B, Next_3

CLR P2.2

Next_3:

cjne A, # 255d, Again

mov P2, # 11111111b

ljmp IgenTimer:

inc R0

inc R1

inc R2

mov TH0, # 11101010b

mov TL0, # 01111001b

Retiende
 
brug SG3525 med AT89c52 .........og generere 20kHz pwm derefter u vil få meget gode resultater

 
Prøv dette link om det var forsætligt anvendes som PCB bore controller, det virker med andre DC-motor, har jeg allerede gjort det, og stadig er i god form alle de år.

http://www.web-ee.com/Electronic-Projects/projects/pcb_drill/index.shtml

 

Welcome to EDABoard.com

Sponsor

Back
Top