이 튜토리얼에서는 일부 카드 보드와 서보 모터에서 Arduino Uno 기반 로봇 암 을 설계 할 것 입니다. 전체 건설 과정은 아래에 자세히 설명되어 있습니다. 이 프로젝트에서 Arduino Uno는 Robotic arm의 관절 역할을하는 서보 모터를 제어하도록 프로그래밍되었습니다. 이 설정은 로봇 크레인 처럼 보이 거나 간단한 조정을 통해 크레인으로 변환 할 수 있습니다. 이 프로젝트는 저렴한 비용으로 Simple Robot을 개발하는 방법을 배우고 싶거나 Arduino 및 서보 모터로 작업하는 것을 배우려는 초보자에게 도움이 될 것입니다.
이 Arduino Robotic Arm 은 연결된 4 개의 전위차계 로 제어 할 수 있으며 각 전위차계는 각 서보를 제어하는 데 사용됩니다. 어떤 물체를 선택하기 위해 냄비를 돌려서이 서보를 움직일 수 있습니다. 어떤 연습을하면 물체를 한 장소에서 다른 장소로 쉽게 선택하고 이동할 수 있습니다. 여기에서는 저 토크 서보를 사용했지만 더 강력한 서보를 사용하여 무거운 물체를 선택할 수 있습니다. 전체 과정은 마지막 비디오 에서 잘 보여졌습니다. 여기에서 다른 로봇 프로젝트도 확인하십시오.
필요한 구성 요소
- Arduino Uno
- 1000uF 커패시터 (4 개)
- 100nF 커패시터 (4 개)
- 서보 모터 (SG 90-4 개)
- 10K pot- 가변 저항기 (4 개)
- 전원 공급 장치 (5v- 가급적 2 개)
서보 모터
먼저 서보 모터에 대해 이야기합니다. 서보 모터는 주로 정확한 샤프트 이동이나 위치가 필요할 때 사용됩니다. 고속 애플리케이션에는 제안되지 않습니다. 서보 모터는 저속, 중간 토크 및 정확한 위치 적용을 위해 제안됩니다. 따라서이 모터는 로봇 팔을 설계하는 데 가장 적합 합니다.
서보 모터는 다양한 모양과 크기로 제공됩니다. 우리는 작은 서보 모터를 사용할 것 입니다. 여기서는 4 개의 SG90 서보를 사용 합니다. 서보 모터에는 주로 전선이 있으며, 하나는 양 전압 용이고 다른 하나는 접지 용이고 마지막 하나는 위치 설정 용입니다. 적색선은 전원, 흑색 선은 접지, 황색 선은 신호에 연결됩니다. Arduino를 사용하여 서보 모터 제어에 대한 자세한 내용은이 튜토리얼을 참조하십시오. Arduino에는 서보를 제어하기위한 사전 정의 된 라이브러리가 있으므로이 튜토리얼과 함께 배우게 될 서보 제어가 매우 쉽습니다.
로봇 팔의 구조
테이블이나 하드 카드 보드와 같이 평평하고 안정된 표면을 사용하십시오. 다음으로 서보 모터를 가운데에 놓고 제자리에 붙입니다. 회전 각도가 그림에 표시된 영역에 있는지 확인하십시오. 이 서보는 팔의베이스 역할을합니다.
첫 번째 서보 위에 작은 판지 를 놓고 두 번째 서보 를이 보드 위에 놓고 제자리에 붙입니다. 서보 회전은 다이어그램과 일치해야합니다.
판지를 가져다가 3cm x 11cm 크기로 자릅니다. 조각이 부드러워지지 않았는지 확인하십시오. 한쪽 끝은 직사각형 구멍 (아래쪽에서 0.8cm 남김)을 잘라서 다른 서보에 맞도록하고 다른 쪽 끝은 나사 나 접착제로 서보 기어를 단단히 고정합니다. 그런 다음 세 번째 서보 를 첫 번째 구멍에 맞 춥니 다.
이제 아래 그림에 표시된 길이로 다른 판지 조각을 자르고이 조각의 바닥에 다른 기어를 붙입니다.
이제 그림과 같이 네 번째 및 마지막 서보 를 두 번째 조각의 가장자리에 붙 입니다.
이것으로 두 조각이 함께 보입니다.
이 설정을베이스에 부착하면 다음과 같이 보일 것입니다.
거의 완료되었습니다. 우리 는 로봇 손처럼 물건을 잡고 선택 하기 위해 고리 를 만들기 만하면 됩니다. 후크의 경우 1cmx7cm 및 4cmx5cm 길이의 카드 보드 두 개를 더 자릅니다. 그림과 같이 함께 붙이고 가장 가장자리에 최종 기어를 붙입니다.
이 조각을 위에 올려 놓고 로봇 팔을 만들었습니다.
이것으로 우리의 기본 로봇 팔 디자인이 완성되었고 이것이 우리가 저비용 로봇 팔을 만든 방법입니다. 이제 회로도에 따라 브레드 보드에 회로를 연결합니다.
회로도 및 작동 설명:
Arduino Uno Robotic Arm 의 회로 연결 은 다음과 같습니다.
가변 저항의 전압은 완전히 선형이 아닙니다. 시끄러울 것입니다. 따라서이 노이즈를 필터링하기 위해 그림과 같이 각 저항에 커패시터를 배치합니다.
이제이 가변 저항 (위치 제어를 나타내는 전압)이 제공하는 전압을 Arduino의 ADC 채널에 공급합니다. 이를 위해 A0에서 A3까지 UNO의 4 개의 ADC 채널을 사용할 것입니다. ADC 초기화 후 사용자가 필요로하는 위치를 나타내는 pots의 디지털 값을 갖게됩니다. 이 값을 가져 와서 서보 위치와 일치시킵니다.
Arduino에는 6 개의 ADC 채널이 있습니다. 우리는 로봇 팔에 4 개를 사용했습니다. UNO ADC는 10 비트 분해능이므로 정수 값은 0-1023 (2 ^ 10 = 1024 값)입니다. 이것은 0에서 5V 사이의 입력 전압을 0에서 1023 사이의 정수 값으로 매핑한다는 것을 의미합니다. 따라서 단위당 모든 (5 / 1024 = 4.9mV). 여기 Arduino에서 ADC 채널을 사용하여 전압 레벨을 매핑하는 방법에 대해 자세히 알아보십시오.
이제 UNO가 아날로그 신호를 디지털 신호로 변환하려면 아래 기능을 사용하여 Arduino Uno의 ADC 채널을 사용해야합니다.
1. analogRead (핀); 2. analogReference (); 3. analogReadResolution (비트);
Arduino ADC 채널의 기본 참조 값은 5V 입니다. 즉, 모든 입력 채널에서 ADC 변환을 위해 최대 5V의 입력 전압을 제공 할 수 있습니다. 일부 센서는 0-2.5V의 전압을 제공하므로 5V 기준으로 정확도가 떨어 지므로이 기준 값을 변경할 수있는 명령이 있습니다. 따라서 참조 값을 변경하려면 "analogReference ();"가 있습니다.
기본적으로 최대 보드 ADC 분해능은 10 비트이며,이 분해능은 명령어 (“analogReadResolution (bits);”)를 사용하여 변경할 수 있습니다.
Robotic hand 회로 에서는이 기준 전압을 기본값으로 두었으므로 "analogRead (pin);" 함수를 직접 호출하여 ADC 채널에서 값을 읽을 수 있습니다 . 여기서 "pin"은 아날로그 신호를 연결 한 핀을 나타냅니다. "A0"을 읽고 싶습니다. ADC의 값은 int SENSORVALUE0 = analogRead (A0); .
이제 SERVO에 대해 이야기 해 봅시다. Arduino Uno에는 각도 값만 제공하여 서보 위치를 제어 할 수있는 기능이 있습니다. 서보가 30이되기를 원한다면 프로그램에서 값을 직접 나타낼 수 있습니다. SERVO 헤더 ( Servo.h ) 파일은 내부적으로 모든 듀티 비 계산을 처리합니다.
#포함
여기서 첫 번째 문장은 SERVO MOTOR를 제어하기위한 헤더 파일을 나타냅니다. 두 번째 문장은 서보의 이름을 지정하는 것입니다. 4 개를 사용할 것이므로 서보 0 으로 남겨 둡니다. 세 번째 문은 서보 신호 핀이 연결된 위치를 나타냅니다. 이것은 PWM 핀이어야합니다. 여기에서는 첫 번째 서보에 PIN3을 사용합니다. 네 번째 문은 서보 모터의 위치를 각도로 지정하는 명령을 제공합니다. 30이 주어지면 서보 모터가 30도 회전합니다.
이제 SG90 서보 위치가 0에서 180까지이고 ADC 값은 0-1023입니다. 두 값을 자동으로 일치시키는 특수 함수를 사용합니다.
센서 값 0 =지도 (센서 값 0, 0, 1023, 0, 180);
이 문은 두 값을 자동으로 매핑하고 결과를 정수 'servovalue0' 에 저장합니다.
이것이 Arduino를 사용하여 Robotic Arm 프로젝트에서 서보를 제어하는 방법 입니다. 아래 의 전체 코드를 확인하십시오.
로봇 팔 작동 방법:
사용자에게 제공되는 4 개의 냄비가 있습니다. 그리고이 4 개의 포트를 회전시켜 UNO의 ADC 채널에서 가변 전압을 제공합니다. 따라서 Arduino의 디지털 값은 사용자가 제어합니다. 이러한 디지털 값은 서보 모터 위치를 조정하기 위해 매핑되므로 서보 위치는 사용자가 제어 하며이 Pots를 회전하면 사용자가 로봇 팔의 관절을 움직일 수 있고 어떤 물체라도 집거나 잡을 수 있습니다.