제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 3 | ||||
| × | 4 |
| ||||
|
이 튜토리얼의 목적은 산업용 로봇의 기본 기능을 시뮬레이션하는 로봇 암의 제어 및 프로그래밍을 위한 프로젝트를 단계별로 개발하는 것입니다.
1단계:사양
로봇에는 두 가지 기본 기능이 있습니다.
<울>주요 특징:
<울>
2단계:프로젝트
이전 단계의 블록 다이어그램은 이 프로젝트에서 사용될 "Bill of Material"을 보여줍니다.
사용 가능한 Arduino 포트(I/O)의 수에 대해 걱정하지 않기 위해 Arduino MEGA를 선택했습니다. 예를 들어 UNO는 문제 없이 작동하지만 포트 확장 방법을 사용해야 합니다. 예를 들어 74138 디코더와 같이 인터넷에서 쉽게 찾을 수 있는 몇 가지 옵션이 있습니다.
여기, "로컬 모드"에서 프로그래밍되는 첫 번째 프로토타입입니다.
블루투스 네트워크의 경우 HC-06이 사용됩니다.
"원격 모드
에 사용되는 Android 앱 "는 Android 기기를 기반으로 하는 이러한 종류의 앱을 위한 강력한 단일 플랫폼인 MIT Appinventor2 도구를 사용하여 개발되었습니다. 이 앱은 Google 스토어 MJRoBot Arduino Robot Arm Control에서 무료로 다운로드할 수 있습니다.
아래 비디오는 원격 프로그래밍을 사용한 최종 프로젝트가 무엇인지에 대한 아이디어를 제공합니다.
3단계:프로젝트 개발 그림>
로봇 팔은 "관절" 또는 "자유도"(DOF)의 수에 따라 분류할 수 있습니다.
<울>
4단계:서킷
서보 모터는 Arduino에 직접 연결된 조인트를 구동하는 데 사용됩니다. 더 큰 토크와 정밀도를 위해 베이스에 사용되는 "스테퍼 모터"를 참조하는 것은 드문 일이 아닙니다. 서보의 적절한 선택은 매우 중요합니다(불행히도 내 SanSmart 3DOF AARM과 함께 제공되는 MG995와 같이 매우 열악한 구성의 저렴한 중국 서보가 있습니다). 그러나이 프로젝트의 제안은 잘 작동했습니다.
서보의 DC 전원은 Arduino 및 기타 구성 요소와 분리되어야 합니다. 5V 또는 6V의 외부 전원 공급 장치는 문제 없이 작동해야 합니다(적절한 전압 범위를 확인하려면 서보의 DataSheet를 확인하십시오). 일반적인 관행은 VCC와 GND 사이에 470uF 커패시터를 사용하여 서보 내부의 DC 모터에서 발생하는 노이즈를 최소화하는 것입니다. 모든 "접지"(Arduino GND 핀이 있는 외부 전원)를 연결해야 합니다.
서보에 문제가 있고 많이 진동하는 경우 코드의 "지연"을 조정하십시오. 서보가 새로운 명령을 받기 전에 특정 지점에 도달할 시간을 갖는 것이 중요합니다. 또한 서보가 디지털인지 아날로그인지 확인할 가치가 있습니다. 마치 기계적으로 유사한 것처럼 디지털은 300Hz의 주파수로 작동하고 아날로그는 50Hz의 주파수로 작동합니다. 표준 Arduino 라이브러리 "Servo.h
"는 아날로그 서보용으로 개발되었으며 디지털 서보에서 더 나은 기능을 위해 필요한 경우 수정할 수 있습니다.
위의 그림은 전체 회로를 보여줍니다.
5단계:코드
프로젝트는 복잡하지 않지만 많은 변수가 있습니다. 가장 신중한 방법은 명확하게 정의하고 고유한 파일에 주석을 남겨두는 것입니다.
ArmDefine.h
이 파일은 또한 최소, 최대 및 초기 서보 각도를 설정해야 합니다. 이 튜토리얼에 포함된 코드에는 내 프로젝트에서 테스트한 로봇 팔에 대한 두 가지 매개변수 세트가 있습니다(물론 상수 그룹만 사용해야 함).
// MeArm 4-DOF#define minGrip 15 #define minBase 0 #define minShou 60 #define minElbw 60 #define maxGrip 45 #define maxBase 170#define maxShou 180 #define maxElbw 150 #define midGrip midBase 87#define midShou 138#define midElbw 100/* SS 3-DOF#define minGrip 75 #define minBase 5 #define minShou 5 #define minElbw 0 #define maxGrip 125 #define maxBase 150#define maxShou 155 midGrip 100#define midBase 90#define midShou 90#define midElbw 0 */
각 유형의 팔에는 서로 다른 매개변수 세트가 있으며 자신에게 맞는 것을 찾는 것이 중요합니다. 내가 제안하는 것은 초기에 전위차계(pots)가 중간점에 남아 있고 PWM 출력의 매핑이 기본값으로 설정된다는 것입니다. Max =255
, 최소 =0
및 중간 =126
( "#define
" 위). 그런 다음 포트를 하나씩 변경하기 시작하고 직렬 모니터(또는 LCD)에서 arm이 제대로 작동하는 최소값과 최대값을 따라야 합니다. 이것이 최종적으로 사용되는 값입니다. 설정(ArmDefine.h에서 내 원래 값 변경)
.
로봇이 재생해야 하는 일련의 좌표(또는 단계)를 "기록"하기 위해 데이터 배열을 사용합니다.
<사전><코드>int gripPosition[100];int basePosition[100];int shouPosition[100];int elbwPosition[100];int positionIndex =0; // 기록된 작업에 사용되는 위치 배열에서 사용할 인덱스"저장된" 위치를 유지하지 않고 "로봇" 프로그램이 끝나면 인덱스가 다시 0으로 돌아가고 로봇은 새 시퀀스의 기록을 기다립니다(프로그램이 손실됨). 또는 이러한 데이터 배열을 예를 들어 Arduino EEPROM에 보관할 수 있습니다. 그렇게 하면 프로그램이 다시 실행되거나 하나 이상의 프로그램이 저장될 수 있습니다.
6단계:프로그램 로직
메인 블록("Loop")은 정말 간단합니다.
"프로그램"(단계의 순서)을 실행하는 명령이 사용되었는지 확인하십시오.
<울>void 루프(){ checkBTcmd(); 정의LocalRemote(); execTaskCmd =디지털 읽기(execTaskPin); if (execTaskCmd ==|| HIGH 명령 =="runon") { RunProgram(); } 그렇지 않으면 recArmPosition(); 명령 ="";}
checkBTcmd() 함수 BT 모듈에서 도착한 개별 문자를 사용하여 문자열을 어셈블합니다. 이 문자열은 "command 변수에 전달됩니다. ".
defineLocalRemote() 함수 "명령 변수를 고려합니다. " 모드를 원격으로 변경하는 명령이 하나 수신되었는지 또는 그 반대인지 확인합니다. 여기에서 알람 명령도 분석됩니다. 프로그램 로직을 위해 Android 장치에서 "알람"이 트리거되면 암은 반드시 원격으로 이동해야 합니다. 모드.
RunProgram() 기능 준비, LED 켜기/끄기 등을 수행하고 특히 다음 기능을 호출합니다. ExecuteTask() . 후자는 일련의 단계에 대한 실행 논리를 포함하는 기능입니다. 이 함수는 "positionIndex " armPosition(그립, 베이스, 어깨, 팔꿈치) 도구를 사용하여 위치 데이터를 팔에 하나씩 전송 .
마지막으로, 실제로 서보에 명령을 내리고 "단계"를 작성하는 함수는 recArmPosition()입니다. . Android 명령 수신에 따라 이 기능은 포트를 통하거나 Android 앱의 "슬라이더"를 통할 수 있는 서보의 위치를 정의합니다. 각 위치가 변경될 때 이 함수는 armPosition
을 사용하여 좌표를 서보에 보냅니다. 기능(그립, 베이스, 어깨, 팔꿈치). 포트 또는 슬라이더의 실제 위치 읽기 및 해당하는 서보 활성화는 "SAVE" 또는 "PROGRAM" 명령이 트리거될 때 발생합니다. 그 순간 배열의 위치 인덱스가 증가하고 단계가 저장됩니다.
이해를 단순화하기 위해 모든 코드는 특정 기능을 기반으로 했습니다. "설정
", "루프
" 및 위에서 설명한 기능은 거의 모두 MJRoBot_Arm_Robot_Task_Prgm.ino 파일에 있습니다.
BT 명령 읽기와 같은 보다 일반적인 기능:void checkBTcmd() ; 사운드 생성기:무효 신호음(int pin, int freq, long ms) 및 디바운싱:부울 디바운스(int 핀) ; 파일:General_Functions.ino
중요한 사실:Arduino가 16Mhz의 클럭을 기반으로 명령을 실행하기 때문에 제어 버튼은 초당 수백 또는 수천 번 읽힐 것으로 예상되므로 녹음 단계를 설정하는 "디바운싱" 버튼을 만드는 것이 중요합니다. .
네 번째이자 마지막 파일은 Arm_Ctrl_and_Display.ino입니다.
이 파일에는 전위차계의 읽기 기능이 있습니다. bool readPotenciometers() ; Android 슬라이더 읽기:bool readSliders() ; 서보 배치:void armPosition(int 그립, int basee, int 어깨, 팔꿈치 int) . 파일에 포함된 다른 기능은 LCD에 데이터 표시, 시리얼 모니터, 알람 등입니다.
비디오는 Android 앱을 통해 원격으로 프로그래밍되는 로봇 팔 4DOF "meArm"을 보여줍니다. .
프로젝트의 전체 소스 코드는 GITHUB에서 찾을 수 있습니다:
https://github.com/Mjrovai/MJRoBot-Programmed-Arm
또는 여기:
F49C85FIL8CVX0P.ino FC4OQJNIL8CVX1C.h FBYPQAMIL8CVX1D.ino F2SBAXVIL8CVX1E.ino
7단계:결론
항상 그렇듯이 이 프로젝트가 다른 사람들이 전자, 로봇 공학 및 IoT의 흥미진진한 세계에서 길을 찾는 데 도움이 되기를 바랍니다! 더 많은 프로젝트를 보려면 제 블로그를 방문하십시오:MJRoBot.org
세계 남쪽에서 온 살루도스! 다음 튜토리얼에서 만나요!
감사합니다
마르셀로
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">제조공정
이 튜토리얼에서는 Arduino 기반 RC Hovercraft를 구축하는 방법을 배웁니다. 프로펠러를 포함한 호버크라프트 부품의 설계 및 3D 프린팅부터 전자 부품 연결 및 Arduino 프로그래밍까지 전체 제작 과정을 보여드리겠습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 호버크라프트를 제어하기 위해 이전 비디오 중 하나에서 만든 DIY Arduino 기반 RC 송신기를 사용했습니다. 오른쪽 조이스틱은 스러스트 모터 후면에 러더를 위치시키기 위한 서보 모터를 제어하기 위해 설정하고, 전위차계
튜토리얼에서 우리는 DIY Arduino RC 송신기를 만드는 방법을 배울 것입니다. 종종 내가 만드는 프로젝트에 무선 제어가 필요하므로 거의 모든 작업에 사용할 수 있는 이 다기능 라디오 컨트롤러를 만들었습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 이제 수신기 측에서 약간의 조정만 하면 모든 Arduino 프로젝트를 무선으로 제어할 수 있습니다. 이 송신기는 RC 장난감, 자동차, 드론 등을 제어하기 위한 상업용 RC 송신기로도 사용할 수 있습니다. 이를 위해서는 상용 RC 장치를 제어하기