리니어서보의 스펙 측정을 위한 측정기의 회로와 펌웨어, 그리고 구동을 위한 PC UI프로젝트입니다. 기구팀 1명, 회로SW개발팀 1명(최영훈) 총 2명으로 진행하였습니다.
저의 담당은 측정기 개발과 PC UI개발, 리니어 서보의 개발 PP단계까지의 시제품개발이였습니다. 소스코드와 회로도는 회사의 기밀정보이기에 첨부하지않았습니다.
*모든 사진은 이해를 돕기 위한 참조용 사진입니다. 실제 프로젝트에 적용된 사진과 연관이 없습니다.
측정기 하드웨어 스펙
전원 : 12V smps 용도 : 서보 구동을위한 전원공급.
전압강하 : Dc To DC Buck타입 12v to 5v 사용. 용도 : 메인 mcu와 센서들 전원공급용.
MCU : STM32F7 시리즈 전류측정기 : INA시리즈 CHip을 이용한 회로 구성. 전압측정기 : 전압 Divide를 응용한 회로 구성.
MCU -> PC 통신방식 : USB 통신.
- 초당 전송 속도 : 초당 1천회 전송을 목표.
통신 프로토콜
- PC통신을 위한 정형화된 프로토콜을 구축, STX,전얍,전류,위치값,속도,방향,체크섬,ETX 등 명령체계를 구축하여 해당 룰에 맞춰 PC와 통신함.
PC UI 개발 언어 : C#, WPF 개발 환경 : Visual Studi 2017 닷넷프레임워크 : 4.6.1 개발 프레임워크 : Metro UI, LiveChart
측정기로부터 넘어오는 초당 1천번의 데이터는 신뢰성이 매우 중요하므로, 데이터를 놓치지 않기 위해 버퍼와 큐를 사용하여 누락 없는 데이터 통신을 성공시켰습니다.
들어온 데이터를 CSV 확장자로 RAW DATA로 남겼고, 측정 결과는 생산된 서보의 스펙을 검증하는데 사용하였습니다. 그리고 측정된 데이터를 시각화하는데 LiveChart 라이브러리를 사용하였습니다. UI의 반응 속도를 개선시키기위해 멀티스레드 환경으로 최대한 구축하였습니다.
위 프로젝트를 진행하면서 겪었던 고충은 데이터의 무손실을 보장하기 위해 원형 큐를 구현하는 과정이 다소 힘들었고 모듈화를 나름 하고자 노력하였지만. divide and conquer가 제대로 이루어지지 않아 후반부에 갈 수록 스파게티 소스코드가 되었다는 점이 아쉬웠습니다.
그리고 국내에서 WPF 자료와 LiveChart에 대한 자료가 없다시피하여, 독학하는데 다소 많은 시간이 소비되었습니다.
또한 코드리뷰가 없이 1인 개발로 진행되었다는 점에서 소스코드에 대한 피드백을 받지 못한 아쉬움이 남아있습니다.