마이크로마우스는 미로 해결 알고리즘을 사용하여 미로 문제를 자율적으로 해결하는 로봇입니다. 이 게시물에서,나는 내 팀과 내가 매우 도움이 사람들로부터 많이 필요한 지침으로 그것을 할 관리 방법을 공유합니다.
버클리 대학교 가을학기 동안,저는 미로 문제를 자율적으로 해결하는 로봇을 만들기 위해 학생 주도의 수업을 들었습니다. 나는 당신이 전자 프로젝트에 관심이 있고 훌륭한 강사와 함께 고도로 가이드 된 프로그램을 찾고 있다면,이것은 훌륭한 장소입니다! 나를 위해,이 과정은 내가 로봇에 내 여행을 시작 곳이기 때문에 특별하다,땜질 및 제작 내가 깊이 즐길 하나입니다. 이 과정은 저에게 훌륭한 기초를 주었고,새로운 프로젝트를 시작하면서 더 많은 것을 배웠습니다.
다음은 초보자로서 마이크로 마우스 프로젝트를 시작하는 방법에 대한 대략적인 지침입니다:
- 부품 목록
- 하드웨어 부품을 함께 퍼팅
- 십이 마이크로 컨트롤러 설정&아두 이노 아이데
- 십이 핀 소개
- 센서를 사용하여
- 전압 조절
- 모터 제어기
- 홀 이펙트 로터리엔코더 사용
- 모두 조립
- 코딩
- 코드로 하드웨어를 제어하는 방법
- 감지
- 피드제어
- 미로 해결 알고리즘
- 미세 조정
- 문제 해결 방법
부품 목록
- 기계 부품
- 섀시
- 바퀴
- 맞춤 제작 부품을 3 차원 인쇄하거나 맞춤 마운트를 구입하기 위해 돈을 쓰지 않는 한 많은 스티커 테이프
- 전기 부품
- 브레드 보드,전선
- 두 5 볼트 미니 직류 모터
- 작은 7~9 볼트 배터리
- 7805 전압 레귤레이터
- 홀 센서 회전 인코더
- 시간 브리지
- 훑어(또는 작은 마이크로 컨트롤러. 아두 이노도 작동!)
- 2 개의 거리 센서(적외선 센서를 사용했습니다)
하드웨어 조립하기
2.1 훑어 마이크로 컨트롤러 설정&아두 이노 아이데
훑어 아두 이노처럼 작동하는 마이크로 컨트롤러입니다. 하나의 큰 장점은 크기입니다. 그 이름에서 알 수 있듯이 십대는 작고 컴팩트하며 훌륭합니다!
우리는 약간의 헤더 핀의 상단에 십대를 배치하여 시작,다음 십대에 헤더 핀을 납땜,다음 우리의 브레드 보드에 단단히 장착.
당신이 이미하지 않은 경우,컴퓨터에 아두 이노 아이디를 설치 않습니다. https://www.arduino.cc/en/Main/Software
매우 중요:당신은 훑어 3.1 을 사용하는 경우,당신은 훑어와 호환 아두 이노의 버전을 설치해야합니다. 아두 이노로 작업 할 수 있도록: https://www.pjrc.com/teensy/td_download.html
2.2 회로
2.21)배터리 전원:전원 공급 요구에 7.2 볼트. 회로 규칙에 의해 우리는 이것을 호출 할 수 있습니다.
2.22)5 볼트 규제 전원 공급:전자 칩 부품 종종 안정적인 전원 공급 전압 제대로 기능. 문제는 전류의 큰 변화 양을 그릴 수 있는 모터와 같은 장치,이 딥 공급 전압을 발생 합니다. 이 때문에 우리는 전압 레귤레이터 공급 안정적인 5 볼트 당신의 다른 전자 부품.
2.23) 마이크로 컨트롤러:이 지능적인 사고의 외관을 갖고있는 것 같다 어떤 로봇의 두뇌입니다. 마이크로 컨트롤러는 처음에는 복잡해 보일 수 있지만 시작하려면 실제로 그렇게 어렵지 않습니다. 여기 기본은 있는다:간단한,그러나 아주 중요한.
2.23 아)디지털 입력 핀:이원 신호를 읽고 쓸 수 있습니다. 다른 마이크로 컨트롤러 다른 로직 레벨,하지만 대부분의 마이크로 컨트롤러 로직 레벨 중 3.3 볼트 또는 5 볼트.예를 들어,아두 이노 마이크로 컨트롤러 로직 레벨 5 볼트.읽을 때,어딘가에 근처 전압 5 볼트 레지스터 높은,동안 어딘가에 근처 전압 0 볼트 레지스터 낮은.이 핀은 펄스 폭 변조 신호를 출력하는 특별한 기능을 가진 디지털 입력 핀입니다. 그것은 시간의 일정 비율에 대 한 높은 및 시간의 다른 비율에 대 한 낮은 디지털 신호입니다. 이를 듀티 사이클이라고 합니다. 60%듀티 사이클을 갖는 신호는 로직 레벨 높은 60%의 시간이고 로직 레벨 낮은 40%의 시간입니다. 자세한 내용은 여기를 참조하십시오.
2.23 기음)아날로그 핀:이 핀은 볼트의 양을 말했다 0 에서 어디서나 아날로그 전압을 읽을 수 있습니다. 그들은 얼마나 많은 비트 아날로그-디지털 변환기가 사용되는지에 따라 다양한 해상도로 읽을 수 있습니다. 디지털 방식으로 변환기에 8 조금 아날로그는 2^8=256 의 해결책을 읽을 수 있습니다. 5 볼트 로직 레벨,읽을 수 정밀 5 볼트/256=19.5 메가 볼트.
2.23 디)디지털 인터럽트: 마이크로 컨트롤러의 일부 디지털 핀은 인터럽트 신호로 구성 할 수 있습니다. 인터럽트는 매우 멋지다. 핀이 인터럽트 핀으로 구성되면(1)상승 신호 에지(2)하강 신호 에지 또는(3)로직 레벨의 변화를 감지합니다. 이 중 하나는 인터럽트 서비스 루틴이라고 부르는 것을 트리거 할 것입니다. 코드에서 인터럽트가 감지될 때마다 트리거되는 짧은 함수입니다.
2.26)모터:모터는 전압이 주어지면 회전하는 장치입니다. 이 경우 브러시 처리 된 직류 모터를 사용하고 있습니다. 전압이 주어질 때 제대로 돌 것을 돕는 그것의 안쪽에 정류 직류 솔이 있기 때문에 그런 지명됩니다. 모터는 일반적으로 큰 전류를 끌어 당기고 모든 모터는 특정 전압 전력 등급을 갖습니다. 모터가 회전 할 때,그들은 역 기전력을 생성합니다. 이것은 반 직관적으로 들릴지 모르지만,최대 속도로 회전하는 모터는 실제로 역 기전력으로 인해 전류의 최소량을 끌어냅니다. 반대로,멈춘 모터(즉,움직이기를 원하지만 외부 힘 때문에 움직일 수 없음)는 가장 많은 양의 전류를 끌어냅니다.
2.25)모터 드라이버:이 마이크로 컨트롤러를 사용하여 모터의 속도/방향을 제어하는 데 필요합니다. 이는 마이크로 컨트롤러가 모터를 구동하기에 충분한 전압 또는 전류를 공급할 수 없기 때문입니다. 또한 모터가 회전 할 때 생성 된 백 기전력은 마이크로 컨트롤러를 쉽게 손상시킬 수 있습니다. 인터페이스는 모터의 속도와 방향을 제어하기 위해 둘 사이에 필요하다. 사용 된 모터 컨트롤러는 4 배 반 시간 드라이버였습니다. 무엇 모터 컨트롤러가하는 것은 당신의 마이크로 컨트롤러(일반적으로 펄스 폭 변조 신호)에서 오는 신호를 소요 한 다음 모터에 배터리에서 디지털 스위치를 활성화한다는 것입니다. 그것은 무엇 그것은 매우 신속 하 게 귀하의 모터에 배터리에서 디지털 스위치를 켜는 것입니다. 이 디지털 스위치가 100%시간(또는 100%듀티 사이클)에 있으면 모터는 최대 전력으로 작동합니다. 디지털 스위치가 50%의 시간에만 켜지면 모터는 50%의 전력으로 작동합니다.
2.26) 인코더:인코더는 움직임을 감지하는 영리한 장치입니다. 예를 들어,일부 인코더는 휠이 회전 한 횟수를 감지하고,다른 엔코더는 로봇 팔이 어떤 각도로 바뀌 었는지 정확하게 알려줍니다. 마이크로 마우스의 경우 휠이 몇 번 돌았는지 감지하는 인코더를 사용하고 있습니다. 홀 효과 인코더 또는 광학 인코더가 있습니다. 인코더의 두 가지 유형,하지만 기본적으로 같은 일을. 휠이 켜져 때마다 그들은 디지털 펄스를 트리거! 홀 효과 인코더 작동 하는 방법은 모터 샤프트에 연결 된 뭔가 안에 작은 영구 자석 이다. 모터가 돌 때,자석은 또한 돕니다. 자석이 통과 할 때 감지 센서가 있습니다. 그것이 할 때,마이크로 제어기에 의해 읽힐 수 있는 맥박을 발송한다. 우리는 일반적으로 디지털 인터럽트 핀으로 구성된 핀에 그 신호를 보냅니다.
2.27) 적외선 거리 센서:적외선 거리 센서를 사용하여 거리를 감지합니다. 그것이 하는 것은 적외선 신호를 쏘고 그 신호가 다시 튀어 나올 때까지 기다려서 물체가 얼마나 멀리 떨어져 있는지를 결정하는 것입니다. 당신은 실험 할 수 있지만 기울어 진 표면에서 신호를 편향하는 경우,당신은 당신의 적외선 센서 떨어져 독서를 얻을 수 없습니다. 이것은 그렇게 이상적이지 않습니다. 이 적외선 센서는 또한 거리를 감지 할 수있는 제한된 범위를 가지고 있습니다. 레드 와이어 5 볼트 전원,블랙 와이어,노란색 와이어 신호. 이 특정 적외선 센서의 경우 적외선 센서가 물체를 얼마나 멀리 감지 하느냐에 따라 다른 아날로그 전압을 제공합니다. 당신이 할 수있는 것은 마이크로 컨트롤러를 사용하여 아날로그 전압을 읽는 것입니다. 적외선 센서에 대한 자세한 정보를 알고 여기에 데이터 시트를 참조하십시오.
2.3 회로 다이어그램&배선
다음은 거친 회로 다이어그램입니다. 참고 전선을 연결할 핀을 정확히 지정하지 않았습니다. 이 핀 번호는 사용하는 마이크로 컨트롤러에 따라 달라질 수 있기 때문이다,그러나 여기,나는 무엇보다 중요한 원칙을 제공하고있어:
인코더로부터의 신호는 디지털 인터럽트 핀에 배선되어야 합니다. 그런 식으로 신호가 전송 될 때마다 마이크로 컨트롤러는 휠이 1 라운드 돌았 음을 알 수 있습니다.
적외선 센서의 신호는 아날로그 입력 핀에 연결해야 합니다.
모터 컨트롤러에 공급되는 신호는 핀에서 나와야 합니다.
*회로 다이어그램 삽입
3.0 코드&컨트롤:
코드를 게시하지는 않지만 일반적인 개념은 다음과 같습니다.
3.1 마우스를 똑바로 움직이거나 돌리는 방법:
이 마우스는 차동적으로 제어됩니다. 각 바퀴에 2 개의 모터와 더불어 2 개의 바퀴가,있습니다. 두 바퀴가 같은 속도로 회전하는 경우,마우스는 똑바로 간다. 오른쪽 휠 속도가 느려지는 동안 왼쪽 휠 속도가 빨라지면 마우스가 오른쪽으로 회전합니다. 이를 차동 제어라고합니다.
3.2 컨트롤&오류 수정
그러나 하나는 마우스를 제어하는 방법에 대해 생각해야합니다. 어떻게 하면 벽에 부딪히지 않고 미로 안에서 움직일 수 있을까요? 우리는 왼쪽 및 오른쪽 모터에 두 개의 동일한 신호를 보내 마우스가 직진하도록 지시한다고 생각할 수 있습니다. 그래서 마우스는 바로 바로 가야한다? 틀렸어! 여러 가지 이유로 인해 모터가 우리가 말하는 방식으로 응답하지 않을 수 있습니다. 기본적으로 각 모터는 거의 동일하지만 정확히 동일하지는 않습니다. 하드웨어는 결코 완벽하게 구축되지 않으며 항상 유한 오류가 있습니다.
마우스가 실제로 우리가 말하는 방향으로 움직이고 있는지 어떻게 확인합니까? 우리는 닫힌 루프 제어라고 불리는 것이 필요합니다. 즉,센서를 연결하여 출력을 측정 한 다음 결과를 입력에 다시 공급하여 오류 수정을 수행합니다. 나중에 더 자세히. 우리는 우리가 피드라고 부르는 필요(비례 적분 미분)컨트롤러.
이 경우 마우스가 벽에서 엄격한 거리를 유지하도록 할 수 있습니다. 오른쪽 벽으로부터 5 센티미터 떨어져 있다고 가정해 봅시다. 우리는 이것을 세트 포인트라고 부릅니다. 세트 포인트에서 어떤 편차는 우리가 오류라고 부르는 것입니다. 오류가 감지되면 마우스 자체를 수정하려고합니다. 오류가 큰 경우,우리는 큰 수정 작업을 할 수 있습니다. 오류가 작은 경우,우리는 작은 수정 작업을 할 수 있습니다.
마우스 측면의 센서는 마우스가 벽으로부터의 거리를 결정합니다. 마우스가 오른쪽 벽에서 너무 멀리 떨어져 있다고 가정 해 봅시다. 왼쪽 휠이 더 빠르게 회전하고 오른쪽 휠이 더 느리게 회전하여 마우스를 오른쪽으로 움직여 오류를 수정하기를 원합니다. 마우스가 벽에서 10 센티미터 떨어진 5 센티미터 세트 포인트에서 아주 멀리 떨어져 있다면,우리는 왼쪽 바퀴가 매우 빠르게 회전하기를 원하고 오른쪽 바퀴는 많이 느려지기를 원합니다. 마우스가 벽에서 6 센티미터 밖에 떨어져 있지 않으면 왼쪽 바퀴가 속도를 높이고 오른쪽 바퀴가 속도를 줄이기를 원합니다.