Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 5973 | 답변완료atmega128관련 | 김창래 | 2010-12-08 | 1,357 |
|
icc7을 이용하여 프로그램하였습니다.
am-128pro를 이용하여 sample을 제작하여 정상 동작시켜는데 제품을 만들어서 프로그램하면 동작하지 않습니다. 칩셋은 atmega128-16au로 같은 제품을 사용하였는데도 안되는데 이유를 알수 있나요. atmega128[please see notes]로 프로그램 했습니다.
atmega128:m103 mode로 프래그램하면 동작은하는데 속도가 느리고 계속 리셋동작하네요.
am-128pro로에 사용되는 칩에 이유가 있나요?
또한, icc7을 계속사용할려는데 판매를 하지 안네요. 45일 데모 버전이라는데 시간지나도 사용가능 한가요. 전화번호 010-8861-2030 김창래 연락주세요
관리자 답변
안녕하세요
칩이 새것일경우 fuse 비트를 변경하여 사용하셔야합니다.
본사에서 판매되는 키트일 경우 fuse가 셋팅되어 나가서 그렇습니다.
키트에 있는 칩의 fuse를 read 하여 값을 확인해 보시길 바랍니다.
0xffd9ef 입니다.
ICCAVR7은 버젼이 변경되는중이라 현재 판매되지 않습니다.
45일 데모용 일경우 포맷을 하시고 사용하면 다시 깔아서 사용이 가능한것로 알고 있습니다.
수고하세요
>icc7을 이용하여 프로그램하였습니다.
>am-128pro를 이용하여 sample을 제작하여 정상 동작시켜는데 제품을 만들어서 프로그램하면 동작하지 않습니다. 칩셋은 atmega128-16au로 같은 제품을 사용하였는데도 안되는데 이유를 알수 있나요. atmega128[please see notes]로 프로그램 했습니다.
>atmega128:m103 mode로 프래그램하면 동작은하는데 속도가 느리고 계속 리셋동작하네요.
>
>am-128pro로에 사용되는 칩에 이유가 있나요?
>
>또한, icc7을 계속사용할려는데 판매를 하지 안네요. 45일 데모 버전이라는데 시간지나도 사용가능 한가요. 전화번호 010-8861-2030 김창래 연락주세요
>
>
>
|
||||
| 5972 | 답변완료atmega128에서 PWM 제어관련 문의사항입니다. | 전병일 | 2010-12-08 | 1,299 |
|
안녕하세요
AVR을 접한지 얼마 안된 학생입니다.
8비트 카운터/타이머를 공부중인데요
#include <mega128.h>
#include <delay.h>
void init_timer(void)
{
ASSR = 0x00;
TCCR0=0x2C;
TCCR2=0x2B;
TCNT0=0x00;
TCNT2=0x00;
TIMSK=0x82;
TIFR = 0x00;
}
void main(void)
{
DDRB=0xff;
PORTB.4=1;
PORTB.7=1;
DDRB=0xff;
init_timer();
delay_ms(100);
SREG=0x80;
OCR0=0x80;
OCR2=0xff;
}
interrupt [TIM0_COMP] void timer0_c(void)
{
#asm("nop");
}
interrupt [TIM2_COMP] void timer2_c(void)
{
#asm("nop");
}
실험용으로 위와 같이 코드를 작성했습니다.
목적은 DC모터를 돌리려고 하는 것이고 counter/timer0, 2 둘을 사용해서
모터 두개를 돌리려고 합니다.
위와 같이 소스를 작성하면 B포트의 5번핀과 8번핀 즉, OC0와 OC2에서
각각에 해당하는 파형이 출력되는 것으로 알고 있는데요
그런데 모터 모듈의 PWM신호에 바로 B포트의 5번 혹은 8번 핀을 직접 연결하면
아무런 작동도 하지 않습니다.
혹시 초기화를 잘못했나해서
아래 인터럽트 부분을
PORTB.0=~PORTB.0;
이런 식으로 수정한 후 1번 핀과 연결했더니 이때는 문제 없이 작동하더군요
혹시 그럼 위의 소스에서 OC0, OC2가 해당 핀으로 출력되게 하려면 추가적으로 변경시켜야 하는
부분이 있을까요
지금 몇일째 이부분으로 고민고민 하다가 이렇게 글을 남깁니다.
관리자 답변
안녕하세요
본사에는 킷트및 예제코드에 대해서만 써포트를 하고 있습니다.
코드수정에 대해서는 써포트를 하지않습니다.
보통 이렇씩으로 작성 됩니다.
>void main(void)
>{
> DDRB=0xff;
> init_timer();
> SREG=0x80;
> OCR0=0x80;
> OCR2=0xff;
while(1);
>}
수고하세요
>안녕하세요
>AVR을 접한지 얼마 안된 학생입니다.
>
>8비트 카운터/타이머를 공부중인데요
>
>#include <mega128.h>
>#include <delay.h>
>void init_timer(void)
>{
> ASSR = 0x00;
> TCCR0=0x2C;
> TCCR2=0x2B;
> TCNT0=0x00;
> TCNT2=0x00;
> TIMSK=0x82;
> TIFR = 0x00;
>}
>void main(void)
>{
> DDRB=0xff;
> PORTB.4=1;
> PORTB.7=1;
> DDRB=0xff;
> init_timer();
> delay_ms(100);
> SREG=0x80;
> OCR0=0x80;
> OCR2=0xff;
>}
>interrupt [TIM0_COMP] void timer0_c(void)
>{
> #asm("nop");
>}
>interrupt [TIM2_COMP] void timer2_c(void)
>{
> #asm("nop");
>}
>
>실험용으로 위와 같이 코드를 작성했습니다.
>목적은 DC모터를 돌리려고 하는 것이고 counter/timer0, 2 둘을 사용해서
>모터 두개를 돌리려고 합니다.
>위와 같이 소스를 작성하면 B포트의 5번핀과 8번핀 즉, OC0와 OC2에서
>각각에 해당하는 파형이 출력되는 것으로 알고 있는데요
>그런데 모터 모듈의 PWM신호에 바로 B포트의 5번 혹은 8번 핀을 직접 연결하면
>아무런 작동도 하지 않습니다.
>
>혹시 초기화를 잘못했나해서
>아래 인터럽트 부분을
>
>PORTB.0=~PORTB.0;
>
>이런 식으로 수정한 후 1번 핀과 연결했더니 이때는 문제 없이 작동하더군요
>혹시 그럼 위의 소스에서 OC0, OC2가 해당 핀으로 출력되게 하려면 추가적으로 변경시켜야 하는
>부분이 있을까요
>지금 몇일째 이부분으로 고민고민 하다가 이렇게 글을 남깁니다.
>
|
||||
| 5971 | 답변완료windows XP sp3 에서 sys파일이 복사되지 않습니다. | 조재훈 | 2010-12-08 | 1,351 |
|
FAQ 란에 있는것처럼
연결이 되는 컴퓨터에서 PID를 EA60으로 변경한 후
SP3용 프로그램을 깔아서 설치하는 중 첨부파일과 같이 복사가 되지 않습니다.
구 DRIVE를 깔면 아예 프로그램을 찾을 수 없다고 나오는군요.;;;
일단 첨부파일을 보시고 확인부탁드려요.
ps. 사용 기기는 usbisp V3 입니다.
관리자 답변
안녕하세요? 고객님,
고생 많으셨습니다. 오늘 해결 과정을 아래에 넣어 두었으니, 다음에도 같은 일이 있으면, FAQ에 가셔서 보시면 됩니다.
- 아래 -
http://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=46
감사합니다.
>FAQ 란에 있는것처럼
>연결이 되는 컴퓨터에서 PID를 EA60으로 변경한 후
>SP3용 프로그램을 깔아서 설치하는 중 첨부파일과 같이 복사가 되지 않습니다.
>
>구 DRIVE를 깔면 아예 프로그램을 찾을 수 없다고 나오는군요.;;;
>
>일단 첨부파일을 보시고 확인부탁드려요.
>
>ps. 사용 기기는 usbisp V3 입니다.
|
||||
| 5970 | 답변완료절연지 추가 구매 할 있나요? | 이기섭 | 2010-12-08 | 1,314 |
|
안녕하십니까.
귀사의 EMI 킷트를 사용하던 중, 절연지를 추가 구매하길 원합니다.
가능하면 큰 면적으로 된 것을 원합니다.
수량은 폭 1M X 길이 20M 정도의 분량이면 됩니다.
뉴티씨를 통해서 구입해도 되고, 공급사에 직접 구매도 가능합니다.
관리자 답변
넵, 견적 준비중입니다.
견적서 작업해서 연락 드리겠습니다. 연락처 좀 남겨주시기 바랍니다.
감사합니다.
>안녕하십니까.
>귀사의 EMI 킷트를 사용하던 중, 절연지를 추가 구매하길 원합니다.
>가능하면 큰 면적으로 된 것을 원합니다.
>수량은 폭 1M X 길이 20M 정도의 분량이면 됩니다.
>뉴티씨를 통해서 구입해도 되고, 공급사에 직접 구매도 가능합니다.
>
>
>
>
|
||||
| 5969 | 답변완료스텝모터 사용시 배터리 용량 선정은 어떻게 해야하나요? | 김지훈 | 2010-12-07 | 1,372 |
|
현재 스텝모터 SE-SM243 과 스텝모터 드라이버 AM-CS2P를 사용하고 있습니다.
그런데 발열이 너무 심해서 그런데요
아무래도 배터리 전원 때문인거 같아서요
모터드라이버에 주는 전원선택 때문에 질문 드립니다.
1. 제가 가지고 있는 배터리가
리튬폴리머 11V 850mAh (방전률12~15C) 인데요
이놈을 모터드라이버 에 모터로 주는 전원으로 줬더니
드라이버에서 발열이 너무 심하게 났습니다.
심지어 모터도 엄청뜨거워
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 사용하시는 전압이 좀 낮습니다. 실제로는 무부하시 10.5V부터 사용이 가능한데요.
이론적이고, 실제로는 12V 이상 되어야 정상동작합니다. 안정적인 동작은 14V 정도 되어야 하구요. 따라서, 전원의 전압을 좀 올리시는 게 좋겠습니다.
밑에 12V DC 아답타로 했을 경우에도 그렇다면, 아답타 스펙과 달리 실제는 좀 심하게 전류가 딸리는 모델들이 있는 것을 예전에 확인했습니다. 좋은 제품을 사용하셔야 하구요. 일단, 대부분 SMPS인 경우에는 큰 문제들이 없더군요. 전압 변동폭이 커지면 모터나 구동모듈이 내부적으로 진동하면서 좀 뜨거워 집니다. 그리고, 모터 구동부 드라이버에 있는 가변저항을 돌려서, 적절한 부하로 맞췄는 지 확인해보세요. 적당한 포인트가 되면, 기분 좋은 소리가 나면서 잘 돌아갑니다.
수고하세요.
>현재 스텝모터 SE-SM243 과 스텝모터 드라이버 AM-CS2P를 사용하고 있습니다.
>
>그런데 발열이 너무 심해서 그런데요
>
>아무래도 배터리 전원 때문인거 같아서요
>
>모터드라이버에 주는 전원선택 때문에 질문 드립니다.
>
>
>1. 제가 가지고 있는 배터리가
>리튬폴리머 11V 850mAh (방전률12~15C) 인데요
>이놈을 모터드라이버 에 모터로 주는 전원으로 줬더니
>드라이버에서 발열이 너무 심하게 났습니다.
>심지어 모터도 엄청뜨거워 졋습니다.
>
>이거 방전률이 10C 이상인데 전류가 너무 많이 들어가서 발열이 나는 걸까요?
>
>2. 그리고 12V DC 아답터 (1.5A) 짜리로 도 전원을 줬는데 발열이 심하게 났습니다.모터도 마찬가지구요
>
>3. 마지막으로 9V 알카라인 건전지로 했는데 뜨겁긴했는데 모터까지 뜨거워 지지는 않았습니다.
>
>
>각 배터리가 왜 그렇게 됬는지 설명좀 부탁드릴게요
>
>
|
||||
| 5968 | 답변완료스태핑모터와 모듈 사용 질문입니다 | 김태성 | 2010-12-07 | 1,314 |
|
H8 마이컴 3052F 라는 마이컴으로 스탭모터를 구동하려고 하는데요
저희 선배가 사놨던건데 스탭모터2개랑 AM_MS2 모듈이 연결되어있고 모터와 모듈은 6핀 케이블로 연결되어있는데 1핀포트에 꼽는 케이블은 없습니다.
가장 궁금한건 이 10핀포트를 어디와 연결하느냐인데
제가 생각하고 있는 두가지를 일단 말씀드리겠습니다.
1. 어차피 모터는 받기만 하는거니까 TX포트는 필요없고 RX포트만 마이컴의 출력으로 설정해준 포트에 연결하고 마이컴 출력포트에서 신호를 출력해주는겁니다(이때 enable이나 그외의것은 모르겠더군요 gnd는 같이 연결해줘야할것 같긴합니다만)
2.마이컴에 rx.tx포트가 있는데 마이컴의 tx포트랑 모듈의 rx단자를 연결하면 될까 하는 생각을 하고있습니다.그리고 모듈하고 h8하고 연결할떄 모듈 10핀포트에 있는 gnd랑vcc도 연결해야하는건지 모르겠습니다.
마지막으로 모듈의 12v입력부분이 있는데 마이컴은 전압이 5V입니다 그럼 이 12V입력부분은 어디랑 연결해야 하는건가요
답변 기다리겠습니다 ㅠ.ㅠ
관리자 답변
안녕하세요
아래링크를 보면 핀에 대한 기능이 나옵니다.
http://www.newtc.co.kr/download/AM-MS2/AM-MS2_manual.pdf
1.2. RX,TX? 는 UART 관련된 핀 기능입니다. 모터 구동에 관련이 없습니다.
일반 GPIO 로 구동하면 됩니다.
VCC(5볼트) ,GND 동일하게 연결해야합니다.
3. 12볼트는 모터 전압입니다 따로 인가해야합니다.
12v~24v 사이의 전압을 인가하면 됩니다.
수고하세요
>H8 마이컴 3052F 라는 마이컴으로 스탭모터를 구동하려고 하는데요
>
>저희 선배가 사놨던건데 스탭모터2개랑 AM_MS2 모듈이 연결되어있고 모터와 모듈은 6핀 케이블로 연결되어있는데 1핀포트에 꼽는 케이블은 없습니다.
>
>가장 궁금한건 이 10핀포트를 어디와 연결하느냐인데
>
>제가 생각하고 있는 두가지를 일단 말씀드리겠습니다.
>
>1. 어차피 모터는 받기만 하는거니까 TX포트는 필요없고 RX포트만 마이컴의 출력으로 설정해준 포트에 연결하고 마이컴 출력포트에서 신호를 출력해주는겁니다(이때 enable이나 그외의것은 모르겠더군요 gnd는 같이 연결해줘야할것 같긴합니다만)
>
>2.마이컴에 rx.tx포트가 있는데 마이컴의 tx포트랑 모듈의 rx단자를 연결하면 될까 하는 생각을 하고있습니다.그리고 모듈하고 h8하고 연결할떄 모듈 10핀포트에 있는 gnd랑vcc도 연결해야하는건지 모르겠습니다.
>
>마지막으로 모듈의 12v입력부분이 있는데 마이컴은 전압이 5V입니다 그럼 이 12V입력부분은 어디랑 연결해야 하는건가요
>
>답변 기다리겠습니다 ㅠ.ㅠ
|
||||
| 5967 | 답변완료예제 소스 디버그 문제 | 정회영 | 2010-12-07 | 1,534 |
|
뉴티씨에 있는 예제 소스입니다.
LEFTmotorOneClock와 swich문에 caseRightmotorOneClock의 함수 안에
switch문에 case에 걸리지 않습니다.
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;
값에 대하여 알려주세요.
#include <avr/io.h>
#include <avr/interrupt.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xff;
PORTD = 0x00;
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
}
/* 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<1000;j++);
}
}
//
int main(void)
{
volatile unsigned char stepleft=0, stepright=0;
init_devices();
//insert your functional code here...
MOTOR_PORT_DDR = 0xff;
while(1){
stepright = RIGHTmotorOneClock(stepright, 1);
stepleft = LEFTmotorOneClock(stepleft, 0);
delay(3);
MOTOR_PORT = stepleft|stepright;
}
return 0;
}
관리자 답변
안녕하세요
어떤 종류의 컴파일를 사용, 어떤 보드를 사용등, 개발환경 환경에 대해 없습니다.
질문시유의사항을 한번 읽어 보시고 질문을 해주시길 바랍니다.
>switch문에 case에 걸리지 않습니다.
걸리지 않는걸을 어떤 방법으로 확인하셨나요?.
돌려본 결과 이 코드는 정상적으로 동작하고 있습니다.
옵션 설정을 먼저 확인해 보시길 바랍니다.
수고하세요
>뉴티씨에 있는 예제 소스입니다.
>LEFTmotorOneClock와 swich문에 caseRightmotorOneClock의 함수 안에
>switch문에 case에 걸리지 않습니다.
>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;
>값에 대하여 알려주세요.
>
>
>#include <avr/io.h>
>#include <avr/interrupt.h>
>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_PORT_DDR DDRC
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xff;
> PORTD = 0x00;
> 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
>}
>
>
>/* 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<1000;j++);
> }
>}
>
>//
>int main(void)
>{
> volatile unsigned char stepleft=0, stepright=0;
>
> init_devices();
> //insert your functional code here...
>
>
> MOTOR_PORT_DDR = 0xff;
> while(1){
> stepright = RIGHTmotorOneClock(stepright, 1);
> stepleft = LEFTmotorOneClock(stepleft, 0);
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> }
> return 0;
>}
>
|
||||
| 5966 | 답변완료AB-M128-B 외부전원 관련 질문입니다. | 김충현 | 2010-12-07 | 1,426 |
|
AB-M128-B과 AM-MS2를 이용하여
SE-SM 스테핑 모터 2개를 구동하려 합니다.
외부전원은 12V 1A 를 사용하고 있는데요
이 전원부분을 일반 전지로 대체하려면 어떻게 해야 하는지요
뉴티씨 까페와 홈페이지를 둘러보니 1.2V Ni-MH 일반충전지10개를
직렬연결해서 사용하면 된다는 말도 있고 순간전류 때문에 다른 것을 사용해야 된다는 말도있네요
모터 속도는 초당 한바퀴 정도로 구동시킬 생각입니다.
덜덜거리지 않는 선에서 어떻게 전지를 연결하면 될지 문의 드립니다.
관리자 답변
안녕하세요? 고객님,
Ni-MH 나 폴리머 충전지를 사용하면, 되겠구요.
전체 전압을 14V 정도 만들어 주면 안정적으로 되겠습니다. 최소 12V 이상은 주셔야 합니다.
감사합니다.
>AB-M128-B과 AM-MS2를 이용하여
>
>SE-SM 스테핑 모터 2개를 구동하려 합니다.
>
>외부전원은 12V 1A 를 사용하고 있는데요
>
>이 전원부분을 일반 전지로 대체하려면 어떻게 해야 하는지요
>
>뉴티씨 까페와 홈페이지를 둘러보니 1.2V Ni-MH 일반충전지10개를
>
>직렬연결해서 사용하면 된다는 말도 있고 순간전류 때문에 다른 것을 사용해야 된다는 말도있네요
>
>모터 속도는 초당 한바퀴 정도로 구동시킬 생각입니다.
>
>덜덜거리지 않는 선에서 어떻게 전지를 연결하면 될지 문의 드립니다.
|
||||
| 5965 | 답변완료DC 라인트레이서(KR-DL16-C)질문드려요~ | kimjihyun | 2010-12-07 | 1,387 |
|
DC 라인트레이서(KR-DL16-C) 키트에
검정라인을 몇 센티로 해야하는건가요?
관리자 답변
안녕하세요? 고객님,
검정 전기 테이프 보셨을 겁니다. 그걸로 잘 동작합니다.
따라서, 넓이가 1.5cm 정도 되면 무난하다고 생각됩니다.
길이는 원하시는 데로 하시면 되겠구요.
감사합니다.
>DC 라인트레이서(KR-DL16-C) 키트에
>검정라인을 몇 센티로 해야하는건가요?
>
|
||||
| 5964 | 답변완료[빠른답변 요망]5V, 3.3V 전원보드 AM-MP533 에 대한 아답터 연결하는 잭에 대한 질문입니다 | 강동진 | 2010-12-07 | 1,418 |
|
전원 아답터를 연결할때 잭의 규격있는데 (외경, 내경의 크기)
어떤 규격을 사용해야하는지좀 알려주세요
http://www.eleparts.co.kr/front/productdetail.php?productcode=034001001000000016&sort=
아답터로 이 제품을 사려고 하는건데 상품 소개 하단을 보시면 잭 타입 A에서 G까지 7가지로 나오네요
시간이 없어 주문에 착오가 없게 하기 위해서이니 빠른 답변과 확실한 답변 올려주시면
감사하겠습니다
관리자 답변
안녕하세요
기본타입인 E를 사용하면됩니다.
수고하세요
>전원 아답터를 연결할때 잭의 규격있는데 (외경, 내경의 크기)
>어떤 규격을 사용해야하는지좀 알려주세요
>
>http://www.eleparts.co.kr/front/productdetail.php?productcode=034001001000000016&sort=
>
>아답터로 이 제품을 사려고 하는건데 상품 소개 하단을 보시면 잭 타입 A에서 G까지 7가지로 나오네요
>
>시간이 없어 주문에 착오가 없게 하기 위해서이니 빠른 답변과 확실한 답변 올려주시면
>감사하겠습니다
|
||||
| 5963 | 답변완료스텝모터의 한바퀴가 360가 안되는것 같습니다. | 김지훈 | 2010-12-06 | 1,374 |
|
SE-SM243 을 사용하고 있는데요
한 스텝이 1.8도 니까 200스텝을 주면 360도 한바퀴를 돌아야 하는 거잖아요?
그런데 한바퀴를 채 못돕니다...
일단 간단하게 소스코드는 아래와 같이 했구요
어떤게 문제인거죠?
#include <mega16.h>
#include <delay.h>
void main(void)
{
unsigned char cw[]={0x01,0x02,0x04,0x08};
unsigned char a=0;
unsigned int i;
PORTC=0x00;
DDRC=0xff;
for(i=1 ; i<200 ; i++) //200번의 스텝
{
a++;
if(a==4){
a=0;
}
PORTC=cw[a];
delay_ms(20);
}
}
관리자 답변
안녕하세요
1.8도가 맞습니다. 그리고 200펄스이면 한바퀴입니다.
코드를 잘못 작성한듯 한군요 ;;
임의 작성 하신 코드에 대해서는 써포트를 하지않습니다.;
확인차원에서 아래코드를 올려드립니다.
void main(void)
{
unsigned char cw[]={ 0x01,0x02,0x04,0x08};
unsigned char a=0;
unsigned int i;
PORTC=0x00;
DDRC =0xFF;
for(i=0 ; i<200 ; i++) //200번의 스텝
{
PORTC = cw[a];
delay_ms(50);
if ( a < 3 )
a++;
else
a = 0;
}
}
수고하세요
>SE-SM243 을 사용하고 있는데요
>한 스텝이 1.8도 니까 200스텝을 주면 360도 한바퀴를 돌아야 하는 거잖아요?
>
>그런데 한바퀴를 채 못돕니다...
>일단 간단하게 소스코드는 아래와 같이 했구요
>어떤게 문제인거죠?
>
>
>
>
>#include <mega16.h>
>#include <delay.h>
>
>
>void main(void)
>{
> unsigned char cw[]={0x01,0x02,0x04,0x08};
> unsigned char a=0;
> unsigned int i;
>
> PORTC=0x00;
> DDRC=0xff;
>
>
> for(i=1 ; i<200 ; i++) //200번의 스텝
> {
>
> a++;
> if(a==4){
> a=0;
>
> }
> PORTC=cw[a];
> delay_ms(20);
> }
>
>}
>
|
||||
| 5962 | 답변완료adc문의드립니다. | 우승식 | 2010-12-06 | 1,407 |
|
안녕하세요...
ADC 모드를 사용하는데 프로그램은 ADC 예제를 보고 했습니다..
근데 다운로드 해보니 포트 A.1~2 와 포트 G.1~2에 led 점등이 되는데
원래 그런건지 문의 드립니다.
포트를 INPUT으로 설정해 놓아도 계속 불이 들어옵니다.
포트 A는 깜밖거리고 포트 G는 계속 점등상태 입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
ADC 예제에 아마도 PORTG나 PORTA를 건드리는 소스부분이 있어서 그런게 아닌가 싶습니다.
소스에서 그 부분을 채크하여 보시기 바랍니다.
아니면, 사용중이신 예제를 올려 보세요. 본사에 여러 예제가 있어서, 어떤 예제를 말씀하시는 지 알기 어렵거든요.
수고하세요.
>안녕하세요...
>
>ADC 모드를 사용하는데 프로그램은 ADC 예제를 보고 했습니다..
>
>근데 다운로드 해보니 포트 A.1~2 와 포트 G.1~2에 led 점등이 되는데
>
>원래 그런건지 문의 드립니다.
>
>포트를 INPUT으로 설정해 놓아도 계속 불이 들어옵니다.
>
>포트 A는 깜밖거리고 포트 G는 계속 점등상태 입니다.
|
||||
| 5961 | 답변완료AB-M16-B 관련문의(급) | 정훈 | 2010-12-06 | 1,370 |
|
안녕하세요
전화드렸는데 지금 바로 구매건 취소여부를 결정해야해서 여기 문의드립니다
Atmega16 개발보드를 2개 주문했는데 나중에 상용개발은 ATMega8535 chip으로 할려고 하는데
두 chip이 (DIP40)이 서로 핀 layout이 동일해 보여 (jtag제외) 보드에 clock만 맞춘다면 (16M->8Mhz교체) atmega16을 빼고 8535칩을 대체해 사용해도 동작하는지 문의드립니다
빠른답변 부탁드립니다 감사합니다
*그리고 상기보드의 회로도가 없나요? 여기 사이트에서 찾아봤는데 못찾아서요
아. 한가지 더 추가 질문입니다
지난주 AT89S52 개발보드를 두개샀는데 칩을 Atmega로 바꾸기로 함에 따라 버려야?할 상황이라서.. 보드설계를 보니 상기 Atmega16 보드와 비슷하게 설계되있어서 위에 변환보드가 있다면
(8535를 변환보드에 장착하고 핀레이아웃을 89S52로 맞추는) 동작가능하지 않나요?
그러다면 변환보드 판매하는게 있는지요?
(전화로 답변 주셔도 고맙겠습니다 010-5202-9528 정훈)
관리자 답변
안녕하세요
Atmega16 과 ATMega8535 핀맵이 동일해 교체해서 사용해도 무방합니다.
자료실 > 기존자료실에 검색하시면 됩니다.
http://www.newtc.co.kr/board/zboard.php?id=pds&page=1&select_arrange=headnum&desc=asc&category=&sn=off&ss=on&sc=off&keyword=16&sn1=&divpage=1
AT89S52 는 ATMega8535와 핀맵이 틀립니다. 호환이 불가능합니다.
변환보드 같은 제품은 없습니다.
수고하세요
>안녕하세요
>전화드렸는데 지금 바로 구매건 취소여부를 결정해야해서 여기 문의드립니다
>Atmega16 개발보드를 2개 주문했는데 나중에 상용개발은 ATMega8535 chip으로 할려고 하는데
>두 chip이 (DIP40)이 서로 핀 layout이 동일해 보여 (jtag제외) 보드에 clock만 맞춘다면 (16M->8Mhz교체) atmega16을 빼고 8535칩을 대체해 사용해도 동작하는지 문의드립니다
>빠른답변 부탁드립니다 감사합니다
>
>*그리고 상기보드의 회로도가 없나요? 여기 사이트에서 찾아봤는데 못찾아서요
>
>아. 한가지 더 추가 질문입니다
>지난주 AT89S52 개발보드를 두개샀는데 칩을 Atmega로 바꾸기로 함에 따라 버려야?할 상황이라서.. 보드설계를 보니 상기 Atmega16 보드와 비슷하게 설계되있어서 위에 변환보드가 있다면
>(8535를 변환보드에 장착하고 핀레이아웃을 89S52로 맞추는) 동작가능하지 않나요?
>그러다면 변환보드 판매하는게 있는지요?
>(전화로 답변 주셔도 고맙겠습니다 010-5202-9528 정훈)
>
>
>
|
||||
| 5960 | 답변완료스테핑모터 제어 소스 지도 부탁드립니다. ㅡ.,ㅠ | 이종원 | 2010-12-05 | 1,414 |
|
휴,, 금요일에 제품 구매해갔던 기계공학과 학생입니다.
기계공학도가 전기전자쪽 할려니 머리가 너무 아프네요.
지금 선풍기를 응용한 작품을 하나 만들고 있는데요,
보통 선풍기는 회전, 정지 2가지 모드만 있지만 저희는 회전, 정지 중 회전 모드에서 회전속도를 조절할 수 있도록 만들려고 합니다.
현재 AVR보드(AB-M128-B), 케이블(USPISP-Lite), 구동모듈(AM-CS2P), 스테핑모터(SE-SM243), 스위치(AM-TS8)를 연결해 놓았습니다.
전원 연결 시 정지상태
1번 스위치 작동시 시계방향회전,
2번 스위치 작동시 정지,
3번 스위치 작동시 가속,
4번 스위치 작동시 감속
이렇게 만들려고 합니다.
아래는 (주)뉴티씨에서 제공하는 스테핑모터 예제입니다.
스위치 1번은 시계방향회전, 2번은 반시계방향회전, 3번은 가속, 4번은 감속 이렇게 되어있네요.
저것을 수정해서 응용해보려고 하는데,
1. 전원 연결시 모터가 바로 작동됩니다. 이것을 전원 연결시 정지모드로 바꾸고 싶습니다.
2. 스위치 2번 버튼에 정지 버튼을 설정하고 싶습니다.
수정해주시거나 조언 해주시면 감사하겠습니다.
컴파일러는 AVR스튜디오입니다.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
#define LEFT 0
#define RIGHT 1
#define SW_PORT PINA
#define SW_PORT_DDR DDRA
#define SPEED_H_LIMIT 800
#define SPEED_L_LIMIT 0
#define SPEEDUP 1
#define OK 1
#define NOOK 0
volatile int TURN, SPEED, timer0_expired=NOOK, counter=0;
volatile unsigned char stepleft=0, stepright=0;
static int Putchar(char c, FILE *stream);
void tx0Char(char message);
void tx1Char(char message);
void timer0_init(void);
static int Putchar(char c, FILE *stream)
{
tx0Char(c);
tx1Char(c);
return 0;
}
// scanf 함수 사용시 추가할 것.
int Getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
// UART0 을 이용한 출력
void tx0Char(char message)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = message;
}
// UART1 을 이용한 출력
void tx1Char(char message)
{
while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty
UDR1 = message;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x33;
PORTG = 0x00;
DDRG = 0x03;
}
//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 = 0x67; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}
//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();
timer0_init();
fdevopen(Putchar,0);
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x01; //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<300;j++);
}
}
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 200KHz
// actual value: 200.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xF6; //set count
OCR0 = 0x0A;
TCCR0 = 0x02; //start timer
}
ISR(TIMER0_OVF_vect)
{
TCNT0 = 0xF6; //reload counter value
if(counter < (SPEED_H_LIMIT - SPEED)){
counter++;
} else{
timer0_expired = OK;
}
if(timer0_expired == OK){
stepright = RIGHTmotorOneClock(stepright, TURN);
stepleft = LEFTmotorOneClock(stepleft, TURN);
MOTOR_PORT = stepleft|stepright;
timer0_expired = NOOK;
counter = 0;
}
}
//
int main(void)
{
init_devices();
//insert your functional code here...
printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
MOTOR_PORT_DDR = 0xff;
SW_PORT_DDR = 0x00;
SPEED = 600;
TURN = RIGHT;
while(1){
switch(SW_PORT){
case 0x01: TURN = RIGHT;
printf("RIGHT!!\\r\\n");
break;
case 0x02: TURN = LEFT;
printf("LEFT!!\\r\\n");
break;
case 0x04: SPEED += SPEEDUP;
if(SPEED >=SPEED_H_LIMIT){
SPEED = SPEED_H_LIMIT;
}
delay(1);
printf("SPEED UP\\r\\n");
break;
case 0x08: SPEED -= SPEEDUP;
if(SPEED <=SPEED_L_LIMIT){
SPEED = SPEED_L_LIMIT;
}
delay(1);
printf("SPEED DOWN\\r\\n");
break;
default : break;
}
}
return 0;
}
관리자 답변
안녕하세요
예제코드 및 킷트 들에 문의는 써포트를 하지만,
코드수정등과 같은 경우 써포트를 하지않습니다.
간단한 간단내용이라서 작성해 드렸습니다. 아래 코드를 참고 하시길 바랍니다.
>int main(void)
>{
> init_devices();
> //insert your functional code here...
>
> printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
>
> MOTOR_PORT_DDR = 0xff;
> SW_PORT_DDR = 0x00;
> SPEED = 600;
> TURN = RIGHT;
>
> while(1){
>
> switch(SW_PORT){
> case 0x01: TURN = RIGHT;
> printf("RIGHT!!\\r\\n");
> break;
> case 0x02: TURN = LEFT;
> printf("LEFT!!\\r\\n");
> break;
> case 0x04: SPEED += SPEEDUP;
> if(SPEED >=SPEED_H_LIMIT){
> SPEED = SPEED_H_LIMIT;
> }
> delay(1);
> printf("SPEED UP\\r\\n");
> break;
> case 0x08: SPEED -= SPEEDUP;
> if(SPEED <=SPEED_L_LIMIT){
> SPEED = SPEED_L_LIMIT;
> }
> delay(1);
> printf("SPEED DOWN\\r\\n");
> break;
case 0x10:
MOTOR_PORT = 0xff;
break;
> default : break;
> }
> }
> return 0;
>}
질문은 한곳에만 올려주시길 바랍니다.
수고하세요
>휴,, 금요일에 제품 구매해갔던 기계공학과 학생입니다.
>
> 기계공학도가 전기전자쪽 할려니 머리가 너무 아프네요.
>
>지금 선풍기를 응용한 작품을 하나 만들고 있는데요,
>
>보통 선풍기는 회전, 정지 2가지 모드만 있지만 저희는 회전, 정지 중 회전 모드에서 회전속도를 조절할 수 있도록 만들려고 합니다.
>
>현재 AVR보드(AB-M128-B), 케이블(USPISP-Lite), 구동모듈(AM-CS2P), 스테핑모터(SE-SM243), 스위치(AM-TS8)를 연결해 놓았습니다.
>
>
>
>전원 연결 시 정지상태
>
>1번 스위치 작동시 시계방향회전,
>
>2번 스위치 작동시 정지,
>
>3번 스위치 작동시 가속,
>
>4번 스위치 작동시 감속
>
>
>이렇게 만들려고 합니다.
>
>
>
>아래는 (주)뉴티씨에서 제공하는 스테핑모터 예제입니다.
>
>스위치 1번은 시계방향회전, 2번은 반시계방향회전, 3번은 가속, 4번은 감속 이렇게 되어있네요.
>
>저것을 수정해서 응용해보려고 하는데,
>
>1. 전원 연결시 모터가 바로 작동됩니다. 이것을 전원 연결시 정지모드로 바꾸고 싶습니다.
>
>2. 스위치 2번 버튼에 정지 버튼을 설정하고 싶습니다.
>
>수정해주시거나 조언 해주시면 감사하겠습니다.
>
>컴파일러는 AVR스튜디오입니다.
>
>
>
>#include <avr/io.h>
>#include <avr/interrupt.h>
>#include <stdio.h>
>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_PORT_DDR DDRC
>
>#define LEFT 0
>#define RIGHT 1
>
>#define SW_PORT PINA
>#define SW_PORT_DDR DDRA
>
>#define SPEED_H_LIMIT 800
>#define SPEED_L_LIMIT 0
>#define SPEEDUP 1
>#define OK 1
>#define NOOK 0
>
>volatile int TURN, SPEED, timer0_expired=NOOK, counter=0;
>volatile unsigned char stepleft=0, stepright=0;
>
>static int Putchar(char c, FILE *stream);
>void tx0Char(char message);
>void tx1Char(char message);
>void timer0_init(void);
>
>
>static int Putchar(char c, FILE *stream)
>{
> tx0Char(c);
> tx1Char(c);
> return 0;
>
>}
>
>
>// scanf 함수 사용시 추가할 것.
>int Getchar(void)
>{
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
>}
>
>
>// UART0 을 이용한 출력
>void tx0Char(char message)
>{
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
> UDR0 = message;
>}
>
>// UART1 을 이용한 출력
>void tx1Char(char message)
>{
> while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty
> UDR1 = message;
>}
>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x33;
> PORTG = 0x00;
> DDRG = 0x03;
>}
>
>//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 = 0x67; //set baud rate lo
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x18;
>}
>
>//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();
> timer0_init();
> fdevopen(Putchar,0);
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x01; //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<300;j++);
> }
>}
>
>
>//TIMER0 initialize - prescale:8
>// WGM: Normal
>// desired value: 200KHz
>// actual value: 200.000KHz (0.0%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0xF6; //set count
> OCR0 = 0x0A;
> TCCR0 = 0x02; //start timer
>}
>
>ISR(TIMER0_OVF_vect)
>{
> TCNT0 = 0xF6; //reload counter value
> if(counter < (SPEED_H_LIMIT - SPEED)){
> counter++;
> } else{
> timer0_expired = OK;
> }
>
> if(timer0_expired == OK){
> stepright = RIGHTmotorOneClock(stepright, TURN);
> stepleft = LEFTmotorOneClock(stepleft, TURN);
> MOTOR_PORT = stepleft|stepright;
> timer0_expired = NOOK;
> counter = 0;
> }
>}
>
>
>//
>int main(void)
>{
> init_devices();
> //insert your functional code here...
>
> printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
>
> MOTOR_PORT_DDR = 0xff;
> SW_PORT_DDR = 0x00;
> SPEED = 600;
> TURN = RIGHT;
>
> while(1){
>
> switch(SW_PORT){
> case 0x01: TURN = RIGHT;
> printf("RIGHT!!\\r\\n");
> break;
> case 0x02: TURN = LEFT;
> printf("LEFT!!\\r\\n");
> break;
> case 0x04: SPEED += SPEEDUP;
> if(SPEED >=SPEED_H_LIMIT){
> SPEED = SPEED_H_LIMIT;
> }
> delay(1);
> printf("SPEED UP\\r\\n");
> break;
> case 0x08: SPEED -= SPEEDUP;
> if(SPEED <=SPEED_L_LIMIT){
> SPEED = SPEED_L_LIMIT;
> }
> delay(1);
> printf("SPEED DOWN\\r\\n");
> break;
> default : break;
> }
> }
> return 0;
>}
>
>
>
|
||||
| 5959 | 답변완료스텝모터 SE-SM243 발열 및 구동전압 질문 | 김지훈 | 2010-12-04 | 1,404 |
|
스텝모터 SE-SM243 를 사용하고 있습니다 모터 드라이버는 AM-CS2P 이구요
궁금한것이 있는데요 이 스텝모터 구동 전압이 몇입니까? 모터에는 4.1v 라고 씌여있는데요
모터드라이버에 주는 전원은 12v~24v 이렇게 쓰ㅇ여있습니다.
그래서 모터드라이버에 12볼트를 주고 돌려봤더니
엄청 뜨거워
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
스테핑 모터는 자체가 3~4V 정도가 원래 정격입니다.
하지만, 스테핑 모터를 구동하기 위해서는 실제로는 3배~8배 정도의 전압을 넣어주는 것이 보통입니다. 특히, 모터 구동부 IC에 따라서, 더 높은 전압을 쓰는 경우도 있습니다.
모터 구동부가 뜨거워지는 것은 원인이 여러가지 있습니다.
모터 구동부에 가해지는 전류가 딸리는 경우도 그럴 수 있구요.
자세한 것은 아래 내용을 읽어 보세요.
FAQ에 있는 내용입니다.
- 아래 -
http://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=40
감사합니다.
>스텝모터 SE-SM243 를 사용하고 있습니다 모터 드라이버는 AM-CS2P 이구요
>
>궁금한것이 있는데요 이 스텝모터 구동 전압이 몇입니까? 모터에는 4.1v 라고 씌여있는데요
>
>모터드라이버에 주는 전원은 12v~24v 이렇게 쓰ㅇ여있습니다.
>
>그래서 모터드라이버에 12볼트를 주고 돌려봤더니
>
>엄청 뜨거워 졋습니다.
>
>4.1볼트를 모터드라이버에 전원으로 줘야 하나요??
>그럼 왜 드라이버에 12v~24v 이렇게 써있죠?
>
>전원 연결을 어떻게 해야하는지좀 알려주세요
>
>
>그리고 구동소스가 어떤지에 따라서 모터에 발열이 생길수도 있는건가요?
|
||||
