Page 848 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 848

ARM프로세서에서  출력되는  명령을  스위치로  회로를  구성했다.  평소에는  PA0,  1  그리고

            PD0번은  LOW신호가  입력되다가,  스위치를  누르게  되면  High  신호를  입력  받아  알맞은  동작
            을  하게  된다.  스위치를  위에서부터  순서대로  S1,  S2,  S3라고  하면,  S1을  눌렀을  때(RFID  태
            그  인식)  M4(벨트)가  돌아가기  시작하고,  M1(문)이  3초  정방향  회전  ->  2초  정지  ->  3초  역

            방향  회전을  하게  된다.  S2를  눌렀을  때(금속센서인식)는  M2가  0.1초  정방향  회전  ->  8초  정
            지  ->  0.1초  역방향  회전을  하게  된다.  S3를  눌렀을  때(포토센서&정전센서인식)는  M3가  0.11
            초  정방향  회전  ->  8초  정지  ->  0.11초  역방향  회전을  하게  된다.
            2) 프로그램 설명
              ARM프로세서의  출력명령을  입력받아,  명령에  따라  모터를  알맞게  구동하는  프로그램이다.

            먼저  L298의  ENABLE핀에  PWM파형을  넣어  줘야하기  때문에  PORTB의  5번핀인  OC1A에서
            PWM파형을  출력하는  함수  pwm()을  만들었다.  그리고  쓰레기를  분류해주는  모터는  delay를
            사용해  제어하였다.  ARM프로세서의  출력명령을  입력받는  PA0,  1과  PD0은  DDR이라는  명령어

            를  사용하여  입력으로  설정하였고,  모터가  연결되어  있는,  PD6과  PORTB는  출력으로  설정해
            주었다.  입력  핀이  1이  되면  각각에  맞는  동작을  할  수  있도록  if문으로  작성하였다.

             #include <tiny2313.h>
             #include <delay.h>
             void pwm(void)          //L298 ENABLE
             {
                 TCCR1A=0x31;        //비교매치  OC1B, Phase Correct모드
                 TCCR1B=0x05;        //1024분주

                 TCCR1C=0x00;
                 TIMSK=0x20;         //OCIE1B인터럽트  인에이블

                 OCR1B=100;
             }
             void main()
             {
                 DDRB=0xff;          //모터구동, L298을  구동하기위한  pwm파형  출력
                 DDRD=0xf0;          //PIND.0(입력), 모터구동
                 DDRA=0x00;          //ARM의  출력명령  입력

                 pwm();              //L298 enable
                 while(1)
                 {
                     if(PINA.0==1){  //RFID태그  인식
                         PORTB=0x81;     //컨베이어벨트  동작, 문열림

                         delay_ms(3000);
                         PORTB=0x80;
                         delay_ms(2000);
                         PORTB=0x82;     //문닫힘

                         delay_ms(3000);



                                                         -  841  -
   843   844   845   846   847   848   849   850   851   852   853