산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

휴대용 거리 감지기

구성품 및 소모품

Arduino Nano R3
× 1
초음파 센서 - HC-SR04(일반)
× 1
18650 셀
× 1
TP4056 리튬 이온 충전기
× 1
DC-DC 5V 부스트 컨버터
× 1
부저
× 1
회전 전위차계(일반)
× 1
슬라이드 스위치
× 1
LED(일반)
빨간색(2), 녹색(1), 파란색(1)
× 4
저항 330옴
× 2
OpenBuilds M3 캡 헤드 나사
10mm M3 볼트(4)
× 1
와이어
18AWG
× 1
3D 인쇄 부품
인클로저용 부품 3개
× 1
스레드 어댑터
× 1

필요한 도구 및 기계

3D 프린터(일반)
Anet A8을 사용했습니다
납땜 인두(일반)
뜨거운 글루건(일반)
드레멜
또는 회전 도구

앱 및 온라인 서비스

Arduino IDE
NewPing 라이브러리를 다운로드해야 합니다.
Simplify3D
또는 원하는 슬라이서

이 프로젝트 정보

소개

리먼대학 운동과학부는 웨이트트레이닝에 관한 연구를 진행하고 있었다. 데이터에 상당한 영향을 줄 수 있는 반복 동작 범위에 불일치가 있었습니다. 저는 기계나 더 큰 중량을 사용하는 운동을 위해 전체 동작 범위를 식별할 수 있는 장치를 만들자는 제안을 받았습니다.

다음 조건을 충족하는 데 필요한 기기 :

<울>
  • 조정 가능한 거리
  • 기계에 영구적으로 고정되지 않습니다.
  • 삼각대 호환
  • 전선 없음
  • 동영상

    부품

    대부분의 부품이 아래에 표시되지만 전체 목록은 위의 BoM을 참조하십시오. 사용된 부품은 최적이기 때문에 선택되지 않습니다. 그것이 내가 작업해야 했던 것입니다. 맞춤형 PCB, SMT 부품 또는 LiPo 배터리를 사용하면 설치 공간을 크게 줄일 수 있습니다.

    코드

    코드(하단에 제공)를 컴파일하려면 NewPing 라이브러리가 필요합니다.

    부저 주파수 및 상한/하한은 변경할 수 있는 전역 변수입니다. 상한/하한은 센서가 읽는 최소 및 최대 거리를 나타내며 전위차계의 아날로그 값 [0,5]V에 매핑됩니다.

    int 빈도 =700; //주파수(Hz)
    int lower_bound =60; //거리(mm)
    int upper_bound =200; //mm 단위의 거리

    부팅이 성공했음을 나타내기 위해 전원을 켤 때 3번의 경고음이 발생합니다(setup() 참조). 고리). 다음으로 loop() 지속적으로 초음파 센서에 데이터를 요청하고 이를 전위차계에서 설정한 임계값과 비교합니다.

    3D 프린팅

    모든 파일이 싱기버스에 업로드되었거나 페이지 하단에서 압축된 파일 하나를 찾을 수 있습니다. CAD 사용 방법은 여기에서 다루지 않습니다. 모델은 3D 프린팅의 한계를 고려하여 제작되었습니다. 45도 챔퍼를 사용하여 오버행을 최소화하여 지지 재료를 줄였습니다. 여유 공간이 넉넉했기 때문에 다르게 보정된 프린터로 인쇄하더라도 부품이 맞아야 했습니다.

    인쇄 시간은 다르지만 내 인쇄 시간 다음과 같았습니다:

    <울>
  • 최고:2시간 40분
  • 하단:2시간 20분
  • 노브:20분
  • 어셈블리

    회로도는 하단에 제공됩니다. 페이지의. 피팅을 확인하기 위해 배선하지 않고 부품을 삽입합니다.

    회수된 IDE 케이블이 모든 전선을 제공했습니다. 와이어 그룹은 서로 붙어 있는 상태에서 벗겨질 수 있으며, 이는 어느 정도 질서를 제공합니다.

    대부분의 전자 장치는 인쇄된 부품 중 하나에 장착되므로 배선 및 관리에 약간의 생각을 해야 합니다.

    TP4056 보드의 SMD 표시등 LED는 납땜을 제거했습니다. 연장선과 3mm THT LED를 그 자리에 납땜했습니다. 전류 제한 저항은 여전히 ​​보드에 통합되어 있습니다. 이 재배치를 수행하는 사람의 비디오가 있습니다.

    arduino nano에는 액세스 가능한 접지 패드가 2개뿐이므로 스트립보드를 사용하여 접지 패드 수를 확장했습니다. 아래 그림에서 볼 수 있는 5V 라인에서도 동일한 작업이 수행되었습니다.

    5V가 접지에 단락되지 않도록 스트립의 연결을 끊는 것이 필요합니다. 빨간색 "X"는 중단 위치를 나타냅니다. 전체 유리 섬유 보드가 아닌 상단 구리만 중단하면 됩니다.

    구성 요소는 인클로저 외부에 배선되었습니다. 와이어 길이를 측정하고 와이어 간섭을 확인하기 위해 때때로 인클로저에 장착되었습니다.

    포텐셔미터는 너무 돌출되지 않도록 6mm로 트리밍했습니다.

    18650에 대한 연결은 직접 납땜되었으며 이는 나쁜 습관입니다. 셀을 과열하면 셀이 손상되고 시간이 지나면 실패할 수 있습니다. 알루미늄 스트립을 스폿 용접하는 것이 18650을 연결하는 올바른 방법입니다.

    전자 제품을 고정하기 위해 부끄럽게도 뜨거운 접착제가 사용되었습니다. 가능하면 뜨거운 접착제를 사용하지 마십시오. 올바른 기계적 설계와 패스너는 뜨거운 접착제보다 오래갑니다. 시간이 지나면 실패할 수밖에 없습니다. 프로토타입에서는 이해할 수 있지만 생산 부품에는 핫 글루가 사용되지 않습니다.

    요약

    돌이켜보면 초음파보다 IR 센서를 사용하는 것이 더 좋았겠지만 초음파 센서로 실험을 시작하기 전까지는 이것을 알 수 없었습니다. IR 센서는 FOV가 더 좁고 최대 거리가 훨씬 더 낮습니다(~3ft).

    두 번째 버전이 있다면 LiPo가 18650을 대체할 것입니다. 널링된 대형 어댑터 너트는 무겁고 공간을 차지합니다. 삼각대 마운트의 표준 나사산은 1/4"이므로 철물점에서 판매하는 간단한 1/4" 너트로 충분합니다. 맞춤형 PCB는 부피를 절반으로 줄입니다.

    컨셉에서 구상한 프로토타입이 2주 이내에 전달되기에 만족합니다.

    프로젝트의 미래

    초음파 센서를 실험하면서 그 한계에 대해 더 많이 알게 되었습니다. 첫 번째는 FOV의 각도가 ~±15°(총 30°)라는 것입니다. 이는 물체가 센서 바로 위에 있기 전에 부저를 유발할 수 있음을 의미합니다. 이로 인해 부정확성과 바람직하지 않은 판독값이 생성됩니다. 또한 물체의 평면이 전송된 음파와 수직이 아니면(또는 허용 각도 이내) 센서는 반사파를 수신하지 못하고 거리 값을 처리할 수 없습니다.

    내 초기 계획은 장치를 바닥에 놓고 웨이트 트레이닝 바의 플레이트가 임계값을 넘어 내려갔을 때 부저가 울리도록 하는 것이었습니다. 이 시스템은 고정 센서와 움직이는 트리거로 구성되어 있습니다. 제 동료 엔지니어링 친구가 시스템 반전과 관련된 대안 솔루션을 제안했습니다. 그는 센서를 지면을 가리키면서 움직이는 바에 장착할 것을 제안했습니다. 이렇게 땅이 방아쇠가 되었습니다. 또한 앞에서 언급한 것처럼 넓은 FOV로 인한 부정확성을 제거했습니다.

    제안은 주어진 문제에 대한 훌륭한 솔루션일 뿐만 아니라 구현하기도 매우 쉽습니다. 1/4" 삼각대 너트 어댑터 주문에는 1/4" -> 3/8" 어댑터 및 3/8" -> 1/4" 어댑터가 함께 제공됩니다. 두 번째 어댑터가 실제로 사용됩니다!

    처음 3D 모델을 시작할 때 dremel에 액세스할 수 없었기 때문에 전체 삼각대 어댑터를 설명해야 했습니다. 이것은 18650 셀과 결합하여 무게를 상당히 증가시켰습니다. 필요한 것보다 더 많은 무게를 추가하고 싶지 않으므로 마운트를 모델링하기 전에 두 번째 삼각대 어댑터를 잘라냅니다. 이 대체 장착 솔루션을 완료하기 위해 일주일 후에 프로젝트로 돌아가겠습니다. 그때까지는 여전히 작동합니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • RangeDetectionDevice.ino
  • RangeDetectionDevice.inoArduino
    /** Viktor Silivanov 3/22/2018 HC-SR04 초음파 센서를 사용하여 버저를 작동시키기 위한 거리 조정 기능이 있는 휴대용 거리 감지 장치.**///************* ******* 도서관 ****************************************** ************************************************** ************************************************** ************************************************** ****************#include //******************** 핀 **** ************************************************** ************************************************** ************************************************** ************************************************** ********//아날로그 핀#define 와이퍼 A5//디지털 핀#define echo 2#define trig 3#define ON_LED 7#부저 정의 8#부저 정의_LED 9//******** ************ 전역 변수 ******************************** ************************************************** ************************************************** *************************************** **************************//허용된 사용자 수정 빈도 =700; //Hzint lower_bound =60의 주파수; //mmint 단위의 거리 upper_bound =200; //mm 단위의 거리//수정하지 않음int buzz_time =250; //시작 직후 부저가 울리는 시간(밀리초)int buzz_delay =280; //시작 직후 부저 지연에 대한 시간(밀리초)int max_distance =400; // NewPing 라이브러리의 객체에 대한 인수int i =0;int distance;int threshold; NewPing 수중 음파 탐지기(trig, echo, max_distance); //객체 "소나" 인스턴스화//******************** 설정 ******************* ************************************************** ************************************************** ************************************************** ***********************************************//이 기능은 한 번만 실행됩니다. 무효 setup() { Serial.begin(9600); //보드율이 9600인 직렬 모니터의 사용을 허용합니다. //핀 I/O 유형 선언 pinMode(trig, OUTPUT); 핀모드(에코, 입력); 핀모드(부저, 출력); 핀모드(부저_LED, 출력); 핀모드(ON_LED, 출력); 디지털 쓰기(ON_LED, 높음); //녹색 LED를 켭니다. 기기가 켜져 있는 동안 계속 켜져 있음 //기기를 켤 때 부저가 3번 울림 while(i <3){ digitalWrite(buzzer_LED, HIGH); 톤(부저, 주파수, 버즈_시간); 지연(buzz_delay); 나는 ++; } digitalWrite(buzzer_LED, LOW);}//******************** 끝없이 실행 ***************** ************************************************** ************************************************** ************************************************** ************************************ 무효 루프() { 거리 =sonar.ping_cm(); //객체 "sonar"는 라이브러리의 ping_cm() 함수를 활용하여 cm 단위로 값을 반환합니다. 그런 다음 거리는 해당 값을 취합니다. 임계값 =analogRead(wiper); // 포텐셔미터 임계값의 와이퍼에서 아날로그 값 가져오기 =map(threshold, 0, 1023, lower_bound, upper_bound); //아날로그 판독값을 트리거 범위로 변환합니다. 임계값 업데이트 if(distance !=0 &&distance   

    맞춤형 부품 및 인클로저

    세 부분 모두 하나의 파일에 저장됩니다.

    회로도


    제조공정

    1. TinyML-Language Detector 기반 Edge Impulse 및 Arduino
    2. MPU-6050을 사용한 Arduino 자이로스코프 게임
    3. Arduino 디지털 주사위
    4. DIY 37 LED 룰렛 게임
    5. ATtiny85 미니 아케이드:뱀
    6. Arduino Audio Reactive Desk Light
    7. 스마트 얼굴 추적 로봇 자동차
    8. 구리로 전기도금
    9. NeoMatrix Arduino Pong
    10. 휴대용 온도 측정기