8051/PIC > DT516-201.c DC MOTOR PWM 제어 (ADC0 가변저항으로 속도 제어)

TODAY956 TOTAL678,623
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-201.c DC MOTOR PWM 제어 (ADC0 가변저항으로 속도 제어)

페이지 정보

작성자 키트 작성일2017-08-24 11:11 조회716회 댓글0건

첨부파일

본문

 

ADC0의 가변 저항을 조정 해서 ADC값을 읽은 후

그 값을 PWM 출력 해서 L298에 입력 합니다.

// filename: DT516-062.c // ADC 입력값 평균
// filename: DT516-043.c // PWM 6ch LED
두개 파일을 짜집기 해서 만들었습니다.

 

 

3660040644_JApxyTQL_dsc01667_ekit.jpg3Ftype3Dw7403660040644_sFI1uCvt_dsc01668_ekit.jpg3Ftype3Dw740

 

 

3660040644_tPcGjAiQ_dsc01670_ekit.jpg3Ftype3Dw740

L298 입력 두개 선중  한개 선은 5V에 연결 하고

L298  enable 신호도 5V에 연결 합니다.

3660040644_2mztq8vU_dsc01669_ekit.jpg3Ftype3Dw740

다른 한개 선은 PWM 출력에 연결 합니다.

 

3660040644_mU5x8MyD_dsc01665_ekit.jpg3Ftype3Dw740

저속의 PWM 출력

 

3660040644_HrME2ag7_dsc01666_ekit.jpg3Ftype3Dw740

고속의 PWM 출력

(신호선 1개가 5V에 연결 되었으므로 PWM출력은 LOW구간이 긴 것이 고속입니다.)

 

 

//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-062.c
// ADC 입력값 평균
// filename: DT516-043.c
// PWM 6ch LED
//-------------------------------------------------------------
// filename: DT516-201.c
// DC MOTOR PWM 제어 (ADC0 가변저항으로 속도 제어)
//-------------------------------------------------------------
#include
//
#include "DT516-main.h"
//
U_I count=0;
//
void Timer_0_Interrupt(void) interrupt 1{ // 7200Hz주기
    P4=0xFF; // FND OFF
    switch(FND_CNT){
        case 0: P0=Seg_Data[count/1000];     FND_COM1=0; break;
        case 1: P0=Seg_Data[(count/100)%10]; FND_COM2=0; break;
        case 2: P0=Seg_Data[(count/ 10)%10]; FND_COM3=0; break;
        case 3: P0=Seg_Data[count%10];       FND_COM4=0; break;
    }
    if(++FND_CNT>3)FND_CNT=0;
    //
    if(delay_buf){ if(--delay_buf==0)delay_flg=1; }
}
//
U_I read_ADC(U_C ch){ //ch:0~7
    ADCTL=0xE8|ch;   //ADC on & speed 270clk/start ADC //ch
    while(!(ADCTL & 0x10));
    return ADCH;
}
//
void main(){
    U_I i,sum;
    TMOD=2; ET0=1; TR0=1; EA=1;
    P1M0=1; P1M1=0; //P1.ch Hi-impedance input//ADCH=상위(BIT9,8) ADCL=하위
    while(1){
        sum=0;
        for(i=0;i<256;i++)sum+=read_ADC(0); count=sum>>7;
        if(count>255)count=255;
        //
        CCAP0H=CCAP0L=count; CCAPM0=0x42; CCON=(CCON|0x40); // PWM_Ch_0
        delay_ms(10);
        t_delay_ms(10);
    }
}

//-------------------------------------------------------------

댓글 0

조회수 716

등록된 댓글이 없습니다.

8051/PICHOME > 8051/PIC > 전체 목록

게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기