Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 5873 | 답변완료자이로센서를이용해 각도구하기! | 김민하 | 2010-11-15 | 1,320 |
|
안녕하세요~
자이로센서를 사용해 각도를 구하고 싶어서 본 회사의 자이로센서를 구입해 사용하고 있습니다.
AM-GYRO-P V02를 사용하고 있는데요~ x, z를 측정하는 센서로 구입했습니다.
자이로센서로 각도를 측정하고, 그 각도로 모터를 돌리는 프로그램을 구현하고 싶어 이곳저곳 찾고 있는 중에 본 홈페이지에[자이로센서로 각도구하기]라는 예제소스를 제공해 주셨길래 봤는데욧~
그 프로그램이 컴파일러 ICCAVR을 이용하는 예제같은데,
제가 사용하는 source insight라는 컴파일러로 .hex파일을 만들려고 하니까 잘 안되네요.
혹시 사용하는 방법이 어떻게 되는지 알 수 있을까요?
그리고 제가 사용하는 센서는 x,z 축의 각도 중에 z축의 각도를 읽어내고 싶은데
프로그램 해석능력이 좀 떨어져 잘 모르겠네요,, 조언 좀 부탁드립니다.
관리자 답변
안녕하세요
아래링크는 참고하시 하세요.
http://www.newtc.co.kr/board/view.php?id=faq&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=42
위 링크에서 제공되는 코드눈 x축에 대한 내용입니다. z축에 대한 것은 ADC 에 채널만 변경하면 z축에 대한 값을 읽을 수 있습니다.
죄송하지만 제공되는 예제를 다른 컴파일러로 따로 변환해서 배포는 하지 않습니다.
위 코드중 이해 안가시는 부분에 대한 내용을 첨부해서 질문을 해주시면 됩니다.
수고하세요
>안녕하세요~
>자이로센서를 사용해 각도를 구하고 싶어서 본 회사의 자이로센서를 구입해 사용하고 있습니다.
>AM-GYRO-P V02를 사용하고 있는데요~ x, z를 측정하는 센서로 구입했습니다.
>자이로센서로 각도를 측정하고, 그 각도로 모터를 돌리는 프로그램을 구현하고 싶어 이곳저곳 찾고 있는 중에 본 홈페이지에[자이로센서로 각도구하기]라는 예제소스를 제공해 주셨길래 봤는데욧~
>그 프로그램이 컴파일러 ICCAVR을 이용하는 예제같은데,
>제가 사용하는 source insight라는 컴파일러로 .hex파일을 만들려고 하니까 잘 안되네요.
>혹시 사용하는 방법이 어떻게 되는지 알 수 있을까요?
>그리고 제가 사용하는 센서는 x,z 축의 각도 중에 z축의 각도를 읽어내고 싶은데
>프로그램 해석능력이 좀 떨어져 잘 모르겠네요,, 조언 좀 부탁드립니다.
|
||||
| 5872 | 답변완료dc 라인트레이스 킷트 | 박도선 | 2010-11-15 | 1,352 |
|
라인드레이스 킷드를 다 조립하고 프로그램까지 넣었습니다.
근데 적외선 센서 묘듈에 초록불이 들어 오지 않습니다.
이거 어떻게 해야 하나요. 사진도 하나 올려 봅니다.
2주째 고민 하고 있습니다. 가르쳐 주세요
관리자 답변
안녕하세요
죄송하지만, 이미지로 모든걸 알수 없습니다.
본사로 방문 또는 택배로 보내어 점검을 한번 받아 보시길
바랍니다.
수고하세요
>라인드레이스 킷드를 다 조립하고 프로그램까지 넣었습니다.
>근데 적외선 센서 묘듈에 초록불이 들어 오지 않습니다.
>이거 어떻게 해야 하나요. 사진도 하나 올려 봅니다.
>2주째 고민 하고 있습니다. 가르쳐 주세요
|
||||
| 5871 | 답변완료질문입니다!(急) | 김민하 | 2010-11-15 | 1,428 |
|
안녕하세요~
뉴티씨 제품을 애용하고 있는 avr캐초보 기계공학도 입니다.^^
각도의 변화를 이용해 모터를 제어하려는 목적으로 사용하고 있는데요~
현재 제가 사용하는 뉴티씨 제품은
MCU : AB-M128Pro-A
센서 : AM-GYRO-P V02 (자이로센서)
ISP : AVR ISP Pro AD-ISPPRO
컴파일러 : 소스인사이트
로 사용하고 있습니다.
다른것 보다, 사용하고 있는 자이로 센서의 테스트 프로그램을 사용해
센서를 테스트 해보고 싶은데, 어떻게 연결을 해서 사용해야하는지,
컴퓨터 - isp - mcu - 자이로센서 로 단순 연결해보니
연결이 되었지만, 어떤 특정한 신호가 출력되지 않았습니다.
설명서를 보니 특별히 연결하는 방법이 없어서 고심하던 끝에 글을 남겨봅니다.
따로 mcu에 소스를 코딩해야하나요?
좀 알려주세요~
관리자 답변
안녕하세요
타겟보드 >MCU : AB-M128Pro-A
>센서 : AM-GYRO-P V02 (자이로센서)
다운로드장비>ISP : AVR ISP Pro AD-ISPPRO
타겟보드에 있는 AVR에 c코드로 컴파일후 hex 파일를 다운로드 장비를 이용하여 AVR에 코드를
심어야합니다.
강좌 >> AVR강좌를 보시고 따라 해보시길 바랍니다.
수고하세요
>안녕하세요~
>뉴티씨 제품을 애용하고 있는 avr캐초보 기계공학도 입니다.^^
>각도의 변화를 이용해 모터를 제어하려는 목적으로 사용하고 있는데요~
>
>현재 제가 사용하는 뉴티씨 제품은
>
>MCU : AB-M128Pro-A
>센서 : AM-GYRO-P V02 (자이로센서)
>ISP : AVR ISP Pro AD-ISPPRO
>컴파일러 : 소스인사이트
>
>로 사용하고 있습니다.
>
>다른것 보다, 사용하고 있는 자이로 센서의 테스트 프로그램을 사용해
>센서를 테스트 해보고 싶은데, 어떻게 연결을 해서 사용해야하는지,
>컴퓨터 - isp - mcu - 자이로센서 로 단순 연결해보니
>연결이 되었지만, 어떤 특정한 신호가 출력되지 않았습니다.
>설명서를 보니 특별히 연결하는 방법이 없어서 고심하던 끝에 글을 남겨봅니다.
>따로 mcu에 소스를 코딩해야하나요?
>좀 알려주세요~
>
>
|
||||
| 5870 | 답변완료수리 잘 받았습니다. | 지유현 | 2010-11-15 | 1,359 |
|
아주 이쁘게 돌아왔어요~
감사합니다!
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 [email protected] 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 5869 | 답변완료타이머 카운터 질문입니다. | 김용승 | 2010-11-14 | 1,438 |
|
지금 사용하고있는 모듈은 AM128-pro 입니다.
이를 이용해 16bit 타이머 카운터를 사용하고 싶습니다.
15번 모드(FPWM 에서 반전출력을 갖고 TOP == OCRnA 를 사용하는 모드) 를 사용하려고 합니다
여기서 50ms 마다 , 파형을 발생시키고 싶습니다. 분주비는 256으로 하였고 OCR1A(TOP)의 값을 0x0C34 로 설정했습니다.
여기서 확인차 질문한가지 하겠습니다. 본 모듈의 system clk 이 16MHz로 설정되어 있는 것으로 아는데 f(clkI/O) 의 값을 16M로 넣어주는게 맞는것인지 알고싶습니다.
그리고 TCCR1A = 0x3F; TCCR1B = 0x1C;
DDRB.7 = 1; DDRB.6 =1; 로 설정해 주었습니다. 여기서 OC1B, OC1C를 동시에 출력으로 설정해 주었는데, 이 포트인 PB7, PB6에서 동시에 TCNT값이 OCR1B와 OCR1C에 일치되면 1로 set되고 TOP값이 되면 0으로 set되는지 알고싶습니다. 또한 파형도 동시에 PB7 PB6을 통해 나오는지 알고싶습니다. 책상에는 15번 PWM 모드의 경우 출력핀이 OC1B 라고만 써있기 때문에 여쭈어 보는 것입니다. 동시라는 말이 중요합니다. (주요 질문입니다.)
이 코드를 작성하기전에 가능성에 대해 여쭤봅니다 ㅠ
그리고 파형만 발생해서 다른 모듈에 pulse만 인가하려고 하는데
이런 경우에는 특별히 interrupt를 사용할 필요는 없는게 맞는지 알고싶습니다.
대부분의 책에... 타이머 카운터에대해서는 인터럽트와 연계 시키는 경우가 많아 확인하고싶습니다.
관리자 답변
안녕하세요
OC1B, OC1C 듀티비 관련레지스터는 tcnt 값이 카운터에 따라 일치할 경우 값이
출력됩니다.
출력되는 파형은 설정에 따라 반전신호로도 가능합니다.
파형출력 동시에도 가능합니다.
pwm 파형출력만으로도 가능합니다. 인터럽터루틴을 사용 안하셔도 됩니다.
수고하세요
>지금 사용하고있는 모듈은 AM128-pro 입니다.
>
>이를 이용해 16bit 타이머 카운터를 사용하고 싶습니다.
>
>15번 모드(FPWM 에서 반전출력을 갖고 TOP == OCRnA 를 사용하는 모드) 를 사용하려고 합니다
>
>여기서 50ms 마다 , 파형을 발생시키고 싶습니다. 분주비는 256으로 하였고 OCR1A(TOP)의 값을 0x0C34 로 설정했습니다.
>
>여기서 확인차 질문한가지 하겠습니다. 본 모듈의 system clk 이 16MHz로 설정되어 있는 것으로 아는데 f(clkI/O) 의 값을 16M로 넣어주는게 맞는것인지 알고싶습니다.
>
>그리고 TCCR1A = 0x3F; TCCR1B = 0x1C;
>DDRB.7 = 1; DDRB.6 =1; 로 설정해 주었습니다. 여기서 OC1B, OC1C를 동시에 출력으로 설정해 주었는데, 이 포트인 PB7, PB6에서 동시에 TCNT값이 OCR1B와 OCR1C에 일치되면 1로 set되고 TOP값이 되면 0으로 set되는지 알고싶습니다. 또한 파형도 동시에 PB7 PB6을 통해 나오는지 알고싶습니다. 책상에는 15번 PWM 모드의 경우 출력핀이 OC1B 라고만 써있기 때문에 여쭈어 보는 것입니다. 동시라는 말이 중요합니다. (주요 질문입니다.)
>이 코드를 작성하기전에 가능성에 대해 여쭤봅니다 ㅠ
>
>그리고 파형만 발생해서 다른 모듈에 pulse만 인가하려고 하는데
>이런 경우에는 특별히 interrupt를 사용할 필요는 없는게 맞는지 알고싶습니다.
>대부분의 책에... 타이머 카운터에대해서는 인터럽트와 연계 시키는 경우가 많아 확인하고싶습니다.
>
>
|
||||
| 5868 | 답변완료스텝모터 한바퀴만 돌리기 | 김성운 | 2010-11-12 | 1,392 |
|
iccavr 로 스텝모터 한바퀴만 돌리고 싶습니다
한바퀴만 돌리고
for 문으로 딜레이 함수 이용해서
5초에 한번씩 360도 회전을 할거예요
한바퀴 돌리는 소스를 부탁드립니다
관리자 답변
안녕하세요? 고객님,
저희 회사에서 기본 예제는 제공해 드리지만, 고객님이 원하는 소스를 짜드리지는 않습니다.
하지만, CS2P로 된 자료실의 예제에서 1-2상 여자 방식으로 된 예제를 약간 수정하여 보았습니다.
참고하시기 바랍니다.
타이밍은 조절하여 쓰시면 되겠습니다.
앞으로 필요하신 소스는 직접 짜서 쓰셔야 합니다. 물론, 본사의 예제를 참고하실 수 있고, 많은 도움이 되실 겁니다.
수고하세요.
>iccavr 로 스텝모터 한바퀴만 돌리고 싶습니다
>
>한바퀴만 돌리고
>
>for 문으로 딜레이 함수 이용해서
>
>5초에 한번씩 360도 회전을 할거예요
>
>한바퀴 돌리는 소스를 부탁드립니다
|
||||
| 5867 | 답변완료AVR MEGA 128pro 개발키트를 샀는데요, | 임연재 | 2010-11-12 | 1,388 |
|
7-segment로 숫자 표현 해볼라하는데 도통 무슨포트인지도 모르겠고 해서요..
7segment에 대한 예제소스좀 알려주세요
관리자 답변
안녕하세요
자료실 --> 기존자료실 에 보시면 예제 및 도면 등이 있습니다.
아래 링크는 fnd 관련된 코드입니다.
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=시계&select_arrange=headnum&desc=asc&no=290
수고하세요
>7-segment로 숫자 표현 해볼라하는데 도통 무슨포트인지도 모르겠고 해서요..
>7segment에 대한 예제소스좀 알려주세요
|
||||
| 5866 | 답변완료uart 통신시 전송 문자 | 우승식 | 2010-11-12 | 1,418 |
|
%c로 설정해야 16진수 값이 전송이 되는지..
예)
unsigned char OUT[1]={0xff}; <---16진수
void main (void)
int = k; <---int가 맞는지
k=0;
printf("%c",OUT[k]);<------%c 맞는지
관리자 답변
안녕하세요
%c 문자출력입니다.
%x 16진수입니다.
c언어 책을 보시는것이 좋을것 같군요
수고하세요
>%c로 설정해야 16진수 값이 전송이 되는지..
>예)
>unsigned char OUT[1]={0xff}; <---16진수
>
>void main (void)
>int = k; <---int가 맞는지
>k=0;
>printf("%c",OUT[k]);<------%c 맞는지
|
||||
| 5865 | 답변완료ab-m128-b 전원관련 질문입니다. | hhsnis | 2010-11-11 | 1,469 |
|
핸드폰 배터리(3.7v) 두개,혹은 세개를 직렬연결해서
구동하려고 합니다.
이를 바로 아답터 옆에 dc input에 물려주면
자체 레귤레이터를 통해서 5v로 동작 하는거 맞나요
아니면 꼭 12v를 입력해 주어야 하나요?
관리자 답변
안녕하세요? 고객님,
최소한 7V ~ 28V 사이가 되면, 정상동작합니다.
꼭 12V 일 필요는 없습니다.
>핸드폰 배터리(3.7v) 두개,혹은 세개를 직렬연결해서
>구동하려고 합니다.
>이를 바로 아답터 옆에 dc input에 물려주면
>자체 레귤레이터를 통해서 5v로 동작 하는거 맞나요
>아니면 꼭 12v를 입력해 주어야 하나요?
|
||||
| 5864 | 답변완료AM-DC2-2D | 정득주 | 2010-11-11 | 1,423 |
|
AM-DC2-2D를 구매했습니다.
잘 몰라서 그러는데 자세한 답변 부탁드립니다.
제가 쓸려고 하는 용도는...
1. 입력으로 START와 STOP를 독립적으로 입력합니다.
2. 모터 속도를 외부 볼륨으로 조절하고 싶습니다.
3. 모터 방향은 단방향입니다.
지금 구매한 보드로 사용 가능한지, 컨트롤 신호를 어떻게 연결해야 하는지...
관리자 답변
안녕하세요
나열한 동작형태는 AM-DC2-2D만으로 불가능합니다.
AM-DC2-2D는 모터 드라이버입니다. 콘트롤러가 아닙니다..
AM-DC2-2D모터드라이버 모듈과 모터모듈을 제어할수 있는 mcu 보드(AVR 개발 보드)를
결합하여 사용 합니다.
나열한 동작형태로 할 경우 mcu 보드(AVR 개발 보드)같은 곳에 유저가 직접 코드를 작성하여
구현하면 됩니다.
수고하세요
>AM-DC2-2D를 구매했습니다.
>잘 몰라서 그러는데 자세한 답변 부탁드립니다.
>
>제가 쓸려고 하는 용도는...
>1. 입력으로 START와 STOP를 독립적으로 입력합니다.
>2. 모터 속도를 외부 볼륨으로 조절하고 싶습니다.
>3. 모터 방향은 단방향입니다.
>
>지금 구매한 보드로 사용 가능한지, 컨트롤 신호를 어떻게 연결해야 하는지...
|
||||
| 5863 | 답변완료AVR MEGA 128 소형 b를 건전지로 돌리는 방법좀 알려주세요.(냉무) | 박현철 | 2010-11-11 | 1,359 |
|
냉무 입니다.
관리자 답변
안녕하세요
아탑터 잭 위에 2핀으로 된 하얀 커넥터가 있습니다.
"dc input" 이라고 적혀 있고 극성 마크(+,-)도 있습니다.
건전지와 2핀컨넥터 극성을 동일하게 연결하여야 합니다.
반대로 연결할 경우 보드가 망가집니다.
9볼트 사각형태 건전지는 문방구 같은 곳에 구할수 있습니다.
수고하세요
>냉무 입니다.
|
||||
| 5862 | 답변완료uart 통신질문 | 우승식 | 2010-11-11 | 1,492 |
|
//ICC-AVR application builder : 2010-11-10 오후 9:18:28
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
void tx0Char(char message);
int putchar(char c)
{
tx0Char(c);
return c;
}
// UART0 을 이용한 출력
void tx0Char(char message)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = message;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xff;
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 = 0x00;
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// 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;
}
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
//uart has received a character in UDR
}
#pragma interrupt_handler uart0_tx_isr:iv_USART0_TXC
void uart0_tx_isr(void)
{
//character has been transmitted
}
//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();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
/*
int putchar(char c)
{
while(((UCSR0A>>UDRE0)&0x01)==0);
UDR0=c;
return c;
}
int getchar(void)
{
while((UCSR0A & 0x80) == 0);
return UDR0;
}
*/
void delay(int dd){
int i,j;
for(i=0 ; i<50 ; i++){
for(j=0 ; j<dd ; j++){
}
}
}
unsigned char OUT[1][9]={0xff,0xff,0x00,0x05,0x03,0x18,0x01,0x01,0xdd};
//{0xff,0xff,0x00,0x07,0x03,0x1e,0x00,0x02,0x00,0x02,0xd3};모터이동
//{0xff,0xff,0x00,0x05,0x03,0x18,0x01,0x01,0xdd};led on, torque enable
//{0xFF,0xFF,0x00,0x04,0x03,0x04,0xcf,0xf3};통신속도9600
void main(void)
{
int k;
int val;
init_devices();
//insert your functional code here...
delay(20000);
delay(30000);
delay(20000);
delay(30000);
PORTA = 0x00;
for(k=0; k<9; k++){
val = OUT[0][k];
printf("%c",val);
delay(100);
}
PORTA = 0x01;
}
모터와 atmega128의 uart0 통신을 하려고 하는데여...
설정에 문제가 있는지 구동이 되질 않아서 문의 드립니다.
프로그램을 보면 delay(100)마다 printf를 통해서 순차적으로 OUT[0][k]의 값을 전해주는데 제가 의도하는 프로그램이 맞는지 확인 부탁드립니다.
통신설정이 잘못되었는지 확인 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
일단, main문 안에 while(1)이 들어 있지 않아서, 한 번 실행하고 나면 종료되어 버립니다.
즉, 반복이 안되는 거죠. 물론, 이 경우 for문은 한 번은 실행되어 그 안의 문은 여러번 실행되겠지만, delay 문이 매우 짧아서, 9600bps보다 훨씬 짧습니다.
즉, 보내기도 전에 버퍼에서 사라져 버립니다.
delay 문은 1000에 667번 즉, for문 두번을 그렇게 돌려야 1초 정도 됩니다.
좀 늘려 보시고, while(1) 문으로 반복을 시켜 보세요.
수고하세요.
>//ICC-AVR application builder : 2010-11-10 오후 9:18:28
>// Target : M128
>// Crystal: 16.000Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>#include <stdio.h>
>
>
>void tx0Char(char message);
>
>int putchar(char c)
>{
> tx0Char(c);
>
> return c;
>}
>
>// UART0 을 이용한 출력
>void tx0Char(char message)
>{
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
> UDR0 = message;
>}
>
>
>
>// scanf 함수 사용시 추가할 것.
>int getchar(void)
>{
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
>}
>
>
>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0xff;
> 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 = 0x00;
>}
>
>//UART0 initialize
>// desired baud rate: 9600
>// actual: baud rate:9615 (0.2%)
>// 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;
>}
>
>#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
>void uart0_rx_isr(void)
>{
> //uart has received a character in UDR
>}
>
>#pragma interrupt_handler uart0_tx_isr:iv_USART0_TXC
>void uart0_tx_isr(void)
>{
> //character has been transmitted
>}
>
>//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();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x00; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>
>/*
>int putchar(char c)
>{
> while(((UCSR0A>>UDRE0)&0x01)==0);
> UDR0=c;
> return c;
>}
>
>int getchar(void)
>{
> while((UCSR0A & 0x80) == 0);
> return UDR0;
>}
>*/
>
>
>
>
>
>void delay(int dd){
> int i,j;
>
> for(i=0 ; i<50 ; i++){
> for(j=0 ; j<dd ; j++){
> }
> }
>}
>
>
>
>unsigned char OUT[1][9]={0xff,0xff,0x00,0x05,0x03,0x18,0x01,0x01,0xdd};
>
>//{0xff,0xff,0x00,0x07,0x03,0x1e,0x00,0x02,0x00,0x02,0xd3};모터이동
>//{0xff,0xff,0x00,0x05,0x03,0x18,0x01,0x01,0xdd};led on, torque enable
>//{0xFF,0xFF,0x00,0x04,0x03,0x04,0xcf,0xf3};통신속도9600
>
>
>
>void main(void)
>{
> int k;
> int val;
>
> init_devices();
> //insert your functional code here...
>delay(20000);
>delay(30000);
>delay(20000);
>delay(30000);
>
>PORTA = 0x00;
>
>for(k=0; k<9; k++){
> val = OUT[0][k];
> printf("%c",val);
> delay(100);
> }
>
>PORTA = 0x01;
>}
>
>모터와 atmega128의 uart0 통신을 하려고 하는데여...
>
>설정에 문제가 있는지 구동이 되질 않아서 문의 드립니다.
>
>프로그램을 보면 delay(100)마다 printf를 통해서 순차적으로 OUT[0][k]의 값을 전해주는데 제가 의도하는 프로그램이 맞는지 확인 부탁드립니다.
>
>통신설정이 잘못되었는지 확인 부탁드립니다.
|
||||
| 5861 | 답변완료..도와주세요 | 강내임 | 2010-11-10 | 1,381 |
|
갑작스럽게 처음으로!
AVR ATMega128 을 접하게된 생초보 고등학생들입니다.
저희가 어떠한 사연으로 ICC AVR을 이용하여 프로그래밍을 해야하는데요,
일단,
PORT B, PORT D에 LED 5개씩이랑 스위치 5개씩 연결을 해놨고요,
PORT F에다가는 LCD 창을 연결했는데요.
스위치를 누르면 LED에 불이 켜져야하고, 불 켜진 신호를 받아서 LCD에 글이 떠야하는데...
어떻게 시작을 해야하고, 진행해야 할지 막막합니다.
도와주세요..ㅠㅜ
저희가 일단 만든 키트사진 올립니다.제발...ㅠㅜㅠㅜㅠㅜㅠㅜㅠ
관리자 답변
안녕하세요
강좌 > 동영상 강좌
강좌 > AVR 강좌를 먼저 따라해 보길 바랍니다.
자료실 또는 자료실->기존 자료실에도 많은 예제가 있으니, 소스 로 검색하거나 제품 명 일부로 검색하여 찾아보시기 바랍니다.
본사에 판매되는 보드 및 예제코드에 대해서 써포트는 하지만 그외(코드 작성 ,수정 등 )에
대해서는 해 드릴수가 없습니다.
그 외에 대해서는 질문을 하실때 구제적으로 질문을 해주시면 됩니다.
수고하세요
>
>갑작스럽게 처음으로!
>AVR ATMega128 을 접하게된 생초보 고등학생들입니다.
>저희가 어떠한 사연으로 ICC AVR을 이용하여 프로그래밍을 해야하는데요,
>
>일단,
>PORT B, PORT D에 LED 5개씩이랑 스위치 5개씩 연결을 해놨고요,
> PORT F에다가는 LCD 창을 연결했는데요.
>스위치를 누르면 LED에 불이 켜져야하고, 불 켜진 신호를 받아서 LCD에 글이 떠야하는데...
>어떻게 시작을 해야하고, 진행해야 할지 막막합니다.
>도와주세요..ㅠㅜ
>저희가 일단 만든 키트사진 올립니다.제발...ㅠㅜㅠㅜㅠㅜㅠㅜㅠ
|
||||
| 5860 | 답변완료ATmega128 pro 와 usb isp를 이용한 시리얼 통신 문제입니다. | 정경훈 | 2010-11-10 | 1,443 |
|
-소스는 UART1번으로 문자들을 계속해서 날리는 예제소스를 사용했습니다.
<USB isp> <ATmega128의 cpu모듈보분의 uart1>
------------------------------------------
VCC -> X(연결안됨)
TX -> UART1(RX)
RX -> UART1(TX)
GND -> UART(GND)
------------------------------------------
이상태 입니다.
<첫번째 질문>
가장 큰 문제점인데요
pc에서 com port 인식을 못합니다.
ATmega128 과 연결되는 UART(GND)를 빼면, 인식을 합니다.<-"이게 정말 이상합니다."
왜그런거죠?
<두번째 질문>
제가 할려는것이
<CPU모듈에 있는 uart0,1>
RFID(Tx, 12v) -> (Rx, uart0)ATmega128(Tx, uart1) -> (Rx, USB-isp)PC
RFID의 Rx는 쓰지않을꺼라서 연결을 안했습니다(RFID가 읽기전용).
이렇게 하는것이 맞나요?
<세번째 질문>
RFID의 자체 전기가 어뎁터를 통해서 들어오구요(12V),
ATmega128도 어뎁터를 사용해서 자체전기 역시 12v로 들어오는데,
두부분(RFID에서나오는, USB-isp에서 나오는)의 VCC 케이블은 아무데도 연결할 필요가 없죠?
cpu모듈의 uart는 각각 3핀짜리들이라 어차피 vcc가 들어가는 곳이 없어서
연결을 안했거든요
이부분을 좀 설명해주세요.
회로도 보고 잘 찾아보면 할수있다고하는데 계속 봐도 이해가 안되서 질문드립니다.
졸작이라 시간이 많이 안남아서요.. 부탁드릴께요 시간이 걸려도 좋으니 자세한 부탁 바랍니다.
관리자 답변
안녕하세요
1. 연속적으로 데이터를 날리면 터미널과 연결시 오류가 발생할수도 있습니다.
중간 문장에 긴 딜레이를 넣어 터미널과 연결해 보시길 바랍니다.
2.RFID(Tx, 12v) -> (Rx, uart0)ATmega128(Tx, uart1) -> (Rx, USB-isp)PC
이렇게만 연결하여도 무방하나, ATmega128 uart1 rx 수신되는곳은 연결하셔야 합니다.
가끔 쓰레기값이 유입 될수도 있습니다. ATmega128 tx 관련 부분은 output이랑 연결안하셨도
무방합니다.
3.각각에 대해서 전원을 따로 인가 했다면 VCC는 연결할 필요가 없습니다.
GND(기준전위)만 연결하면 됩니다.
수고하세요
>-소스는 UART1번으로 문자들을 계속해서 날리는 예제소스를 사용했습니다.
>
><USB isp> <ATmega128의 cpu모듈보분의 uart1>
>------------------------------------------
>VCC -> X(연결안됨)
>TX -> UART1(RX)
>RX -> UART1(TX)
>GND -> UART(GND)
>------------------------------------------
>이상태 입니다.
>
><첫번째 질문>
>가장 큰 문제점인데요
>pc에서 com port 인식을 못합니다.
>ATmega128 과 연결되는 UART(GND)를 빼면, 인식을 합니다.<-"이게 정말 이상합니다."
>
>왜그런거죠?
>
><두번째 질문>
>제가 할려는것이
> <CPU모듈에 있는 uart0,1>
>RFID(Tx, 12v) -> (Rx, uart0)ATmega128(Tx, uart1) -> (Rx, USB-isp)PC
>
>RFID의 Rx는 쓰지않을꺼라서 연결을 안했습니다(RFID가 읽기전용).
>이렇게 하는것이 맞나요?
>
><세번째 질문>
>RFID의 자체 전기가 어뎁터를 통해서 들어오구요(12V),
>ATmega128도 어뎁터를 사용해서 자체전기 역시 12v로 들어오는데,
>
>두부분(RFID에서나오는, USB-isp에서 나오는)의 VCC 케이블은 아무데도 연결할 필요가 없죠?
>cpu모듈의 uart는 각각 3핀짜리들이라 어차피 vcc가 들어가는 곳이 없어서
>연결을 안했거든요
>이부분을 좀 설명해주세요.
>
>회로도 보고 잘 찾아보면 할수있다고하는데 계속 봐도 이해가 안되서 질문드립니다.
>
>졸작이라 시간이 많이 안남아서요.. 부탁드릴께요 시간이 걸려도 좋으니 자세한 부탁 바랍니다.
>
|
||||
| 5859 | 답변완료엔코더 장착된 2상 스텝핑 모터 접속 질문입니다. | 고찬원 | 2010-11-10 | 1,387 |
|
우선 자세한 답변 감사 드립니다.
두가지만 더 부탁 드립니다.
첫째로 2상 스텝핑 모터도 연결 가능한가요?
둘째로 발주 업체에서 엔코더를 달아 피드백을 받기를 원합니다. 방법이 있겠습니까?
즐거운 하루 보내세요. 감사 합니다.
>안녕하세요? 고객님,
>저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
>
>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 모터로라도 가능합니다.
>>
>>끝까지 읽어 주셔서 감사 합니다.
>>답변 달아 주시면 감사 하겠습니다.
>>그럼 수고 하세요.
>
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨의 MS2나 CS2P는 2상 스테핑 모터 드라이버입니다. 모두 바이폴라 타입입니다.
또한, SE-SM243과 SM9K도 2상 스테핑 모터구요. 모두 바이폴라 타입입니다.
따라서, 당연히 연결 됩니다.
피드백을 받으려면 양축으로 해서 한쪽에 엔코더를 달고, 진행을 해야 하는 데,
그런 경우, 여러가지 문제 발생할 수 있는 소지가 많아집니다.
물론, 그런식으로 별도로 제작된 모터를 사서 쓰면 되긴 하지만, 단가가 수십~백만원대에 이릅니다. 스테핑 모터 특성상 갑자기 매우 고속으로 간다거나, 토크가 부족한데, 돌리라고 한다거나 하는 경우를 제외하면, 항상 같은 각도씩 돌아가므로, 대부분의 경우 위치를 정확히 알 수 있습니다.
토크를 정확히 알고, 정해진 속도로 돌린다면, 굳이 스테핑 모터가 엔코더를 달아야할 이유가 없습니다. 가능하다면, 단가적인 측면에서 굳이 꼭 필요하지 않은 기능이라면, 빼는 쪽으로 설득하는 것이 좋겠습니다. 스테핑 모터는 각각 돌아갈 때 오차가 약간씩은 생길 수 있지만, 누적되지는 않습니다. 그러므로, 결국 매우 미세한 오차가 개별적으로 생길 수는 있지만, 누적되지는 않으므로, 스텝별로 다시 오차는 초기화 되게 되는 셈이 됩니다. 따라서, 굳이 엔코더는 안하셔도 되지 않을까 싶습니다.
굳이 필요하시다면, 본사에서 모터에 딱 맞는 엔코더 제작도 가능합니다.
프로젝트 성으로 작업이 되겠습니다.
감사합니다.
>우선 자세한 답변 감사 드립니다.
>
>두가지만 더 부탁 드립니다.
>
>첫째로 2상 스텝핑 모터도 연결 가능한가요?
>
>둘째로 발주 업체에서 엔코더를 달아 피드백을 받기를 원합니다. 방법이 있겠습니까?
>
>즐거운 하루 보내세요. 감사 합니다.
>
>
>>안녕하세요? 고객님,
>>저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
>>
>>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 모터로라도 가능합니다.
>>>
>>>끝까지 읽어 주셔서 감사 합니다.
>>>답변 달아 주시면 감사 하겠습니다.
>>>그럼 수고 하세요.
>>
>
>
|
||||
