컨트롤러"날

M

member_tdh

Guest
안녕 모두!
난 DC 모터 (1KW) 컨트롤 프로젝트를 준비해 놓았습니다.내가했지만 10kHz의 PWM 펄스를 생성 successed하지 않으려고 애썼어요.아무도 방법을 사용하여 10kHz의 IC는 AT89C52의 PWM 펄스를 생성하는 날 hepl 수있다.
모두 고마워요!

 
다음과 같은 방법의 PWM .. Timer0 인터럽트를 사용하여 생성하는 방법에 대한 예제입니다

만약 당신이 더 이상 문제가 시도하고 그것을 따르도록 - 다시 자 ..
http://www.iguanalabs.com/pwm.htm

안부,
IanP

 
안녕하세요!
난 아무도 나를 도와 C language.Can에 의해 코드를 쓰고 싶어!

 
member_tdh :
아무런 작업을하지 않으면 당신이 칩주고, 10,000 PWM을 생산 AT89c52 사용하는 몇 가지는 것이 현명합니다.
그러나, 나는 당신의 질문에 대답한다.
Keil C를 사용을 C 프로그램을 컴파일하고

/ /를 사용하여 24 분 발진기

T0_Init_Data 0x38 정의 #
sbit PWM_Pin = P0 ^ 0;
서명 숯불 High_V_Data;
서명 숯불 Low_V_Data;
서명 숯불 = 0 PWM_Flag;

무효 Init_T0 (무효) / / 시작 T0
(
TH0 = T0_Init_Data;
TL0 = TH0;
/ / T0를 사용하여 타이머 기능과 운영 모드 2
TMOD & = 0xf8;
TMOD = 0x02;
/ / 인터럽트 활성화
EA 코리아 = 1;
ET0 = 1;
)

무효 Set_PWM (서명 숯불 데이터) / / 매개 변수의 PWM 높은 voltage.The 데이터의 범위 :0 의미 --- (0xff - T0_Init_Data)
(
/ / 타이머를 정지시키고 T0
TR0 = 0;
/ / 새로운 PWM을 매개 변수를 설정
High_V_Data = 0xff - (T0_Init_Data 데이터);
Low_V_Data = 데이터;

= 1 PWM_Flag;
TH0 = High_V_Data;
/ / 타이머 시작 T0
TR0 = 1;
)

/ / T0 오버플로 중단없이 제공
무효 int_T0 1 인터럽트
(
만약 () == 1 PWM_Flag
(
PWM_Pin = 0;
= 0 PWM_Flag;
TH0 = Low_V_Data;
)
만약 () == 0 PWM_Flag
(
PWM_Pin = 1;
= 1 PWM_Flag;
TH0 = High_V_Data;
)
)

내가 거기에 프로그램에 어떤 실수를하면, 내가 그것에 대해 사과 51Core 칩을 사용하지 않은 긴 시간이다.
질문이 있으면, 내게 이메일을 보내 PLZ - 메일 : aaaaaaaaaalyl (를) 163.com
당신을 도와 최선을 다할 것입니다.

 
안녕!
이건 내 테스트 소스입니다 : (. C) 귀하의 코드는 다음과 같은 당신,하지만 날 잘 gived이 코드가 실행되지 않습니다.불러 위해 그것을 고칠 수 있을까요?
감사합니다!

무효 Init_T0 (무효)
(
TMOD | = 0x22; / / Timer1, 모드 2, Timer0, 모드 2
TH0 = T0_Init_Data;
TL0 = TH0;
ET0 = 1;
EA 코리아 = 1;
)

무효 Set_PWM (바이트의 PWM)
(
TR0 = 0;
High_V_Data = 0xff - (T0_Init_Data 의 PWM);
Low_V_Data = PWM을;
= 1 PWM_Flag;
TH0 = High_V_Data;
TR0 = 1;
)

무효 int_T0 () TF0_VECTOR 인터럽트 / / 1
(
만약 (PWM_Flag & 1)
(
PWM_Pin = 0;
= 0 PWM_Flag;
TH0 = Low_V_Data;
)
그 밖의
(
PWM_Pin = 1;
= 1 PWM_Flag;
TH0 = High_V_Data;
)
)

무효의 main (무효)
(
Init_T0 ();

(1) 동안
(
Set_PWM (pwm_val);
SenChr (PWM_Pin);

만약 (Inc_pwm_val == 0)
(
지연 (12000);
반면 (Inc_pwm_val == 0)
(
pwm_val = 1;
(pwm_val "250) pwm_val = 250; 경우
)
)
그 밖의
(
만약 (Dec_pwm_val == 0)
(
지연 (12000);
반면 (Dec_pwm_val == 0)
(
pwm_val - = 1;
만약 (pwm_val "5) pwm_val = 5;
)
)
)

) / / 끝
) / / 끝 주

 
안녕하세요 IanP,

이 페이지를 열 수없습니다와 나는 동일한 문제가 생겼다

내가 어셈블리 코드가 필요합니다 ...2006년 3월 23일 10시 11분 다시 : 내 AT89c52하여 DC 모터 제어 10kHz의 PWM 도움이

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

다음과 같은 방법의 PWM .. Timer0 인터럽트를 사용하여 생성하는 방법에 대한 예제입니다

만약 당신이 더 이상 문제가 시도하고 그것을 따르도록 - 다시 자 ..
h ** P는 : / / www.iguanalabs.com / pwm.htm

안부,
대규모 공격

 
그것은 IGUANALABS 서버처럼 보이거나 문제가있다가 사라 졌어요 ..
한편, 아마도이 짧은 예제를 사용하여 당신 언제가 될 것입니다 ..
코드 :

$ NOPAGING

$ MOD252; 8051와 PWMORG를 0000h

LJMP 시작ORG를 000Bh

LJMP 타이머시작 :

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, # 255d

다시 :

inc

mov B 조, R0

cjne, B 조, Next_1

CLR을 P2.0

Next_1 :

mov B 조, R1

cjne, B 조, Next_2

CLR을 P2.1

Next_2 :

mov B 조, R2는

cjne, B 조, Next_3

CLR을 P2.2

Next_3 :

, # 255d, 다시 cjne

mov P2, # 11111111b

다시 ljmp타이머 :

inc R0

inc R1

inc R2는

mov TH0, # 11101010b

mov TL0, # 01111001b

reti끝
 
AT89c52 .........와 함께 사용 SG3525다음 U 아주 좋은 결과를 얻을 수 20kHz의 PWM을 생성할 수

 
이 링크는 비록 그것이 의도적인 PCB의 훈련을 컨트롤러로 사용하려고, 그것을 다른 DC 모터와 함께 작동, 난 이미 훌륭한 모양에있는 모든 년이 아직도 일을했습니다.

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

 

Welcome to EDABoard.com

Sponsor

Back
Top