여기서 우리는 AVR Atmega16 마이크로 컨트롤러로 또 다른 프로젝트를 구축 할 것 입니다. AVR 마이크로 컨트롤러를 처음 사용하는 경우 이전 AVR 프로젝트 및 자습서를 참조 할 수 있습니다.
로봇을 만드는 것은 항상 모든 전자 애호가들에게 스릴입니다. 그리고 로봇이 외부의 지시없이 자동으로 어떤 일을 할 수 있다면이 스릴을 극대화 할 수 있습니다. 전자 초보자가 가장 일반적으로 만드는 로봇 중 하나는 Line Follower Robot 입니다. 이름에서 알 수 있듯이 로봇은 표면에 그려진 선을 따라갑니다. 선이 직선 일 필요는 없습니다. 또한 선은 모든 색상이 될 수 있습니다.
우리는 이전에 다른 컨트롤러를 사용하여 라인 팔로워 로봇 프로젝트를 구축했습니다.
- 8051 마이크로 컨트롤러를 사용하는 라인 팔로워 로봇
- PIC 마이크로 컨트롤러를 사용하는 라인 팔로워 로봇
- Arduino를 사용한 라인 팔로워 로봇
- Raspberry Pi를 사용하는 라인 팔로워 로봇
- MSP430 런치 패드를 사용하는 라인 팔로워 로봇
오늘 우리는 AVR 마이크로 컨트롤러를 사용하여 Line follower Robot을 만들 것 입니다.
대부분 IR 센서 는 라인을 감지하는 데 사용됩니다. IR 센서는 흰색 또는 검은 색 표면을 감지하는 데 적합합니다. 모든 색상을 감지 할 수 있고 모든 색상 라인을 따라갈 수있는 로봇을 만들 수있는 다른 정교한 센서를 사용할 수 있습니다. 로봇은 각도를 변경하여 경로가 변경 되더라도 선을 감지하고 선을 계속 따라갈 수 있어야합니다. 또한, 정지 구역이 줄에있는 모든 곳에서 정지해야합니다.
라인 팔로워 로봇은 오늘날 제조 산업, 의료, 가정용 애플리케이션 및 상품 창고에서 광범위하게 사용되고 있습니다. 로봇은 이러한 응용 프로그램에만 국한되지 않으며 향후 많은 응용 프로그램에서 응용 프로그램을 확장 할 수 있습니다.
Line Follower Robot의 개념
IR 센서는이 프로젝트의 핵심 요소입니다. IR 센서는 그려진 검은 선과 표면을 추적하기 위해 로봇의 전면에 배치됩니다. 로봇은 라인 사이에 배치되고 IR 센서의 도움으로 로봇이 라인을 추적합니다. IR 센서는 판독 값을 마이크로 컨트롤러에 피드백하고 IR 판독의 도움으로 마이크로 컨트롤러는 모터를 왼쪽 또는 오른쪽으로 이동하고 로봇을 경로로 다시 이동시킵니다.
라인 추종자 로봇은 IR 센서의 도움으로 라인을 추적 할 수 있습니다. 이 센서에는 IR 송신기와 IR 수신기가 있습니다. IR 송신기 (IR LED)는 빛을 전송하고 수신기 (포토 다이오드)는 전송 된 빛이 다시 돌아올 때까지 기다립니다. IR 라이트는 표면에 반사되는 경우에만 다시 돌아옵니다. 반면, 모든 표면은 IR 빛을 반사하지 않으며, 아래 그림과 같이 색상 표면의 흰색 만 완전히 반사 할 수 있으며 검은 색 표면은 완전히 관찰합니다. 여기에서 IR 센서 모듈에 대해 자세히 알아보십시오.
이제 우리는 두 개의 IR 센서 를 사용 하여 로봇이 라인과 트랙에 있는지 확인하고 두 개의 모터를 사용하여 로봇이 트랙에서 벗어날 경우 로봇을 수정합니다. 이러한 모터는 고전류를 필요로하며 양방향이어야합니다. 따라서 L293D와 같은 모터 드라이버 모듈을 사용합니다. IR 센서의 값을 기반으로 모터를 지시하려면 ATmega16 과 같은 마이크로 컨트롤러도 필요합니다. 동일한 블록 다이어그램이 아래에 나와 있습니다.
이 두 IR 센서는 라인의 양쪽에 하나씩 배치됩니다. 센서가 검은 색 선을 감지하지 못하면 AVR 마이크로 컨트롤러는 모터에 아래와 같이 앞으로 이동하도록 지시합니다.
왼쪽 센서가 검은 색 선에 나타나면 마이크로 컨트롤러는 오른쪽 바퀴 만 돌려서 왼쪽으로 회전하도록 로봇에 지시합니다.
오른쪽 센서가 검은 색 선에 있으면 마이크로 컨트롤러는 왼쪽 바퀴 만 돌려서 오른쪽으로 회전하도록 로봇에 지시합니다.
두 센서가 모두 검은 색 선에 있으면 로봇이 멈 춥니 다.
이렇게하면 로봇이 트랙을 벗어나지 않고도 라인을 따라갈 수 있습니다. 이제 회로와 코드가 어떻게 생겼는지 살펴 보겠습니다.
필요한 구성 요소
- DC Gear Motors (2 대)
- IR 센서 모듈 (2 대)
- L293D 모듈
- 무선 전원 (예: 배터리, 파워 뱅크)
- 로봇 의자
- Atmega16 마이크로 컨트롤러 IC
- 16Mhz 수정 발진기
- 2 개의 100nF 커패시터
- 2 개의 22pF 커패시터
- 누름 단추
- 점퍼 와이어
- 브레드 보드
- USBASP v2.0 (Atmega16 프로그래밍)
회로도
아래 회로도에 표시된대로 모든 구성 요소를 연결합니다
라인 팔로워 로봇을위한 Atmega16 프로그래밍
여기서 Atmega16은 USBASP 및 Atmel Studio7.0을 사용하여 프로그래밍됩니다. USBASP를 사용하여 Atmega16을 프로그래밍하는 방법을 모르는 경우 링크를 방문하십시오. 전체 프로그램은 프로젝트가 끝날 때 제공되며 이전 튜토리얼에서 설명한대로 JTAG 프로그래머와 Atmel Studio 7.0을 사용하여 Atmega16에 프로그램을 업로드하면됩니다.
코드를 최대한 짧고 간단하게 유지하려고 노력했습니다. 그래서 우리는이 코드에서 매크로와 특수 기능 레지스터를 사용하고 있습니다.
경우 (bit_is_clear (PINA , leftSen)) { // 체크 좌측 센서가 OFF이면
왼쪽 센서가 연결된 PA0이 LOW 또는 HIGH인지 확인합니다.
이 명령문 및 기타 매크로에 대해 자세히 알아 보려면이 링크로 이동하십시오.
트로프 IR 센서를 읽기 위해 따라야 할 네 가지 조건이 있습니다. IR 센서는 로봇 전면의 배치에 따라 이름이 지정됩니다. 왼쪽 IR은 왼쪽 센서이고 오른쪽 IR은 오른쪽 센서입니다. 로봇의 움직임을 결정하는 조건은 다음과 같습니다.
위의 조건에 따라 코드를 작성했습니다. 유일한 변화는 L293D의 두 개의 입력 핀만 사용하여 두 모터를 모두 구동한다는 것입니다.
데모 비디오와 함께 완전한 코드가 아래에 제공됩니다.