로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
5838 답변완료3축가속도 데모프로그램에관해서 고관휘 2010-11-05 1,254
안녕하세요 제가 3축가속도센서를 이용해서 마우스를 구현하려고하는데 데모프로그램을 넣었는데 모니터에 뿌려지지가않네요;;;; 조금 자세하게 도와주시면안될까요?
관리자 답변 NEWTC · 2010-11-06
안녕하세요? 고객님, 첨부한 내용은 3축 가속도 센서로 마우스를 구현하는 예제입니다. 자료실에 있는 윈도우 예제와 같은 건데, 그 중에서 마우스 부분만 뽑은 겁니다. 혹시 헛갈리실까봐 올려 드립니다. 사용방법을 자세히 말씀드리면, 우선, 압축을 풉니다. 그런 후, 3DMouse.exe를 실행하세요. 그러면, 오른쪽 아래쪽에 화살표같이 생긴게 생길겁니다. 그걸 클릭하면, Disconnect 또는 Connect 버튼이 있을 겁니다. 그 버튼을 눌러서, Connect가 검정색으로 들어와 있으면 현재가 disconnect 상태입니다. 연결을 끊은 후에 시리얼 통신포트 설정에서, 3축 가속도 센서가 F포트로 연결된 AVR 보드를 연결한 시리얼 통신포트를 선택합니다. 그리곤 Setting 버튼을 누릅니다. 115,200bps, 8 databit, 1 stop bit, flow control none입니다. 그런 다음 다시 Connect 버튼을 누르면 연결되게 되죠. AVR에다가 3DMouse 폴더의 세 폴더 중 사용하는 컴파일러의 폴더 쪽으로 가서 hex를 AVR에 집어 넣으면 마우스로 동작할 겁니다. 처음 동작될 때, 한 1~2초 정도 움직이지 마셔야 해요. 캘리브레이션 하는 시간이니까요. 잘못되었다면, 3축 가속도 센서를 지면과 평행하게 놓은 후, 오른쪽 아래 화살표 아이콘을 클릭하면, 다시 셋업 프로그램이 나오는 데, 거기서 Calibration 버턴을 누르세요. 수고하세요. >안녕하세요 제가 3축가속도센서를 이용해서 >마우스를 구현하려고하는데 데모프로그램을 넣었는데 >모니터에 뿌려지지가않네요;;;; >조금 자세하게 도와주시면안될까요?
5837 답변완료usbisp 사용 오류입니다. 이성수 2010-11-05 1,430
Check that the ISP programing frequency specified on the 'Main' page is well below 1/4 of the clock frequency of the device. 오류가 이렇게 중간에 있습니다. 버전은 v03이고요.. 운영체제는 윈7에 AVR studio4 4.18을 쓰고 있습니다. 이것 어떻게 해결해야 하나요? 유에스비 전원 공급말고 5볼트 따로 전원을 인가해서도 해보았습니다. 하지만 안 되었습니다. 해결 방법 좀 가르쳐 주세요 캡쳐해서 올립니다. 한글파일 안에 그림있습니다.
관리자 답변 NEWTC · 2010-11-05
안녕하세요 에러 메시지가 나오는 경우는 1.타겟보드의 퓨즈비트를 잘못하여 사용할수 없는 경우 2.다운로드 클럭 속도가 안맞는 경우 메인탭에 다운로드클럭 속도를 조절하는 것이 있습니다. 3. ISP 다은로드 선의 결선에 문제가 일경우 위 경우에 나올 수있는 메세지 입니다. 사용하시는 타겟보드가 본사 제품이면 ISP와 같이 점검을 받아 보시길 바랍니다. 수고하세요 >Check that the ISP programing frequency specified on the 'Main' page is well below 1/4 of the clock frequency of the device. > >오류가 이렇게 중간에 있습니다. 버전은 v03이고요.. >운영체제는 윈7에 >AVR studio4 4.18을 쓰고 있습니다. > >이것 어떻게 해결해야 하나요? > >유에스비 전원 공급말고 5볼트 따로 전원을 인가해서도 해보았습니다. > >하지만 안 되었습니다. > >해결 방법 좀 가르쳐 주세요 > >캡쳐해서 올립니다. 한글파일 안에 그림있습니다.
5836 답변완료아무것도 모르는 사람이라 전반적이 질문을 드리겠습니다. 고찬원 2010-11-05 1,360
안녕하세요 우선 좋은 하루 되시고요. 모터는 2축을 사용하는데 엔코더 장착된 2상 스텝핑 모터를 사용할 계획입니다. 그리고 구동 양 끝단에 END 스위치(홀 센서)를 장착할 예정입니다. 2축 따로따로 구동이 되어야 합니다. 제어는 버튼 10개정도 사용하여 버튼1 END 스위치까지 시계방향 회전 버튼2 END 스위치까지 반시계방향 회전 버튼3 지정포지션 버튼4 지정포지션 버튼5 지정포지션 버튼6 지정포지션 버튼7 지정포지션 버튼8 지정포지션 버튼9 지정포지션 버튼10 지정포지션 이런 방식으로 제어를 하고 싶은데 어떤제어모듈들을 선택하고 어떻게 연결해야할지 조언 부탁 드립니다. 모터를 2상 스텝핑 모터가 불가능하다면 DC 모터로라도 가능합니다. 끝까지 읽어 주셔서 감사 합니다. 답변 달아 주시면 감사 하겠습니다. 그럼 수고 하세요.
관리자 답변 NEWTC · 2010-11-05
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. AB-M128-B(소형) 보드를 이용하시면 편리하실 것 같구요. 스테핑 모터 컨트롤러는 AM-MS2 보드나 AM-CS2P를 이용하시면, 편리하겠습니다. MS2가 보다 제어가 간편하고, 보다 정밀합니다. MS2나 CS2P 하나면 2개의 스테핑 모터를 제어할 수 있습니다. 만약, 제어 중에 FAQ에서 스테핑 모터 관련된 답변을 보시고서도 진동이나 소리 등이 신경쓸 정도로 나거나 한다면, MS2나 CS2P 보드를 두 장 쓰시면 문제가 사라집니다. 그리고, 스위치는 현재 본사에 AM-TS8 보드가 8개 스위치를 제어할 수 있습니다. 이걸 두 개 쓰시면 될 것 같습니다. 끝단에 END 스위치 입력을 받기 위해서, AM-CSV(서보모터 제어모듈 저가형)을 사용하여, 핀 입력을 받으면 편리합니다. 정확한 제어를 위해서 스테핑 모터를 사용하는 게 좋겠구요. 만약, 전원부가 충분히 전류나 전압을 공급해 줘서 토크가 충분하다면, 굳이 엔코더까지 장착하실 필요는 없을 것 같습니다. 스테핑 모터는 위치에러가 누적되지 않으니까요. 안 돌아 가는 상황만 안 생기면 에러 없이 정확한 위치 제어가 되는 거죠. 자료실->기존자료실에서 cs2p나 ms2 로 검색하시면, 각각 예제들이 나올 겁니다. 참고 바랍니다. 감사합니다. >안녕하세요 우선 좋은 하루 되시고요. > >모터는 2축을 사용하는데 엔코더 장착된 2상 스텝핑 모터를 사용할 계획입니다. >그리고 구동 양 끝단에 END 스위치(홀 센서)를 장착할 예정입니다. > >2축 따로따로 구동이 되어야 합니다. > >제어는 버튼 10개정도 사용하여 > >버튼1 END 스위치까지 시계방향 회전 >버튼2 END 스위치까지 반시계방향 회전 >버튼3 지정포지션 >버튼4 지정포지션 >버튼5 지정포지션 >버튼6 지정포지션 >버튼7 지정포지션 >버튼8 지정포지션 >버튼9 지정포지션 >버튼10 지정포지션 > >이런 방식으로 제어를 하고 싶은데 어떤제어모듈들을 선택하고 어떻게 연결해야할지 >조언 부탁 드립니다. > >모터를 2상 스텝핑 모터가 불가능하다면 DC 모터로라도 가능합니다. > >끝까지 읽어 주셔서 감사 합니다. >답변 달아 주시면 감사 하겠습니다. >그럼 수고 하세요.
5835 답변완료usbisp 오류입니다. 안병준 2010-11-04 1,447
귀사의 AVR용 USB-ISP V03(AD-USBISP V03) 을 구매하였습니다. 연결하여 사용하려 하는데 usbisp에서 앞쪽에는 파란불이 조금 뒷쪽에는 빨간불이 깜빡이고 있습니다.. 또 프로그램을 다운로드해서 쓰려하니 다음 파일과 같이 오류가 납니다. 클럭조정도 해봤습니다.. 연결상태도 다시 확인해 보았습니다. 또한 귀사의 atmege128 pro 모듈을 구매하였는데 여기에는 isp연결하는 핀이 있는데 이것은 자동으로 다 연결되어 있는 것 아닌지요? 제가 특별히 연결할 것이 없는거 아닌지요? 그래서 컴퓨터와 atmega의 isp연결 접촉이 잘 안됐는지 확인도 하였습니다.
관리자 답변 NEWTC · 2010-11-04
안녕하세요? 고객님, 혹시, AM-128PRO 모듈에 전원은 어떻게 넣으셨나요? 2핀 커넥터에 전원을 5V 넣으셨으면 관계 없지만, 그렇지 않다면, USBISP의 딥스위치를 조정하여 USB 쪽에서라도 전원을 넣어줘야 합니다. 자료실에서 USBISP V03 메뉴얼을 참고하여 전원을 넣으시기 바랍니다. 빨간불이 깜빡인다는 것은 동작되는 AVR과 ISP가 제대로 연결되지 않았음을 말합니다. 따라서, 본사의 장비끼리 연결했는 데 그렇다면, 전원부가 의심됩니다. 수고하세요. >귀사의 AVR용 USB-ISP V03(AD-USBISP V03) 을 구매하였습니다. > >연결하여 사용하려 하는데 usbisp에서 앞쪽에는 파란불이 >조금 뒷쪽에는 빨간불이 깜빡이고 있습니다.. > >또 프로그램을 다운로드해서 쓰려하니 >다음 파일과 같이 오류가 납니다. > >클럭조정도 해봤습니다.. >연결상태도 다시 확인해 보았습니다. > >또한 귀사의 atmege128 pro 모듈을 구매하였는데 >여기에는 isp연결하는 핀이 있는데 >이것은 자동으로 다 연결되어 있는 것 아닌지요? > >제가 특별히 연결할 것이 없는거 아닌지요? >그래서 컴퓨터와 atmega의 isp연결 접촉이 잘 안됐는지 확인도 하였습니다.
5834 답변완료DC 모터 구동 모듈(AM-DC2-2D) 정득주 2010-11-04 1,396
귀사 제품(AM-DC2-2D)으로 모터를 구동 할려고 합니다. 단방향으로 회전 할거고, 모터 속도 가변도 필요 합니다. START 신호 받아서 모터 구동하고, STOP 신호 받아서 모터 정지 할려고 합니다. 가능한지 답변 부탁드립니다.
관리자 답변 NEWTC · 2010-11-04
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 사용하시려는 모터가 어떤 종류인지 나와 있지 않아서, 가능한지 답변드리기 애매합니다. DC 모터나 DC 기어드 모터 중에서, 5~45V, 2A 최대순간저류 이 스펙들을 만족한다면, 사용 가능하겠습니다. Enable 신호가 있으니 그 신호선을 이용하면 좋겠습니다. 방향 전환도 가능하지만, 안쓰신다면, 한쪽으로 고정시켜 두시구요. 모터 속도 가변은 PWM을 사용하면 가능합니다. 중간에 본사의 AVR 보드를 하나 사용하시는 게 좋겠습니다. 추천하는 제품은 AB-M128-B(소형보드) 입니다. 감사합니다. >귀사 제품(AM-DC2-2D)으로 모터를 구동 할려고 합니다. > >단방향으로 회전 할거고, 모터 속도 가변도 필요 합니다. > >START 신호 받아서 모터 구동하고, > >STOP 신호 받아서 모터 정지 할려고 합니다. > >가능한지 답변 부탁드립니다.
5833 답변완료am-ms2관련 최동희 2010-11-04 1,364
안녕하세요 금일 물건을 받아서 동작을 시키려고 하는데요. 모터드라이버에 방열판을 따로 부착시켜야되는지 궁금합니다. 방열판을 부착시키려면 추천부탁드립니다. 수고하세요
관리자 답변 NEWTC · 2010-11-04
안녕하세요 장시간 돌리거나 많은 토크를 넣을경우 방열판을 부착시켜야합니다. 디바이스마트에 DH-45A 방열판을 사용할수 있으나, 모듈주위 부품이 있에 장착할수가 없습니다. 일반적인 알루미늄을 짤라서 붙여서 사용하시길 바랍니다. 수고하세요 >안녕하세요 > >금일 물건을 받아서 동작을 시키려고 하는데요. > >모터드라이버에 방열판을 따로 부착시켜야되는지 궁금합니다. >방열판을 부착시키려면 추천부탁드립니다. > >수고하세요
5832 답변완료안녕하세요 KD-ATmega128Pro 유저입니다.. 선현수 2010-11-04 1,461
다름이 아니라 제가 센서를 가동시키기 위해서 먼저 가변저항을 이용한 ADC변환을 해보았습니다.. 가변저항으로 는 세그먼트에 수치가 잘나타나는데. 직류 전압을사용하는 센서로 실험을 하면 수치가 나타나질 않습니다.. 그래서 오실로스코프를 통하여 파형을 보았는데요.. atmega128키트에서 나오는 외부전원전압이 교류였습니다.. 여기서 질문입니다.. 1. 왜 파형이 교류가 나오는 것입니까?? 2. 직류출력하는 센서는 atmega128키트에서 ADC변환을 할수 없나요? 3. 아니면 가변저항과 같이 센서의 출력전압을 교류형태로 만들어주어야 하나요?? 이상 문의 드리겠습니다. 항상 친절한 답변 기대드리겠습니다...
관리자 답변 NEWTC · 2010-11-04
안녕하세요 DC는 GND을 공통적으로 물려서 인가하거나 오실로스코프로 잴수가 있습니다. 오실로 스코프에 집게 물리는것이 있습니다 그걸 보드의 gnd와 물려야합니다. DC전압도 -단자를 보드GND에 물려서 사용합니다. AC는 물리지 않고 사용하지만 DC는 GND를 물려서 사용하세요 교류로 나오는 현상이 GND 물리지않아 전위가 플로팅 되어 그렇습니다. 장비사용법은 오실로스코프 메뉴얼을 보시거나 서적을 찾아보시길 바랍니다. 수고하세요 >다름이 아니라 제가 센서를 가동시키기 위해서 먼저 >가변저항을 이용한 ADC변환을 해보았습니다.. > >가변저항으로 는 세그먼트에 수치가 잘나타나는데. 직류 전압을사용하는 센서로 실험을 하면 수치가 나타나질 않습니다.. > >그래서 오실로스코프를 통하여 파형을 보았는데요.. atmega128키트에서 나오는 외부전원전압이 교류였습니다.. > >여기서 질문입니다.. >1. 왜 파형이 교류가 나오는 것입니까?? >2. 직류출력하는 센서는 atmega128키트에서 ADC변환을 할수 없나요? >3. 아니면 가변저항과 같이 센서의 출력전압을 교류형태로 만들어주어야 하나요?? >이상 문의 드리겠습니다. 항상 친절한 답변 기대드리겠습니다... >
5831 답변완료se-dm 모터 관련 질문이요 김재국 2010-11-04 1,386
작동 범위가 1.5-6v로 되어있던데 그럼 이 모터는 라인트레이서 같은 곳에는 못쓰나요? 11.1v 외부전압을 따로 줄껀데요..
관리자 답변 NEWTC · 2010-11-04
안녕하세요 속도에 상관이 없다면 사용해도 문제없습니다. 메인보드에 사용되는 전압 5볼트를 사용하면 됩니다. 수고하세요 >작동 범위가 1.5-6v로 되어있던데 > >그럼 이 모터는 라인트레이서 같은 곳에는 못쓰나요? > >11.1v 외부전압을 따로 줄껀데요..
5830 답변완료퓨즈비트셋팅방법 좀 갈켜주세요 김성환 2010-11-03 1,423
귀사의 제품인 USB-ISP를 이용하여 프로그램을 수행하는 과정에서 FAQ에 올라와 있는대로 퓨즈비트를 설정하여 코드비전을 수행한 결과 fuse bits setting don't match the program type 이라는 메세지가 뜨는데요 AVR chip programer type 은 Atmel STK500 /AVRISP 를 쓰고 있고요 아트메가 128을 사용하고 있습니다... 코드비전에서 아트메가 128을 쓰고 AVR chip programer type은 위에서 언급한 대로입니다.. 여기서 정확한 퓨즈비트 설정을 가르쳐주세요.. ckopt=0 만 체크하는게 맞는지도 설명해 주세요.. 밑에 파일 첨부했습니다.
관리자 답변 NEWTC · 2010-11-04
안녕하세요 http://newtc.co.kr/board/data/faq/AD_USBISP_V03_사용법.pdf 위링크는 FAQ에 있는 ISP 사용법에 관련된 내용입니다. ckopt=0 이것만 체크라는 말을 없습니다. 메뉴얼에 20page를 참고하세요. 본사에서 판매되는 모듈일 경우 미리 퓨즈 셋팅이 되어 나가기 때문에 퓨즈셋팅을 안하셨도 됩니다. 칩이 새것일 경우 퓨즈 셋팅을 한번 하시고 program fuse bit 체크를 해체하고 사용하세요 퓨즈 셋팅을 한번이라도 잘못할경우 사용하지 못합니다. 겜색엔진에 살리는 방법을 보시고 퓨즈 재설정을 하시길 바랍니다. http://search.naver.com/search.naver?where=nexearch&query=avr%C0%CE%B0%F8%C8%A3%C8%ED&sm=top_hty&fbm=1 수고하세요 >귀사의 제품인 USB-ISP를 이용하여 프로그램을 수행하는 과정에서 > >FAQ에 올라와 있는대로 퓨즈비트를 설정하여 코드비전을 수행한 결과 > >fuse bits setting don't match the program type 이라는 메세지가 뜨는데요 > >AVR chip programer type 은 Atmel STK500 /AVRISP 를 쓰고 있고요 > >아트메가 128을 사용하고 있습니다... > >코드비전에서 아트메가 128을 쓰고 AVR chip programer type은 위에서 언급한 대로입니다.. > >여기서 정확한 퓨즈비트 설정을 가르쳐주세요.. > >ckopt=0 만 체크하는게 맞는지도 설명해 주세요.. > >밑에 파일 첨부했습니다. > >
5829 답변완료소스 수정하려고하는데... 이준한 2010-11-03 1,424
저희가 기존자료실 2번째꺼 회전 시계방향 시계반대방향 속도 느리게 빠르게 움직이는 소스를 사용하고있는데 어느부분을 사용해야하는지 전후좌우로 움직이는지 가르쳐주세요.. 저희가 작업하고있는 소스입니다.
관리자 답변 NEWTC · 2010-11-03
안녕하세요 stepright = RIGHTmotorOneClock(stepright, TURN); stepleft = LEFTmotorOneClock(stepleft, TURN); MOTOR_PORT = stepleft|stepright; 위 라인을 문장을 수정하여 사용하시길 바랍니다. #define CW 0 #define CCW 1 -전후 stepright = RIGHTmotorOneClock(stepright, CCW); stepleft = LEFTmotorOneClock(stepleft, CW); -전후 stepright = RIGHTmotorOneClock(stepright, CW); stepleft = LEFTmotorOneClock(stepleft, CCW); -좌우 stepright = RIGHTmotorOneClock(stepright, CW); stepleft = LEFTmotorOneClock(stepleft, CW); -좌우 stepright = RIGHTmotorOneClock(stepright, CCW); stepleft = LEFTmotorOneClock(stepleft, CCW); 죄송하지만, 본사에서는 소스 수정에 대해서는 써포트를 하지 않습니다 수고하세요 >저희가 기존자료실 2번째꺼 > >회전 시계방향 시계반대방향 속도 느리게 빠르게 움직이는 > >소스를 사용하고있는데 > >어느부분을 사용해야하는지 전후좌우로 움직이는지 가르쳐주세요.. > >저희가 작업하고있는 소스입니다.
5828 답변완료AM-SLCD216 동작 온도 특성 박기남 2010-11-03 1,397
AM-SLCD216의 LCD와 컨트롤보드 각각의 동작온도 특성이 어떻게 되나요?
관리자 답변 NEWTC · 2010-11-03
안녕하세요 LCD 컨트롤보드의 칩의 온도범위는 -40°C to 85°C입니다. LCD 패널의 메인칩의 온도범위은 –30 to +75 입니다. 수고하세요 >AM-SLCD216의 LCD와 컨트롤보드 각각의 동작온도 특성이 어떻게 되나요?
5827 답변완료DC 라인트레이서 키트 KR-DL16에 대해서 질문있습니다. 이상범 2010-11-03 1,364
KR-DL16에 UART 방식의 블루투스 모듈을 장착할 수 있나요?
관리자 답변 NEWTC · 2010-11-03
안녕하세요 KR-DL16 는 5볼트 레벨(TTL)의 uart 통신을 지원합니다. 수고하세요 >KR-DL16에 UART 방식의 블루투스 모듈을 장착할 수 있나요?
5826 답변완료iccavr V7 사용문의 고병진 2010-11-03 1,433
3월 iccavr V7을 구매하영 사용하던중 컴퓨터에 문제가 있어서 포멧을 한 상태입니다. 라이센스를 넣으려고 하니 하드웨어 ID가 틀려져 있는 상태입니다. 이 부분에 대하여 본사쪽으로 다시 메일을 보내서 받아야하는건가요? 그리고 그때 보내주신 프린터물이 사라진 상태입니다. 판매시 보내주시는 프린터물을 다시 받을수 있을까요?
관리자 답변 NEWTC · 2010-11-03
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. ICCAVR V7 16k 버전을 구매하여 사용 중이셨나 봅니다. 포맷을 하게 되거나 윈도우를 새로 깔게 되면, 하드웨어 ID가 달라지게 됩니다. 그럴 때는 설치 요령에 보이는 것처럼 imagecraft 사로 이메일 보내시면, 하루 이틀 사이에 답변이 오게 됩니다. 대부분 주말이 껴 있지 않으면 24시간 안에 처리 됩니다. 만약, 답변이 계속 안온다거나 하면, 본사로 이메일 주시면 됩니다. 첨부 문서에 보다 자세히 나와 있으니, 참고하시기 바랍니다. 감사합니다. >3월 iccavr V7을 구매하영 사용하던중 컴퓨터에 문제가 있어서 포멧을 한 상태입니다. > >라이센스를 넣으려고 하니 하드웨어 ID가 틀려져 있는 상태입니다. > >이 부분에 대하여 본사쪽으로 다시 메일을 보내서 받아야하는건가요? > >그리고 그때 보내주신 프린터물이 사라진 상태입니다. > >판매시 보내주시는 프린터물을 다시 받을수 있을까요? >
5825 답변완료2축 자이로 센서 모듈 V02(AM-GYRO-XV V02) 김현규 2010-11-03 1,409
안녕하세요. 현재 " 2축 자이로 센서 모듈 V02(AM-GYRO-XV V02) " 모델을 구입하였습니다. 여기서 1~3번 Pin 까지는 NC상태로 아무것 도 연결 하지 않았습니다. 4번에는 GND와 8번에는 VCC 3.3V를 연결하셨습니다. 하지만 문제는 5번 Vref와 6번 Y-out, 7번 X-out입닌다. 5번에서 1.32~1.35정도가 출력되는데, 이때, 5,6,7번 핀을 AtMEGA128에 연결 하였습니다. 5번핀 Vref역시 프로그램 짤떄 영향을 주나요? 어떤식으로 해야 x와 y값을 알수가 있나요? 저는 그냥 x,y만 adc로 잃으면 되는줄 알았더니 Vref역시 adc와 연결 하라고 해서요....
관리자 답변 NEWTC · 2010-11-03
안녕하세요? 고객님, 아래는 답변 내용입니다. 이 쪽으로만 질문하여 주시면 감사하겠습니다. 두 군데로 보내시면, 일이 두번 진행되게 됩니다. 자이로 센서 V02는 Vref를 ADC로 붙여서 읽으시면 되는 데, 보정용이라서, 안하셔도 됩니다. 그냥 X, Y 값만 읽으시면 되요. 보다 정밀한 용도로는 Vref를 쓰시면 좋다는 얘기죠.^^ ( 소스의 목적) 아래소스는 3.3V 기준 전압으로 0~3.3V 사이를 AD하여 계산하는 자이로센서로 각도 구하는 소스입니다. 5V 기준 전압시는 아래 소스 설명을 참고하여, 수정하여 사용하세요. ( 소스 설명 ) 1. AVR adc 전압 스케일이 3.3 볼트 일때 vref(계산을 위해 mV 로변경)기준으로 계산합니다. - 1024는 adc의 1024단계의 분해능을 의미 - 3300mV adc의 vref인 3.3V를 의미함 2. 1024 분해능에서 1 변동할때의 전압값(Vref = 3.3V) : 3300mV / 1024 = 3.22265625mV * 참고적으로 1024 분해능에서 1 변동할때의 전압값(Vref = 5V) ( 0~5V 사이를 AD 하고, 실제로는 0~3.3V를 사용하므로, 분해능의 단계수를 다시 계산해야합니다. 즉, 3.3/(5/1024) = 675.84 단계 약 676 값이 3.3 볼트입니다. 0~3.3V의 값을 보려면, 0~676의 값으로 계산하면 됩니다. 1024 분해능에서 1 변동할때의 전압값(Vref = 5V) : 3300mV / 676 = 4.8816568mV ) 3. 감도(Sensitivity) 값 관련 AM-GYRO V01 ( 즉, IDG300)의 감도(Sensitivity) 2mV/degree/sec AM-GYRO V02 (즉, IDG650)의 감도(Sensitivity) 0.5mV/degree/sec 4. 최종적인 각도 계산을 위한 Scale Vector 값 관련 AM-GYRO V01 ( 즉, IDG300) 이용시, - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) : 3.22265625 mV / ( 2mV/degree/sec) = 1.611328125 degree/sec - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) : 4.8816568mV / ( 2mV/degree/sec) = 2.4408284 degree/sec AM-GYRO V02 ( 즉, IDG650) 이용시, - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) : 3.22265625 mV / ( 0.5mV/degree/sec) = 6.4453125 degree/sec - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) : 4.8816568mV / ( 0.5mV/degree/sec) = 9.7533136 degree/sec 5. 즉, 정리하여 보면, 각속도 구하는 기본식은 ( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector 여기서 adc 샘플링 시간을 누적시키면 각도가 됩니다.(적분) adc 샘플링 주기가 예로 0.01초이면 degree += (( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector ) * 0.01sec 수고하세요~ - 아래 - #include <iom128v.h> #include <macros.h> #include <stdio.h> #define SCALE_FACTOR 1.611328125 #define TIME 0.01 #define OFF_SET 458 //590.5611 int value = 0; float value_sum = 0; float offset; float angular_acceleration[50]; float angular_average = 0; float before_angle = 0; float after_angle = 0; float angle_factor = 0; char adc_flag = 0; char time_flag = 0; void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x03; } //TIMER0 initialize - prescale:64 // WGM: Normal // desired value: 1KHz // actual value: 1.000KHz (0.0%) void timer0_init(void) { TCCR0 = 0x00; //stop ASSR = 0x00; //set async mode TCNT0 = 0x06; //set count OCR0 = 0xFA; TCCR0 = 0x04; //start timer } #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF void timer0_ovf_isr(void) { TCNT0 = 0x06; //reload counter value PORTG ^= 1; ADCSRA |= 0x40; } //TIMER1 initialize - prescale:8 // WGM: 0) Normal, TOP=0xFFFF // desired value: 100Hz // actual value: 100.000Hz (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0xB1; //setup TCNT1L = 0xE0; OCR1AH = 0x4E; OCR1AL = 0x20; OCR1BH = 0x4E; OCR1BL = 0x20; OCR1CH = 0x4E; OCR1CL = 0x20; ICR1H = 0x4E; ICR1L = 0x20; TCCR1A = 0x00; //TCCR1B = 0x02; //start Timer } #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF void timer1_ovf_isr(void) { //TIMER1 has overflowed TCNT1H = 0xB1; //reload counter high value TCNT1L = 0xE0; //reload counter low value //PORTG ^= 2; time_flag = 1; } //UART0 initialize // desired baud rate: 115200 // actual: baud rate:111111 (3.7%) // char size: 8 bit // parity: Disabled void uart0_init(void) { UCSR0B = 0x00; //disable while setting baud rate UCSR0A = 0x00; UCSR0C = 0x06; UBRR0L = 0x08; //set baud rate lo UBRR0H = 0x00; //set baud rate hi UCSR0B = 0x18; } // printf ? int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; return c; } // scanf int getchar(void) { while ((UCSR0A & 0x80) == 0); return UDR0; } //ADC initialize // Conversion time: 104uS void adc_init(void) { ADCSRA = 0x00; //disable adc ADMUX = 0x00; //select adc input 0 ACSR = 0x80; ADCSRA = 0x8F; } #pragma interrupt_handler adc_isr:iv_ADC void adc_isr( void ) { //conversion complete, read value (int) using... value = ADCL; //Read 8 low bits first (important) value |= ( int )ADCH << 8; //read 2 high bits and shift into top byte adc_flag++; value_sum += value; if(adc_flag >=1 ) TCCR0 = 0x00; //stop //printf( "\\r\\n ADC = %d", value ); } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts XDIV = 0x00; //xtal divider XMCRA = 0x00; //external memory port_init(); uart0_init(); adc_init(); timer0_init(); timer1_init(); MCUCR = 0x00; EICRA = 0x00; //extended ext ints EICRB = 0x00; //extended ext ints EIMSK = 0x00; TIMSK = 0x01; //timer interrupt sources TIMSK = 0x04; //timer interrupt sources TIMSK = 0x05; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void delay ( unsigned int cnt ) { unsigned int i,j; for( i=0 ; i< cnt ; i++ ) for( j=0 ; j< 1000 ; j++ ); } void main (void) { int i; int temp; init_devices(); printf( "\\r\\n GYRO..QQ"); printf( "\\r\\n ADCSRA = 0x%x", ADCSRA ); printf( "\\r\\n ADMUX = 0x%x", ADMUX ); printf( "\\r\\n ACSR = 0x%x", ACSR ); delay( 1000 ); for( i=0 ; i<100 ; i ++ ) angular_acceleration[i] = 0; ADMUX = 0x00; ADCSRA |= 0x40; offset = 0; for( i=0 ; i<50 ; ) { if ( adc_flag ) { temp = value; offset += value; adc_flag = 0; ADCSRA |= 0x40; //printf( "\\r\\n $$ = %d", value ); i ++ ; } } offset = (int)(offset / 50); printf( "\\r\\n offset = %f", offset ); //for( i=0 ; i<50 ; i ++ ) // angular_acceleration[i] = offset; delay( 2000 ); delay( 2000 ); TCCR1B = 0x02; //start Timer TCCR0 = 0x05; //start timer value_sum = 0; adc_flag = 0; while(1) { //delay( 1000 ); if( time_flag ) { PORTG |= 0x02; value_sum = value_sum / adc_flag; angular_acceleration[0] = (( float )( (int)(value_sum) - offset )) * SCALE_FACTOR; after_angle = before_angle + ( angular_acceleration[9] + angular_acceleration[8] + angular_acceleration[7] + angular_acceleration[6] + angular_acceleration[5] + angular_acceleration[4] + angular_acceleration[3] + angular_acceleration[2] + angular_acceleration[1] + angular_acceleration[0] ) / 10; angle_factor = after_angle * TIME; before_angle = after_angle; for( i=0 ; i<9 ; i ++ ) { angular_acceleration[i+1] = angular_acceleration[i]; //printf ( " nangle = %.2f", angular_acceleration[i]); } printf ( "\\r\\n X_angle = %.2f", angle_factor); angular_average = 0; adc_flag = 0; value_sum = 0; time_flag = 0; TCCR0 = 0x05; } PORTG &= 0xfd; } } >안녕하세요. > >현재 " 2축 자이로 센서 모듈 V02(AM-GYRO-XV V02) " 모델을 구입하였습니다. > >여기서 1~3번 Pin 까지는 NC상태로 아무것 도 연결 하지 않았습니다. > >4번에는 GND와 8번에는 VCC 3.3V를 연결하셨습니다. > >하지만 문제는 5번 Vref와 6번 Y-out, 7번 X-out입닌다. > >5번에서 1.32~1.35정도가 출력되는데, 이때, 5,6,7번 핀을 AtMEGA128에 연결 하였습니다. > >5번핀 Vref역시 프로그램 짤&#46468; 영향을 주나요? 어떤식으로 해야 x와 y값을 알수가 있나요? > >저는 그냥 x,y만 adc로 잃으면 되는줄 알았더니 Vref역시 adc와 연결 하라고 해서요.... > >
5824 답변완료uart 통신 질문 김용승 2010-11-03 1,288
제가 현재 쓰고 있는 MCU 모듈은 AM_128PRO 입니다. 이 모듈에 보면 UART0 J204 라는 3핀짜리 포트가 있습니다. 저는 이 포트가 단순히 UART 포트인줄알고 3핀커넥터를 이용해 RFMOD의 RX, TX와 cross로 연결을 했었습니다. 제가 지금 하고있는 작업은 rfmod 2개를 이용해서 컴퓨터와 통신하는 것인데 rfmod의 LED를 보면 컴퓨터 단에서 ascii값을 입력하면 MCU단의 rfmod에서 rx단 LED에 불이 들어오는 것을 보았습니다. >>MCU와 rfmod를 그냥 연결을 한게 잘못된건지 알고싶습니다. UART 의 통신 level은 ttl 로 알고 있습니다. 그런데 본 MCU 모듈의 3핀짜리 포트는 uart0 라고 써있지만 .... rs232 출력을 갖고 있다고 써있는것을 스펙이서 지금에야 보고야 말았습니다 ㅠ 그러면 현재 연결된 상태의 3핀 커넥터를 빼고 >>rfmod의 rx ,tx와 avr128의 2/3번 핀과 연결을 해야 레벨에 맞는 uart 통신이 연결되는 것인지 알고싶습니다.
관리자 답변 NEWTC · 2010-11-03
안녕하세요 rs232 통신은 10~15v 레벨을 사용합니다. 핀헤더 맵을보시면 2,3번을 사용하면 됩니다. rfmod에 rs232레벨로 인가되어 이상이 생길 수도 있습니다. 위처럼 연결해서 사용하여 이상이 있으면 점검을 받아 보시길 바랍니다. 수고하세요 >제가 현재 쓰고 있는 MCU 모듈은 AM_128PRO 입니다. > >이 모듈에 보면 UART0 J204 라는 3핀짜리 포트가 있습니다. > >저는 이 포트가 단순히 UART 포트인줄알고 3핀커넥터를 이용해 > >RFMOD의 RX, TX와 cross로 연결을 했었습니다. > >제가 지금 하고있는 작업은 rfmod 2개를 이용해서 컴퓨터와 통신하는 것인데 > >rfmod의 LED를 보면 컴퓨터 단에서 ascii값을 입력하면 MCU단의 rfmod에서 rx단 LED에 >불이 들어오는 것을 보았습니다. > >>>MCU와 rfmod를 그냥 연결을 한게 잘못된건지 알고싶습니다. >UART 의 통신 level은 ttl 로 알고 있습니다. 그런데 본 MCU 모듈의 3핀짜리 포트는 uart0 라고 써있지만 .... rs232 출력을 갖고 있다고 써있는것을 스펙이서 지금에야 보고야 말았습니다 ㅠ > >그러면 현재 연결된 상태의 3핀 커넥터를 빼고 > >>>rfmod의 rx ,tx와 avr128의 2/3번 핀과 연결을 해야 레벨에 맞는 uart 통신이 연결되는 것인지 알고싶습니다.