Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 1868 | 답변완료AM-DC1-3D 모듈에 관한 문의 사항 | 김국하 | 2008-10-29 | 1,393 |
|
ATmega 128을 이용해서 DC모터를 PWM신호로 구동하려고 합니다.
그래서 AM-DC1-3D 모듈을 사용하였는데요,, ATmega128에서 나오는
12V 전원을 인가해서 모터를 구동하였는데 조금 돌아가다가 점점
속도가 줄면서 멈추는 것입니다. 어디가 문제가 있는걸까요??
ATmega는 아답타를 전원으로 사용하였습니다.
만약 외부전원이 필요하다면 몇V, 몇A가 있어야 적당한 토크를
낼수 있나요??
그리고 외부전원없이도 내부전원으로 구동하는 방법도 알려주시기 바랍니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
첨부해 드린 소스를 참고하시면 좋을 것 같네요.
1-3D 모듈을 이용하여, PWM 제어를 통하여, 속도를 올렸다 내렸다 할 수 있도록 스위치 보드로 조절합니다. 또한, 도는 방향도 변경 가능하도록 제작되어 있습니다.
스위치 보드 D0~D3까지를 사용하도록 되어 있습니다.
모터의 종류와 크기 등에 따라서 사용하는 전압 전류가 달라 지겠습니다.
사용하는 모터도 모르면서 일방적으로 얼마다 라고 말하기는 어렵구요.
모터 구매하신 메이커의 웹싸이트에 가시면, 자세한 전류, 전압 스펙이 나와 있을겁니다. 사용하시는 아답타 문제일 수도 있구요. 프로그램 문제일 수도 있겠네요.
DC 모터의 경우 외부 전원으로 구동하게 되어 있구요. 사용 전류가 적고, 전압도 5V 또는 12V 일 경우, 본사의 메인보드에 있는 전압 출력용 2핀 커넥터와 1:1로 연결하면 전압이 공급됩니다. 물론, 메인보드 연결한 아답타의 전압 전류를 확인하셔야 겠죠.
수고하세요.
>ATmega 128을 이용해서 DC모터를 PWM신호로 구동하려고 합니다.
>그래서 AM-DC1-3D 모듈을 사용하였는데요,, ATmega128에서 나오는
>12V 전원을 인가해서 모터를 구동하였는데 조금 돌아가다가 점점
>속도가 줄면서 멈추는 것입니다. 어디가 문제가 있는걸까요??
>ATmega는 아답타를 전원으로 사용하였습니다.
>만약 외부전원이 필요하다면 몇V, 몇A가 있어야 적당한 토크를
>낼수 있나요??
>그리고 외부전원없이도 내부전원으로 구동하는 방법도 알려주시기 바랍니다.
|
||||
| 1867 | 답변완료3축 가속도 센서와 기타 몇 가지에 대해 질문드립니다. | 조현욱 | 2008-10-29 | 1,418 |
|
아직 보드를 제외한 다른 부품들을 구입한 상태가 아니라
좀 바보같은 질문일 수도 있겠지만, 어쨌든 여쭤보겠습니다.
현재 AVR ATMega128 PRO 보드를 갖고 있으며,
여기에 3축 가속도 센서와 무선통신모듈, +a를 달아서
인체 움직임의 가속도 및 속도를 측정할 수 있는 장비를
만들어보려 하고 있습니다.
1. 순간적으로, 폭발적으로 가속되는 움직임도 측정이 가능할까요?
(ex: 발차기 동작, 팔을 휘두르는 동작 등)
2. 혹시 추천해주실 만한 (ATMega 128 PRO 보드와 호환이 잘되는) 무선통신용
모듈 (블루투스건, 지그비건 간에) 이 있다면 추천해주실수 있으신지요.
무턱대고 아무거나 샀다가 세부 스팩 같은 것들이 맞지 않아서
변환해주느라 고생하거나 못쓰는 것보다는 부끄럽게라도 추천을 받는 것이
더 나을것 같아서 질문드립니다.
아까 오후에 전화드렸더니 요즘 행사 기간이라서 아무도 없으시다고 하더군요.
어떤 행사인지는 모르겠지만, 성공적으로 치루시길 기원하며
빠른 답변도^^; 부탁드리겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
질문에 답변해 드릴께요.
1. 가능합니다. 3축 가속도 센서는 X,Y,Z 축 각각에 대한 순간 가속도도 잡아낼 수 있으므로, 가능합니다. 3축을 모두 하시게 될 경우, AVR에서 최대 각각 5kHz 정도로 채널마다 샘플링 하시면 됩니다. 채널당 1kHz 이상만 쓰시면 좋을 것 같네요.
2. 본사의 RFMOD라는 RFMODULE 이 발매 대기중이며, 테스트 중에 있습니다.
이번주까지 테스트를 마치고, 다음주부터, 판매를 진행할 예정입니다. 참고하시기 바랍니다. 왠만한 테스트는 마친상태이므로, 구매도 가능하십니다.
감사합니다.
>아직 보드를 제외한 다른 부품들을 구입한 상태가 아니라
>좀 바보같은 질문일 수도 있겠지만, 어쨌든 여쭤보겠습니다.
>
>현재 AVR ATMega128 PRO 보드를 갖고 있으며,
>여기에 3축 가속도 센서와 무선통신모듈, +a를 달아서
>인체 움직임의 가속도 및 속도를 측정할 수 있는 장비를
>만들어보려 하고 있습니다.
>
>1. 순간적으로, 폭발적으로 가속되는 움직임도 측정이 가능할까요?
> (ex: 발차기 동작, 팔을 휘두르는 동작 등)
>
>2. 혹시 추천해주실 만한 (ATMega 128 PRO 보드와 호환이 잘되는) 무선통신용
>모듈 (블루투스건, 지그비건 간에) 이 있다면 추천해주실수 있으신지요.
>무턱대고 아무거나 샀다가 세부 스팩 같은 것들이 맞지 않아서
>변환해주느라 고생하거나 못쓰는 것보다는 부끄럽게라도 추천을 받는 것이
>더 나을것 같아서 질문드립니다.
>
>아까 오후에 전화드렸더니 요즘 행사 기간이라서 아무도 없으시다고 하더군요.
>어떤 행사인지는 모르겠지만, 성공적으로 치루시길 기원하며
>빠른 답변도^^; 부탁드리겠습니다.
|
||||
| 1866 | 답변완료RS232연결 | 김주강 | 2008-10-29 | 1,455 |
|
이번에 pro 모듈을 구입하여서 사용하고 있습니다.
회로 보기도 귀찮고해서 질문 드립니다.
GPS 센서를 갖고서 USART0에 TTL 레벨로 연결하고
USART1으로 MFC와 RS232 통신을 할려고 합니다.
GPS TTL 레벨로 USART 연결할 수 있는 단자가 나와 있는가 해서
질문 드립니다. 매뉴얼에는 전부 MAX232를 통한것으로
되어 있는것 같아서입니다.
만약 없다면 단자 찾아서 납땜해야 되는지요?
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
회로도 안보셔도, 다 아시네요.^^
짐작하신 대로 밖에 나와 있는 J204, J205 커넥터인 UART0, UART1은
RS-232C 레벨(PC Level, 12V level) 입니다.
TTL Level(5V level)을 쓰시려면, 따로 빼셔야 하구요.
아래에 보시면, 핀에 대한 내용이 나와 있으니, 참고 바랍니다.
http://newtc.co.kr/product_img/AM-128PRO_3.jpg
편하게 작업하시려면,
AVR MEGA 128 개발보드 (소형) AB-M128-B 38,500원 를 구매하시면,
AM-128PRO 를 꽂아서 메인보드에 있는 TTL Level 쪽의 커넥터 4핀이 나와 있으니, 그걸 이용하시면 더욱 편리합니다.
그리고, 본사의 AM-128PRO는 평상시 PC levle로 쓰다가 TTL Level로 쓰시고 싶으면, 커넥터에서 직접 빼면 동작 되도록 되어 있는 데, 회로적으로 부가된 부분이 있어서, 되는 것입니다. 회로 제작하기에 따라서, 안될 수도 있는 부분입니다.
본사의 기술이 추가된 부분이니 믿고 쓰시면 되겠습니다.
수고하세요.
수고하세요.
>
> 이번에 pro 모듈을 구입하여서 사용하고 있습니다.
> 회로 보기도 귀찮고해서 질문 드립니다.
>
> GPS 센서를 갖고서 USART0에 TTL 레벨로 연결하고
> USART1으로 MFC와 RS232 통신을 할려고 합니다.
>
> GPS TTL 레벨로 USART 연결할 수 있는 단자가 나와 있는가 해서
> 질문 드립니다. 매뉴얼에는 전부 MAX232를 통한것으로
> 되어 있는것 같아서입니다.
>
> 만약 없다면 단자 찾아서 납땜해야 되는지요?
|
||||
| 1865 | 답변완료AVR MEGA 128pro 개발키트 사용(SW사용법) | 윤남준 | 2008-10-29 | 1,287 |
|
수고하십니다.
AVR MEGA 128pro 개발키트 사용하여
스위치를 연습하려고 하는데
도무지 않됩니다.
보드의 S102.와 S103을 교대로 누르면
보드의 D102와 D103의 LED가 교대로 ON될 수 있는
간단한 프로그램 하나만 올려주십시요.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
예제를 올려드립니다.
참고하세요.
감사합니다.
>수고하십니다.
>AVR MEGA 128pro 개발키트 사용하여
>스위치를 연습하려고 하는데
>도무지 않됩니다.
>
>보드의 S102.와 S103을 교대로 누르면
>보드의 D102와 D103의 LED가 교대로 ON될 수 있는
>간단한 프로그램 하나만 올려주십시요.
>
|
||||
| 1864 | 답변완료엔코더를 손으로 돌리는 방향으로 dc모터 정역회전에 대해서요 (초보임니다) | kkmych | 2008-10-29 | 1,319 |
|
엔코더 제품주소는요
http://www.i-parts.co.kr/?doc=cart/item.php&it_id=1179198682
엔코더를 사용하고 있습니다.
dc모터 소스를 이용하여 엔코더를 돌리고싶은데요 잘안되서요 쉽게 알려주시면 감사하겠습니다..
#include<mega128.h>
#define MOTORPORT1 PORTC
#define ON 1
#define OFF 0
#define CW 1
#define CCW 0
void M1A(int onoff){
if(onoff==ON)
MOTORPORT1=MOTORPORT1|0x01;
else
MOTORPORT1=MOTORPORT1&0xFE;
}
void M1A_(int onoff){
if(onoff==ON)
MOTORPORT1=MOTORPORT1|0x02;
else
MOTORPORT1=MOTORPORT1&0xFD;
}
void Motor1(int CWCCW){
if(CWCCW==CW){
M1A(ON);
M1A_(OFF);
}else{
M1A(OFF);
M1A(ON);
}
}
void delay(int delaytime){
int i,j;
for(i=0;i<1000;i++){
for(j=0;j<delaytime;j++){
}
}
}
void main(void)
{
while(1){
Motor1(0);
delay(1000);
Motor1(1);
delay(1000);
}
}
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 이용하여 주셔서 감사합니다.
엔코더의 출력을 돌려보시면서, 오실로로 찍어 보세요.
스펙과 비교해 보시구요. 그 파형에 따라서, 프로그램을 짜셔야 할 것 같습니다.
좀 더 자세하게 질문하여 주시면 좋겠네요.
수고하세요.
>엔코더 제품주소는요
>http://www.i-parts.co.kr/?doc=cart/item.php&it_id=1179198682
>엔코더를 사용하고 있습니다.
>
>dc모터 소스를 이용하여 엔코더를 돌리고싶은데요 잘안되서요 쉽게 알려주시면 감사하겠습니다..
>
>#include<mega128.h>
>#define MOTORPORT1 PORTC
>#define ON 1
>#define OFF 0
>#define CW 1
>#define CCW 0
>
>void M1A(int onoff){
>if(onoff==ON)
> MOTORPORT1=MOTORPORT1|0x01;
> else
> MOTORPORT1=MOTORPORT1&0xFE;
> }
>void M1A_(int onoff){
> if(onoff==ON)
> MOTORPORT1=MOTORPORT1|0x02;
>else
> MOTORPORT1=MOTORPORT1&0xFD;
> }
>void Motor1(int CWCCW){
>if(CWCCW==CW){
>M1A(ON);
>M1A_(OFF);
>}else{
>M1A(OFF);
>M1A(ON);
>}
>}
>void delay(int delaytime){
>int i,j;
>for(i=0;i<1000;i++){
>for(j=0;j<delaytime;j++){
>}
>}
>}
>void main(void)
>{
>
>while(1){
>Motor1(0);
>delay(1000);
>Motor1(1);
>delay(1000);
>}
>}
>
>
>
|
||||
| 1863 | 답변완료RF모듈때문에 문의드립니다. | 김영인 | 2008-10-29 | 1,399 |
|
RF모듈을 구입했던 학생입니다. 안되서 한번 교환을 했는데
다시 해봤더니 한개는 잘 작동하는거 같은데 다른 하나가 계속해서
리셋이 걸리는 현상이 발생합니다.
오늘부터 행사 시작이시라고 들었는데 언제 가면 만날수 있을까요?
관리자 답변
안녕하세요?
오늘(10월 30일)은 사무실에 있으니, 방문 바랍니다.
감사합니다.
>RF모듈을 구입했던 학생입니다. 안되서 한번 교환을 했는데
>
>다시 해봤더니 한개는 잘 작동하는거 같은데 다른 하나가 계속해서
>
>리셋이 걸리는 현상이 발생합니다.
>
>오늘부터 행사 시작이시라고 들었는데 언제 가면 만날수 있을까요?
|
||||
| 1862 | 답변완료R300 모터 구입 및 IRS 센서 불량 문의 | 김명식 | 2008-10-29 | 1,467 |
|
안녕하세요.
라인 트레이서를 구입했습니다.
R350 모터가 너무 느려서 R300 모터를 써서 테스트를 하려고 합니다.
아울러 센서쪽이 좀 안 좋은데,
인식 성능이 왼쪽이 좋지 않아 오른쪽으로만 돌아가는 경향이 있습니다.
완전히 안되지는 않고, 됐다 안됐다 하네요.
접점은 이상없습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
센서쪽을 좀 만져 보셔서, 둘다 90도로 땅을 보고 있지 않고, 서로 약간 마주볼 수 있도록 살짝 마주보면서 구부러지게 해 보시면, 감도가 좋아집니다.
감사합니다.
>안녕하세요.
>
>라인 트레이서를 구입했습니다.
>
>R350 모터가 너무 느려서 R300 모터를 써서 테스트를 하려고 합니다.
>
>아울러 센서쪽이 좀 안 좋은데,
>
>인식 성능이 왼쪽이 좋지 않아 오른쪽으로만 돌아가는 경향이 있습니다.
>
>완전히 안되지는 않고, 됐다 안됐다 하네요.
>
>접점은 이상없습니다.
>
>
|
||||
| 1861 | 답변완료또 질문요~ | 김춘연 | 2008-10-29 | 1,396 |
|
좋은 아침입니다.
계속 질문을 하면서 많이 배워 이젠 간단한 stepping motor 제어는 하고 있습니다.
*************************************************************************
아래와 같이 timer를 이용해 스테핑 모터가 M3(half step mode)로 360도 시계방향으로 회전하고 다시 시계 반대방향으로 회전하는 프로그램을 짜보았습니다.
*************************************************************************
#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x00) //sixteenth step mode
volatile int num=1;
volatile int step=1;
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 10KHz
// actual value: 10.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0x83; //set count
OCR0 = 0x7D;
TCCR0 = 0x03; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
TCNT0 = 0xf0; //reload counter value
if (num>=100)
{
if (step<=6400)
{
MOTOR_STEP_M0;
MOTOR_RIGHT_CW;
MOTOR_RIGHT_CLK;
PORTG = ~PORTG;
}
else if (step>6401 && step<=12800)
{
MOTOR_STEP_M0;
MOTOR_RIGHT_CCW;
MOTOR_RIGHT_CLK;
PORTG = ~PORTG;
}
if (step<12801){
step++;
}else{
MOTOR_DISABLE;
step=1;
}
num=1;
}
else
{
num++;
}
}
*************************************************************************
다음은 질문입니다.
actual value가 10KHz이니 1초당 10000번 void timer0_ovf_isr(void) 함수를 부르게 되잖아요. 이때 num>=100을 이용해서 1초에 100번 sixteenth step mode(한 clock당 0.1125도 회전)로 MOTOR_RIGHT_CLK;를 실행하게 됩니다. 즉 1초당 11.25도 회전합니다. 그러면 360도를 회전하기 위해서는 3200번 (step=3200) MOTOR_RIGHT_CLK;를 실행하면 되고 또 시간은 32초 소요됩니다.
1) 이상 저의 생각인데요 맞나요? 실제로는 step=6400을 해야 약 360도 회전을 합니다. 왜 저의 생각과 실험결과가 틀린지 모르겠어요.
2) motor가 천천히 돌아갈때 motor 축에 손가락을 살짝 대고 있으면 step을 느낄 수 있는데 프로그램에서 step=6400하면 실제로 느껴지는 step은 3200번 입니다. 왜 그러나요?
이번이 마지막 질문이길 간절히 바라면서...
그 동안 친절하고 빠른 답변에 너무 고마웠습니다.
그럼 좋은 하루 되세요~
관리자 답변
안녕하세요? TCNT0 값이 init 함수하고, ovf 함수 에서 서로 값이 다르더군요.
ovf 쪽을 init함수와 같은 값으로 만드셔야 할 것 같습니다.
수고하세요.
아래의 값은 16MHz 클럭을 사용할 경우에 만들어본 10kHz 초기함수와 ovf 함수입니다.
참고하세요.
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 10KHz
// actual value: 10.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0x38; //set count
OCR0 = 0xC8;
TCCR0 = 0x02; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = 0x38; //reload counter value
}
>좋은 아침입니다.
>계속 질문을 하면서 많이 배워 이젠 간단한 stepping motor 제어는 하고 있습니다.
>
>*************************************************************************
>아래와 같이 timer를 이용해 스테핑 모터가 M3(half step mode)로 360도 시계방향으로 회전하고 다시 시계 반대방향으로 회전하는 프로그램을 짜보았습니다.
>*************************************************************************
>
>#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x00) //sixteenth step mode
>
>volatile int num=1;
>volatile int step=1;
>
>//TIMER0 initialize - prescale:8
>// WGM: Normal
>// desired value: 10KHz
>// actual value: 10.000KHz (0.0%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0x83; //set count
> OCR0 = 0x7D;
> TCCR0 = 0x03; //start timer
>}
>
>#pragma interrupt_handler timer0_ovf_isr:17
>void timer0_ovf_isr(void)
>{
> TCNT0 = 0xf0; //reload counter value
> if (num>=100)
> {
> if (step<=6400)
> {
> MOTOR_STEP_M0;
> MOTOR_RIGHT_CW;
> MOTOR_RIGHT_CLK;
> PORTG = ~PORTG;
> }
> else if (step>6401 && step<=12800)
> {
> MOTOR_STEP_M0;
> MOTOR_RIGHT_CCW;
> MOTOR_RIGHT_CLK;
> PORTG = ~PORTG;
> }
> if (step<12801){
> step++;
> }else{
> MOTOR_DISABLE;
> step=1;
> }
> num=1;
> }
> else
> {
> num++;
> }
>}
>*************************************************************************
>다음은 질문입니다.
>
>actual value가 10KHz이니 1초당 10000번 void timer0_ovf_isr(void) 함수를 부르게 되잖아요. 이때 num>=100을 이용해서 1초에 100번 sixteenth step mode(한 clock당 0.1125도 회전)로 MOTOR_RIGHT_CLK;를 실행하게 됩니다. 즉 1초당 11.25도 회전합니다. 그러면 360도를 회전하기 위해서는 3200번 (step=3200) MOTOR_RIGHT_CLK;를 실행하면 되고 또 시간은 32초 소요됩니다.
>1) 이상 저의 생각인데요 맞나요? 실제로는 step=6400을 해야 약 360도 회전을 합니다. 왜 저의 생각과 실험결과가 틀린지 모르겠어요.
>2) motor가 천천히 돌아갈때 motor 축에 손가락을 살짝 대고 있으면 step을 느낄 수 있는데 프로그램에서 step=6400하면 실제로 느껴지는 step은 3200번 입니다. 왜 그러나요?
>
>이번이 마지막 질문이길 간절히 바라면서...
>그 동안 친절하고 빠른 답변에 너무 고마웠습니다.
>그럼 좋은 하루 되세요~
>
>
|
||||
| 1860 | 답변완료질문요 | 황재연 | 2008-10-29 | 1,435 |
|
스텝모터제어를 직접만들어볼려고하는데요,. 커넥터 부분에 몰렉스부분의 정확한 스펙이 어떻게 되죠...대충보고샀는데 다르네요..아그리고 전원공급커넥터의 이름도 부탁드려요..사서 제출했는데 직접납떔하라고 해서 올립니다. 수고하세요
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 이용하여 주셔서 감사합니다.
본사의 스테핑 모터 컨트롤러는 모터 커넥터로 몰렉스 5267-6핀 스트레이트를 사용하고 있습니다. 또한, 전원 공급용 커넥터의 스펙은 몰렉스 5045-2 스트레이트 입니다.
감사합니다.
>스텝모터제어를 직접만들어볼려고하는데요,. 커넥터 부분에 몰렉스부분의 정확한 스펙이 어떻게 되죠...대충보고샀는데 다르네요..아그리고 전원공급커넥터의 이름도 부탁드려요..사서 제출했는데 직접납떔하라고 해서 올립니다. 수고하세요
|
||||
| 1859 | 답변완료uart로 스텝모터 제어하는 소스인데 이것도 좀 봐주시겠습니까? | 안녕 | 2008-10-28 | 1,540 |
|
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
void port_init(void)
{
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
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();
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) ; // UDRE, data register empty
UDR0 = c;
return c;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
/* 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++);
//for(j=1;j<600;j++);
}
}
//
void main(void)
{
int i=24;
volatile unsigned char stepleft=0, stepright=0;
unsigned char ch;
init_devices();
//insert your functional code here...
printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
MOTOR_PORT_DDR = 0xff;
while(1){
stepright = RIGHTmotorOneClock(stepright, 1);
stepleft = LEFTmotorOneClock(stepleft, 0);
delay(3);
//MOTOR_PORT = stepleft|stepright;
scanf("%c", &ch);
switch(in){
case 'A' : MOTOR_PORT=stepright;
delay(600);
break;
case 'B' : MOTOR_PORT=stepright;
delay(600);
break;
case 'C' : MOTOR_PORT = stepleft|stepright;
delay(600);
break;
default : //printf("\\r\\nPressed E~Z or other");
break;
}
// }
if((PIND & 0x20)==0x20){
//printf("\\r\\nPressed PortD5");
}
}
}
빨간부분이 없을때는 무한루프로 스텝모터가 정상 작동합니다.
시리얼통신으로 피시에서 제어하고 싶어서 다른 소스를 보고 좀 응용해 보았는데....
다른 소스를 첨가하면 회로가 동작을 안하네요..
다른 uart 예제를 실행할때는 또 잘되다가...
왜 안되는지 모르겠습니다.
딜레이 값때문이것 같기도해서 딜레이도 바꿔보았지만...
이 문제좀 해결해주십시요...
아 참고로 1-2상 스텝모터 제어 하고있습니다.
탈조현상은 없었구요.
iccavr로 컴파일 했습니다.
관리자 답변
<a href=http://www.watchesshow.com target=_blank>http://www.watchesshow.com</a> replica watches
<a href=http://www.watchesshow.com/rolex-watches.html target=_blank>http://www.watchesshow.com/rolex-watches.html</a> replica rolex watches
<a href=http://www.watchesshow.com/cartier-watches.html target=_blank>http://www.watchesshow.com/cartier-watches.html</a> replica cartier watches
<a href=http://www.watchesshow.com/breitling-watches.html target=_blank>http://www.watchesshow.com/breitling-watches.html</a> replica breitling watches
<a href=http://www.watchesshow.com/tag_heuer-watches.html target=_blank>http://www.watchesshow.com/tag_heuer-watches.html</a> replica tag heuer watches
<a href=http://www.watchesshow.com/omega-watches.html target=_blank>http://www.watchesshow.com/omega-watches.html</a> replica omega watches
<a href=http://www.watchesshow.com/a_lange_and_sohne-watches.html target=_blank>http://www.watchesshow.com/a_lange_and_sohne-watches.html</a> Replica A Lange and Sohne Watches
<a href=http://www.watchesshow.com/armani-watches.html target=_blank>http://www.watchesshow.com/armani-watches.html</a> Replica ARMANI Watches
<a href=http://www.watchesshow.com/audemars_piguet-watches.html target=_blank>http://www.watchesshow.com/audemars_piguet-watches.html</a> Replica AUDEMARS PIGUET Watches
<a href=http://www.watchesshow.com/bell_and_ross-watches.html target=_blank>http://www.watchesshow.com/bell_and_ross-watches.html</a> Replica BELL AND ROSS Watches
<a href=http://www.watchesshow.com/bvlgari-watches.html target=_blank>http://www.watchesshow.com/bvlgari-watches.html</a> Replica BVLGARI Watches
<a href=http://www.watchesshow.com/franck_muller-watches.html target=_blank>http://www.watchesshow.com/franck_muller-watches.html</a> Replica FRANCK MULLER Watches
<a href=http://www.watchesshow.com/gucci-watches.html target=_blank>http://www.watchesshow.com/gucci-watches.html</a> Replica GUCCI Watches
<a href=http://www.watchesshow.com/hublot-watches.html target=_blank>http://www.watchesshow.com/hublot-watches.html</a> Replica HUBLOT Watches
<a href=http://www.watchesshow.com/iwc-watches.html target=_blank>http://www.watchesshow.com/iwc-watches.html</a> Replica IWC Watches
<a href=http://www.watchesshow.com/longines-watches.html target=_blank>http://www.watchesshow.com/longines-watches.html</a> Replica LONGINES Watches
<a href=http://www.watchesshow.com/lv-watches.html target=_blank>http://www.watchesshow.com/lv-watches.html</a> Replica LV Watches
<a href=http://www.watchesshow.com/montblanc-watches.html target=_blank>http://www.watchesshow.com/montblanc-watches.html</a> Replica MONTBLANC Watches
<a href=http://www.watchesshow.com/movado-watches.html target=_blank>http://www.watchesshow.com/movado-watches.html</a> Replica MOVADO Watches
<a href=http://www.watchesshow.com/panerai-watches.html target=_blank>http://www.watchesshow.com/panerai-watches.html</a> Replica PANERAI Watches
<a href=http://www.watchesshow.com/parmigiani-watches.html target=_blank>http://www.watchesshow.com/parmigiani-watches.html</a> Replica PARMIGIANI Watches
<a href=http://www.watchesshow.com/patek_philippe-watches.html target=_blank>http://www.watchesshow.com/patek_philippe-watches.html</a> Replica PATEK PHILIPPE Watches
<a href=http://www.watchesshow.com/rado-watches.html target=_blank>http://www.watchesshow.com/rado-watches.html</a> Replica RADO Watches
<a href=http://www.watchesshow.com/tissot-watches.html target=_blank>http://www.watchesshow.com/tissot-watches.html</a> Replica TISSOT Watches
<a href=http://www.watchesshow.com/tudor-watches.html target=_blank>http://www.watchesshow.com/tudor-watches.html</a> Replica TUDOR Watches
<a href=http://www.watchesshow.com/vacheron_constantin-watches.html target=_blank>http://www.watchesshow.com/vacheron_constantin-watches.html</a> Replica VACHERON CONSTANTIN Watches
<a href=http://www.watchesshow.com/miscellaneous-watches.html target=_blank>http://www.watchesshow.com/miscellaneous-watches.html</a> Replica Miscellaneous Watches
|
||||
| 1858 | 답변완료LCD 4비트 제어소스좀 부탁드려도 될까요? | 안녕 | 2008-10-28 | 1,461 |
|
자료실에 있는 소스는 8비트 소스에 포트를 두개 사용하는데요
저는 PORTA 하나에
RS/RW/E
0 / 1 / 2
그리고
data가 4~7 에 물려있습니다.
8비트 제어소스로 변경해보려고 했는데 힘들어서 부탁드립니다.
아 그리고 이름은 본명입니다..^^
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
죄송하지만, 저희가 제공하는 소스 외에 따로 짜드리지는 못하고 있습니다.
감사합니다.
>자료실에 있는 소스는 8비트 소스에 포트를 두개 사용하는데요
>
>저는 PORTA 하나에
>
>RS/RW/E
> 0 / 1 / 2
>
>그리고
>
>data가 4~7 에 물려있습니다.
>
>8비트 제어소스로 변경해보려고 했는데 힘들어서 부탁드립니다.
>
>아 그리고 이름은 본명입니다..^^
>
|
||||
| 1857 | 답변완료무선모듈 질문입니다. | 강윤태 | 2008-10-28 | 1,463 |
|
AM-RFMOD 모듈이 무선랜 카드를 이용한 방식인가요
아니면 고속모뎀.. 일명 와이브로로 알고있는 유에스비로 모뎀을 연결하여
사용할수 있는 모듈인가요?
전 후자방식의 모듈을 찾고있습니다..
관리자 답변
안녕하세요? 고객님,
AM-RFMOD는 2.4GHz의 데이터 통신용 모듈입니다.
N.T.C에서 개발한 독자적인 무선 프로토콜로 동작합니다.
총 86개 채널을 지원하며, 사용 방법에 따라, 1:N 통신 1:1 통신등의 구현이 가능합니다.
2,400bps~230,400 bps까지를 지원하며, 선택 가능합니다.
같은 주파수에서도 ID에 따라 서로 구별하여 통신이 가능하도록 되어 있습니다.
따라서, 물리적인 채널이 86개이지 이론적으로는 수많은 채널 통신이 가능합니다.
찾으시는 모듈과는 약간 다른 모듈입니다.
감사합니다.
>AM-RFMOD 모듈이 무선랜 카드를 이용한 방식인가요
>
>아니면 고속모뎀.. 일명 와이브로로 알고있는 유에스비로 모뎀을 연결하여
>
>사용할수 있는 모듈인가요?
>
>전 후자방식의 모듈을 찾고있습니다..
|
||||
| 1856 | 답변완료USB ISP 문제요. | 박호열 | 2008-10-28 | 1,496 |
|
USB ISP랑 Atmega128 pro 를 사용하는 학생입니다.^^
저번에 고쳐 주신거 많이 감사드립니다^^
허나 저희가 사용하는 USB ISP 가운데 하나가... 갑자기 상태가 이상해 졌네요
연결을 해도....다운이 안되고요..... 특히 COM 포트도 잡히지 않습니다.
상태 LED는 전원을 연결 안해도...불이 들어와 있네요..
혹시나 해서 플라스틱비닐로 덮혀져 있는거 까서 전원을 찍어 봤는데...나름
정상 작동을 하는것 같기는 한데.....일단 저희가 가지고 있는 3개중에 한개만
이러네요.ㅠㅠ 저번처럼 도움을 주셨으면 감사하겠습니다.
아~~ 그리고 128Pro 중에 몇개는 특이하게. A포트 1번핀, F포트 몇번 핀만
작동이 안되네요.ㅠㅠ 이거 128을 사용하면 할수록 참....이상한 일만 벌어집니다.
맨날 이런저런 문제 때문에...128 모듈을 하나씩 사다 보니깐..어느덧
8~10개로 늘어나 버렸네요.ㅠㅠ 허나 작동 되는건 막상 3~4개 밖에 안된다는게
참....마음이 아픔니다.ㅠㅠ
Codevision 이랑 AVR Studio 를 사용하고 있고요.. 노트북을 사용하고 있습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
A/S를 하시는 것이 좋겠습니다.
이번 주 수~금요일은 킨텍스 전시회 참가 관계로 직접 방문하여 A/S하거나, 질문받는 것이 어렵습니다. 방문하시게 되면, 본사에 맡겨 주시고, A/S에는 최소 하루 ~이틀 정도의 시간이 걸리게 됩니다. 비용이 발생할 경우, A/S 하기 전에 미리 전화를 드리게 됩니다.
자세한 것은 FAQ의 A/S 절차를 참고 바랍니다.
감사합니다.
> USB ISP랑 Atmega128 pro 를 사용하는 학생입니다.^^
>
> 저번에 고쳐 주신거 많이 감사드립니다^^
>
> 허나 저희가 사용하는 USB ISP 가운데 하나가... 갑자기 상태가 이상해 졌네요
>
> 연결을 해도....다운이 안되고요..... 특히 COM 포트도 잡히지 않습니다.
>
> 상태 LED는 전원을 연결 안해도...불이 들어와 있네요..
>
> 혹시나 해서 플라스틱비닐로 덮혀져 있는거 까서 전원을 찍어 봤는데...나름
>
> 정상 작동을 하는것 같기는 한데.....일단 저희가 가지고 있는 3개중에 한개만
>
> 이러네요.ㅠㅠ 저번처럼 도움을 주셨으면 감사하겠습니다.
>
> 아~~ 그리고 128Pro 중에 몇개는 특이하게. A포트 1번핀, F포트 몇번 핀만
>
> 작동이 안되네요.ㅠㅠ 이거 128을 사용하면 할수록 참....이상한 일만 벌어집니다.
>
> 맨날 이런저런 문제 때문에...128 모듈을 하나씩 사다 보니깐..어느덧
>
> 8~10개로 늘어나 버렸네요.ㅠㅠ 허나 작동 되는건 막상 3~4개 밖에 안된다는게
>
> 참....마음이 아픔니다.ㅠㅠ
>
> Codevision 이랑 AVR Studio 를 사용하고 있고요.. 노트북을 사용하고 있습니다.
|
||||
| 1855 | 답변완료질문요~ | 김춘연 | 2008-10-28 | 1,364 |
|
안녕하세요?
자꾸 번거롭게 해서 죄송합니다.
하지만 혼자서는 잘 몰라서 진척이 없어 답답하기만 하네요.
그래서 이렇게 또 질문을 합니다.
AM-MS2_Atmega128_timer이용 예제 프로그램에 보면
1) timer0_init함수 주석에 prescale:8 이라는것이 있는데 이것이 의미하는 것이 무엇인지요? crystal이 16Mhz로 되었으니 16Mhz/8 로 clock이 발생한다는 건가요? 그러면 그 아래 desired value: 10KHz, actual value: 10KHz랑 무슨 관계가 있는지요? 이런 수치들이 1초당 몇개의 클럭이 발생해서 모터가 몇번 돌아가게 하는 것이랑 무슨 관계있는지요?
2)timer는 언제 시작하나요? 그리고 timer0_ovf_isf함수는 언제 불러주나요? main 함수에 보면 time0_ovf_isf함수를 불러주는 문이 없어요. atmega128설명을 보면 timer가 0일 때 불러준다고 하는데 자동으로 되는 건가요?
3) delay함수를 이용했을 때 얼만큼의 시간동안 지연시키는지 알고 싶어서 그런데요 delay함수 시작하는 시간과 끝나는 시간을 알아내는 방법 없나요? 예를 들어 main함수 에서 timer를 작동시키고 delay 함수를 수행한 다음 그때의 시간을 보여주는 거요.
잘 부탁드리고 미리 감사드립니다.
그럼 좋은 하루되세요~
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 이용하여 주셔서 감사합니다.
질문에 답변해 드릴께요.
1) 2) prescale은 타이머를 발생시킬 때, 사전에 scale을 줘서 Main클럭 몇번마다 한번씩 타이머용 클럭을 발생시킬 건지 등을 결정합니다. 말씀하신 것과 관련이 있죠. 그리고, desired value(원하던 값)인 10kHz로 actual value(실제값)이 일치하게 발생한다는 거구요. 초당 10kHz개씩 타이머 overflow가 발생하면서,
자동으로 ovf 함수로 들어가게 됩니다. ovf 함수에서 타이머를 다시 초기화 해 주셔야 하구요. 지난 번에도 말씀 드렸지만, 그 때마다 클럭을 발생시키게 되면, 초당 만번이나 모터 클럭이 발생되게 되는 데, 너무 빨라서, 모터가 돌지 못하므로,
초당 몇번에서 몇백번 정도까지 원하는 주파수로 돌려야 겠습니다. 타이머를 하시려면, 기본적으로 C 언어를 잘 이용하셔야 겠습니다.
3) delay 함수를 재 보시려면, 가장 좋은 것은 오실로 스코프로 재 보는 것이겠습니다. 일반적으로 함수에 일단 빠졌다가 아무것도 안하고 그냥 나오기만 해도, ICCAVR의 경우 20us 정도 걸리더군요. 거기에 i++ 하는 시간이 더해지겠지요.
대략 1백만번 정도 i++하는 delay 함수의 경우 1초 정도 되는 것 같았습니다.
정확한 것은 오실로로 재어 보세요.
수고하세요.
>안녕하세요?
>자꾸 번거롭게 해서 죄송합니다.
>하지만 혼자서는 잘 몰라서 진척이 없어 답답하기만 하네요.
>그래서 이렇게 또 질문을 합니다.
>
>AM-MS2_Atmega128_timer이용 예제 프로그램에 보면
>1) timer0_init함수 주석에 prescale:8 이라는것이 있는데 이것이 의미하는 것이 무엇인지요? crystal이 16Mhz로 되었으니 16Mhz/8 로 clock이 발생한다는 건가요? 그러면 그 아래 desired value: 10KHz, actual value: 10KHz랑 무슨 관계가 있는지요? 이런 수치들이 1초당 몇개의 클럭이 발생해서 모터가 몇번 돌아가게 하는 것이랑 무슨 관계있는지요?
>
>2)timer는 언제 시작하나요? 그리고 timer0_ovf_isf함수는 언제 불러주나요? main 함수에 보면 time0_ovf_isf함수를 불러주는 문이 없어요. atmega128설명을 보면 timer가 0일 때 불러준다고 하는데 자동으로 되는 건가요?
>
>3) delay함수를 이용했을 때 얼만큼의 시간동안 지연시키는지 알고 싶어서 그런데요 delay함수 시작하는 시간과 끝나는 시간을 알아내는 방법 없나요? 예를 들어 main함수 에서 timer를 작동시키고 delay 함수를 수행한 다음 그때의 시간을 보여주는 거요.
>
>잘 부탁드리고 미리 감사드립니다.
>그럼 좋은 하루되세요~
>
>
|
||||
| 1854 | 답변완료JTAG ICE mk-II 에서 AM-128 PRO 연결 방법 문의 드립니다. | 김동현 | 2008-10-28 | 1,516 |
|
안녕하세요?
저희 회사에 JTAG ICE mk-II 장비가 있고
AM-128 PRO 모듈이 있어서
1. AM-128 PRO ISP 단자와 JTAG ICE mk-II를 연결 하였고
2. AM-128 PRO 보드에서 VCC , GND 만 연결 하여 전원 5V을 주었습니다.
3. AVR STUDIO에서 장치 설정후 휴즈 설정을 하려니 첨부 파일과 같은 메세지가
출력 됩니다.
아래는 문의 사항 입니다.
1. 설정 부분이 잘못 되었나요? AVR STUDIO 는 4.14 버전 입니다.
2. AM-128 PRO 보드가 불량 인가요? 아님 ISP 케이블 연결이 잘못 되었나요?
(원래 10핀 커넥터에서 MK-II 설명서를 보고 ISP 연결 방법을 따라서 배선을
연결했습니다.)
3. AVR MEGA 128 개발보드를 구입 해야 AM-128 PRO 구동이 가능 한가요?
4. 제품 구입은 어디에서 하나요?
회사에 이것 저것 개발 장비들은 많은데 전임자가 퇴사후 제가 배워 볼려고
하는데 잘 않되네요.... 원래 전공이 이게 아니라서......
답변 주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
우선, ISP와 JTAG은 서로 다른 장비입니다.
ISP는 In System Programming의 약자로 한마디로, MCU의 플래시나 EEPROM 등에 프로그램을 굽는 장치입니다.
JTAG은 프로그램을 굽기도 하지만, 디버깅시에 사용합니다.
JTAG을 사용하면, MCU의 각종 레지스터들을 현미경 보듯이 보면서,
처리가 가능합니다.
JTAG은 JTAG 포트에 꽂으셔야 합니다.
AM-128PRO를 가지고 계시다니, KD-128PRO 메인보드인 (AVR MEGA 128 개발보드 AB-M128Pro-A 49,500원)를 구매하시면, JTAG 포트가 있으니, 거기에 꽂아서 쓰시는 것이 좋겠습니다.
수고하세요.
>안녕하세요?
>저희 회사에 JTAG ICE mk-II 장비가 있고
>AM-128 PRO 모듈이 있어서
>
>1. AM-128 PRO ISP 단자와 JTAG ICE mk-II를 연결 하였고
>2. AM-128 PRO 보드에서 VCC , GND 만 연결 하여 전원 5V을 주었습니다.
>3. AVR STUDIO에서 장치 설정후 휴즈 설정을 하려니 첨부 파일과 같은 메세지가
> 출력 됩니다.
>
>아래는 문의 사항 입니다.
>
>1. 설정 부분이 잘못 되었나요? AVR STUDIO 는 4.14 버전 입니다.
>2. AM-128 PRO 보드가 불량 인가요? 아님 ISP 케이블 연결이 잘못 되었나요?
> (원래 10핀 커넥터에서 MK-II 설명서를 보고 ISP 연결 방법을 따라서 배선을
> 연결했습니다.)
>3. AVR MEGA 128 개발보드를 구입 해야 AM-128 PRO 구동이 가능 한가요?
>4. 제품 구입은 어디에서 하나요?
>
>회사에 이것 저것 개발 장비들은 많은데 전임자가 퇴사후 제가 배워 볼려고
>하는데 잘 않되네요.... 원래 전공이 이게 아니라서......
>
>답변 주시면 감사하겠습니다.
>
|
||||
