인스트럭터블 로고

instructables VHDL 모터 속도 제어 방향 및 속도 결정 왼쪽 및 오른쪽 속도 컨트롤러

instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-제품

메모: 이 페이지는 더 큰 빌드의 일부입니다. 더 큰 프로젝트 내에서 다음이 어디에 해당하는지 이해할 수 있도록 여기에서 시작해야 합니다.

위에view

모터 속도 및 방향 제어는 광검출기 로봇의 두 가지 주요 부문 중 하나이며, 다른 하나는 광검출기 또는 광검출기 부문입니다. 광검출기 부문은 로봇의 시각에 초점을 맞추는 반면, 모터 속도 및 방향 제어 부문은 로봇의 움직임에 초점을 맞춥니다. 모터 속도 및 방향 제어는 광검출기 부문에서 제공되는 데이터를 처리하고 모터 움직임의 형태로 물리적 출력을 제공합니다.

이 구분의 목적은 빛을 찾는 로봇의 왼쪽과 오른쪽 모터의 속도와 방향을 모두 제어하는 ​​것입니다. 이 값을 결정하려면 카메라에서 캡처하고 임계값으로 처리한 빛의 크기와 위치가 필요합니다. 또한 각 모터에서 측정된 속도가 필요합니다. 이 입력에서 각 모터의 PWM(Pulse-Width Modulation) 값을 출력할 수 있습니다.

이를 달성하려면 다음과 같은 VHDL 모듈을 만들어야 합니다(또한 아래에 링크됨).

  1. 제어
  2. 오류 계산
  3. 이진 변환
  4.  광원의 부재

여기에서 이 부서의 VHDL 코드를 볼 수 있습니다.

용품
VHDL에서 코드를 테스트하는 데에도 사용할 수 있으므로 ISE Design Suite 14.7로 코딩하는 것이 좋습니다. 그러나 코드를 BASYS 3에 업로드하려면 Vivado(ver. 2015.4 또는 2016.4)를 설치하고 .xdc 확장자로 제약조건을 작성해야 합니다.instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-fig-1

VHDL 모터 속도 제어: 방향 및 속도 결정, 왼쪽 및 오른쪽 속도 컨트롤러: 1페이지

지시 단계

1단계: 컨트롤
빛을 찾는 로봇의 동작을 제어하는 ​​방법을 이해하기 위해 로봇이 광원을 보았을 때 원하는 동작을 설명합니다. 이 동작은 광원의 위치와 크기에 따라 제어됩니다.instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-

사용된 알고리즘은 왼쪽 또는 오른쪽으로 돌릴 수 있는 레버 하나와 앞으로 또는 뒤로 돌릴 수 있는 다른 레버가 있는 RC 로봇 컨트롤러와 유사합니다.

빛을 찾기 위해 광원의 위치가 로봇 바로 앞에 있으면 이 로봇이 직선으로 움직이기를 원합니다. 이를 위해서는 왼쪽과 오른쪽 모터 모두에서 동일한 속도가 필요합니다. 조명이 로봇의 왼쪽에 있는 경우 로봇이 조명을 향해 왼쪽으로 회전할 수 있도록 오른쪽 모터가 왼쪽 모터보다 빠르게 움직이기를 원합니다. 반대로 빛이 로봇의 오른쪽에 있는 경우 왼쪽 모터가 오른쪽 모터보다 빠르게 움직여 로봇이 빛을 향해 오른쪽으로 회전할 수 있도록 해야 합니다. 이는 RC 컨트롤러의 왼쪽 레버와 유사하며 로봇을 왼쪽, 오른쪽 또는 직선으로 움직일지 여부를 제어할 수 있습니다.

그런 다음 광원이 멀리 있으면(작은 광원) 로봇이 앞으로 이동하고, 감지된 광원이 너무 가깝다면(큰 광원) 뒤로 이동합니다. 또한 로봇이 광원에서 멀어질수록 로봇이 더 빨리 움직이기를 원합니다. 이것은 RC 컨트롤러의 오른쪽 레버와 유사하며, 여기에서 앞으로 또는 뒤로 이동할지 여부와 원하는 속도를 제어할 수 있습니다.

그런 다음 각 모터의 속도에 대한 수학 공식을 유도할 수 있으며 -255에서 255 사이의 속도 범위를 선택합니다. 음수 값은 모터가 뒤로 회전함을 의미하고 양수 값은 모터가 앞으로 회전함을 의미합니다.

이것이 이 로봇의 움직임에 대한 기본 알고리즘입니다. 이 모듈에 대해 자세히 알아보려면 여기를 클릭하십시오.

2단계: 오류 계산
이미 모터의 목표 속도와 방향이 있으므로 모터의 측정된 속도와 방향도 고려해야 합니다. 속도 목표에 도달하면 모터가 모멘텀만으로 움직이기를 원합니다. 그렇지 않은 경우 모터에 더 많은 속도를 추가하려고 합니다. 제어 이론에서 이것은 폐쇄 루프 피드백 제어 시스템으로 알려져 있습니다.

이 모듈에 대해 자세히 알아보려면 여기를 클릭하십시오.instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-fig-2

3단계: 이진 변환
이전 계산에서 각 모터에 필요한 작업을 이미 알고 있습니다. 그러나 계산은 부호 있는 이진법을 사용하여 수행됩니다. 이 모듈의 목적은 이러한 부호 있는 값을 방향(시계 방향 또는 시계 반대 방향) 및 속도(0~255 범위)인 PWM 생성기가 읽을 수 있는 값으로 변환하는 것입니다. 또한 모터로부터의 피드백은 unsigned binary로 측정되기 때문에 unsigned 값(방향 및 속도)을 오차 계산 모듈에서 계산할 수 있는 signed 값으로 변환하기 위한 별도의 모듈이 필요합니다. 이 모듈에 대해 자세히 알아보려면 여기를 클릭하십시오.

4단계: 광원의 부재
로봇이 빛을 감지하면 빛을 찾아 움직이는 로봇을 만들었습니다. 하지만 로봇이 빛을 감지하지 못하면 어떻게 될까요? 이 모듈의 목적은 이러한 조건이 존재할 때 수행할 작업을 지시하는 것입니다.

찾는 가장 쉬운 방법과 광원은 로봇이 제자리에서 회전하는 것입니다. 설정된 시간(초) 동안 회전한 후에도 로봇이 여전히 광원을 찾지 못하면 전력을 절약하기 위해 로봇이 이동을 멈추기를 원할 것입니다. 정해진 시간이 지나면 로봇은 제자리에서 다시 회전하여 빛을 찾아야 합니다. 이 모듈에 대해 자세히 알아보려면 여기를 클릭하십시오.

5단계: 작동 원리
이 설명은 위의 그림을 참조할 수 있습니다. 이 지침서의 시작 부분에서 언급했듯이 임계 분할에서 "크기" 및 "위치" 입력이 필요합니다. 이러한 입력이 유효한지 확인하려면(예:amp즉, 크기 = 0을 수신하면 카메라가 빛을 감지하지 못하기 때문에 크기는 실제로 9이고 카메라가 아직 초기화 중이 아니므로 "준비"라고 하는 일종의 표시기가 필요합니다. 이 데이터는 각 모터의 목표 속도(XNUMX비트, 부호 있음)를 결정하기 위해 컨트롤(Ctrl. vhd)에 의해 처리됩니다.

모터의 보다 안정적인 출력을 위해 폐쇄 루프 시스템에서 피드백을 사용하려고 합니다. 이를 위해서는 모터 속도 측정부에서 각 모터의 "방향" 및 "속도" 입력이 필요합니다. 이러한 입력을 계산에 포함시키려면 이러한 부호 없는 값을 9비트 부호 있는 이진수로 변환해야 합니다. 이것은 서명되지 않은 이진 변환기(US2S.vhd)에 의해 수행됩니다.

오류 계산(error.vhd)이 하는 일은 각 모터의 동작을 결정하기 위해 목표 속도에서 측정된 속도를 빼는 것입니다. 이것은 둘 다 같은 값을 가질 때 빼기는 XNUMX이 되고 모터는 운동량으로만 움직인다는 것을 의미합니다. 로봇이 목표 속도에 더 빨리 도달할 수 있도록 곱셈 계수를 추가할 수도 있습니다.

모터 컨트롤러는 각 모터의 속도와 방향을 필요로 하므로 동작의 부호 있는 값을 부호 없는 두 개의 개별 값인 속도(1비트)와 방향(8비트)으로 변환해야 합니다. 이것은 부호-비부호 이진 변환기(S2US.vhd)에 의해 수행되며 모터 제어 부서의 입력이 됩니다.

또한 빛이 감지되지 않을 때 수행할 작업을 결정하는 모듈을 추가했습니다(light counter. Bhd 없음). 이 모듈은 기본적으로 카운터이므로 로봇이 회전하거나 제자리에 머무르는 데 필요한 시간을 계산합니다. 이렇게 하면 로봇이 앞에 있는 것이 아니라 주변 환경을 "볼" 수 있고 실제로 사용할 수 있는 광원이 없을 때 배터리 전원을 절약할 수 있습니다.instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-fig-3

6단계: 결합 Files
결합하려면 files, 각 모듈의 신호를 연결해야 합니다. 그러기 위해서는 새로운 최상위 모듈을 만들어야 합니다. file. 이전 모듈의 입력 및 출력을 구성 요소로 삽입하고 연결 신호를 추가하고 각 포트를 해당 쌍에 할당합니다. 위 그림의 연결을 참조하고 여기에서 코드를 볼 수 있습니다.instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-fig-4

7단계: 테스트하기
전체 코드를 완성한 후에는 코드를 보드에 업로드하기 전에 코드의 작동 여부를 알아야 합니다. 특히 코드의 일부는 다른 사람이 만들 수 있기 때문입니다. 여기에는 더미 값을 입력하고 코드가 원하는 대로 동작하는지 확인하는 테스트벤치가 필요합니다. 각 모듈을 테스트하여 휴식을 취할 수 있으며 모두 올바르게 작동하면 최상위 모듈을 테스트할 수 있습니다.

8단계: 하드웨어에서 시도
컴퓨터에서 코드를 테스트한 후 실제 하드웨어에서 코드를 테스트할 수 있습니다. 제약을 가해야 합니다. file 비바도(.xdc file BASYS 3의 경우) 어떤 입력 및 출력이 어떤 포트로 가는지 제어합니다.

중요 팁: 우리는 전기 부품이 전류 또는 권의 최대값을 가질 수 있다는 어려운 방법을 배웠습니다.tag예. 값은 데이터시트를 참조하십시오. PMOD HB5의 경우 볼륨을 설정해야 합니다.tage 12볼트의 전원에서(필수 볼륨이므로tage 모터의 경우), 모터가 움직이는 데 필요한 만큼의 전류.

9단계: 다른 부품과 결합
이전 단계가 성공한 경우 코드를 다른 그룹과 결합하여 최종 코드를 로봇에 업로드합니다. 그럼 짜잔! 빛을 찾는 로봇을 성공적으로 만들었습니다.

10단계: 기여자
왼쪽에서 오른쪽으로:

  • 안토니우스 그레고리우스 데븐 리발디
  • 펠릭스 위구나
  • 니콜라스 산자야
  • 리처드 메디얀토instructables-VHDL-모터-속도-제어-결정-방향-및-속도-왼쪽 및 오른쪽-속도-컨트롤러-fig-6

아주 좋아요: VHDL 모터 속도 제어: 방향 및 속도 결정, 왼쪽 및 오른쪽 속도 컨트롤러: 6페이지
다시 주셔서 감사합니다viewing! 이 프로젝트는 실제로 클래스 프로젝트(BASYS 3 보드 및 OV7670 카메라가 있는 Light Seeking Robot)의 한 부분일 뿐이므로 클래스에 대한 링크를 곧 추가하겠습니다.

엄청난: 나는 모든 것이 합쳐지는 것을 기대하고 있습니다.

문서 / 리소스

instructables VHDL 모터 속도 제어 방향 및 속도 결정 왼쪽 및 오른쪽 속도 컨트롤러 [PDF 파일] 지침
VHDL 모터 속도 제어 방향 및 속도 결정 좌우 속도 제어 VHDL 모터 속도 제어 방향 및 속도 결정 좌우 속도 제어

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *