로그인 | 회원가입 | 주문 조회
총 10,748개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
10223 답변완료스텝모터와 드라이버에 대하여 궁금한게있습니다 전운성 2019-05-22 1,934
졸업작품으로 메카넘휠+라인트레이서를 이용한 자동주차로봇을 만들고있습니다 스텝모터드라이버 : AM-MS2 스텝모터 : SE-SM9K 사용중에 있습니다 현재 차량의 중량이 15kg정도 되는데 저 부품들로 무게를 버틸수있을정도의 토크값이 나올까요??
관리자 답변 관리자 · 2019-05-22
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 현재 담당 기술자분이 외근으로 답변이 어려운 상황이라, 금일 5월 22일 내로 전달받아 답변 새로 달도록 하겠습니다. 이 점 양해해주시기 바랍니다. 감사합니다. > > > 졸업작품으로 메카넘휠+라인트레이서를 이용한 > > 자동주차로봇을 만들고있습니다 > > 스텝모터드라이버 : AM-MS2 > 스텝모터 : SE-SM9K > > 사용중에 있습니다 > > 현재 차량의 중량이 15kg정도 되는데 저 부품들로 > > 무게를 버틸수있을정도의 토크값이 나올까요?? >
10222 답변완료물건을 잘못 주문했습니다. 남관우 2019-05-21 1,847
안녕하세요. 스태핑 모터 구동모듈을 구입해야 합니다만, 구매자 실수로 DC 모터 구동모듈을 구입했네요. 스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만, 혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다. 주문번호는 1905190001이고, 카드결제하였습니다. 감사합니다.
관리자 답변 관리자 · 2019-05-22
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 오주문하신 AM-DC-2D 제품을 본사로 보내주시길 바라며 제품소개 > 확장보드 > 모터구동 > "스테핑 모터 구동모듈 (남관우님 전용) AM-SPECIAL" 제품에서 스테핑 모터 구동모듈인 AM-CS2P OR AM-MS2 중 고르신 후 홈페이지 추가주문을 해주시길 바랍니다. 추가구매 제품은 결제 확인 후 교환제품을 받고 보내드리겠습니다. 감사합니다. > > > 안녕하세요. > 스태핑 모터 구동모듈을 구입해야 합니다만, > 구매자 실수로 DC 모터 구동모듈을 구입했네요. > > 스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만, > 혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다. > > 주문번호는 1905190001이고, 카드결제하였습니다. > 감사합니다. >
10221 답변완료다시한번 질문드리겠습니다. 전운성 2019-05-21 1,907
바쁘신데 죄송합니다. 말씀하신것처럼 프로그램을 변경하였습니다. 전체 프로그램 #include <avr/io.h> #include <avr/interrupt.h> #define MOTOR_PORTA PORTA #define MOTOR_PORTA_DDR DDRA #define MOTOR_PORTB PORTB #define MOTOR_PORTB_DDR DDRB void port_init(void) { PORTA = 0x00; DDRA = 0xff; PORTB = 0x00; DDRB = 0xff; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up cli(); //disable all interrupts XMCRA = 0x00; //external memory XMCRB = 0x00; //external memory port_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 } /* Stepping Motor derive---------------------------*/ unsigned char LEFTmotorOneClock(unsigned char step, char dir) { step = step & 0x0f; if(dir){ switch(step){ case 0x09: step=0x01; break; case 0x01: step=0x03; break; case 0x03: step=0x02; break; case 0x02: step=0x06; break; case 0x06: step=0x04; break; case 0x04: step=0x0c; break; case 0x0c: step=0x08; break; case 0x08: step=0x09; break; default: step=0x0c; break; } }else{ switch(step){ case 0x09: step=0x01; break; case 0x01: step=0x03; break; case 0x03: step=0x02; break; case 0x02: step=0x06; break; case 0x06: step=0x04; break; case 0x04: step=0x0c; break; case 0x0c: step=0x08; break; case 0x08: step=0x09; break; default: step=0x0c; break; } } return step; } /* Stepping Motor derive---------------------------*/ unsigned char RIGHTmotorOneClock(unsigned char step, char dir) { step = step & 0xf0; if(dir){ switch(step){ case 0x90: step=0x10; break; case 0x10: step=0x30; break; case 0x30: step=0x20; break; case 0x20: step=0x60; break; case 0x60: step=0x40; break; case 0x40: step=0xc0; break; case 0xc0: step=0x80; break; case 0x80: step=0x90; break; default: step=0xc0; break; } }else{ switch(step){ case 0x90: step=0x10; break; case 0x10: step=0x30; break; case 0x30: step=0x20; break; case 0x20: step=0x60; break; case 0x60: step=0x40; break; case 0x40: step=0xc0; break; case 0xc0: step=0x80; break; case 0x80: step=0x90; break; default: step=0xc0; break; } } return step; } void delay(int n) { volatile int i,j; for(i=1;i<n;i++) { for(j=1;j<100;j++); } } int main(void) { volatile unsigned char stepleft_A = 50, stepright_A = 50, stepleft_B = 50, stepright_B = 50; init_devices(); MOTOR_PORTA_DDR = 0xff; MOTOR_PORTB_DDR = 0xff; while(1){ stepleft_A = LEFTmotorOneClock(stepleft_A, 1); stepright_A = RIGHTmotorOneClock(stepright_A, 1); stepleft_B = LEFTmotorOneClock(stepleft_B, 1); stepright_B = RIGHTmotorOneClock(stepright_B, 1); delay(3); MOTOR_PORTA = stepleft_A|stepright_A; MOTOR_PORTB = stepleft_B|stepright_B; } } ======================================================= 여기서 volatile unsigned char stepleft_A = 50, stepright_A = 50, stepleft_B = 50, stepright_B = 50; init_devices(); MOTOR_PORTA_DDR = 0xff; MOTOR_PORTB_DDR = 0xff; while(1){ stepleft_A = LEFTmotorOneClock(stepleft_A, 1); stepright_A = RIGHTmotorOneClock(stepright_A, 1); stepleft_B = LEFTmotorOneClock(stepleft_B, 1); stepright_B = RIGHTmotorOneClock(stepright_B, 1); delay(3); MOTOR_PORTA = stepleft_A|stepright_A; MOTOR_PORTB = stepleft_B|stepright_B; } } 이 부분만 임의로 제가 수정을 하였지만 모터의 회전 방향이 변화가 없었습니다. 코딩이 잘못되었나요??
관리자 답변 관리자 · 2019-05-21
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 동그라미로 표기한 부분의 매개변수를 전부 똑같이 넘겨주기 때문에 그런 겁니다. 고객님이 원하시는대로 방향을 선택하시고 넘겨주셔야 따로 돌겠죠. 아래와 같이 매개변수를 약간씩 변경해서 돌려보시면 감이 오실겁니다. > volatile unsigned char stepleft_A = 30, stepright_A = 50, > stepleft_B = 30, stepright_B = 50; > stepleft_A = LEFTmotorOneClock(stepleft_A, 0); > stepright_A = RIGHTmotorOneClock(stepright_A, 1); > stepleft_B = LEFTmotorOneClock(stepleft_B, 0); > stepright_B = RIGHTmotorOneClock(stepright_B, 1); 감사합니다. > > > 바쁘신데 죄송합니다. > > 말씀하신것처럼 프로그램을 변경하였습니다. > > > 전체 프로그램 > > #include <avr/io.h> > #include <avr/interrupt.h> > > #define MOTOR_PORTA PORTA > #define MOTOR_PORTA_DDR DDRA > #define MOTOR_PORTB PORTB > #define MOTOR_PORTB_DDR DDRB > > > void port_init(void) > { > PORTA = 0x00; > DDRA = 0xff; > PORTB = 0x00; > DDRB = 0xff; > > } > > //call this routine to initialize all peripherals > void init_devices(void) > { > //stop errant interrupts until set up > cli(); //disable all interrupts > XMCRA = 0x00; //external memory > XMCRB = 0x00; //external memory > port_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 > } > > /* Stepping Motor derive---------------------------*/ > unsigned char LEFTmotorOneClock(unsigned char step, char dir) > { > step = step & 0x0f; > if(dir){ > switch(step){ > case 0x09: step=0x01; break; > case 0x01: step=0x03; break; > case 0x03: step=0x02; break; > case 0x02: step=0x06; break; > case 0x06: step=0x04; break; > case 0x04: step=0x0c; break; > case 0x0c: step=0x08; break; > case 0x08: step=0x09; break; > default: step=0x0c; break; > } > }else{ > switch(step){ > case 0x09: step=0x01; break; > case 0x01: step=0x03; break; > case 0x03: step=0x02; break; > case 0x02: step=0x06; break; > case 0x06: step=0x04; break; > case 0x04: step=0x0c; break; > case 0x0c: step=0x08; break; > case 0x08: step=0x09; break; > default: step=0x0c; break; > } > } > return step; > > } > > /* Stepping Motor derive---------------------------*/ > unsigned char RIGHTmotorOneClock(unsigned char step, char dir) > { > step = step & 0xf0; > if(dir){ > switch(step){ > case 0x90: step=0x10; break; > case 0x10: step=0x30; break; > case 0x30: step=0x20; break; > case 0x20: step=0x60; break; > case 0x60: step=0x40; break; > case 0x40: step=0xc0; break; > case 0xc0: step=0x80; break; > case 0x80: step=0x90; break; > default: step=0xc0; break; > } > }else{ > switch(step){ > case 0x90: step=0x10; break; > case 0x10: step=0x30; break; > case 0x30: step=0x20; break; > case 0x20: step=0x60; break; > case 0x60: step=0x40; break; > case 0x40: step=0xc0; break; > case 0xc0: step=0x80; break; > case 0x80: step=0x90; break; > default: step=0xc0; break; > } > } > return step; > } > > > void delay(int n) > { > volatile int i,j; > for(i=1;i<n;i++) > { > for(j=1;j<100;j++); > } > } > > int main(void) > { > volatile unsigned char stepleft_A = 50, stepright_A = 50, > stepleft_B = 50, stepright_B = 50; > > init_devices(); > > MOTOR_PORTA_DDR = 0xff; > MOTOR_PORTB_DDR = 0xff; > > while(1){ > > stepleft_A = LEFTmotorOneClock(stepleft_A, 1); > stepright_A = RIGHTmotorOneClock(stepright_A, 1); > > stepleft_B = LEFTmotorOneClock(stepleft_B, 1); > stepright_B = RIGHTmotorOneClock(stepright_B, 1); > > delay(3); > > MOTOR_PORTA = stepleft_A|stepright_A; > MOTOR_PORTB = stepleft_B|stepright_B; > } > } > > > > > ======================================================= > > 여기서 > > volatile unsigned char stepleft_A = 50, stepright_A = 50, > stepleft_B = 50, stepright_B = 50; > > init_devices(); > > MOTOR_PORTA_DDR = 0xff; > MOTOR_PORTB_DDR = 0xff; > > while(1){ > > stepleft_A = LEFTmotorOneClock(stepleft_A, 1); > stepright_A = RIGHTmotorOneClock(stepright_A, 1); > > stepleft_B = LEFTmotorOneClock(stepleft_B, 1); > stepright_B = RIGHTmotorOneClock(stepright_B, 1); > > delay(3); > > MOTOR_PORTA = stepleft_A|stepright_A; > MOTOR_PORTB = stepleft_B|stepright_B; > } > } > > 이 부분만 임의로 제가 수정을 하였지만 모터의 회전 방향이 변화가 없었습니다. > > 코딩이 잘못되었나요?? >
10220 답변완료다시 한번 프로그램에 대하여 질문드립니다. 전운성 2019-05-20 1,949
답변해주셔서 감사합니다. 앞서 말씀해주신 부분을 수정하여 4개의 스텝모터의 동작을 완료하였습니다. 죄송하지만 프로그램에 대한 지식이 짧아 다시 한번 질문드립니다. 현재 모터 각각의 방향제어를 진행 중에 있습니다.(메카넘휠 사용하기 위하여) 프로그램상에서 모터의 방향을 바꿔주려면 어디를 건드려야될까요?? #include <avr/io.h> #include <avr/interrupt.h> #define MOTOR_PORTA PORTA #define MOTOR_PORTA_DDR DDRA #define MOTOR_PORTB PORTB #define MOTOR_PORTB_DDR DDRB void port_init(void) { PORTA = 0x00; DDRA = 0xff; PORTB = 0x00; DDRB = 0xff; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up cli(); //disable all interrupts XMCRA = 0x00; //external memory XMCRB = 0x00; //external memory port_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 } /* Stepping Motor derive---------------------------*/ unsigned char LEFTmotorOneClock(unsigned char step, char dir) { step = step & 0x0f; if(dir){ switch(step){ case 0x09: step=0x01; break; case 0x01: step=0x03; break; case 0x03: step=0x02; break; case 0x02: step=0x06; break; case 0x06: step=0x04; break; case 0x04: step=0x0c; break; case 0x0c: step=0x08; break; case 0x08: step=0x09; break; default: step=0x0c; break; } }else{ switch(step){ case 0x09: step=0x08; break; case 0x01: step=0x09; break; case 0x03: step=0x01; break; case 0x02: step=0x03; break; case 0x06: step=0x02; break; case 0x04: step=0x06; break; case 0x0c: step=0x04; break; case 0x08: step=0x0c; break; default: step=0x0c; break; } } return step; } /* Stepping Motor derive---------------------------*/ unsigned char RIGHTmotorOneClock(unsigned char step, char dir) { step = step & 0xf0; if(dir){ switch(step){ case 0x90: step=0x10; break; case 0x10: step=0x30; break; case 0x30: step=0x20; break; case 0x20: step=0x60; break; case 0x60: step=0x40; break; case 0x40: step=0xc0; break; case 0xc0: step=0x80; break; case 0x80: step=0x90; break; default: step=0xc0; break; } }else{ switch(step){ case 0x90: step=0x80; break; case 0x10: step=0x90; break; case 0x30: step=0x10; break; case 0x20: step=0x30; break; case 0x60: step=0x20; break; case 0x40: step=0x60; break; case 0xc0: step=0x40; break; case 0x80: step=0xc0; break; default: step=0xc0; break; } } return step; } void delay(int n) { volatile int i,j; for(i=1;i<n;i++) { for(j=1;j<100;j++); } } int main(void) { volatile unsigned char stepleft=200, stepright=200; init_devices(); MOTOR_PORTA_DDR = 0xff; MOTOR_PORTB_DDR = 0xff; while(1){ stepright = RIGHTmotorOneClock(stepright, 200); stepleft = LEFTmotorOneClock(stepleft, 200); delay(3); MOTOR_PORTA = stepleft|stepright; MOTOR_PORTB = stepleft|stepright; } return 0; }
관리자 답변 관리자 · 2019-05-21
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 소스 하단부분의 이 부분을 수정해 주시면 됩니다. MOTOR_PORTA = stepleft|stepright; MOTOR_PORTB = stepleft|stepright; MS2의 좌측 모터가 움직일 방향을 stepleft, MS2의 우측 모터가 움직일 방향을 stepright라는 변수로 저장하는 것이기 때문에 해당 부분을 stepright_A, stepleft_A, stepright_B, stepleft_B 등으로 추가하여 돌려주면 되겠죠. 그리고 추가로, stepleft = LEFTmotorOneClock(stepleft, 200); LEFTmotorOneClock함수의 인자를 이렇게 넘겨주셨는데, 함수내의 첫번째 인자는 스테핑 모터의 스텝수 이고, 두번째 인자는 0과 1로 모터의 회전방향을 시계방향이나 반시계방향으로 정해주는 것입니다. 도움이 되셨으면 좋겠습니다. 감사합니다. > > > 답변해주셔서 감사합니다. > > 앞서 말씀해주신 부분을 수정하여 4개의 스텝모터의 동작을 완료하였습니다. > > 죄송하지만 프로그램에 대한 지식이 짧아 다시 한번 질문드립니다. > > 현재 모터 각각의 방향제어를 진행 중에 있습니다.(메카넘휠 사용하기 위하여) > > 프로그램상에서 모터의 방향을 바꿔주려면 어디를 건드려야될까요?? > > #include <avr/io.h> > #include <avr/interrupt.h> > > #define MOTOR_PORTA PORTA > #define MOTOR_PORTA_DDR DDRA > #define MOTOR_PORTB PORTB > #define MOTOR_PORTB_DDR DDRB > > void port_init(void) > { > PORTA = 0x00; > DDRA = 0xff; > PORTB = 0x00; > DDRB = 0xff; > > } > > //call this routine to initialize all peripherals > void init_devices(void) > { > //stop errant interrupts until set up > cli(); //disable all interrupts > XMCRA = 0x00; //external memory > XMCRB = 0x00; //external memory > port_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 > } > > /* Stepping Motor derive---------------------------*/ > unsigned char LEFTmotorOneClock(unsigned char step, char dir) > { > step = step & 0x0f; > if(dir){ > switch(step){ > case 0x09: step=0x01; break; > case 0x01: step=0x03; break; > case 0x03: step=0x02; break; > case 0x02: step=0x06; break; > case 0x06: step=0x04; break; > case 0x04: step=0x0c; break; > case 0x0c: step=0x08; break; > case 0x08: step=0x09; break; > default: step=0x0c; break; > } > }else{ > switch(step){ > case 0x09: step=0x08; break; > case 0x01: step=0x09; break; > case 0x03: step=0x01; break; > case 0x02: step=0x03; break; > case 0x06: step=0x02; break; > case 0x04: step=0x06; break; > case 0x0c: step=0x04; break; > case 0x08: step=0x0c; break; > default: step=0x0c; break; > } > } > return step; > > } > > /* Stepping Motor derive---------------------------*/ > unsigned char RIGHTmotorOneClock(unsigned char step, char dir) > { > step = step & 0xf0; > if(dir){ > switch(step){ > case 0x90: step=0x10; break; > case 0x10: step=0x30; break; > case 0x30: step=0x20; break; > case 0x20: step=0x60; break; > case 0x60: step=0x40; break; > case 0x40: step=0xc0; break; > case 0xc0: step=0x80; break; > case 0x80: step=0x90; break; > default: step=0xc0; break; > } > }else{ > switch(step){ > case 0x90: step=0x80; break; > case 0x10: step=0x90; break; > case 0x30: step=0x10; break; > case 0x20: step=0x30; break; > case 0x60: step=0x20; break; > case 0x40: step=0x60; break; > case 0xc0: step=0x40; break; > case 0x80: step=0xc0; break; > default: step=0xc0; break; > } > } > return step; > } > > > void delay(int n) > { > volatile int i,j; > for(i=1;i<n;i++) > { > for(j=1;j<100;j++); > } > } > > int main(void) > { > volatile unsigned char stepleft=200, stepright=200; > > init_devices(); > > MOTOR_PORTA_DDR = 0xff; > MOTOR_PORTB_DDR = 0xff; > while(1){ > > stepright = RIGHTmotorOneClock(stepright, 200); > stepleft = LEFTmotorOneClock(stepleft, 200); > delay(3); > MOTOR_PORTA = stepleft|stepright; > MOTOR_PORTB = stepleft|stepright; > } > return 0; > } >
10219 답변완료안녕하세요 스테핑모터 코딩관련하여 질문드립니다. 전운성 2019-05-17 1,920
- 스텝모터 : SE-SM9K - 스텝모터드라이버 : AM-MS2 - mcu : ATmega128a-AU - 사용 프로그램 : ATMEL STUDIO 7 현재 뉴티씨에서 얻은 코딩값으로 스텝모터 2개 까지는 테스트 성공했습니다. 혹시 4개의 스텝모터를 돌릴려면 코딩 값 어느 부분을 수정해야될까요? #include <avr/io.h> #include <avr/interrupt.h> #define MOTOR_PORT PORTA #define MOTOR_PORT_DDR DDRA #define MOTOR_PORT PORTB #define MOTOR_PORT_DDR DDRB void port_init(void) { PORTA = 0xff; DDRA = 0xff; PORTB = 0xff; DDRB = 0xff; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up cli(); //disable all interrupts XMCRA = 0x00; //external memory XMCRB = 0x00; //external memory port_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 } /* Stepping Motor derive---------------------------*/ unsigned char LEFTmotorOneClock(unsigned char step, char dir) { step = step & 0x0f; if(dir){ switch(step){ case 0x09: step=0x01; break; case 0x01: step=0x03; break; case 0x03: step=0x02; break; case 0x02: step=0x06; break; case 0x06: step=0x04; break; case 0x04: step=0x0c; break; case 0x0c: step=0x08; break; case 0x08: step=0x09; break; default: step=0x0c; break; } }else{ switch(step){ case 0x09: step=0x08; break; case 0x01: step=0x09; break; case 0x03: step=0x01; break; case 0x02: step=0x03; break; case 0x06: step=0x02; break; case 0x04: step=0x06; break; case 0x0c: step=0x04; break; case 0x08: step=0x0c; break; default: step=0x0c; break; } } return step; } /* Stepping Motor derive---------------------------*/ unsigned char RIGHTmotorOneClock(unsigned char step, char dir) { step = step & 0xf0; if(dir){ switch(step){ case 0x90: step=0x10; break; case 0x10: step=0x30; break; case 0x30: step=0x20; break; case 0x20: step=0x60; break; case 0x60: step=0x40; break; case 0x40: step=0xc0; break; case 0xc0: step=0x80; break; case 0x80: step=0x90; break; default: step=0xc0; break; } }else{ switch(step){ case 0x90: step=0x80; break; case 0x10: step=0x90; break; case 0x30: step=0x10; break; case 0x20: step=0x30; break; case 0x60: step=0x20; break; case 0x40: step=0x60; break; case 0xc0: step=0x40; break; case 0x80: step=0xc0; break; default: step=0xc0; break; } } return step; } void delay(int n) { volatile int i,j; for(i=1;i<n;i++) { for(j=1;j<100;j++); } } int main(void) { volatile unsigned char stepleft=0, stepright=0; init_devices(); MOTOR_PORT_DDR = 0xff; while(1){ stepright = RIGHTmotorOneClock(stepright, 50); stepleft = LEFTmotorOneClock(stepleft, 50); delay(3); MOTOR_PORT = stepleft|stepright; } return 0; }
관리자 답변 관리자 · 2019-05-17
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. AM-MS2 모터드라이버를 두개 사용하셔서 모터와 ATmega보드와 연결하신 다음 소스상에서 MOTOR_PORT부분을 새로 추가하셔서 사용하시면 됩니다. 소스 상단부분에 MOTOR_PORT Define된 부분이 있는데, 같은 이름으로 포트만 다르게 선언이 되어있네요. 중복선언이라 아래쪽에 있는 PORTB만 작동할겁니다. 이름을 다르게 선언해주셔서 해당 포트에 모터 드라이버를 연결하신 후 사용하시면 될 것 같습니다. #define MOTOR_PORTA PORTA #define MOTOR_PORTA_DDR DDRA #define MOTOR_PORTC PORTC #define MOTOR_PORTC_DDR DDRC 감사합니다. > > > - 스텝모터 : SE-SM9K > - 스텝모터드라이버 : AM-MS2 > - mcu : ATmega128a-AU > - 사용 프로그램 : ATMEL STUDIO 7 > > 현재 뉴티씨에서 얻은 코딩값으로 스텝모터 2개 까지는 테스트 성공했습니다. > > 혹시 4개의 스텝모터를 돌릴려면 코딩 값 어느 부분을 수정해야될까요? > > #include <avr/io.h> > #include <avr/interrupt.h> > > #define MOTOR_PORT PORTA > #define MOTOR_PORT_DDR DDRA > #define MOTOR_PORT PORTB > #define MOTOR_PORT_DDR DDRB > > void port_init(void) > { > PORTA = 0xff; > DDRA = 0xff; > PORTB = 0xff; > DDRB = 0xff; > } > > //call this routine to initialize all peripherals > void init_devices(void) > { > //stop errant interrupts until set up > cli(); //disable all interrupts > XMCRA = 0x00; //external memory > XMCRB = 0x00; //external memory > > port_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 > } > > /* Stepping Motor derive---------------------------*/ > unsigned char LEFTmotorOneClock(unsigned char step, char dir) > { > step = step & 0x0f; > if(dir){ > switch(step){ > case 0x09: step=0x01; break; > case 0x01: step=0x03; break; > case 0x03: step=0x02; break; > case 0x02: step=0x06; break; > case 0x06: step=0x04; break; > case 0x04: step=0x0c; break; > case 0x0c: step=0x08; break; > case 0x08: step=0x09; break; > default: step=0x0c; break; > } > }else{ > switch(step){ > case 0x09: step=0x08; break; > case 0x01: step=0x09; break; > case 0x03: step=0x01; break; > case 0x02: step=0x03; break; > case 0x06: step=0x02; break; > case 0x04: step=0x06; break; > case 0x0c: step=0x04; break; > case 0x08: step=0x0c; break; > default: step=0x0c; break; > } > } > return step; > > } > > /* Stepping Motor derive---------------------------*/ > unsigned char RIGHTmotorOneClock(unsigned char step, char dir) > { > step = step & 0xf0; > if(dir){ > switch(step){ > case 0x90: step=0x10; break; > case 0x10: step=0x30; break; > case 0x30: step=0x20; break; > case 0x20: step=0x60; break; > case 0x60: step=0x40; break; > case 0x40: step=0xc0; break; > case 0xc0: step=0x80; break; > case 0x80: step=0x90; break; > default: step=0xc0; break; > } > }else{ > switch(step){ > case 0x90: step=0x80; break; > case 0x10: step=0x90; break; > case 0x30: step=0x10; break; > case 0x20: step=0x30; break; > case 0x60: step=0x20; break; > case 0x40: step=0x60; break; > case 0xc0: step=0x40; break; > case 0x80: step=0xc0; break; > default: step=0xc0; break; > } > } > return step; > } > > void delay(int n) > { > volatile int i,j; > for(i=1;i<n;i++) > { > for(j=1;j<100;j++); > } > } > > int main(void) > { > volatile unsigned char stepleft=0, stepright=0; > > init_devices(); > > MOTOR_PORT_DDR = 0xff; > while(1){ > > stepright = RIGHTmotorOneClock(stepright, 50); > stepleft = LEFTmotorOneClock(stepleft, 50); > delay(3); > MOTOR_PORT = stepleft|stepright; > } > return 0; > } >
10218 답변완료Atmega128 모듈로 DC모터 제어 질문 드리려고 합니다. 남관우 2019-05-17 1,810
안녕하세요! 5V짜리 정도되는 학습용도 DC모터를 제어하려고 합니다. PWM 방식을 사용하려고 하는데, DC모터는 별도의 드라이버모듈이 있어야 한다고 배운 적 있어서요. 혹시 뉴티씨에서 그런 관련된 모듈을 판매하고 있는지. 그게 아니라면 어떤 걸 쓰면 좋을지 조언을 좀 구하고자 합니다. 감사합니다!
관리자 답변 관리자 · 2019-05-17
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 본사에서 판매중인 DC모터 드라이버는 AM-DC2-2D제품과 AM-DC1-3D 제품을 판매하고 있습니다. DC2-2D는 범용적인 모터구동 드라이버고, http://newtc.co.kr/dpshop/shop/item.php?it_id=1314666721 DC1-3D는 더 높은전류/전압을 사용하실 때 사용하는 드라이버입니다. http://newtc.co.kr/dpshop/shop/item.php?it_id=1314666728 DC2-2D는 듀얼채널이라 두개의 모터를 돌릴 수 있지만, DC1-3D는 싱글채널이라 모듈당 한개의 모터만 돌릴 수 있는 점 참조해주시기바랍니다. 둘다 pwm이 지원됩니다. 감사합니다. > > > 안녕하세요! > > 5V짜리 정도되는 학습용도 DC모터를 제어하려고 합니다. > PWM 방식을 사용하려고 하는데, > DC모터는 별도의 드라이버모듈이 있어야 한다고 배운 적 있어서요. > 혹시 뉴티씨에서 그런 관련된 모듈을 판매하고 있는지. > 그게 아니라면 어떤 걸 쓰면 좋을지 조언을 좀 구하고자 합니다. > > 감사합니다! >
10217 답변완료아두이노 우노 ADC 관련 정해택 2019-05-16 1,803
우선 항상 친절한 답변 감사드립니다. adc 채널에 아무것도 연결하지 않은 상태에서 adc값을 출력했을 때 아무런 값도 안나와야 맞는거 같은데 200정도되는 adc값이 출력이 됩니다. 새 제품을 사용해도 똑같은 현상이 발생합니다. 혹시 어떤 문제인지 알 수 있을까요?
관리자 답변 관리자 · 2019-05-16
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여주셔서 감사합니다. 고객님이 보신 현상은 정상적인게 맞습니다. 해당 현상은 ADC채널 핀에 아무것도 연결되지 않아 플로팅 상태가 되어 전압이 마구 변하는 것입니다. 만약 계속 0이 출력되기를 원하시면 풀다운저항을 통해 GND와 연결해주시는게 좋습니다. 감사합니다. > > > 우선 항상 친절한 답변 감사드립니다. > adc 채널에 아무것도 연결하지 않은 상태에서 adc값을 출력했을 때 아무런 값도 안나와야 맞는거 같은데 200정도되는 adc값이 출력이 됩니다. > 새 제품을 사용해도 똑같은 현상이 발생합니다. > 혹시 어떤 문제인지 알 수 있을까요? >
10216 답변완료ATMEL Studio 7코딩 정해택 2019-05-15 1,800
안녕하세요. 아까의 답변은 정말 감사드립니다. 한가지 더 여쭤보고 싶은 점이 있는데 아트멜 스튜디오 내에서 (x,y) 좌표점을 3개 이상을 알고 있을시 linear fitting한 식을 구하는 것이 가능한지 알고 싶습니다. 가능하다면 그 방법도 알려주시면 감사드리겠습니다. 친절한 답변 감사드립니다.
관리자 답변 관리자 · 2019-05-16
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 고객님이 질문주신 내용은 난이도가 꽤 있어 답변이 불가할 것 같습니다. 저희도 시간을 써야되는 사항이라 개발 영역으로 들어가서, 비용이 발생될 수 있습니다. 이 점 양해해 주시기 바랍니다. 감사합니다. > > > 안녕하세요. 아까의 답변은 정말 감사드립니다. > 한가지 더 여쭤보고 싶은 점이 있는데 아트멜 스튜디오 내에서 (x,y) 좌표점을 3개 이상을 알고 있을시 linear fitting한 식을 구하는 것이 가능한지 알고 싶습니다. 가능하다면 그 방법도 알려주시면 감사드리겠습니다. > 친절한 답변 감사드립니다. >
10215 답변완료ATMEL Studio 7 함수 정해택 2019-05-15 1,829
안녕하세요. atmel studio 7을 사용하고 있는데 여기서 자연로그 즉 ln(x)를 사용할 수 있는 지 알고 싶습니다. 혹시 사용할 수 있다면 어떤 함수를 써서 어떤 식으로 사용할 수 있는지도 알고 싶습니다. 항상 친절한 답변 감사드립니다.
관리자 답변 관리자 · 2019-05-15
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 라이브러리 중 math.h를 포함시켜주시면 수학함수들을 사용하실 수 있습니다. 소스코드 상단부에 #include <math.h>구문을 추가하셔서 라이브러리를 Add해주신 후 자연로그는 log(double x) 함수를 사용해주시고, 상용로그는 log10(double x) 함수를 사용해주시면 됩니다. 만약 log(10)을 실행하면, 2.30258509299405가 반환됩니다. 감사합니다. > > > 안녕하세요. > atmel studio 7을 사용하고 있는데 여기서 자연로그 즉 ln(x)를 사용할 수 있는 지 알고 싶습니다. > 혹시 사용할 수 있다면 어떤 함수를 써서 어떤 식으로 사용할 수 있는지도 알고 싶습니다. > 항상 친절한 답변 감사드립니다. >
10214 답변완료모터 스피드 제어하기 김상용 2019-05-01 1,870
안녕하세요. 스위치 입력하여 정역 모터 제어하는 프로그램을 겨우 완성했읍니다. 그동안 도움이 많이 됐읍니다. 아래 소스입니다. 스위치 키이 확인하고 PWM ON DIR ON/OFF 하는 동작입니다. 다음은 키이 입력 후 PWM을 제어해서 스피드를 제어하고 싶습니다. VR 입력에 PWM 제어하는 소스는 있는데 직접 PWM을 제어하고 싶읍니다. 그런 예제가 있는지요.. 그리고 문의 드릴 아래 스피드 제어의 해석을 좀 부탁드려요... DIR1 CW, CCW를 사용해야 되고요 void Speed_Control(void){ input = (SW_PORT&0x20)>>2; // 이부분이 무슨뜻인지 도통 알수 없네요...0x20 이면 PORTG PORT5 맞죠? 2보다 크다는 >>2 이게 왜 들어가야 되나요? if(input == 0x01){ // PORTG의 첫번째 스위치 인가요? temp++; //DIR2_CW; 탬프 증가가 어떻게 DIR CW가 되는지요? } if(input == 0x02){ temp--; //DIR2_CCW; } } ========키이 입력하고 정역 모터 제어 =============== #include <avr/io.h> #include <avr/interrupt.h> unsigned char pind6, pind5, pind4; //#define SW_PORT PING //#define SW_PORT_DDR DDRG #define MOTOR_PORT PORTC #define PWM1_ON (MOTOR_PORT|=0x01) #define PWM1_OFF (MOTOR_PORT&=0xFE) #define DIR1_ON (MOTOR_PORT|=0x02) #define DIR1_OFF (MOTOR_PORT&=0xFD) #define ENABLE1_OFF (MOTOR_PORT|=0x04) #define ENABLE1_ON (MOTOR_PORT&=0xFB) #define BREAK1_ON (MOTOR_PORT|=0x08) #define BREAK1_OFF (MOTOR_PORT&=0xF7) void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0xff; PORTD = 0xff; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x00; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up cli(); //disable all interrupts XMCRA = 0x00; //external memory XMCRB = 0x00; //external memory port_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 } void delay(int delaytime){ int i,j; for(i=0;i<1000;i++){ for(j=0;j<delaytime;j++){ } } } int main(void) { init_devices(); while(1){ pind5=PIND&0x20; pind4=PIND&0x10; if(pind5 == 0) { PWM1_ON; DIR1_ON; delay(100); } else if(pind4 == 0) { PWM1_ON; DIR1_OFF; delay(100); } else { PWM1_OFF; } } return 0; }
관리자 답변 관리자 · 2019-05-02
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 우선 요청하신 소스를 첨부해드립니다. 이 소스는 타이머를 이용하여 직접 포트핀을 제어하며 사각파를 구현하고, 듀티비를 조정하여 결론적으로 PWM으로 제어하는 소스입니다. 잘 사용하시기 바라며, 소스 관련하여 답변드리겠습니다. Q : > input = (SW_PORT&0x20)>>2; // 이부분이 무슨뜻인지 도통 알수 없네요...0x20 이면 PORTG PORT5 맞죠? 2보다 크다는 >>2 이게 왜 들어가야 되나요? A : 풀어서 해석해 드리자면, '&'는 논리연산 AND의 기호이며, 0x20(0b00100000)을 AND연산 합니다. 즉, SW_PORT의 5번핀의 데이터만 사용하겠다는 뜻이고, 다음으로 >>2 는 오른쪽으로 두번 쉬프트하겠다는 뜻으로 0x20(0b00100000)을 0x08(0b00001000)으로 만드는 역할을 합니다. 쉬프트 연산자 '>>'와, 비교연산자 '>' 를 헷갈리지 않으셨으면 좋겠습니다. Q : > if(input == 0x01){ // PORTG의 첫번째 스위치 인가요? A : 이 조건문은 위쪽의 연산결과를 사용하는 것으로, 값이 1일 때 만족하는 조건문입니다. Q : > temp++; //DIR2_CW; 탬프 증가가 어떻게 DIR CW가 되는지요? A : 어떤 소스를 사용하셨는지는 모르겠지만, 주석을 지우셔야 할 것 같습니다. 감사합니다. > > > 안녕하세요. > 스위치 입력하여 정역 모터 제어하는 프로그램을 겨우 완성했읍니다. > 그동안 도움이 많이 됐읍니다. 아래 소스입니다. > 스위치 키이 확인하고 PWM ON DIR ON/OFF 하는 동작입니다. > 다음은 키이 입력 후 PWM을 제어해서 스피드를 제어하고 싶습니다. > VR 입력에 PWM 제어하는 소스는 있는데 직접 PWM을 제어하고 싶읍니다. > 그런 예제가 있는지요.. > 그리고 문의 드릴 아래 스피드 제어의 해석을 좀 부탁드려요... > DIR1 CW, CCW를 사용해야 되고요 > void Speed_Control(void){ > input = (SW_PORT&0x20)>>2; // 이부분이 무슨뜻인지 도통 알수 없네요...0x20 이면 PORTG PORT5 맞죠? 2보다 크다는 >>2 이게 왜 들어가야 되나요? > if(input == 0x01){ // PORTG의 첫번째 스위치 인가요? > temp++; //DIR2_CW; 탬프 증가가 어떻게 DIR CW가 되는지요? > } > if(input == 0x02){ > temp--; //DIR2_CCW; > } > } > > ========키이 입력하고 정역 모터 제어 =============== > #include <avr/io.h> > #include <avr/interrupt.h> > unsigned char pind6, pind5, pind4; > > //#define SW_PORT PING > //#define SW_PORT_DDR DDRG > > #define MOTOR_PORT PORTC > #define PWM1_ON (MOTOR_PORT|=0x01) > #define PWM1_OFF (MOTOR_PORT&=0xFE) > #define DIR1_ON (MOTOR_PORT|=0x02) > #define DIR1_OFF (MOTOR_PORT&=0xFD) > #define ENABLE1_OFF (MOTOR_PORT|=0x04) > #define ENABLE1_ON (MOTOR_PORT&=0xFB) > #define BREAK1_ON (MOTOR_PORT|=0x08) > #define BREAK1_OFF (MOTOR_PORT&=0xF7) > > > > > void port_init(void) > { > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; //m103 output only > DDRC = 0xff; > PORTD = 0xff; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0x00; > PORTG = 0x00; > DDRG = 0x00; > } > > //call this routine to initialize all peripherals > void init_devices(void) > { > //stop errant interrupts until set up > cli(); //disable all interrupts > XMCRA = 0x00; //external memory > XMCRB = 0x00; //external memory > port_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 > } > > void delay(int delaytime){ > int i,j; > for(i=0;i<1000;i++){ > for(j=0;j<delaytime;j++){ > } > } > } > > int main(void) > { > init_devices(); > > > > while(1){ > > pind5=PIND&0x20; > pind4=PIND&0x10; > > > > if(pind5 == 0) > { > > PWM1_ON; > DIR1_ON; > delay(100); > } > > else if(pind4 == 0) > { > > PWM1_ON; > DIR1_OFF; > delay(100); > > } > > else > { > PWM1_OFF; > } > > } > return 0; > > > } >
10213 답변완료ATMEL Studio 7에서 실수형(Float) 출력하기 정해택 2019-04-30 1,839
실수형을 출력할 때libprintf를 추가하라고 하셨는데 그것을 추가하는 NOUL창을 어디서 열어야되는지 모르겠습니다, 알려주시면 감사하겠습니다.
관리자 답변 관리자 · 2019-05-02
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 질문하신 내용이 아래 링크에 관한 내용이 맞는지는 모르겠습니다만, http://newtc.co.kr/dpshop/bbs/board.php?bo_table=m32&wr_id=141 해당 게시글은 2016년 6월에 작성된 글로, 현재버전과 다를 수 있습니다. ATMEL Studio 7.0.1931버전에서는 창의 이름이 NOUL이 아니고, 프로젝트이름으로 됩니다. 해당 창의 진입하는 방법은, 프로젝트가 열려있는 상태에서 상단 메뉴바에서 Project -> <Project Name> Properties... 로 들어가시면 됩니다. 감사합니다. > > > 실수형을 출력할 때libprintf를 추가하라고 하셨는데 그것을 추가하는 NOUL창을 어디서 열어야되는지 모르겠습니다, > 알려주시면 감사하겠습니다. >
10212 답변완료[재문의] USBISP 사용 문제 문의드립니다. 박유진 2019-04-30 1,770
현재 사용중인 MCU/usbisp는 다른 PC(win7) codevision / avrstudio 에서 잘 프로그램 됩니다. 노트북이 윈10이라 호환성을 생각해 ATmel studio7을 설치하여 사용려고 했던건데 왜 프로그램 모드로 진입 할 수 없다는 말만 나오는지 모르겠네요. + 디바이스 시그니쳐 / 퓨즈 리드가 안됩니다. 같은 에러메시지가 뜹니다. ( Failed to enter programming mode.) 제작년에 제가 윈7 atmel studio7로 작업할때 잘 되었었고 작년에 다시 같은 환경에서 사용하려고 했을때 에러메시지가 나타났습니다. ( 윈도우 호환성 문제는 아닌것 같습니다) 올해 노트북을 구매하게 돼서 윈10 / atmel studio7 설치하고 사용하려니 같은 에러메시지가 뜹니다. 작년에 한참 구글링으로 찾아볼때 아트멜사에서 자사 제품이 아닌 툴을 막아버렸다는 글을 본적이 있는데 혹시 최근 윈도우10 atmelstudio7 환경으로 ISPUSB 3.6 사용테스트 해보신적이 있으신지 궁금합니다. -추가 USBISP 새로 하나 까서 사용해보니 잘 됩니다. ISP 문제인것 같은데 AS 신청하고 받는데 얼마나 걸릴까요>??
관리자 답변 관리자 · 2019-05-01
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 네, 제품 AS는 도착하면 당일 또는 익일 발송 가능합니다. 급하시면 직접오시면 바로 됩니다. 앞으로도 많은 이용 부탁드립니다. 감사합니다. > > > 현재 사용중인 MCU/usbisp는 다른 PC(win7) codevision / avrstudio 에서 잘 프로그램 됩니다. > > 노트북이 윈10이라 호환성을 생각해 ATmel studio7을 설치하여 사용려고 했던건데 왜 프로그램 모드로 진입 할 수 없다는 말만 나오는지 모르겠네요. > + 디바이스 시그니쳐 / 퓨즈 리드가 안됩니다. 같은 에러메시지가 뜹니다. ( Failed to enter programming mode.) > > 제작년에 제가 윈7 atmel studio7로 작업할때 잘 되었었고 > 작년에 다시 같은 환경에서 사용하려고 했을때 에러메시지가 나타났습니다. ( 윈도우 호환성 문제는 아닌것 같습니다) > > 올해 노트북을 구매하게 돼서 윈10 / atmel studio7 설치하고 사용하려니 같은 에러메시지가 뜹니다. > > > 작년에 한참 구글링으로 찾아볼때 아트멜사에서 자사 제품이 아닌 툴을 막아버렸다는 글을 본적이 있는데 > > 혹시 최근 윈도우10 atmelstudio7 환경으로 ISPUSB 3.6 사용테스트 해보신적이 있으신지 궁금합니다. > > > > -추가 > USBISP 새로 하나 까서 사용해보니 잘 됩니다. > ISP 문제인것 같은데 AS 신청하고 받는데 얼마나 걸릴까요>?? >
10211 답변완료USBISP 사용 문제 문의드립니다. 박유진 2019-04-30 1,756
Atmega128a 모듈 Window 10 atmel studio 7 을 사용합니다 타겟 설정을 stk500 로 하고 포트도 자동으로 잡혔습니다. 장치관리자에 포트 목록에 Silicon Lsbs CP210x .... 도 제대로 잡힙니다. 그러나 프로그램 버튼을 누르면 첨부된 그림과 같이 에러메시지가 출력됩니다.
관리자 답변 관리자 · 2019-04-30
안녕하세요 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. ISP와 ATmega모듈간에 접촉불량이 있는지 확인해 주시고, 개발환경상에서 MCU종류는 제대로 선택해 주셨는지 다시한번 확인해보시기 바랍니다. 또한, 개발환경에서 프로그래밍 전에 모듈의 시그니쳐가 Read가 잘 되는지, 퓨즈는 Read / Write가 되는지 확인해 보시기 바라며, 다른 ATmega모듈에 ISP를 꽂아보는 방법 등으로 ISP의 문제인지, ATmega모듈의 문제인지 찾아보시고, 문제를 모르겠다고 하시면 저희 본사쪽에 수리할 모듈과 증상, 돌려받으실 이름,주소,전화번호 등을 보내주시면(택배비 선불) A/S를 진행해보실 수 있습니다. 감사합니다. > > > Atmega128a 모듈 > Window 10 > atmel studio 7 을 사용합니다 > > 타겟 설정을 stk500 로 하고 포트도 자동으로 잡혔습니다. > > 장치관리자에 포트 목록에 Silicon Lsbs CP210x .... 도 제대로 잡힙니다. > > 그러나 프로그램 버튼을 누르면 첨부된 그림과 같이 에러메시지가 출력됩니다. >
10210 답변완료세금계산서 요청건 최성욱 2019-04-29 1,797
안녕하세요 에이원디앤피 입니다. 지난번 usb 수리요청건으로 수리비 대해 셰금계서가 가능한지 문의 드립니다. 확인하여 보시고 회신부탁드립니다.
관리자 답변 관리자 · 2019-04-29
안녕하세요 고객님. 저희 뉴티씨 제품을 이용해주셔서 감사합니다. 사업자등록증 팩스로 보내주시면 세금계산서 발급이 가능합니다. FAX) 02-704-4733 감사합니다. > > 안녕하세요 > 에이원디앤피 입니다. > > 지난번 usb 수리요청건으로 수리비 대해 셰금계서가 가능한지 문의 드립니다. > > 확인하여 보시고 회신부탁드립니다. >
10209 답변완료AM-DC1-3D 구동 예제 부탁드려요 김상용 2019-04-25 1,658
AVR Studio v4.19 + GCC Tool Chain을 사용하고 있읍니다. 몇가지 예제를 주셨지만 제대로 모터 구동이 되는 예제가 없네요.. 키이입력을 받아 정역이 되는 예제가 있으면 소스를 변경하여 제품에 적용하려고 하는데 한달동안 해매고 있네요... 주신 예제 1 ex_Motor_SW_PWM_Speed_control define 된걸 보면 AM-DC1-3D 핀연결과 다릅니다. PWM1, DIR1을 사용합니다. 그래서 안되는것으로 보입니다. DC2-2D 구동 모듈을 사야 하나요? #define PWM2_ON (MOTOR_PORT|=0x10) #define PWM2_OFF (MOTOR_PORT&=0xEF) #define DIR2_CW (MOTOR_PORT|=0x20) #define DIR2_CCW (MOTOR_PORT&=0xDF) #define ENABLE2_OFF (MOTOR_PORT|=0x40) #define ENABLE2_ON (MOTOR_PORT&=0xBF) #define BREAK2_ON (MOTOR_PORT|=0x80) #define BREAK2_OFF (MOTOR_PORT&=0x7F) 주신 예제 2 ex_AM_DCx_x_DC_MOTOR_Control 이 소스는 그래도 AM-DC1-3D 모듈에 모터가 돌아가야 되는데 반응이 없네요...LED 예제 헥사파일을 다운 받으면 모터가 구동되는것을 확인 함. #define MOTOR_PORT PORTC #define PWM1_ON (MOTOR_PORT|=0x01) #define PWM1_OFF (MOTOR_PORT&=0xFE) #define DIR1_ON (MOTOR_PORT|=0x02) #define DIR1_OFF (MOTOR_PORT&=0xFD) #define ENABLE1_OFF (MOTOR_PORT|=0x04) #define ENABLE1_ON (MOTOR_PORT&=0xFB) #define BREAK1_ON (MOTOR_PORT|=0x08) #define BREAK1_OFF (MOTOR_PORT&=0xF7) #define PWM2_ON (MOTOR_PORT|=0x10) #define PWM2_OFF (MOTOR_PORT&=~0x10) #define DIR2_ON (MOTOR_PORT|=0x20) #define DIR2_OFF (MOTOR_PORT&=~0x20) #define ENABLE2_OFF (MOTOR_PORT|=0x40) #define ENABLE2_ON (MOTOR_PORT&=~0x40) #define BREAK2_ON (MOTOR_PORT|=0x80) #define BREAK2_OFF (MOTOR_PORT&=~0x80) AVR Studio v4.19 + GCC Tool Chain 에서AM-DC1-3D 구동 예제 되는것좀 부탁드릴게요...
관리자 답변 관리자 · 2019-04-28
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 요청하신 예제를 첨부하여 드립니다. DC1-3C나 DC2-2D나 MOTOR1만 구동하실 때에는 예제가 호환되도록 만들어져 있어서, 일반적으로 사용하시기는 편하실텐데, 최근에 컴파일러인 툴체인의 변동들이 있고, 또한 윈도우버전업 등으로 약간씩 여건이 변경되어서, 기존의 라이브러리도 좀 달라지고 한 부분들이나, 구동시의 문제점 등이 가끔 보고되고 있어서, 어려움을 겪을 수도 있겠구나 하는 생각이 듭니다. 그래서, 첨부와 같이 제작하여 컴파일해보고 올려드립니다. 정역제어만 되는 예제입니다. 잘 사용하시기 바랍니다. 감사합니다. > > > AVR Studio v4.19 + GCC Tool Chain을 사용하고 있읍니다. > 몇가지 예제를 주셨지만 제대로 모터 구동이 되는 예제가 없네요.. > 키이입력을 받아 정역이 되는 예제가 있으면 소스를 변경하여 제품에 적용하려고 하는데 > 한달동안 해매고 있네요... > > 주신 예제 1 ex_Motor_SW_PWM_Speed_control > define 된걸 보면 AM-DC1-3D 핀연결과 다릅니다. PWM1, DIR1을 사용합니다. > 그래서 안되는것으로 보입니다. DC2-2D 구동 모듈을 사야 하나요? > #define PWM2_ON (MOTOR_PORT|=0x10) > #define PWM2_OFF (MOTOR_PORT&=0xEF) > #define DIR2_CW (MOTOR_PORT|=0x20) > #define DIR2_CCW (MOTOR_PORT&=0xDF) > #define ENABLE2_OFF (MOTOR_PORT|=0x40) > #define ENABLE2_ON (MOTOR_PORT&=0xBF) > #define BREAK2_ON (MOTOR_PORT|=0x80) > #define BREAK2_OFF (MOTOR_PORT&=0x7F) > > > 주신 예제 2 ex_AM_DCx_x_DC_MOTOR_Control > 이 소스는 그래도 AM-DC1-3D 모듈에 모터가 돌아가야 되는데 > 반응이 없네요...LED 예제 헥사파일을 다운 받으면 모터가 구동되는것을 확인 함. > > #define MOTOR_PORT PORTC > #define PWM1_ON (MOTOR_PORT|=0x01) > #define PWM1_OFF (MOTOR_PORT&=0xFE) > #define DIR1_ON (MOTOR_PORT|=0x02) > #define DIR1_OFF (MOTOR_PORT&=0xFD) > #define ENABLE1_OFF (MOTOR_PORT|=0x04) > #define ENABLE1_ON (MOTOR_PORT&=0xFB) > #define BREAK1_ON (MOTOR_PORT|=0x08) > #define BREAK1_OFF (MOTOR_PORT&=0xF7) > > #define PWM2_ON (MOTOR_PORT|=0x10) > #define PWM2_OFF (MOTOR_PORT&=~0x10) > #define DIR2_ON (MOTOR_PORT|=0x20) > #define DIR2_OFF (MOTOR_PORT&=~0x20) > #define ENABLE2_OFF (MOTOR_PORT|=0x40) > #define ENABLE2_ON (MOTOR_PORT&=~0x40) > #define BREAK2_ON (MOTOR_PORT|=0x80) > #define BREAK2_OFF (MOTOR_PORT&=~0x80) > > AVR Studio v4.19 + GCC Tool Chain 에서AM-DC1-3D 구동 예제 되는것좀 부탁드릴게요... >