그래프는 데이터를 시각화하는 데 항상 도움이되며 추세와 패턴을 보면 매우 쉽게 찾을 수 있습니다. 입력 값을 기반으로 그래프를 그릴 수있는 많은 소프트웨어가 있습니다. 오늘은 MATLAB을 사용 하여 LM35 센서의 온도 데이터를 기반으로 그래프를 그릴 것 입니다. 이 튜토리얼은 MATLAB을 사용하여 실시간 그래프를 그리는 방법에 대한 기본적인 아이디어를 제공합니다. Arduino Uno는 LM35 온도 센서에서 온도 데이터를 가져 오는 데 사용됩니다.
계속 진행하기 전에 MATLAB을 처음 사용하는 경우 이전 MATLAB 자습서에서 더 나은 절제를 확인할 수 있습니다.
- MATLAB 시작하기: 빠른 소개
- Arduino와 MATLAB 인터페이스-LED 깜박임
- MATLAB과 Arduino 간의 직렬 통신
- MATLAB 및 Arduino를 사용한 DC 모터 제어
- MATLAB 및 Arduino를 사용한 스테퍼 모터 제어
그래프 플로팅을위한 MATLAB 그래픽 사용자 인터페이스 생성
먼저 온도 데이터로 그래프를 그리기위한 GUI (그래픽 사용자 인터페이스)를 구축해야합니다. GUI를 시작하려면 명령 창에 아래 명령을 입력하십시오.
안내서
팝업 창이 열리면 아래 이미지와 같이 새로운 빈 GUI 를 선택하십시오.
이제 MATLAB 그래픽 인터페이스에 대해 하나의 푸시 버튼, 두 개의 축 및 하나의 텍스트 상자 를 선택해야합니다 . 누름 버튼은 온도 감지를 시작하는 데 사용되며, 그래프를 그리기위한 두 개의 축과 현재 온도 값을 표시하는 텍스트 상자가 사용됩니다.
버튼, 축 또는 텍스트 편집 버튼의 크기를 조정하거나 모양을 변경하려면 해당 버튼을 클릭하기 만하면 버튼의 모서리를 드래그 할 수 있습니다. 이들 중 하나를 두 번 클릭하면 해당 버튼의 색상, 문자열 및 태그를 변경할 수 있습니다. 사용자 정의 후 다음과 같이 보일 것입니다.
원하는대로 버튼을 사용자 지정할 수 있습니다. 이제 이것을 저장하면 MATLAB 의 편집기 창 에 코드가 생성됩니다. Arduino가 프로젝트와 관련된 특정 작업을 수행하도록하려면 항상이 생성 된 코드를 편집해야합니다. 그래서 아래에서 MATLAB 코드를 편집했습니다. MATLAB 시작하기 튜토리얼에서 명령 창, 편집기 창 등에 대해 자세히 알아볼 수 있습니다.
그래프 플로팅을위한 MATLAB 코드
LM35 및 Arduino를 사용하여 온도계를 설계하기위한 완전한 MATLAB 코드 는이 프로젝트의 끝에 제공됩니다. 또한 여기에 다운로드 할 GUI 파일 (.fig) 및 코드 파일 (.m)이 포함되어 있으며,이를 사용하여 요구 사항에 따라 버튼 또는 축 크기를 사용자 지정할 수 있습니다. 아래에 설명 된대로 생성 된 코드를 편집했습니다.
아래 코드를 복사하여 번호에 붙여 넣으십시오. 74는 m-file 을 실행할 때마다 Arduino가 MATLAB과 통신하는지 확인 합니다 .
모두 지우기; 글로벌 a; a = arduino ();
아래로 스크롤 하면 GUI에서 Pushbutton 과 Edit Text 에 대해 생성 된 두 가지 기능이있는 것을 볼 수 있으며 Axes에 대한 기능은 생성되지 않습니다. 이제 수행하려는 작업에 따라 푸시 버튼 (시작 버튼) 기능에 코드를 작성하십시오.
에서 시작 버튼의 기능, 복사 단지 온도 감지를 시작하는 함수의 종료하기 전에 코드 아래에 붙여 넣습니다. 온도를 지속적으로 감지, 표시 및 그래픽 플로팅하기 위해 while 루프를 사용 합니다 . 매 반복 후 1 초의 일시 중지 를 제공 하므로 온도 값이 매초 업데이트됩니다.
x = 0; 이동 = 사실; 글로벌 a; 이동 값 = readVoltage (a, 'A1'); 온도 = (값 * 100); disp (temp); x =; plot (handles.axes1, x); 그리드 켜기; xlabel ('시간 (초)') ylabel ('온도 (° C)'); title ('실시간 온도 그래프'); drawnow set (handles.edit1, 'String', num2str (temp)); pause (1); 종료
이제 코드가 어떻게 작동하는지 살펴 보겠습니다. 세 줄 아래에서 ' x ' 의 초기 값 을 0으로 설정하고 ' go '를 true로 정의 하여 while 루프 를 시작 하고 함수에서 Arduino를 호출하기 위해 ' global a' 를 선언했습니다.
x = 0; 이동 = 사실; 글로벌 a;
아래 코드는 LM35 온도 센서의 'OUT'핀에 연결된 Arduino의 아날로그 핀 A1에서 전압 값 을 감지하는 데 사용됩니다. 출력은 아날로그 값이 아닌 전압 값입니다.
값 = readVoltage (a, 'A1');
여기 에서 전압 값을 10을 곱하여 온도 값 (섭씨 온도) 으로 직접 변환 할 수 있습니다.
온도 = (값 * 100);
이제 그래프를 플롯하기 위해 'plot (handles.axes1, x)' 함수가 사용됩니다. 여기서 axes1 은 Graph 영역의 참조 또는 이름입니다. 따라서 두 개 이상의 그래프를 플로팅하는 경우 축의 이름 만 변경하면됩니다. 마치 다른 그래프를 플로팅 하면 plot (handles.axes2, x) '를 작성할 수 있습니다.
'Grid on' 은 그래프의 Grid 뷰에서 사용되며 , 'xlabel', 'ylabel' 및 ' title '은 x 축, y 축 및 제목의 이름을 지정하는 데 사용됩니다.
plot (handles.axes1, x); 그리드 켜기; xlabel ('시간 (초)') ylabel ('온도 (° C)'); title ('실시간 온도 그래프');
' Drawnow' 는 실시간으로 그래픽 표현을 업데이트하는 데 사용됩니다.
그어진
아래 명령을 사용하여 매초마다 편집 텍스트 상자 에 온도 값 을 표시 하려면, set (handles.edit1, 'String', num2str (temp));
필요한 재료
- MATLAB이 설치된 노트북 (기본 설정: R2016a 이상 버전)
- Arduino UNO
- LM35 – 온도 센서
- 전선 연결
- 브레드 보드
회로도
MATLAB을 사용하여 그래프 플로팅
회로도에 따라 하드웨어를 설정 한 후 실행 버튼을 클릭하면.m 파일에서 편집 된 코드가 실행됩니다.
MATLAB이 응답하는 데 몇 초가 걸릴 수 있습니다. 아래 그림과 같이 MATLAB이 왼쪽 하단에 사용 중 메시지를 표시 할 때까지 GUI 버튼을 클릭하지 마십시오.
모든 것이 준비되면 시작 버튼을 클릭하면 그래픽 영역과 텍스트 편집 상자 에서 온도 데이터를 가져 오기 시작합니다. 값은 1 초마다 자동으로 업데이트됩니다. 이 1 초 간격은 그에 따라 MATLAB 코드에서 변경할 수 있습니다.
출력은 아래에 표시된 이미지와 같습니다.
이것은 MATLAB을 사용하여 Arduino에서 들어오는 값에 대한 그래프를 그리는 방법입니다.
올바른 이해를 위해 아래 데모 비디오를 확인하십시오.