쿼드콥터를 만들면서 roll 값과 pitch 값을 모니터링 하는 방법에 대해 생각하던중
지난번 대학원 형이 쓰던 LabView 라는 프로그램을 쓰면 좋을꺼 같았다.
(지난번작업때는 Daq를 이용하여 ADC 값을 이용하여 그래프를 그렸었음)
그러면 값의 면화를 그래프로 바로 이해할수 있으니....
그래서 LabView를 이용하여 시리얼 값을 읽고 그래프로 그리는 작업을 해보자!!!
일단 내가 참고한 자료는 NI 사 홈페이지에서 얻었으며 작업환경은 Labview 2009 체험판이다.
http://digital.ni.com/worldwide/korea.nsf/web/all/16C1288466DAEE8C86256FFC002750E3?OpenDocument&node=165080_ko
위의 링크가 안들어가지면
ni.com -> company -> Worldwide Offices -> Asia Pacific -> Korea -> 기술자료 및 다운로드 -> Labview Tech-Tip
으로 들어가면 된다.
일단 드라이버 설정을 해야한다.
드라이버 설정은 LabView 설치시 설치된 Measurement & Automation Explorer 프로그램을 이용한다.
프로그램에서 포트를 설정하고 Save 을 꼭 눌러야 한다!!!!! 꼭!!!!!
그리고 포트를 사용할수 있는지 확인하기 위해서는 밑에 Validate 버튼을 눌러보면 포트가 사용가능한지 확인할 수 있다.
간혹 드라이버가 잘못잡히던가 다른곳에서 사용중일경우 안되는 경우가 있으니 안될경우는 이곳으로 와서 확인해볼수 있다.
포트를 설치했으면 홈페이지의 예제를 따라해 보자.
도움말에서 검색하여 'VISA 시리얼 포트 설정(VI)를 찾아가보면 밑에 예제 링크가 있는데 그곳에서
Basic Serial Write and Read 를 찾아 열면 된다. (LabView는 도움말이 잘 되어있으므로 잘 활용하면 매우 유용하다.)
이 파일을 실행하면 시리얼 통신이 되는것을 확인할수 있다.
일단 LabView 에서 시리얼 포트를 사용하는 방법은 확인한 것이고 이 값을 가공하여 그래프로 그려보자!
우리가 필요한 입력 부분과 종료 부분을 빼고 프론트 패널에는 웨이브폼을
블록다이어그램에는 인스트루먼트 I/O 어시스턴트를 추가하고
인스트루먼트 I/O 어시스턴트를 더블클릭하면
이런 화면에서 인스투루먼트 I/O 어시스턴트에서 컴포트를 선택하고
상단에 단계추가를 눌러 읽기 및 분석을 누른다.
(나의 경우 myARS-USB 에서 항상 일정한 데이터값을 출력해주므로 그중에 pitch 값과 roll 값만 출력한다.)
거기에서 데이터값을 누르면 token 이란 이름으로 출력되는 변수가 생긴다.
블록다이어그램에서 for 문을 쓸 경우 기본 출력은 배열이 된다.
따라서 따로 배열화 시키지 않아도 되지만 지금 우리는 for문을 쓰는게 아니라 While문을 이용하여
계속적으로 반복시킬것이므로 출력되는 데이터를 배열화 시켜줘야한다.
블록다이어그램에서 마우스 오른쪽 버튼을 눌러 익스프레스->신호조작->다이나믹데이터로부터 변환설정 을 클릭하여
추가한후 웨이브 폼 차트와 연결해준다.
그리하여 실행하면 위와같이 값이 출력되게 된다..
Roll 갑은 차트에 그려진 값이고 숫자형 은 pitch 값의 현재값이다.
연결에 따라 다양하게 표현할 수 있다.
인스트루먼트 I/O 어시스턴트 덕분에 값을 파싱할 필요도 형변환 시켜줄 필요도 없는듯 하다.
웨이브 폼 차트는 데이터를 배열로 만들어줘야할 필요도 없는 듯 하고.....
이런식이라면 아예 랩뷰를 이용하여 컨트롤 하는 것도 하나의 방법이 되겠는데????
Lab View 가 좋긴 좋구먼~~~~
p.s 포스팅 하는데 시간이 오래 걸리긴 오래 걸리는구나.....ㅠㅠ