질문게시판 > pwm DC모터 속도 제어

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

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


BASIC4MCU | 질문게시판 | pwm DC모터 속도 제어

페이지 정보

작성자 원장 작성일2018-09-30 06:42 조회41,530회 댓글4건

본문

	

드론을 제작하기에 앞서 모터드라이버를 고르는 과정에서

BJT 트랜지스터로 할 수 있다 하여 일단 실험용으로 가지고 있던

2N3904 로 실험을 해보았습니다.

 

동작하려고 하는 모터의 사양은

모터=전압: 3~5V, 전류: 150mA / 배터리=3.7V, 600mAh

입니다.

 

aa70fe7e179954eb0f561a297c1262ff_1538255672_3726.png

회로는 위와 같이 브레드보드에 꾸며 실험을 진행하였습니다.

 

mcu는 PIC18F452이며, CCS-C를 이용하였습니다.

 

#include <18F452.h>

#FUSES NOWDT, HS, PUT, NOPROTECT, NOBROWNOUT, NOCPD, NODEBUG

#device *=16 adc=10

#use delay(clock=20000000)

#use RS232(baud=9600, parity=N, xmit=PIN_C6, rcv=PIN_C7)

 

#include

 

#byte TRISA=0xf92

#byte TRISC=0xf94

 

#byte PORTC=0xf82

#bit  PC2=PORTC.2

 

#byte T2CON=0xFCA

#byte PR2=0xFCB

 

#byte CCP1CON=0xFBD

#bit  DCxB0=CCP1CON.4

#bit  DCxB1=CCP1CON.5

#byte CCPR1L=0xFBE

 

//Reset Vector Address

#build(reset=0x200)

//Intterupts Vector Address

#build(interrupt=0x208)

 

//Bootloader Area

#org 0x0000,0x01ff

void bootloader() 

{

#asm

  nop //No Operation

#endasm

}

 

void main()

{

 long value, data;

 char duty[5];

 char ch;

 

 TRISA=0x02;

 TRISC=0x80;

 //CCP1 pin을 출력 할당, PIN_C6 출력할당, PIN_C7입력할당 

 

//PWM주파수: 4.88KHz, 100%Duty rate: 1024

T2CON=0x05;

PR2=255;

 

PC2=0;

 

while(1) { 

      printf("duty값 입력: ");

      gets(duty);

      value=atol(duty);

      puts(duty);

      printf("\n\r");

       

      //start 

      CCP1CON=0x0C;

      PC2=1;

       

      data=value;

      DCxB0=(short)data;

      DCxB1= (short)(data>>1);

      CCPR1L=(unsigned int)(value >> 2);

 

      delay_ms(5000);

      

      //stop

      CCP1CON=0x00;

      PC2=0;

  }

}

 

Duty rate는 1024 , PWM주파수는 4.88kHz, PWM주기는 204.8uS

가 되도록 설정하였고

문자값을 받으면(Duty rate값을 받으면) long형으로 바꿔 value에 저장하고

value값을 이용해 약 5초간 모터가 동작하는 코딩을 작성하였습니다.

 

결론적으로는 모터는 Duty rate에 따라 속도도 조절되고

동작은 합니다.

다만 문제는 Duty rate의 100%값 즉 1024 까지 주어도

모터가 최대 속도로 동작하지를 않습니다.

 

배터리에 모터를 직접 연결해서 나오는 속도와

1024까지 준 값과 비교하면 속도가 좀 많이 느립니다.

 

코딩에 문제는 없는거 같고, 회로에 문제가 있나 싶지만

2N3904의 Ic 값도 데이터시트를 보면 200mA 이니 전류도 충분할 것 같습니다.

 

코딩에 문제일까요? 아니면 트랜지스터의 문제일까요? 아니면 회로적으로 문제가 있는걸까요?

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 4

조회수 41,530

master님의 댓글

master 작성일

100% 듀티에서 TR Vce를 측정하세요
TR베이스 저항을 줄여서 베이스 전류를 늘이면 Vce가 줄어듭니다.
2N3904 회로를 두개 병렬로 구성하면  Vce가 줄어듭니다. (2N2222A 1개 회로를 사용하는 것이 더 좋죠)
지난번에 알려드린대로 FET로 구성해서 돌려보세요

원장님의 댓글

원장 댓글의 댓글 작성일

데이터시트를 볼 때 DC 전류 이득도 봐야되는걸 자료를 더 검색하다가 알았네요. 작동여부 실험으로 사용한 거긴 하지만 2N3904는 DC 전류 이득을 보면 Vce가 굉장히 낮게 출력되더군요. 이러니 모터에 걸리는 Vc 도 낮아질수 밖에 없었고요. 일단 2N2222A를 구매해서 드론 제작을 진행해 볼 거지만 만약에 경우를 대비해서 MOSFET도 구매해보려고 하는데 보통 모터드라이버로 많이 사용하는 모델이 있나요?

master님의 댓글

master 댓글의 댓글 작성일

https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=3238
먼저번 글을 안 읽어보셨나봅니다.
//
TR이나 FET 종류도 굉장히 많고
모터 종류가 굉장히 많아서 모터 드라이버용이라는 것이 따로 없습니다.
모터에 맞는 것을 알아서 선택해야합니다.

원장님의 댓글

원장 댓글의 댓글 작성일

댓글만 확인했지 답글은 확인 안 했네요..그리고 BJT를 통해 모터동작을 위한 회로를 검색 하던 중 먼저 댓글로 알려주신 것과 똑같이 2N2222A를 사용하길래 흔히 많이들 사용하는 모델이 있나하고 착각했습니다..데이터시트 보는 방법과 모터 동작이 어떻게 되는건지 트랜지스터부터 다시 공부해봐야 겠네요. 답변 감사합니다!

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 17160
공지 사이트 이용 안내댓글[28] master 17-10-29 33558
질문 아두이노 코딩 에러 질문댓글[1] 이미지새글첨부파일 박무농 23-03-25 25
질문 아두이노를 이용한 타이머, 태양전지 제어댓글[2] 새글 박무농 23-03-25 28
질문 sd카드 이미지 전송댓글[1] 던지기마스터 23-03-24 14
질문 초음파센서를 이용한 모터제어 질문있습니다.댓글[3] 이미지첨부파일 뉴비에오 23-03-24 38
질문 부품 관련 문의댓글[1] 타코 23-03-23 23
질문 모터 작동 시, 일부 모듈이 꺼지는 현상에 대해 질문드립니다. 이미지 그렇찌 23-03-22 32
답변 답변글 답변 : 모터 작동 시, 일부 모듈이 꺼지는 현상에 대해 질문드립니다. 이미지 master 23-03-23 21
질문 ESP로 원격 모터제어를 할 수 있나용?댓글[1] 비차 23-03-22 26
질문 HC06을 마스터로 설정하면 HC06끼리만 통신되나요?댓글[4] 비차 23-03-21 34
질문 아두이노 제어하기댓글[3] 매드닥터 23-03-19 56
질문 atmega128 압력센서 관련 질문입니다댓글[1] 공린이 23-03-19 65
질문 아두이노 스텝모터 각도제어 질문댓글[3] master 23-03-17 67
질문 아두이노와 파이썬(중점좌표) 시리얼 통신 질문드립니다.댓글[1] 이미지첨부파일 아두이노어렵잖아 23-03-16 51
질문 아두이노 3LED 버튼 관련 질문댓글[1] 이츤 23-03-16 51
질문 ATmega328p로 pca9685를 이용하여 서보모터(mg996r, mg90s)를 pwm로 제어 중 떨림댓글[1] 이미지첨부파일 토비 23-03-15 53
질문 hm-10 다중연결 질문있습니다.댓글[1] 첨부파일 뉴비에오 23-03-14 45
질문 while loop 실행 속도댓글[1] 412904 23-03-12 69
질문 AND 연산 질문드립니다.댓글[1] 412904 23-03-11 76
질문 아두이노 테트리스 게임댓글[1] 첨부파일 지욱애 23-03-02 157
질문 아두이노우노 블루투스 2개 연결댓글[1] dsfadfs 23-02-28 115
질문 스텝모터 코딩 질문입니다..댓글[2] 무야더싱 23-02-25 138
질문 아두이노 나노33 IOT 의 BLE 연결 문제 이미지 가루밀 23-02-24 80
질문 220V AC를 직류로 바꾸면 건전지 5V 건전지 55개를 대체할 수 있는건가요?댓글[1] hghh 23-02-22 103
질문 HM-10 모듈 사용하는데 질문있습니다.댓글[2] 뉴비에오 23-02-21 140
질문 아두이노 블루투스 관련 질문입니다. 생물공학도 23-02-21 106
답변 답변글 답변 : 아두이노 블루투스 관련 질문입니다. master 23-02-21 107
질문 자율주행 로봇을 만드는데 질문있습니다.댓글[2] 뉴비에오 23-02-18 175
질문 블루투스에서 아두이노로 신호전달에 대하여(2)댓글[1] 이미지첨부파일 밍경 23-02-14 198
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
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 ⓒ 2020
모바일버전으로보기