me 10kHz PWM para control de motor DC por AT89C52

M

member_tdh

Guest
Hola a todos!!
Tengo un proyecto es el control de un motor de CC (1KW).Traté de generar PWM pulso a 10kHz, pero no le sucedió.¿Puede alguien me hepl cómo generar PWM pulso a 10kHz uso IC AT89C52.
Gracias a todos!!!

 
He aquí un ejemplo de cómo generar PWM utilizando timer0 interrupción ..

Trata de seguir y si usted tiene otros problemas - volver ..
http://www.iguanalabs.com/pwm.htm

Recuerdos,
IANP

 
Hi!
Quiero escribir un código por language.Can C alguien me ayude!

 
member_tdh:
No es aconsejable utilizar un AT89C52 producir PWM de 10 km, a menos que las tareas que le asigne el chip es unos pocos.
Sin embargo, voy a responder a su pregunta.
Utilice Keil C para compilar el programa siguiente de C

/ / Usar oscilador 24M

# 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;

Init_T0 (void) / / T0 iniciar
(
TH0 = T0_Init_Data;
TL0 = TH0;
/ / Función de uso T0 temporizador y modo de operación 2
TMOD & = 0xF8;
TMOD = 0x02;
/ / activar la interrupción
EA = 1;
ET0 = 1;
)

void Set_PWM (datos unsigned char) / / el parámetro significa rango de datos voltage.The PWM Alto :0 --- (0xff-T0_Init_Data)
(
/ / Stop Timer T0
TR0 = 0;
/ / conjunto de parámetros PWM nuevo
High_V_Data = 0xff-(T0_Init_Data datos);
Low_V_Data = datos;

PWM_Flag = 1;
TH0 = High_V_Data;
/ / temporizador T0 inicio
TR0 = 1;
)

/ / Interrupción de desbordamiento de servir T0
void int_T0 interrupción 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;
)
)

Es un tiempo que no he 51Core uso de chips, si hay algún error en el programa, me disculpo por eso.
Si alguna pregunta, plz enviarme un E-mail: aaaaaaaaaalyl (a) 163.com
Haré lo posible por ayudarle.

 
hola!
esta es mi fuente de prueba: (. c) después de su código que gived mí, pero este código no se ejecuta bien.Can u arreglarlo para mí?
gracias!

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

void Set_PWM (PWM BYTE)
(
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 () interrumpir TF0_VECTOR / / 1
(
if (PWM_Flag & 1)
(
PWM_Pin = 0;
PWM_Flag = 0;
TH0 = Low_V_Data;
)
algo más
(
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)
(
retraso (12000);
while (Inc_pwm_val == 0)
(
pwm_val = 1;
if (pwm_val> 250) pwm_val = 250;
)
)
algo más
(
if (Dec_pwm_val == 0)
(
retraso (12000);
while (Dec_pwm_val == 0)
(
pwm_val-= 1;
if (pwm_val <5) pwm_val = 5;
)
)
)

) / / Fin mientras
) / / Fin principal

 
hi IANP,

esta página no se puede abrir y tengo el mismo problema

Necesito el código de montaje ...23 de marzo 2006 10:11 Re: help me 10kHz PWM para control de motor DC por AT89C52

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

He aquí un ejemplo de cómo generar PWM utilizando timer0 interrupción ..

Trata de seguir y si usted tiene otros problemas - volver ..
h ** p: / / www.iguanalabs.com / pwm.htm

Recuerdos,
Massive Attack

 
Parece que el servidor IGUANALABS tiene problemas o se ha ido ..
Mientras tanto, tal vez este ejemplo de corta duración serán de ninguna utilidad para usted ..
Código:

NOPAGING $

$ MOD252; 8051 y PWMORG 0000h

LJMP InicioORG 000Bh

LJMP TimerInicio:

mov TMOD, # 00000001b

mov TH0, # 11101010b

mov TL0, # 01111001b

TR0 SETB

ET0 SETB

EA SETB

mov R0, # 0D

mov R1, # 85D

mov R2, # 170D

MOV P2, # 11111111b

mov A, # 255D

Una vez más:

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

Una vez más ljmpTimer:
R0 inc

R1 inc

R2 inc

mov TH0, # 11101010b

mov TL0, # 01111001b

Retifinal
 
SG3525 uso con el ......... AT89C52y generar el PWM 20kHz entonces u obtendrá muy buenos resultados

 
Pruebe este enlace aunque haya sido utilizado intencionadamente como controlador de perforación PCB, que funciona con motor de CC, ya he hecho esto y todavía en buena forma todos los años.

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

 

Welcome to EDABoard.com

Sponsor

Back
Top