L293D를 이용하여 DC 모터의 방향 제어하기
DC 모터의 방향제어는 간단하다. 단지 극성을 반대로 하기만 하면 된다. 모든 DC 모터는 2개의 터미널로 전원을 공급받기 때문이다.
+와 –를 모터에 연결하면 한쪽 방향으로 모터가 돈다. 그런데 극성을 반대로 연결하게 되면 DC모터는 반대로 돌게 된다.
http://www.electroons.com/electroons/dc_motor_control.html
마이크로컨트롤러에서 5V와 0V 값을 변경함으로써 모터의 극성을 바꾸는 것도 가능할거 같지만 마이크로컨트롤러는 모터가 요구하는 5V보다 큰 전원을 입력하면 고장날 염려가 있다. 그래서 필요한 것이 H Bridge이다.
H Bridge 회로에는 4개의 스위치가 존재한다. 이 스위치를 이용하여 모터의 방향을 제어하는 게 가능하다. High side left와 Low Side right 스위치를 켜게되면 모터는 정방향으로 회전하게 된다.
반대편 쌍의 스위치들을 켜게되면 모터는 역방향으로 회전하게 된다.
L293D에선 2개의 터미널을 사용하여 아래와 같이 해주면 모터를 조정할 수 있다.
Input1 | Input2 | 모터 상태 |
0 | 1 | 정방향 회전 |
1 | 0 | 역방향 회전 |
0 | 0 | 모터 정지 |
1 | 1 | 모터 정지 |
L239D에서 0V라고 적힌 부분들은(4개) 모두 그라운드에 연결해주어야 합니다.
태스트삼아.. 포트C의 0번핀에 연결된 버튼을 누르면 모터의 회전방향이 바뀌고 포트D에 연결된 LED를 켜도록 해놓았습니다.
- #include <avr/io.h>
- #include <util/delay.h>
- int main(void)
- {
- DDRB = 0xFF;
- PORTB = 0x00;
- DDRC = 0x00;
- DDRD = 0xFF;
- while(1)
- {
- if ( PINC == 0x01 )
- {
- PORTD=0xFF;
- PORTB = 0b00101011;
- _delay_ms(50);
- }
- else
- {
- PORTD = 0x00;
- PORTB = 0b00010111;
- _delay_ms(50);
- }
- }
- return 0;
- }
참고..
http://www.embedds.com/interfacing-dc-motor-to-atmega32/
http://www.electroons.com/electroons/dc_motor_control.html
http://www.instructables.com/id/GOduino-II-Arduino-L293D-Variable-Speed-Motor-/
'AVR > Atmega128 강좌' 카테고리의 다른 글
ATmega128 기초 - 입출력 포트 (2) | 2016.06.15 |
---|---|
USB To TTL 컨버터 모듈 사용기 ( Atmega328p 자작 보드에 연결 ) (2) | 2015.12.07 |
Atmega328 보드 만들기 - 보드 납땜 및 태스트.. (0) | 2015.10.29 |
Atmega328 보드 만들기 - 회로도 그려보기 (0) | 2015.10.26 |
Atmega328 보드 만들기 - 회로 및 부품 확인 (0) | 2015.10.25 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!