
알 수 없는 물체까지의 거리를 결정하는 한 가지 방법은 물체에서 빛의 펄스를 반사하고 반사를 감지하는 것입니다. 그런 다음 전송된 펄스와 수신된 펄스 사이의 시간 차이를 계산하여 빛의 속도에 곱하여 빛이 물체에서 왕복한 총 거리를 구합니다. 비행 시간 측정이라고 하는 이 방법은 레이더 및 LiDAR 애플리케이션에서 자주 사용됩니다.
이 애플리케이션 노트에서는 다음을 사용합니다. Moku:Go, Liquid Instruments의 FPGA 기반 장치로, 상업용 거리 측정기와 함께 재구성 가능한 테스트 및 측정 계측기 제품군을 제공하여 정확한 비행 시간 측정을 수행합니다. 거리 측정기는 적외선 펄스를 방출하고 감지하며 Moku:Go 장치에 직렬 데이터 스트림을 제공합니다. Moku:Go는 또한 범위 센서에서 제공하는 직렬 데이터의 전원 및 디코더 역할을 합니다. Moku를 사용하여 이 직렬 데이터를 시각화하는 방법을 보여드리겠습니다. 오실로스코프 그리고 로직 분석기/패턴 생성기 마지막으로, 우리는 다음을 사용하여 측정을 자동화할 것입니다. 모쿠 파이썬 API.
필수 자료
이 실험을 수행하려면 아래에 나열된 장비가 필요합니다. 시각적 가이드는 그림 1을 참조하세요.
모쿠:고: 이 설정은 특히 다음을 요구합니다. Moku:Go 내장된 프로그래밍 가능한 전원 공급 장치를 제공하기 때문에 장치입니다. 여기서는 LiDAR 거리 센서에 전원을 공급하는 데 사용합니다. 다른 Moku 하드웨어가 있는 경우 5V DC 전원 공급 장치도 필요합니다.
바나나 플러그-악어 클립 와이어 2개: 이 케이블은 Moku:Go에 연결되어 거리 측정기에 5V DC 전원을 공급합니다.
BNC-악어 클립 와이어 1개: 이는 거리 측정기의 직렬 데이터를 Moku:Go의 입력으로 전달하는 데 사용됩니다.
LiDAR 거리 센서: 이 실험에 사용하는 거리 측정기는 TF 루나 Benewake에서. TF Luna는 적외선 펄스 열의 비행 시간을 계산하여 거리를 측정합니다. 그런 다음 이 데이터는 수신기로 전송됩니다. UART 직렬 인코딩. 이 장치에 대한 설명서 링크는 기사 마지막의 참조 섹션에서 제공됩니다. TF Luna에는 연결 와이어가 1개 있습니다. 여기서는 전원, 접지 및 Tx 와이어만 사용합니다. 이러한 연결은 그림 XNUMX에 레이블이 지정되어 있습니다.
그림 1: 비행 시간 데모에 필요한 장비. 왼쪽: TF 루나, 세 개의 연결에 라벨이 붙어 있습니다. 가운데: BNC-to-alligator 연결 와이어. 오른쪽: 바나나 플러그-to-alligator 클립 연결 와이어.
장비 설정
이 단계는 계측기 간에 만들어야 할 모든 연결을 설명합니다. 전체 회로도는 그림 2에 나와 있습니다.
- LiDAR 범위 센서를 준비하세요. TF Luna를 사용하는 경우 커넥터의 한쪽 끝을 제거한 다음 전선 스트리퍼를 사용하여 악어 클립을 연결할 수 있는 섹션을 노출해야 합니다. 다른 센서를 사용하는 경우, 후속 단계를 수행할 때 해당 센서에 대한 설명서를 준비해야 합니다.
- 범위 센서를 전원 공급장치에 연결합니다. Vpp 와이어(빨간색)에 악어 클립을 부착하고, 바나나 플러그를 Moku:Go 뒷면의 전원 1에 꽂습니다. 다음 와이어에도 같은 작업을 반복하여 클립을 GND 와이어(검정색)에 고정하고 바나나 플러그를 전원 1과 전원 2의 공유 접지에 연결합니다.
- 데이터 전송 케이블을 연결합니다. 데이터 전송 케이블의 BNC 끝을 Moku:Go의 입력 1에 꽂습니다. 빨간색 악어 클립(또는 케이블에 따라 프로브)을 범위 센서의 Tx 와이어에 연결합니다. 케이블에 접지 클립도 있는 경우 범위 센서의 GND 핀에 고정하여 전원 공급 장치와 공통 접지를 공유할 수 있습니다.
그림 2: 범위 센서와 Moku:Go 사이의 연결. 장치의 내장 전원 공급 장치는 센서에 5V 전원 신호를 제공합니다. 센서의 Tx 핀은 Moku:Go의 입력 1에 직렬 데이터를 제공합니다.
출력 확인 및 보기
이 단계에서는 Moku를 설정하는 방법을 설명합니다. 오실로스코프 범위 센서에서 전송된 신호를 봅니다.
1. Moku 오실로스코프를 실행합니다. Moku 소프트웨어의 메인 화면에서 Oscilloscope를 클릭하여 단일 계측기 모드로 시작합니다. 메인 Oscilloscope 화면에서는 센서에 아직 전원이 공급되지 않았기 때문에 채널 A에 신호가 없어야 합니다.
2. 전원 공급 장치를 활성화합니다. Moku 화면에서 왼쪽 상단 모서리에 있는 메뉴 아이콘(세 개의 평행선)을 클릭합니다. 그런 다음 "전원 공급"을 클릭합니다. 화면에 새 메뉴 창이 나타납니다. PPSU 1 옆에 있는 슬라이더를 클릭하여 활성화한 다음 전압 값을 "5.000"으로 변경합니다. 그림 50과 같이 범위 센서가 Moku:Go에서 전류(~3 mA)를 끌어오기 시작하는 것을 볼 수 있습니다.
3. 오실로스코프에서 출력을 확인합니다. 전원이 켜지면 오실로스코프 화면으로 돌아갑니다. 그림 3에 표시된 예와 유사한 반복 패턴이 표시되어야 합니다. 이는 범위 센서에서 전송되는 직렬 데이터로, UART 형식으로 인코딩되어 있습니다. 각 패킷에는 여러 비트의 데이터가 포함되어 있으며, 비트 값은 전압이 높은지(3.3V) 낮은지(~200mV)에 따라 결정됩니다. 범위 센서가 올바르게 작동하는지 확인한 후, 이제 Moku Logic Analyzer/Pattern Generator를 사용하여 이 직렬 데이터를 해석합니다.
그림 3: UART 직렬 데이터의 버스트를 보여주는 Moku 오실로스코프와 전원 공급 장치.
직렬 출력 디코딩
이제 Moku를 설정하겠습니다. 로직 분석기/패턴 생성기 UART 직렬 데이터를 디코딩합니다.
1. Moku Logic Analyzer / Pattern Generator를 시작합니다. Moku 소프트웨어의 메인 화면에서 Logic Analyzer/Pattern Generator를 클릭하여 단일 계측기 모드로 시작합니다. 이렇게 하면 Moku:Go FPGA가 재구성되므로 범위 센서에 전원을 공급하려면 장치의 전원 공급 장치를 다시 활성화해야 합니다. 그렇게 하려면 위 섹션에 설명된 단계를 따르세요.
2. 인수를 설정합니다. 화면 오른쪽에 Acquisition 메뉴가 표시됩니다. 소스를 "Analog inputs"로 변경하면 16비트 디지털 I/O를 우회하고 아날로그 입력 1과 2를 1비트 데이터로 사용합니다. UART는 바이너리 형식이므로 허용됩니다. 플롯 오른쪽에 있는 "X"를 클릭하여 Bit 1.5 디스플레이를 제거합니다. "Timebase setting"에서 시간 범위를 300ms로, 오프셋을 -0 𝛍s로 설정합니다. 범위 센서가 켜져 있으면 그림 4와 같이 Bit XNUMX 플롯에 직렬 패턴이 나타납니다.
그림 4: 그림 3의 예와 유사한 UART 직렬 데이터 시퀀스를 보여주는 Moku 로직 분석기/패턴 생성기.
3. 프로토콜 디코더를 추가합니다. Moku Logic Analyzer/Pattern Generator는 직렬 데이터를 5진수 형식으로 변환하는 UART를 포함하여 여러 표준 프로토콜을 디코딩할 수 있습니다. 디코더를 추가하려면 그림 XNUMX와 같이 화면 왼쪽 상단에 있는 더하기 기호를 클릭합니다.
그림 5: UART 직렬 데이터를 위한 프로토콜 디코더 추가.
4. 프로토콜 디코더를 구성합니다. 데이터를 적절히 디코딩하려면 계측기가 UART 시퀀스에 포함된 정보 비트 수와 정보가 도착하는 속도(보드 속도가라고도 함)를 알아야 합니다. 이는 거리 측정기의 정확한 특성에 따라 달라집니다. TF Luna를 사용하는 경우 구성은 그림 6에 나와 있습니다. 데이터 폭은 8개의 정지 비트가 있는 1비트이고, 패리티 검사는 없으며 기본 보드 속도는 115200입니다. 디코더 설정이 송신기의 설정과 일치하는 경우 그림 6과 같이 UART 디코더 라인에 XNUMX진수가 나타납니다.
그림 6: XNUMX진수로 변환된 UART 직렬 데이터.
7. 데이터를 해석하세요. Moku:Go에서 디코딩된 수치 데이터를 이해하려면 범위 센서의 설명서를 참조하십시오. TF Luna의 경우 기본 9바이트 데이터 시퀀스가 그림 7에 나와 있습니다. 처음 두 바이트는 항상 59이며, 이는 디코딩된 데이터로 확인됩니다. 이 경우 바이트 2와 3은 센티미터 단위의 거리 정보를 제공합니다. 범위 센서 위에 손을 대면 이 값이 적절하게 변경되는 것을 볼 수 있습니다.
그림 7: TF Luna 데이터시트에서 발췌한 내용은 결과를 해석하는 데 도움이 됩니다.
Python을 사용하여 측정 자동화
운수 나쁘게, 16진수 거리 인식에 직관적이지 않습니다. 이 섹션에서는 다음을 사용합니다. 모쿠 파이썬 API 데이터를 지속적으로 새로 고칠 자동화된 거리 측정 도구를 만듭니다. 다음 스크립트는 Liquid Instruments에서 사용할 수 있습니다. 깃허브 페이지. Moku Python API를 설정하기 위한 튜토리얼이 제공됩니다. LINK.
1. 가져오기 및 연결 필요한 "표준" 가져오기 외에도 그림 8에서와 같이 Moku:Go에 배포할 계획인 모든 기기를 가져와야 합니다. 이 예에서 Moku Logic Analyzer/Pattern Generator의 인스턴스를 만들고 장치의 IP 주소를 지정합니다.
그림 8: 코드 가져오기 및 연결.
2. 전원 공급 장치를 설정합니다. DC 전원 공급을 포함하여 Moku 소프트웨어의 모든 기능도 API를 사용하여 수행할 수 있습니다. 그림 9에 표시된 대로 원하는 공급과 최대 전압 및 전류 값을 지정하세요.
그림 9: DC 전원 공급 장치 설정
3. Moku 로직 분석기/패턴 생성기를 설정합니다. 이는 단순히 우리가 이전에 지정한 것과 동일한 정보를 프로토콜 디코더에 제공하기 위해 여러 명령을 사용하기만 하면 됩니다. 여기에는 데이터 폭, 정지 폭, 보드 속도, 채널 번호가 포함됩니다. "get_data"는 원시 데이터의 전체 추적을 반환하므로 'pa1'이라는 레이블이 붙은 프로토콜 분석기 데이터만 요청합니다.
그림 10: 프로토콜 디코더 설정.
4. 데이터를 표시합니다. 데이터 배열 내에서 상태 변수가 "idle"과 "data" 사이를 번갈아 가는 것을 볼 수 있습니다. 배열의 3번째 요소에 해당하는 5번째 데이터 비트를 살펴보고 싶습니다. 이 사전 내에서 'data' 키에 첨부된 값을 원합니다. 이 값은 센티미터 단위의 거리 값을 제공합니다. 이 값을 복구한 후 다음을 사용합니다. Tkinter 가장 최근에 측정된 거리 값으로 업데이트되는 디스플레이를 만드는 패키지입니다. 코드는 예제 창과 함께 그림 11에 나와 있습니다.
그림 11: 지속적으로 업데이트되는 디스플레이를 위한 코드와 디스플레이 자체.
결론
Moku:Go는 전자 테스트 및 측정 애플리케이션을 위한 강력하고 유연한 멀티툴입니다. 이 데모에서 Moku:Go를 범위 센서와 함께 사용하여 비행 시간 거리 측정을 수행했습니다. Moku:Go의 유연성 덕분에 장치의 프로그래밍 가능한 전원 공급 장치로 센서에 전원을 공급하고 Moku 오실로스코프 및 로직 분석기/패턴 생성기 계측기를 사용하여 직렬 데이터를 보고 디코딩할 수 있습니다. 또한 Moku Python API를 사용하여 지속적으로 업데이트되는 범위 측정 스크립트를 구현했습니다.
Moku 플랫폼에 대해 자세히 알아보려면 클릭하세요. LINK. 무료로 악기를 탐색하려면 다음을 다운로드하세요. 데스크톱 앱 데모 모드를 선택하세요.
혹시 궁금하신 점이 있으십니까?
지식 베이스를 통해 자주 묻는 질문들에 대한 답변을 확인하십시오
장치 기능이나 장비 기능에 대해 질문이 있는 경우 당사의 광범위한 내용을 확인하십시오. 기술 자료 당신이 찾고 있는 답을 찾기 위해. 인기 기사를 빠르게 확인하고 제품이나 주제별로 검색 범위를 좁힐 수도 있습니다.
사용자 포럼에 가입하시어 연락을 받으십시오
새로운 기능을 요청하고 싶으신가요? 공유할 지원 팁이 있나요? 사용 사례 예시부터 새로운 기능 발표 등에 이르기까지 사용자 포럼 제품 업데이트는 물론 Liquid Instruments 및 글로벌 사용자 커뮤니티와의 연결을 위한 원스톱 상점입니다.
참고자료
Benewake TF Luna 문서: https://en.benewake.com/DataDownload/index_pid_20_lcid_21.html