전동기기 제어에 대한 조언좀 부탁드립니다.

myhong74의 이미지


금번에 회사에서 컴퓨터에 설치된 어플리케이션에서 컴퓨터에 연결된 ( USB 또는 적외선통신 ) 전동기기를 제어 하는 상품을 개발할려고 합니다.

전동기기는 소형 모터이며 모터의 회전속도, 회전방향 등을 컴퓨터를 통해 제어 하려고
하는데 저희 회사가 하드웨어 또는 임베디드 소프트 웨어 개발사가 아니라 이쪽으로는
지식이 전혀 없습니다.

전동기기와 USB 케이블(또는 적외선통신)을 연결하여 컴퓨터에 설치된 프로그램으로
전동기기를 제어(회전속도, 회전방향)하려 한다면 어떤 류의 작업 또는 기술이 필요 한지 조언좀 부탁드립니다.

사람을 구하려고 해도 어떤 사람을 구해야 하는지 어느 정도 실력이 있어야 하는지 정말 모르겠습니다.

1) USB 나 블루투스로 전동기기(소형모터의 속도, 방향) 제어가 가능합니까?
2) Device Driver 프로그래밍 기술이 필요 합니까?
3) 전동기기 쪽에 CPU 같은 연산장치 또는 OS 가 올라가야 합니까?
4) 임베디드 프로그래밍이 필요 합니까?
5) 만약 외주를 준다면 어느 정도의 견적이 나올까요? ( 주관적인 의견이라도 상관없습니다.)

이런 분야에 일을 하고 계시거나 지식이 있는 분들의 조언좀 부탁드립니다.
감사합니다.

비행소년의 이미지

1) 어떻게 하느냐에 따라 다릅니다. USB나 블루투스는 통신 방식이라 PC에서 보내 주는 명령을 By-Pass 할 뿐입니다.
2) FTDI에서 나오는 USB-Serial Convert Chip을 사용하면 USB용 Device Driver를 굳이 만들 필요는 없습니다.
3) 회전 속도, 방향 등의 제어를 하기 위해서는 최소한 8Bit MCU 써야 할 것 처럼 보이는 군요. OS를 Cost의 부담이 없다면 쓰면 좋겠죠.
4) MCU를 쓴다면 당연히 해야지요.
5) 저희가 외주를 안해봐서 모르겠습니다.

높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ

whitelazy의 이미지

단지 회전 속도 회전 방향만 제어한다면 크게 어려운 작업은 아닙니다만 ...
1) 가능
2) 네
3) 당연히...
4) CPU가 있기에...
5) 견적은 모르겠습니다...
USB는 잘 모르기에 견적을 알수가.. 임베디드 개발 가능하고 USB장치 및 드라이버 개발이 가능하여야할듯싶습니다...
만약 귀찮다면 USBtoSerial 변환 칩으로 해결보는수도 있습니다 이때는 시리얼포트 디텍팅해주어야겠지요 이게 더 쉽고 싸게 먹히겠지요...

myhong74의 이미지


빠른 답변들 감사합니다.
저런 간단한 기능을 하는데도 전동기기 쪽에 MCU 와 OS 까지 올려야 하는군요?
OS는 마이크로 커널이나.. 뭐 이런걸 말씀하시는 건가요?
저희가 정말 모르는것이 많습니다.
다른 방법이나 자료들은 없을까요.....?? 조언좀 부탁드립니다... 감사합니다.

bus710의 이미지

해당 MCU에 OS를 굳이 올리실 필요는 없습니다.
모터 몇개와 상태 표시 LED, SW 약간에 USB 장치와의 연결 정도라면 말이지요...

만약 프린터 포트가 달린 메인 보드라면 USB나 블루투스 없이 직접 제어도 가능할 것입니다.

life is only one time

익명사용자의 이미지

> 저런 간단한 기능을 하는데도 전동기기 쪽에 MCU 와 OS 까지 올려야 하는군요?

OS는 필요 없습니다. 그냥 대충 동작해도 되는 거라면 MCU도 필요 없습니다. 그냥 PC에서 클럭 만들어서 모터보드로 곧바로 넣어주면 됩니다.

한빛출판사에서 나온 임베디드 하드웨어 이해와 설계란 책이 있는데 별로 안두꺼우니까 한번 훑어보시길 권합니다. 요새 MCU는 레고수준 장난감이라 보시면 됩니다.

http://micro.new21.org/avr/

여기도 함 가보시고요.

솔직히 제가 보기엔, 라인트레이서나 마이크로 마우스 정도 만들어본 학부생이면 무난하게 할 수 있는 일 같습니다.

whitelazy의 이미지

음... 어찌 설명을 해야하나..
필요한건 PC쪽에 시리얼로 통신하는 Host 프로그램과 USB2Serial컨버팅 칩 실제 모터를 구동시킬 제어 보드 실제 모터, 모터 속도 측정을 위한 엔코더가 될 것입니다 DC모터라면..
그리고 꼭 OS가 필요하다 싶지 않다면 OS는 없어도 될겁니다
USBtoSerial 변환 을 추전드리는 방법은 임베디드 장비와 PC간의 가장 손쉬운 통신이 Serial통신이기 때문입니다 바로 Null modem지원하는 터미널 띄워놓고 보면 문자열을 출력할수 있을정도니까요 하지만 제품이라면 Serial 포트를 쓸수 없기에(요즘 시리얼포트사용하는 제품 안살듯하야....) 변환 칩을 이용한 사용을 말씀드리는겁니다
그리고 모터의 속도를 알기위해 엔코더가 들어가게되구요 크기 상관없으시면.. Stepping motor를 알아보셔도 됩니다..
단순 속도 제어면 엔코더가 초당 몇번 카운트 되느냐에 따라 속도를 올려주거나 낮춰주면됩니다
이것을 해주기위해 마이크로 컨트롤러를 사용하는겁니다 요즘 나오는 AVR이나 PIC같은 컨트롤러는 칩 하나에서 다 해결되고 부가적으로 필요한건 전원 회로와 통신을 위한 인터페이스 칩, 모터돌리기위한 모터드라이버 정도면 됩니다.
어떤 작업을 할진 모르지만 USB전원만으로 모터 돌리기엔 USB선풍기 정도가 한계라고 보여집니다..

다른방법이라면...피드백을 통한 속도 제어를 포기하신다면 프린터 포트 병렬통신으로 됩니다.. 물론 USB보다 지원하는 전류이 적기에 선풍기도 못돌리겠지만말입니다... 이건 외부 전원을위한 전원회로와 DAC, TR혹은 모터드라이버면 됩니다.. =_= 물론 원하시는 솔루션은 아닐듯 싶습니다.. 아 DAC는 속도 제어가아닌 조절을 위한겁니다.. 아니면 회로좀 커지더라도 저항과 약간의 로직으로도 가능하고.. 수동으로한다면.. 가변저항으로... =_= 구형TV 볼륨 다이얼 생각하시면될듯...

myhong74의 이미지


정말 소중한 정보들 감사드립니다. 이렇게 빠른 시간에 이렇게 많은 답변을 받을 줄이야...

조금 욕심을 내서 질문을 더 해 봅니다. ^^

PC 프로그램에서의 메뉴는 대강 외부 전동기의 회전속도 - 강, 중, 약
회전방향 - 시계방향, 시계반대 방향

만 제어 할 수 있으면 됩니다. 마치 선풍기를 컴퓨터로 연결해 동작하는 것처럼요....
호스트와 디바이스간의 양방향 통신이 필요한 건가요? 아닌가요??
가장 Cost 를 줄이면서 개발 할 수 있는 방법은 어떤 걸까요.......

위의 답변 만으로도 많은 정보를 얻었습니다. 감사합니다.


whitelazy의 이미지

꼭 USB로 해야하는겁니까? 아니라면 걍 페러럴포트로 작업하는게 제일 cost가 싸보입니다만...
페러럴포트에서 8bit 데이터 전송해서 각 bit별로 run/stop, 강, 중, 약, 회전방향 할당하셔서 로직짜는게더...
그정도면 단방향으로 일방적으로 명령어만 전송하면 됩니다.

myhong74의 이미지


판매될 상품인데.. 요즘 거의 USB 로 연결하지 않나요??????

whitelazy의 이미지

판매용이라면 대세는 USB로... USBtoSerial만 있는건 아니니까요 USBtoPrinterPort(완벽히 페러럴포트를 지원하는게아닌지라..) 칩도 있고.. 솔루션은 많습니다만.. 외주 주신다면 USBtoSerial과 MCU와의 결합이 무난할지도 모르겠군요... USB로 프린터포트 컨버팅하는건 양방향 안되던가 하는이유로 써본적이 없어서 어찌 도는지 모릅니다...
솔찍히 보드설계하는시간보다 프로그램 짜는시간이 훨씬 적을듯싶으니 저렴한 컨트롤러를 사용하시는게 더 쌀수도 있습니다..

myhong74의 이미지


혹시 답변 주신 분들중 위 작업에 관심이 있으신 분은 메일로 연락을 주시거나 연락 처를 남겨주시면

제가 연락을 드리겠습니다. 프로그래밍 관련 작업을 직접 하지 않으시고 제품이 개발 될때 까지 상세한

조언만 해주셔도 사례를 하겠습니다. 부탁 드리겠습니다.

메일 : myhong74@naver.com

jsbase의 이미지

말씀하신 전동기기가 완제품의 형태인건가요?

제가 생각하기에는 위에 여러번 언급되었던것 처럼, AVR같은 간단한 MCU를 올린 후 PC와는 시리얼로 제어를 하는 방향이 가장 무난해보입니다. MCU도 필요 없이 패러럴포트로 전송하는것이 무난할 것 같다는 의견도 있는데, 원래 글쓰신 분이 원하시는 정도의 제어라면 굳이 양방향통신이 필요하지는 않겠지만...
상용제품이라면 최소한 연결에 이상이 없는지 정도는 확인이 가능해야 할 것 같으니 PC와 정해진 신호를 주고받는 형태의 제어 sequence를 정의하고 MCU에서 이 신호를 이용하여 모터를 제어하는 형태로...

위와 같은 형태로 구성을 한다고 가정했을때 만일 아르바이트로 개인을 고용하는 것이 아니라 회사 대 회사 형태의 외주 계약을 맺으신다면, 제어 sequence정의 및 제어 프로그램은 회사에서 직접 만드시고 간단한 회로구성 & MCU 제어부분만 외주에 맡기는 것도 cost를 줄이는 방법일 것 같습니다. (말씀하신정도의 수준이라면 개인을 고용하는것을 추천합니다. ^^)

myhong74의 이미지

정말 너무 좋은 정보들을 주셔서 너무 감사합니다.
말씀하신것과 같이 제어 프로그램은 저희가 직접 작업 하고 디바이스 쪽과 드라이버 프로그래밍 쪽을
외주를 줘야 할것 같습니다.

너무 감사합니다.
내일 회의 때 할말은 있겟네요..

다시 한번 말씀드리지만.. 위 작업에 관심 있으신 분을 구합니다.
연락 주시면 감사하겠습니다.

myhong74@naver.com

ktt21c의 이미지

혹시 해답은 얻으셨는지 궁금합니다
저도 마침 같은일로 고민하다 여기까지 오게 됐네요
시중에 이런걸 파는것도없고 전 회사일이 아니라
하비로 뭘좀 만들어볼까해서요^^
혹시 방법을 아시면 알려주실수 있을까요
적당한 가격에 구입할 의사도 있습니다^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.