마이크로컨트롤러를 이용해 장애물을 피하는 DIY 로봇. Arduino를 사용하여 자체 추진 로봇을 조립합니다. 제어 보드 조립

소개

헬레니즘 시대에 파로스 섬에는 네 개의 조각상이 설치된 등대가 있었습니다. 특정 간격으로 회전하는 이 조각상은 병을 두들겨 패었습니다. 밤에는 트럼펫 소리를 내며 선원들에게 해안이 가까웠음을 경고했습니다.

기원전 5세기 플라톤의 작품은 인간의 사고와 기계의 역학과 관련된 아이디어를 표현합니다. 플라톤의 친구이자 뛰어난 철학자이자 수학자인 타렌툼의 아르키타스는 증기 제트에 의해 조종되고 날 수 있는 나무 비둘기를 디자인했습니다.

1495 레오나르도 다 빈치 디자인 세부 프로젝트 기계 인간팔을 움직이고 머리를 돌릴 수 있다. 메커니즘은 갑옷을 입은 기사처럼 보입니다.

이 모든 "발명품"의 공통점은 무엇입니까? 인간이 우리 세상에 살아있는 존재처럼 자율적으로 존재할 수 있거나 심지어 생각할 수도 있는 물체를 만들려고 노력했다는 사실.

시대가 변하고 기술이 변합니다. 그러나 인간은 자신을 생각하고 수행할 수 있는 “기계 하인”으로 만들려는 생각을 버리지 않았습니다. 다양한 작업. 이러한 장치의 현대적인 이름은 로봇입니다.

목표, 목표 및 인사말

안녕하세요, 사랑하는 라디오고양이, 라디오고양이 여러분! 나 자신은 아마추어 라디오 분야와 신체 연령 분야 모두에서 아직 새끼 고양이이기 때문에 내가 만드는 장치는 어린이를 위한 것이어야 하며 장난감 역할을 해야 합니다. (그리고 일반적으로 이 기사는 다음 사용자에게만 관심이 있을 것입니다. 초보자). 그리고 당신은 아마도 장난감이 무엇인지 이미 추측했을 것입니다. 그것은 무엇을 할 것인가? 흠... 아! 주어진 경로를 거의 따르기 때문에 그려진 선을 따르도록 하세요! (그가 가장 좋아하는 활동에 방해가 되지 않도록 냉장고에서 직장으로 샌드위치를 ​​가져가도록 할 수 있습니다 :)) 그래서 우리는 내 작업의 목표에 가까워졌습니다. 목표:

  • 흰 종이에 그려진 선을 따라가는 로봇(모델 연기)을 만들어 보세요.

작업:

  • 회로도 작성
  • 생성된 플랫폼에 대한 프로그램 작성
  • 다이어그램에 따라 로봇 조립
  • 테스트, 디버깅
  • 결과 분석

작동하는 로봇 모델 생성

그래서, 회로도 작성:

초기 다이어그램은 다음과 같습니다.

회로의 주요 부분은 Atmel 메가 제품군의 8비트 MCU입니다. 로봇의 행동 컨트롤러 기능을 수행하는 사람이 바로 그 사람입니다. 프로그램이 포함되어 있습니다. L32P3C 포토트랜지스터(빛에 반응하는 한 다른 센서도 사용할 수 있음)의 두 센서로부터 신호를 수신합니다. 포토 트랜지스터가 켜지면 전류가 흐르고 MK의 출력에 펄스가 나타납니다. MK, 신호를 받았어요 높은 레벨, 다른 포토트랜지스터에 신호가 있는지 여부에 따라 L293D 모터 드라이버의 입력에 신호를 보냅니다. 그러면 이러한 신호가 증폭됩니다(MK 핀은 20mA 이상의 전류를 견딜 수 없기 때문에). 회전하는 모터 M1과 M2. Z1, C1 및 C2 세트 클럭 주파수 MK, 안으로 이 경우 4MHz로 설정되어 있으며 이는 컨트롤러가 초당 400만 번의 작업을 수행한다는 의미입니다. 다들 그걸 알아 적절한 영양- 건강을 보장하므로 C3, C4 및 VR1은 원치 않는 간섭을 제거하는 전압 안정기 역할을 합니다.

센서는 어떻게 작동하나요? 검정색은 광파의 거의 전체 스펙트럼을 흡수하고 흰색은 이를 반사하므로 센서가 위에 있을 때 모두가 알고 있습니다. 검은 선, 그러면 빛이 도달하지 않으며 센서가 밝은 표면 위에 있으면 센서에서 신호가 발생합니다.


물론 그렇지 않습니다 최종 계획, 일부 블록에 대한 개선 사항이 아래에 제시됩니다.

작업 알고리즘:

작동 알고리즘은 매우 간단합니다(센서가 위치한다고 가정합니다). 다른 측면윤곽)

작은 설명:

로봇이 위치한 라인 부분이 직선이면 두 센서 모두에서 신호가 전송됩니다.

두 모터 모두 그에 따라 회전해야 합니다.

라인의 한 부분이 왼쪽을 향하면 왼쪽 센서에 신호가 없습니다.

그런 다음 올바른 엔진에 전압을 적용해야 합니다.

오른쪽 센서에 신호가 없으면 우회전합니다.

당연히 왼쪽 모터를 회전시켜야 합니다.

실제로, 프로그램 개발.

광범위하고 강력한 프로그래밍 언어 C가 개발 언어로 선택되었습니다.

메인 블록만 분석하겠습니다. 아래 전체 코드를 참조하세요.

동안 (1)
{
PORTC.0 = PIND.0;
포트C.2 = 핀드.1;
}

로봇이 로봇을 완성할 때 여기에는 옵션이 없습니다. 이는 위에서 설명한 알고리즘과 일치하지 않습니다. 왜냐하면 완벽한 시스템이 없기 때문입니다. 불행히도 내 로봇도 예외는 아닙니다. 따라서 로봇이 아무 이유 없이 갑자기 멈추지 않도록 이 부분을 제거했습니다.

포트 D(센서 담당)에서 포트 C(로봇의 움직임 담당)의 필요한 핀으로 로드함으로써 로봇이 서로 다른 센서의 단일 자극에 모두 반응하고 두 센서 모두에 반응하도록 강제합니다.

그래서 우리는 다이어그램에 따라 로봇을 조립합니다.

제어보드를 조립합니다.

제어 보드는 로봇의 동작을 제어하는 ​​마이크로 컨트롤러가 포함된 보드입니다. 그녀의 다이어그램:

보시다시피 회로가 간단하고 짧은 시간에 조립이 가능합니다. 최종 결과:

전압 안정기와 모터 드라이버를 조립합니다.

다이어그램에서는 다음과 같습니다.

또한 조립하는 데 시간이 오래 걸리지 않습니다. 제가 얻은 것은 다음과 같습니다.

센서 블록 조립.

센서 블록은 세상에 대한 정보를 수신하는 역할을 담당합니다. 다이어그램에서는 다음과 같습니다.

회로가 너무 간단해서 3분이면 조립이 가능합니다. 최종 결과:

모든 블록을 연결한 후 다음을 얻습니다.


당연히 나는 누군가에게 이런 특별한 방식으로 로봇을 조립하도록 강요하지 않습니다. 단지 이런 방식으로 조립하는 것이 일종의 "성인용" 체계화를 제공한다는 것뿐입니다.

테스트, 디버깅.

놀랍게도 제어 보드와 전압 안정기 보드에는 디버깅이 필요하지 않았습니다. 그러나 모터 드라이버 보드 또는 모터 자체와 센서 장치가 이러한 손실을 보상했습니다.

모터 드라이버 유닛에서는 모터 디버깅이 필요했습니다. 문제는 처음에 엔진 출력을 잘못 계산하여(권장하지 않음) 이 디자인이면 충분하다고 결정했다는 것입니다.

당연히 나는 틀렸다. 로봇은 단지 천천히 운전하는 것이 아니라 가만히 서 있었습니다.

따라서 기어박스가 필요했습니다. 상점이나 인터넷에서 적합한 것을 찾을 수 없었기 때문에 무선 조종 차량에서 "잔인하게 찢어서" 디자인에 추가해야 했습니다.

디자인에 이를 추가한 후 로봇은 "비행"하기 시작했습니다. 그는 너무 빨리 운전해서 가끔 길을 놓칠 때도 있었습니다. 제가 해결한 방법은 아래에 기록되어 있습니다.

디버깅 센서

아마도 단일 센서도 디버깅 없이 즉시 작동하지 않았을 것입니다. 내 경우도 예외는 아니다. 처음에는 센서가 약한 빛에도 반응했습니다. 따라서 감도 조절 장치를 만들어야 합니다. 따라서 계획이 보완되었습니다.

가변 저항을 사용하면 감도를 조정할 수 있습니다. 그런 다음 저항을 측정할 수 있습니다. 가변 저항기이미 영구적으로 설치하십시오. 그건 그렇고, 내 경우 최적의 저항 저항은 9.1kOhm입니다. LED도 추가해 어두운 방에서도 센서가 작동할 수 있도록 했다. 최종 결과:

디버깅프로그램들

위에서 언급한 바와 같이 로봇이 너무 빠르게 주행하고 있었기 때문에 로봇의 속도를 줄여야 합니다. 이걸 하드웨어로 하는 게 무리인 것 같아서 펄스 폭 변조를 이용한 조정을 연상시키는 속도 조정을 해봤습니다.

이 기능은 다음과 같이 개발되었습니다.

무효 PWM(부호 없는 문자 벡터)

반품 ;

숙련된 라디오 아마추어는 이것이 PWM이 아니라고 말할 것이며 그의 말이 옳을 것입니다. 하지만 여전히 이 기능로봇의 속도를 조절할 수 있습니다. (파일 목록에서 아래 최종 코드 참조)

그리고 이제 조립과 디버깅이 완료되면 로봇의 기능을 확인할 차례입니다. (배경에 음악이 재생되고 있었는데 유튜브에서 삭제했습니다 =()

결과 분석

작업이 완료되면 요약해야 합니다. 그래서 나는 무엇을 관리 했습니까?

  • 프로그램 만들기.
  • 전기 기계 플랫폼 생성. 이 점을 좀 더 자세히 살펴보겠습니다. 최종 EMF는 다음과 같은 문제를 해결하는 데 사용할 수 있는 것으로 나타났습니다. 간단한 작업예: 2차원 및 3차원 미로를 통과하고 광원을 따라 그림을 그릴 수 있으며(펠트펜을 몸에 부착하기만 하면 됨) 로봇은 이러한 작업에도 참여할 수 있습니다. 로봇 공학 대회케겔링처럼.
  • 시스템 디버깅.
  • 그리고 가장 중요한 것은 로봇이 라인을 따라 움직인다는 것입니다.

결론

결론부터 말하면 꼭 해야 할 말이 있다. 그리고 나는 이렇게 말할 것이다:

이것이 그 경우 다:

  • 재정적으로 비싸다

이 기사에서는 제작 과정을 보여줍니다. 간단한 로봇 Xboard v2.0 보드의 장애물을 피하세요. 이 보드콤팩트하고 4개의 모터 컨트롤러를 갖추고 있어 소형 스마트 로봇에 적합 직류, USB를 통해 플래시할 수 있으며 다른 많은 기능이 있습니다. 배우고 사용하는 것도 매우 쉽습니다. xAPI는 복잡한 문제를 해결하기 위해 설계된 C 함수 세트입니다. 프로그램 작업, PWM, LCD 디스플레이 작업과 같은 리모콘등. 초보자에게 매우 좋고 쉽습니다. 디자인은 공개되어 있으므로 Xboard v2.0을 구입하고 싶지 않다면 직접 만들 수 있습니다.

우리 로봇의 목표는 간단합니다. 장애물을 피하면서 어디든 이동해야 한다는 것입니다. 작업은 간단하며 로봇은 완전히 독립적으로 작업을 수행합니다. 센서로부터 정보를 읽고, 결정을 내리고, 모터를 제어하는 ​​뇌를 가지고 있습니다.

로봇을 만들면서 다양한 것을 배우게 됩니다. 기본 방법, 이는 앞으로 귀하에게 유용할 것입니다.

로봇의 기계적인 부분

로봇은 고품질로 조립됩니다. 금속 케이스, 로봇 상점에서 구입할 수 있습니다. 로봇은 두 개의 200RPM DC 기어 모터로 구동됩니다. 차동 변속기 시스템을 사용하며 전면에 단일 캐스터 휠이 있습니다. 바퀴는 모터 샤프트에 직접 연결됩니다.

엔진은 샤프트 근처의 나사산에 나사로 고정된 너트를 사용하여 섀시에 부착됩니다.

Xboard v2.0은 볼트, 너트 및 스탠드가 포함된 포함된 장착 키트를 사용하여 장착됩니다. Xboard v2.0은 장착 구멍이 케이스 구멍과 일치하도록 만들어졌습니다.

차동기어

차동 변속기는 두 개의 바퀴를 사용하여 이동 및 제어를 가능하게 합니다. 자전거나 자동차처럼 핸들이 필요하지 않습니다. 회전하려면 차량(또는 로봇) 왼쪽 및 오른쪽 바퀴가 회전합니다. 다른 속도. 이것이 바로 차동 전송이라고 불리는 이유입니다. 예를 들어 오른쪽 바퀴가 왼쪽 바퀴보다 빠르게 회전하면 로봇은 왼쪽으로 회전합니다.

그림은 이것을 더 명확하게 보여줍니다.

따라서 로봇의 이동과 제어는 두 개의 모터를 제어함으로써 이루어지며, 이는 xAPI를 이용하여 쉽게 수행됩니다. 다음 링크에서 이에 대한 자세한 내용을 읽어보세요.

http://xboard.extremeelectronics.co.in/Motor1.htm

http://xboard.extremeelectronics.co.in/Motor2.htm

기사에서는 엔진을 시계 방향 또는 시계 반대 방향으로 시동하는 방법을 설명합니다. MotorA는 오른쪽 모터이고 MotorB는 왼쪽 모터입니다. 엔진 작업 방법을 보여주는 코드 조각입니다.

로봇 전진 운동:

뒤로 로봇 이동:

좌회전:

모터A(MOTOR_CW,255); // 오른쪽 모터는 최대 속도로 시계 방향(CW)으로 회전합니다. 속도 (255)

모터B(MOTOR_CW,255); // 왼쪽 모터는 최대 속도로 시계 방향(CW)으로 회전합니다. 속도 (255)

우회전:

모터A(MOTOR_CCW,255); // 오른쪽 모터는 최대 속도로 시계 반대 방향(CCW)으로 회전합니다. 속도

모터B(MOTOR_CCW,255); // 왼쪽 모터는 최대 속도로 시계 반대 방향(CCW)으로 회전합니다. 속도 (255)

링크를 클릭하면 MotorA와 MotorB에 대해 자세히 알아볼 수 있습니다.

센서

비접촉 센서는 로봇이 경로에 있는 장애물을 감지하는 데 도움이 됩니다. 센서에는 IR 송신기와 IR 수신기가 포함됩니다. IR LED는 IR 송신기로 사용되며 IR 스펙트럼의 빛을 방출하며 눈에는 보이지 않습니다. 인간의 눈. IR 수신기는 이러한 광선을 수신합니다.

IR 센서

IR 센서는 IR 수신기, IR 송신기 및 여러 저항기로 구성됩니다. 다이어그램은 아래와 같습니다. 로봇 전면에 세 개의 센서를 설치해야 합니다.

보시다시피 센서에는 전원과 출력이라는 두 개의 핀이 있습니다. 센서 출력은 장애물과의 거리 및 유형에 따라 0~5V의 전압을 가질 수 있습니다. 장애물이 근처에 있으면 전압이 5V에 가까워집니다.

R1 150Ω, R2 22kΩ 등급. 색상 코드위의 다이어그램에 나와 있습니다. 저항 값은 매우 중요하므로 지정된 값의 저항만 사용하십시오. 검정색(반투명)인 IR 수신기의 짧은 핀이 양극 핀입니다. 이는 오류가 아니므로 그렇게 연결해 주십시오.

IR 수신기와 IR 송신기는 IR 송신기의 IR 광선이 장애물에 부딪혀 IR 수신기로 다시 반사되도록 설치해야 합니다. 그들의 정확한 위치그림에 표시되어 있습니다.

센서 출력은 ADC에 연결됩니다. AVR 마이크로컨트롤러. ADC는 전압을 0부터 1024까지의 10비트 디지털 값으로 변환한다. 즉, ADC에서 나온 값을 바탕으로 센서 앞에 장애물이 있는지 확인할 수 있다. Xboard v2.0 ADC로 작업하는 것은 간단하며 링크에 설명되어 있습니다.

센서를 ADC0에 연결한 경우 다음 기능을 사용하여 센서로부터 정보를 얻을 수 있습니다.

int 센서_값;

sensor_value=ReadADC(0);//채널번호 ​​0 읽기

위 다이어그램에 표시된 저항을 사용하면 센서 앞에 장애물이 없을 때 센서_값은 약 660이고, 장애물이 약 15cm일 때 값은 745입니다. 장애물이 6cm보다 가까울 경우 값은 1023입니다. . 이것은 최대값, 장애물이 더 가까워져도 값은 증가하지 않습니다.

이 값은 장애물의 종류에 따라 달라질 수 있으니 주의하시기 바랍니다. 일부 물체는 다른 물체보다 IR 광선을 더 잘 반사하거나 더 나쁘게 반사합니다. 일부 물체는 IR 광선을 매우 약하게 반사하여 감지할 수 없습니다. 이 결과는 손바닥을 장애물로 사용하여 얻은 결과입니다. 예를 들어, IR 광선은 칠해진 목재에 잘 반사되지 않습니다. 어두운 색, 예를 들어 문.

IR 센서 결합 및 연결

세 개의 IR 센서는 로봇 전면에 장착된 브레드보드에 장착됩니다. 센서 1개는 보드 중앙에 설치되고 나머지 2개는 오른쪽과 왼쪽에 각각 설치된다.

시작하려면 브레드보드를 ​​다음과 같이 잘라야 합니다. 필요한 크기. 이것은 작은 쇠톱을 사용하여 수행할 수 있습니다.

이제 장착을 위해 두 개의 구멍을 뚫어야 합니다. 그런 다음 나사, 너트 및 스탠드오프를 사용하여 보드를 섀시에 설치할 수 있습니다. 저는 몇 초 만에 구멍을 뚫기 위해 전동 드릴을 사용했는데, 없으면 핸드 드릴을 사용해도 됩니다.

보드 반대편에는 브레드보드와 섀시 사이에 공간을 확보하기 위해 나사에 스페이서를 배치했습니다.

이제 개발 보드를 섀시에 설치할 수 있습니다.

제가 사용하고 있으니 참고해주세요 트림 저항기 22kOhm에서 일정하지 않습니다. 그러나 당신은 사용해야합니다 고정 저항기 22kΩ에서. 개발 보드는 표준 8핀 커넥터를 사용하여 Xboard v2.0에 연결됩니다. Xboard v2.0에는 센서용 8핀 커넥터가 있습니다. 이 커넥터에는 센서용 +5V 및 GND 핀도 있습니다. 핀아웃은 아래와 같습니다.

오른쪽 센서를 ADC0에, 가운데 센서를 ADC 1에, 왼쪽 센서를 ADC 2에 연결합니다. 센서가 준비되었으므로 이제 테스트를 진행할 수 있습니다.

IR 센서 테스트

아래는 작은 테스트 프로그램, 세 개의 센서에서 값을 읽고 이를 LCD 디스플레이에 표시합니다. 프로그램 작동 방식을 이해하려면 xAPI를 사용하여 LCD 디스플레이와 상호 작용 문서를 읽어보세요.

#include “avr/io.h” #include “util/delay.h” #include “lcd.h” void InitADC() ( ADMUX=(1<

Xboard v2.0에서 프로그램을 컴파일하고 플래시합니다. 그런 다음 LCD 디스플레이와 센서 보드를 연결하십시오. 화면에는 아래와 같이 3개 센서의 값이 표시되어야 합니다.

장애물을 센서 중 하나에 가까이 가져오면 그 값이 증가하고, 장애물이 매우 가까우면 1023으로 증가합니다. 장애물이 없을 때 센서의 값을 적어 두십시오. 장애물이 장애물로부터 약 15cm 떨어져 있을 때. 로봇 프로그램을 구성하려면 이러한 값이 필요합니다.

또한 ATmega32(또는 ATmega16) 마이크로컨트롤러 펌웨어를 플래시하고 즉시 작동할 수 있는 HEX 파일도 제공했습니다.

디스플레이에 텍스트가 없으면 전위차계를 사용하여 대비를 조정하십시오.

센서가 예상대로 작동하지 않으면 연결을 확인하십시오. IR LED의 작동을 확인하려면 핸디캠이나 휴대폰 카메라와 같은 디지털 카메라를 사용하십시오. 사람의 눈에는 보이지 않지만 IR 광선은 카메라에 선명하게 보입니다. LED가 IR 광선을 방출하지 않으면 연결을 확인하십시오.

소프트웨어 부분

프로그램의 임무는 센서 값을 읽고, 결정을 내리고, 두 개의 모터를 제어하는 ​​것입니다. 따라서 로봇은 경로에 있는 모든 것을 돌아다니며 방을 돌아다닐 것입니다.

우리는 RTHRES, CTHRES 및 LTHRES라는 세 가지 상수를 정의했습니다.

//센서 트리거링을 위한 임계값

#RTHRES 195 정의

#CTHRES 275 정의

#LTHRES 195 정의

해당 상수 값은 입력된 값입니다. 그것들은 이미 기록되어 있어야 합니다. 얻는 방법은 위에 설명되어 있습니다. 센서 값이 이 임계값에 도달하면 프로그램은 이를 장애물로 인식합니다. 위에 표시된 값은 귀하의 값과 일치하지 않을 수 있습니다. 이건 괜찮아.

프로그램은 모터 하위 시스템과 ADC 하위 시스템의 초기화로 시작됩니다.

그런 다음 로봇을 앞으로 움직이기 시작합니다. 이는 함수를 호출하여 수행됩니다. 모터A그리고 모터B. 첫 번째 인수는 필수 방향입니다.

두 번째 인수는 필요한 속도입니다. 값의 범위는 0에서 255까지입니다. 최고 속도로 이동하려면 25.5를 사용합니다.

xAPI를 사용한 엔진 작업에 대한 자세한 내용은 Xboard v2.0 설명서에서 찾을 수 있습니다.

로봇이 전진하기 시작하면 무한 루프에 들어가 로봇 앞에 장애물이 있는지 확인합니다. 그렇다면 로봇이 회전합니다.

영어 원본 기사(번역: 알렉산더 카샤노프 cxem.net 사이트의 경우)

26.01.2011, 09:18
원천:

보통 기사에서는 자료를 전개된 순서대로 제시하려고 하는데, 그렇지 않은 것 같아요. 따라서 회로도, PCB 레이아웃 및 기타 모든 설계 단계를 건너 뛰겠습니다. 그림 1에서 우리는 내가 어떤 종류의 “치욕”을 받았는지 알 수 있습니다.

언뜻 보면 철, 전자 제품, 전선 더미처럼 보입니다. 이는 아마도 서로 다른 재료를 사용했기 때문일 것입니다. 그것을 알아 봅시다.

이제 모든 것이 정상입니다. Attiny2313 마이크로 컨트롤러는 두 개의 적외선 센서로부터 장애물 신호(논리 1 또는 0)를 수신합니다. 그런 다음 펌웨어에 따라 마이크로컨트롤러는 L293D 모터 드라이버 칩을 제어합니다(최대 1A 전류 제어). 그림 3은 거꾸로 된 로봇의 사진을 보여줍니다.

수제 로봇 디자인의 기본은 사다리꼴로 구부러진 금속 스트립입니다. 굽힘 각도는 약 120°입니다. 양쪽에서 동일한 굽힘을 얻는 것이 근본적으로 중요합니다. 그렇지 않으면 로봇이 직선으로 움직이지 않습니다. 반면에 기계공학자나 전자공학 엔지니어가 제대로 수행하지 못한 일이 프로그래머에 의해 수정될 수도 있습니다. 예를 들어 PWM을 사용하여 로봇의 선형 이동을 달성할 수 있습니다.

우리 모두는 학교 기하학 과정에서 평면이 세 점 또는 직선과 공간의 한 점으로 형성된다는 것을 알고 있습니다. 세 번째 포인트는 자유롭게 회전하는 롤러 휠입니다.

IR 센서와 포토트랜지스터의 수신기는 조도를 줄이고 오탐을 최소화하기 위해 하단에 위치합니다. IR 센서 자체는 이동식 경첩에 장착되어 있어 스캔 영역을 조정할 수 있습니다. 그런데 복도에서 기어다니는 로봇에 대한 우리 고양이의 반응이 흥미로웠나요? 내 고양이는 검은 색이에요. IR 센서를 회색 배경화면으로 설정했기 때문에 거의 마지막 순간에 로봇이 고양이 앞으로 돌아섰고, 고양이는 큰 쉭쉭 소리를 내며 한 걸음 뒤로 뛰어갔습니다.

로봇의 다음 모딩은 배에 있는 IR 센서로, 로봇이 마커로 흰 종이에 그려진 검은 선을 따라갈 수 있도록 했습니다. 구현에는 마이크로컨트롤러의 부담을 덜어주기 위해 LM339N 칩에 3개의 센서와 비교기가 필요했습니다. 중요한 단점은 실내 조명에 따라 트리밍 저항을 사용하여 센서를 사전에 조정해야 한다는 것입니다.

추신 무의미한 장치를 만드는 데 시간을 낭비한 것에 대한 보상은 아마도 누군가의 자녀가 관심을 가질 때까지 선반에 먼지를 쌓을 마이크로 컨트롤러의 작동과 메모리의 명확성이 될 것입니다.

이 기사에서는 다음 동작을 구현하는 여러 로봇 설계를 살펴보겠습니다.
1. '안테나'와 접촉하면 장애물을 피해 돌아갑니다.
2. 접촉 없이 장애물을 회피합니다(IR 범퍼).
3. "안테나"를 장애물에 올려놓고 뒤로 이동한 후 회전한 다음 계속 이동합니다.
4. 방향전환(IR범퍼)으로 장애물을 회피합니다.
5. 거리를 유지하면서 물체를 따라갑니다(IR 범퍼).

회로를 살펴보기 전에 L293 칩의 기능을 간략하게 살펴보겠습니다.

그림 1. L293D 칩의 핀아웃

그 안에는 전기 모터를 제어하는 ​​두 개의 드라이버가 있습니다.
모터는 OUTPUT 출력에 연결됩니다. 두 개의 DC 모터를 연결할 수 있습니다.
마이크로 회로의 8번째 및 16번째 핀은 전원 공급 장치 양극에 연결됩니다. 별도의 전원 공급 장치가 지원됩니다. 16번 핀(Vss)은 칩 자체(5V)에 전원을 공급하기 위한 것이며, Vs 핀(8번 핀)은 모터용 전원 공급 장치에 연결할 수 있습니다. 전원부의 최대 전압은 36V입니다.
나는 그것들을 분리하지 않고 모든 회로에서 공통 전원에 연결하겠습니다.
전원 공급 장치 음극 또는 접지(GND)는 핀 번호 4, 5, 12, 13에 연결됩니다. 또한 이러한 접점은 미세 회로에 방열을 제공하므로 보드에 납땜할 때 확대된 할당을 할당하는 것이 좋습니다. 이 핀의 금속화 영역.
마이크로 회로에는 ENABLE1 및 ENABLE2 입력도 있습니다.
드라이버를 켜려면 이 핀에 논리 장치가 있어야 합니다. 즉, 1번 핀과 9번 핀을 전원 공급 장치 양극에 연결합니다.
모터 제어를 위한 INPUT 입력도 있습니다.

그림 2. 입력과 출력의 논리 수준 간의 대응 표입니다.

위의 표는 INPUT1 입력에 논리적인 것을 적용하면, 즉 전원 공급 장치의 플러스에 연결하고 INPUT2 입력을 마이너스에 연결하면 모터 M1이 특정 방향으로 회전하기 시작합니다. 그리고 이러한 입력에서 논리 레벨을 바꾸면 모터 M1이 다른 방향으로 회전합니다.
M2 모터가 연결된 두 번째 부분에서도 동일한 현상이 발생합니다.

제시된 로봇 구성표에 사용되는 것이 바로 이 기능입니다.

계획 번호 1. 로봇은 "안테나"와 접촉하면 장애물을 피해 돌아갑니다.

그림 3. 계획 번호 1. 기계식 장애물 센서 포함.

전원이 공급되면 모터가 특정 방향으로 회전하여 로봇이 앞으로 이동합니다. 이는 INPUT4 입력과 마찬가지로 저항 R2를 통해 INPUT1에 높은 레벨의 신호가 공급되기 때문에 발생합니다. 트랜지스터 VT1은 단단히 닫혀 있고 베이스는 전원 공급 장치 마이너스로 당겨지며 전류는 컬렉터로 흐르지 않습니다.
왼쪽에서 설명하겠습니다. 왜냐면.. 두 부분 모두 대칭입니다.
INPUT2 입력에서 저항 R3을 통해 논리 0이 설정됩니다(그림 2). 모터는 특정 방향으로 회전합니다. 다이어그램의 오른쪽에서도 같은 일이 발생하고 로봇이 앞으로 이동합니다.
회로에는 SPDT 스위치를 사용하는 키(SB1, SB2)가 포함되어 있습니다. 뜨거운 접착제를 사용하여 종이 클립을 부착하고 장애물 센서를 얻습니다.

그림 4. 안테나 센서는 종이 클립으로 만들어집니다.

이러한 센서가 장애물에 부딪히면 키가 닫히고 INPUT2 입력이 전원 공급 장치 양극에 연결됩니다. 논리 "1"이 제공됩니다. 동시에 트랜지스터도 열리며 그 결과 INPUT1 입력의 논리 값이 논리 0으로 대체됩니다. 버튼을 누르면 모터가 반대 방향으로 회전합니다. 마이크로 스위칭은 급격하게 발생하며 센서가 장애물과의 접촉을 멈출 때까지 모터는 로봇을 장애물로부터 멀어지게 만듭니다.

짐작할 수 있듯이 스위치나 모터 자체는 십자형으로 배열되어야 합니다.

계획 번호 2. 로봇이 접촉 없이 장애물을 회피합니다(IR 범퍼)

TSOP 수신기를 적외선 신호 수신용 센서로 사용하면 훨씬 더 흥미로운 동작을 실현할 수 있습니다. 이것은 일종의 IR 범퍼가 될 것입니다.
이제 회로는 다음과 같습니다.

그림 5. 계획 번호 2. 적외선 장애물 센서 포함.

"IR 수신 모듈"은 다음과 같이 작동합니다. TSOP 수신기에 적외선 신호가 도착하면 출력에 음의 전압이 나타나 PNP 트랜지스터의 잠금이 해제되고 전원 플러스의 전류가 마이크로 회로의 입력 회로에 공급됩니다. . 지난번에 종이 클립으로 만든 소위 안테나가 있는 기계식 스위치를 사용했다면 새로운 방식을 사용하면 로봇이 장애물에 충돌하지 않고 특정 거리에서 반응할 수 있습니다. 다음과 같습니다:

수신 부분은 다음과 같이 설계되었습니다. 두 개의 완전히 동일한 모듈(왼쪽 및 오른쪽)이 서로 고정되어 있습니다(그림 8).

작동 주파수가 36kHz인 TSOP1136이 수신기로 사용되었습니다. 핀 위치는 아래 그림에 나와 있습니다.

그림 6. TSOP1136.

수신기는 알아냈지만 장애물을 감지하려면 특정 주파수의 적외선을 로봇 앞 공간으로 보내야 합니다. 수신기의 작동 주파수는 다양하며 제 경우에는 36kHz입니다. 따라서 이 주파수에 대한 펄스 발생기가 NE555 칩에 조립되고 적외선 방출 다이오드가 출력에 연결되었습니다.


그림 7. NE555 이미 터 회로.

브레드보드 조각이 로봇 섀시에 부착되어 원하는 수의 IR 다이오드를 설치할 수 있습니다.
열수축 튜브 또는 이와 유사한 것을 다이오드에 배치하여 다른 방향이 아닌 앞으로 빛나도록 하는 것이 좋습니다.

그림 8. IR 범퍼.

전원이 공급된 후 로봇이 뒤로 이동할 수 있습니다. 이는 TSOP 수신기의 감도가 너무 높기 때문입니다. 바닥, 벽, 기타 표면에서도 반사된 신호를 감지합니다. 따라서 IR 신호 방출기 회로(그림 7)에는 트리밍 저항이 사용되어 적외선 다이오드의 밝기를 줄이고 원하는 감도를 달성합니다.

계획 번호 3. 이러한 로봇은 장애물에서 뒤로 이동하여 회전합니다.

또 다른 흥미로운 계획을 살펴 보겠습니다.

그림 9. 계획 번호 3.

이러한 로봇은 안테나 중 하나가 장애물에 부딪히면 뒤로 이동하여 약간 회전한 다음 잠시 멈춘 후 계속 움직입니다. 동작은 아래 애니메이션에 표시됩니다.

이 회로는 이전 회로의 적외선 범퍼와도 완벽하게 호환됩니다.

트랜지스터 VT1 및 VT2의 이미 터와 기본 저항 사이의 회로에 전해 커패시터가 나타났습니다. 다이오드 VD1, VD2 및 LED HL1, HL2가 나타났습니다.
이러한 추가 구성 요소가 필요한 이유를 살펴보겠습니다.
따라서 스위치 SB1이 닫힐 때, 즉 첫 번째 센서에서는 다이오드 VD1과 전류 제한 저항 R1을 통해 양극 전원 공급 장치의 전류가 트랜지스터의베이스에 공급됩니다. INPUT1 입력의 논리 레벨을 변경하면 열리고 INPUT2 입력의 레벨도 변경됩니다.
이때 커패시터 C1에도 전류가 흘러 충전된다. 모터 M1이 갑자기 회전 방향을 바꾸고 로봇이 장애물에서 뒤로 물러납니다. 비디오에서 두 번째 모터도 이동 방향을 바꾸는 것을 볼 수 있지만 시간은 더 짧습니다. 이는 센서 SB1이 닫히면 전원 공급 장치 플러스의 전류도 HL2 LED를 통해 회로 오른쪽으로 흐르기 때문입니다. LED는 장애물과의 충돌에 대한 단기 신호를 제공할 뿐만 아니라 회로의 반대쪽 절반에 대한 전압 흡수 장치 역할도 합니다. 간단히 말해, 스위치 SB1이 닫히면 커패시터 C2는 C1보다 적게 충전됩니다. 그리고 키(센서) SB2가 닫히면 같은 일이 발생하지만 반대로 C2는 더 많이 충전됩니다(즉, 플레이트의 전압이 더 높습니다). 이를 통해 장애물로부터 멀어질 수 있을 뿐만 아니라 장애물로부터 약간 멀어질 수도 있습니다. 이 회전 각도는 커패시터 C1 및 C2의 커패시턴스에 따라 달라집니다. 제 생각에는 22uF 용량의 커패시터가 최적입니다. 47μF의 정전용량을 사용하면 회전 각도가 더 커집니다.
또한 로봇이 장애물에서 뒤로 물러난 후 앞으로 이동하기 전에 잠시 멈춤이 있다는 것을 영상에서 볼 수 있습니다. 이는 커패시터의 방전으로 인해 발생합니다. 어느 시점에서 INPUT 입력의 논리 신호는 균형을 이루고 드라이버는 잠시 동안 모터를 회전할 방향을 이해하지 못합니다. 그러나 C1과 C2가 방전되면 INPUT 입력은 원래 논리 레벨로 돌아갑니다.
다이오드 VD1 및 VD2는 LED HL1, HL2를 통한 커패시터 방전을 방지합니다. LED가 없으면 회로가 작동하지 않습니다.

계획 번호 4. IR 범퍼가 포함된 이전 다이어그램.

이 방식은 기계식 센서 대신 적외선(IR 범퍼) 센서가 사용된다는 점에서 이전 방식과 다릅니다.

그림 10. 계획 번호 4.

PNP 트랜지스터 VT1 및 VT2의 콜렉터는 장애물이 감지되면 마이크로 회로의 입력 회로에 신호를 보냅니다. 그런 다음 모든 것은 앞에서 설명한 것과 동일한 방식으로 발생합니다. 이러한 로봇은 앞에 있는 장애물을 감지하고 뒤로 이동하고 방향을 바꾼 다음 계속 움직입니다.
동작은 아래 애니메이션에 표시됩니다.

예를 들어 커패시터 C1 및 C2의 정전 용량이 1μF(최소 정전 용량 0.22μF)로 감소되면 로봇은 더욱 갑작스럽게 동작합니다.

로봇이 물체를 따라가도록 만드는 방법은 무엇입니까?

위에 제시된 모든 구성에서 센서 또는 모터 자체는 십자형으로 배열되어야 합니다. 그리고 직접 연결(왼쪽 센서가 왼쪽 모터, 오른쪽 모터-오른쪽 모터를 "명령"할 때)을 사용하면 로봇은 장애물을 피하지 않고 오히려 따라갑니다. 직접적인 연결 덕분에 로봇의 매우 흥미로운 행동을 달성할 수 있습니다. 로봇은 특정 거리를 유지하면서 적극적으로 물체를 추적합니다. 물체까지의 거리는 범퍼에 있는 IR 다이오드의 밝기에 따라 달라집니다(조정).

더 많은 사진:

섀시는 디자이너의 금속 부품을 사용합니다. 브레드보드는 뒤집어져 있어 배터리를 쉽게 교체할 수 있습니다.

로봇은 4개의 AA 배터리로 구동됩니다.

로봇의 본체와 섀시를 제조하는 옵션은 상상력에 의해서만 제한됩니다. 특히 이미 판매되는 기성 솔루션이 많기 때문에 더욱 그렇습니다. 내 경우에는 회로가 보드로 전송됩니다. 많은 전선은 미학적으로 만족스럽지 않습니다. 충전회로를 갖춘 배터리도 탑재된다. 그리고 어떤 다른 개선 사항이 있거나 새로운 기능이 추가될 수 있는지 등 이 모든 내용을 댓글로 제안하실 수 있습니다.

이 기사에는 회로 작동을 자세히 설명하고 로봇의 다양한 동작 옵션을 보여주는 비디오가 포함되어 있습니다.

방사성 원소 목록

지정 유형 명칭 수량 메모가게내 메모장
회로소자 1번, 2번(IR범퍼 제외)
VT1, VT2 바이폴라 트랜지스터

2N3904

2 메모장으로
R1, R2, R4, R6 저항기

10k옴

4 메모장으로
R3, R5 저항기

4.7kΩ

2 메모장으로
C1 100μF1 메모장으로
다이어그램 2 번, 4 번 "IR 수신 모듈"의 요소
VT1, VT2 바이폴라 트랜지스터

2N3906

2 KT361, KT816 메모장으로
R1, R2 저항기

100옴

2 메모장으로
C1, C2 전해콘덴서10-47 미크로포맷2 메모장으로
"IR 신호 방출 모듈"의 요소 그림 7
R1 저항기

1k옴

1 메모장으로
R2 저항기

1.5k옴

1 메모장으로
R3 가변 저항기20k옴1 FD1, FD2의 밝기를 조정하려면 메모장으로
C1 세라믹 콘덴서0.01μF1 메모장으로
C2 세라믹 콘덴서0.1μF1 메모장으로
FD1, FD2 IR 다이오드 2 어느

안녕하세요 여러분. 이 기사는 방법에 대한 짧은 이야기입니다. 하다로봇 그들의 소유. 왜 이야기인가요? 이는 그러한 제품의 제조를 위해 공예상당한 양의 지식을 사용해야 하는데, 이는 하나의 기사에 제시하기가 매우 어렵습니다. 우리는 빌드 프로세스를 살펴보고 코드를 살펴보고 궁극적으로 Silicon Valley 창작물에 생명을 불어넣을 것입니다. 무엇을 끝내야할지 아이디어를 얻으려면 비디오를 시청하는 것이 좋습니다.

계속 진행하기 전에 다음 사항에 유의하십시오. 제조 중 공예레이저 커터가 사용되었습니다. 손으로 작업한 경험이 충분하다면 레이저 커터 사용을 피할 수 있습니다. 정확성은 프로젝트를 성공적으로 완료하는 열쇠입니다!

1단계: 어떻게 작동하나요?

로봇에는 4개의 다리가 있고 각 다리에는 3개의 서보가 있어 팔다리를 3자유도로 움직일 수 있습니다. 그는 "기어가는 걸음걸이"로 움직인다. 느릴 수도 있지만 가장 부드러운 것 중 하나입니다.

먼저, 로봇이 앞으로, 뒤로, 왼쪽, 오른쪽으로 이동하도록 가르친 다음 장애물/장애물을 감지하는 데 도움이 되는 초음파 센서를 추가하고 로봇 제어가 새로운 수준에 도달할 수 있는 Bluetooth 모듈을 추가해야 합니다. .

2단계: 필요한 부품

해골 2mm 두께의 플렉시 유리로 만들어졌습니다.

수제 제품의 전자 부품은 다음으로 구성됩니다.

  • 서보 12개;
  • arduino nano(다른 arduino 보드로 교체 가능)

  • 서보 제어용 실드;
  • 전원 공급 장치(프로젝트에서는 5V 4A 전원 공급 장치가 사용됨)

  • 초음파 센서;
  • hc 05 블루투스 모듈;

방패를 만들려면 다음이 필요합니다.

  • 회로 기판(바람직하게는 전원 및 접지의 공통 라인(버스) 포함);
  • 보드 간 핀 커넥터 - 30개;
  • 보드당 소켓 – 36개;

  • 전선.

도구:

  • 레이저 절단기(또는 숙련된 손);
  • 초강력 접착제;
  • 핫멜트 접착제.

3단계: 뼈대

그래픽 프로그램을 사용하여 뼈대의 구성 요소를 그려 봅시다.

그 후 우리는 가능한 모든 방법을 사용하여 미래 로봇의 부품 30개를 잘라냈습니다.

4단계: 조립

절단 후 플렉시글래스에서 보호 종이 덮개를 제거합니다.

다음으로 다리 조립을 시작합니다. 뼈대 부분에 고정 요소가 내장되어 있습니다. 이제 남은 일은 부품을 서로 연결하는 것입니다. 연결은 매우 단단하지만 안정성을 높이기 위해 고정 요소에 순간접착제 한 방울을 바를 수 있습니다.

그런 다음 서보를 수정해야 합니다(서보 샤프트 반대편에 나사를 붙입니다).

이 수정을 통해 우리는 로봇을 더욱 안정적으로 만들 것입니다. 서보 8개만 수정하면 되며 나머지 4개는 본체에 직접 부착됩니다.

다리를 연결 요소(곡선 부분)에 연결하고 이를 다시 본체의 서보 드라이브에 연결합니다.

5단계: 방패 만들기

단계에 제시된 사진을 따르면 보드를 만드는 것은 매우 간단합니다.

6단계: 전자제품

서보 드라이브 핀을 아두이노 보드에 연결해 보겠습니다. 핀은 올바른 순서로 연결되어야 합니다. 그렇지 않으면 아무 것도 작동하지 않습니다!

7단계: 프로그래밍

이제 프랑켄슈타인에 생명을 불어넣을 시간입니다. 먼저 Legs_init 프로그램을 로딩하여 로봇이 그림과 같은 위치에 있는지 확인해보자. 다음으로 quattro_test를 로드하여 로봇이 앞, 뒤, 왼쪽, 오른쪽 이동과 같은 기본적인 움직임에 반응하는지 확인하겠습니다.

중요: Arduino IDE에 추가 ​​라이브러리를 추가해야 합니다. 라이브러리 링크는 아래와 같습니다.

로봇은 앞으로 5보, 뒤로 5보, 왼쪽으로 90도 회전, 오른쪽으로 90도 회전해야 합니다. 프랑켄슈타인이 모든 일을 올바르게 수행한다면 우리는 올바른 방향으로 나아가고 있는 것입니다.

. 에스: 로봇을 스탠드처럼 컵 위에 올려놓으면 매번 시작점에 놓을 필요가 없습니다. 테스트 결과 로봇이 정상적으로 작동하는 것으로 확인되면 바닥에 로봇을 배치하여 테스트를 계속할 수 있습니다.

8단계: 역운동학

역운동학은 실제로 로봇을 구동하는 것입니다. (이 프로젝트의 수학적인 측면에 관심이 없고 프로젝트를 서둘러 끝내고 싶다면 이 단계를 건너뛸 수 있지만 로봇을 구동하는 것이 무엇인지 아는 것이 항상 유용할 것입니다.)

간단히 말해서, 역기구학, 줄여서 IR은 다리의 날카로운 끝 위치, 각 서보의 각도 등을 결정하는 삼각 방정식의 "부분"이며 궁극적으로 몇 가지 예비 설정을 결정합니다. 예를 들어, 로봇의 각 단계의 길이 또는 이동/휴식 중에 신체가 위치하게 될 높이 등입니다. 이러한 사전 정의된 매개변수를 사용하여 시스템은 주어진 명령을 사용하여 로봇을 제어하기 위해 각 서보가 이동해야 하는 양을 추출합니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: