AC 모터 작동
 두달 전에 했던걸 교수님의 다시 설명해 보라는 말씀에 작성.

      1. 과제 내용 : AC 모터를 작동시키고, 스위치 두개를 이용하여 속도를 조절함
   
      2. 사용 칩셋 :
AT908535, NPN 트랜지스터, 직류모터
    
      3. 회로도 :


  :     각각의 스위치를 누르면 PD4, PD5 포트에 0V 가 입력되게 되며 이 0V 신호를 판단하여 속도를 올리거나 줄이게
하였습니다.

       속도는 모터에 주는 신호를 20ms 를 주기로 하여 20ms 동안 HIGH 신호를 주면 FULL-SPEED 가 되고,
10ms HIGH-10ms LOW 를 연속적으로 주면 HALF-SPEED,
  20ms LOW 를 연속적으로 주게 되면 모터가 멈추게
됩니다.

        AT908535에서 출력되는 전류는 1mA 정도로 모터를 돌리기에는 부족하여 2SC1815 NPN 트랜지스터를 사용하여
전류를 증폭하였습니다.

        사용한 포트는 PD4,PD5(스위치용),PD7(AC모터용) 3개 이며, 레지스터는 HIGH 출력과 LOW출력의 시간간격을
주기위해서만 사용하였습니다.


4. 순서도


5. 프로그램

 

.INCLUDE "8535DEF.INC" 

 

.DEF TEMP = R16

.DEF DELAY_TERM = R20

 

.CSEG       

.ORG 0       

 

RJMP     RESET               

 

RESET:                        ; 스택 포인터를 초기화합니다.

 

 LDI  TEMP, LOW(RAMEND)

 OUT  SPL, TEMP

 LDI  TEMP, HIGH(RAMEND)

 OUT  SPH, TEMP

 LDI  DELAY_TERM,100       ; 초기 DELAY_TERM 은 100을 주었습니다. 최대는 200입니다. DELAY_TERM 에 100을 준다면 10ms 동안 HIGH 신호를, 10ms 동안 LOW 신호를 내게 됩니다.

 

 RJMP MAIN

 

MAIN:

 

 LDI R19,200               ; R19 레지스터를 이용하여 LOW 신호 시간을 조절합니다. R19 DELAY_TERM 이 LOW를 출력하는 시간이 됩니다.

 

 RCALL MOTOR_ON         ; MOTOR_ON은 DELAY_TERM 에 입력된 시간만큼 HIGH 신호를 주고 20ms DELAY_TERM 시간만큼 LOW 신호를 주는 함수입니다.

 

 SBIS PIND,PD4               ; PD4 가 LOW 신호를 받으면 SPEED_UP으로 갑니다.

 RCALL SPEED_UP

 SBIS PIND,PD5                ; PD5 가 LOW 신호를 받으면 SPEED_DOWN으로 갑니다.

 RCALL SPEED_DOWN

 

 RJMP MAIN

 

SPEED_UP:

 

    INC DELAY_TERM

       RCALL SPEED_BUTTON  ; SPEED_BUTTON 을 쓴 이유는 버튼을 누르고 있을 때 속도변화가 심하여 누르고 있어도 조금씩 속도가 변하게 하기 위함입니다.

 

       RCALL MOTOR_ON

 

       SBIS PIND,PD4

       RJMP SPEED_UP

       RET

 

SPEED_DOWN:

 

    DEC DELAY_TERM

       RCALL SPEED_BUTTON

 

       RCALL MOTOR_ON

 

       SBIS PIND,PD5

       RJMP SPEED_DOWN

       RET

 

MOTOR_ON:

SBI PORTD,PD7

 SBI DDRD,PD7

 

 RCALL DELAY_HIGH

 

 CBI PORTD,PD7

 SBI DDRD,PD7

 

 RCALL DELAY_LOW

 RET

 

SPEED_BUTTON:     ; 1 클럭은 250ns 의 시간을 소모합니다. 아래 명령의 클럭을 계산해보면 250ns X 26 X 250 X 2 =0.0032초 가량 됩니다.(RET 4클럭과, BRNE 이 TRUE 일때 2클럭은 값이 작기 때문에 계산에서 제외하였습니다.)

 

       LDI R17,250

CC: LDI R16,26

C:  DEC R16

       BRNE C

       DEC R17

       BRNE CC

       RET


 

by 부리부리 | 2007/06/18 14:48 | 트랙백 | 덧글(1)
트랙백 주소 : http://jongnam2.egloos.com/tb/3517254
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 이주영 at 2008/10/29 13:27
모터 작동 8535 프로그램을 보았는데 어떻게 입력하는지 궁금하고 정확한 설명관계로 그쪽과 연락을 한번 해봤으면 좋겠습니다 가능하시다면 연락처를 메일로 보내주세요
부탁드립니다. temgs@nate.com

:         :

:

비공개 덧글

next


책과 여행
by 부리부리
카테고리
전체
느낌
여행

영화
--------------------
메모리얼대학에서
사막
이전블로그
2007년 12월
2007년 11월
2007년 10월
2007년 09월
2007년 08월
2007년 07월
2007년 06월
2007년 05월
2007년 04월
2007년 03월
2007년 02월
2007년 01월
2006년 12월
2006년 11월
2006년 05월
2006년 04월
2006년 03월
이글루링크
Losing grip
하늘호수
최근 등록된 덧글
모터 작동 8535 프로그램을..
by 이주영 at 10/29
네 안에 잠든 거인을 꺠워..
by 앤서니 at 09/15
나 별로 바쁘지 않은데....
by 부리부리 at 09/17
조니뎁 정말 좋아하는뎅..
by 세혀니 at 09/16
네..~ 좋아요^^;
by 부리부리 at 09/14
와..저도 얼른 떠나고 ..
by 인디고블루 at 09/14
요즘 생각이 많은가봐~~
by 하늘호수 at 09/05
돌아 왔구나^^ 한국이..
by 세현이 at 09/04
재밌다고 느끼는 일을 ..
by 하늘호수 at 08/31
이런.. 넌 나를 전혀 몰..
by 부리부리 at 08/24

skin by 꾸자네