Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 3488 | 답변완료AM-128Pro 모듈 관련 문의 입니다. | 김웅환 | 2009-08-17 | 1,275 |
|
AM-128Pro 모듈 관련 문의 입니다.
이 모듈을 ERASE 하면 PORTD.2 에서 HIGH 신호가 잡힙니다.
왜 이런지 알 수 있을까요?
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
어떤 값이 들어갈 지 정해지지 않은 상태인데,
그 전 램 같은 곳에 있는 값이 들어가는 게 아닌가 싶은데,
전원 넣었다 빼면 없어지지 않을까 싶은데요.
별로 중요하지 않는 내용 같습니다.
수고하세요.
>AM-128Pro 모듈 관련 문의 입니다.
>이 모듈을 ERASE 하면 PORTD.2 에서 HIGH 신호가 잡힙니다.
>
>왜 이런지 알 수 있을까요?
|
||||
| 3487 | 답변완료전압, 블루투스 제어 관련해서 질문드려요. | 최재경 | 2009-08-17 | 1,301 |
|
한 보드판에 있는 atmega128 을 이용해서 블루투스모듈로 신호를 보내려고 하는데
128은 5v 를 줘야하고 블루투스모듈은 3.3v를 줘야합니다.
보드판이 이동성을 요구해서 아답터 말고 전지로 전압을 주었으면 하는데
방법좀 알려주세요.
그리고 atmega128 에서 블루투스로 신호를 보내려면 어떻게 해야하나요?
커넥터 사용안하고 UART0 포트 tx, rx 부분에 그냥 선감아서 연결해도 신호전송이 되는지..
궁금합니다.
블루투스모듈은 ACODE 300B 입니다.
부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
시중에서 7.2V 400mA 이상의 충전지를 팔겁니다. 그걸 사서 그것의 출력을, 본사의 MP533 전원모듈을 사용하여 아답타 쪽 두 커넥터중 하나에 꽂으면, 5V와 3.3V가 출력될겁니다. 그걸 이용하여 블루투스에 연결하면 간단하겠네요. 또한, 5V 쪽도 마찬가지로 커넥터를 연장하여 쓰면 되겠지요.
그리고, ATMEGA128에서 블루투스로 신호를 보내는 것은 그냥 둘둘감아도 되긴 하겠지만,
신호가 전송될 때, 기본적으로 임피던스 같은 것도 중요하겠지요? 대강 되긴 하겠지만,
잘 되기를 원한다면, 커넥터나 땜을 이용하는 것이 좋겠네요.
그리고, Q&A에서 블루투스 라고 쳐서 나오는 것 중 계속 검색이라는 걸 눌러 보면, 참고할 만한게,
많이 나옵니다. 그 모듈 쓴 회로도하고 예제 소스들도 나오구요.
- 아래 -
http://www.newtc.co.kr/board/zboard.php?id=qna&&select_arrange=headnum&desc=asc&category=&sn=off&ss=on&sc=off&keyword=블루투스&sn1=&divpage=1
수고하세요.
>한 보드판에 있는 atmega128 을 이용해서 블루투스모듈로 신호를 보내려고 하는데
>
>128은 5v 를 줘야하고 블루투스모듈은 3.3v를 줘야합니다.
>
>보드판이 이동성을 요구해서 아답터 말고 전지로 전압을 주었으면 하는데
>
>방법좀 알려주세요.
>
>그리고 atmega128 에서 블루투스로 신호를 보내려면 어떻게 해야하나요?
>
>커넥터 사용안하고 UART0 포트 tx, rx 부분에 그냥 선감아서 연결해도 신호전송이 되는지..
>
>궁금합니다.
>
>블루투스모듈은 ACODE 300B 입니다.
>
>부탁드립니다.
|
||||
| 3486 | 답변완료AVRISP-LITE ISP 세팅 주파수 문제./ | 나그네 | 2009-08-15 | 1,301 |
|
AVRISP-LITE 쓰고 있는데 ISP MODE 에서 ISP 주파수 세팅 하는데
구을떄 마다 해야 되는데 무슨 문제인지 모르겠네요,
AVRSTUDIO 쓰고 있음니다.4.16 드라이버도 몇번 다시 지우고 깔고,
AVRSTUDIO 밑에 버전도 깔아 봤는데도 안되네요.
1.845MHZ로 세팅 합니다, 세팅에서 READ,WRITE 도 해보았읍니다.
구을때 마다 하나 귀찮아서요,. 한두번도 아니고.,.. 해결책좀...
관리자 답변
안녕하세요? 저희 NEWTC 제품을 이용하여 주셔서 감사합니다.
정상적인 제품은 그런 문제가 없습니다.
뭔가 잘못된 것 같은데요. 본사로 보내서, 점검받아 보시기 바랍니다.
그리고, 반드시 본명으로 질문하여 주시기 바랍니다.
본명이 아니면 삭제될 수도 있습니다.
감사합니다.
>AVRISP-LITE 쓰고 있는데 ISP MODE 에서 ISP 주파수 세팅 하는데
>구을떄 마다 해야 되는데 무슨 문제인지 모르겠네요,
>
>AVRSTUDIO 쓰고 있음니다.4.16 드라이버도 몇번 다시 지우고 깔고,
>AVRSTUDIO 밑에 버전도 깔아 봤는데도 안되네요.
>
>1.845MHZ로 세팅 합니다, 세팅에서 READ,WRITE 도 해보았읍니다.
>구을때 마다 하나 귀찮아서요,. 한두번도 아니고.,.. 해결책좀...
|
||||
| 3485 | 답변완료usb isp v03 문제입니다. | 김현재 | 2009-08-14 | 1,394 |
|
atmega128 사용, avr studio로 프로그램만 구우려고 하는데
되지 않네요.. 포니프로그로 하면 되는데 프로그램하면 저 화면만 나오네요..
퓨즈비트도 맞게 해봤지만 ;;
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
불편을 끼쳐드려서 죄송합니다.
펌웨어가 좀 잘못된 것 같습니다. 본사로 제품을 보내주시면,
3.2 버전의 펌웨어 업데이트 해서, 보내드리도록 하겠습니다.
고객님의 경우 A/S는 전액 무료 택배, 업데이트입니다.
감사합니다.
>atmega128 사용, avr studio로 프로그램만 구우려고 하는데
>되지 않네요.. 포니프로그로 하면 되는데 프로그램하면 저 화면만 나오네요..
>퓨즈비트도 맞게 해봤지만 ;;
|
||||
| 3484 | 답변완료AM-3AXIS 제품관련 A/S문의 입니다. | 황순곤 | 2009-08-14 | 1,283 |
|
안녕하십니까
AM-3AXIS 제품 사용자 입니다. 현재 2개의 모듈을 구입해서 테스트 해보왔는데
하나의 제품에서 값이 측정이 안되는 부분이 있어서 A/S요청 드립니다. 동일 코드에서
동작했을시 하나의 모듈에서는 정상적으로 동작 하였습니다.
참고사진은 문제의 모듈 연결시 사진에서 보이는 것처럼 측정데이터가 저 상태로 유지되어 시작
됩니다.
A/S받는곳 주소는 부산광역시 남구 용당동 동명대학교 개척관114호 Mobile Lab 입니다.
다음주 월요일 택배로 발송하도록 하겠습니다.
관리자 답변
안녕하세요? 고객님,
동명대학교에서 오랜만에 연락 주셨네요. 감사합니다.
본사로 보내주시면, 테스트 하여 A/S 해드리도록 하겠습니다.
택배 보내실 때, 증상, 주소, 성함, 전화번호를 함께 적어서 보내주세요.
감사합니다.
>안녕하십니까
>
>AM-3AXIS 제품 사용자 입니다. 현재 2개의 모듈을 구입해서 테스트 해보왔는데
>
>하나의 제품에서 값이 측정이 안되는 부분이 있어서 A/S요청 드립니다. 동일 코드에서
>
>동작했을시 하나의 모듈에서는 정상적으로 동작 하였습니다.
>
>참고사진은 문제의 모듈 연결시 사진에서 보이는 것처럼 측정데이터가 저 상태로 유지되어 시작
>
>됩니다.
>
>A/S받는곳 주소는 부산광역시 남구 용당동 동명대학교 개척관114호 Mobile Lab 입니다.
>
>다음주 월요일 택배로 발송하도록 하겠습니다.
|
||||
| 3483 | 답변완료AVR용 USB-ISP 멀티 WIRTE 문의 | 김동후 | 2009-08-14 | 1,328 |
|
질문 드립니다.
귀사의 제품중 AVR용 USB-ISP를 이용 하여 여러개의 제품을 WRITE 하고 싶습니다.
즉 5개 이상을 한번에 WRITE 하고 싶습니다. (양산용)
가능 한지요 만약 가능 하다면 방법을 알고 싶습니다.
현재 툴이 아닌 개발을 해야 한다면 개발 비용은 어느정도로 예상 하는 지요..
빠른 답변 부탁 드립니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC를 이용하여 주셔서 감사합니다.
한 번에 다섯개는 현재 상태로는 불가능 할 것 같습니다.
다른 방법으로 개발을 해야 하는 데,
개발 비용이 생각하시는 것 보다 많이 들어갈 것 같습니다.
제품으로 사용하려면 몇 개월 정도 개발해야 할 테니까요.
제 생각에는 칩 상태로 굽는 장비를 사용하여 write 한 다음,
이런 칩으로 굽는 장비는 한 번에 여러개를 굽는 장비가 이미 개발되어 있으니까요.
그런 다음에, 쓰는 것이 훨씬 저렴하게 하실 수 있을 것 같네요.
수고하세요.
>질문 드립니다.
>
>귀사의 제품중 AVR용 USB-ISP를 이용 하여 여러개의 제품을 WRITE 하고 싶습니다.
>
>즉 5개 이상을 한번에 WRITE 하고 싶습니다. (양산용)
>
>가능 한지요 만약 가능 하다면 방법을 알고 싶습니다.
>
>현재 툴이 아닌 개발을 해야 한다면 개발 비용은 어느정도로 예상 하는 지요..
>
>빠른 답변 부탁 드립니다.
|
||||
| 3482 | 답변완료다시한번질문드립니다^^ | 이경섭 | 2009-08-13 | 1,336 |
|
#include <iom128v.h>
#include <macros.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2;
volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0;
unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//TIMER0 initialize - prescale:256
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xC2; //set count
OCR0 = 0x3E;
TCCR0 = 0x06; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = Value_R; //reload counter value
if(Status&0x01) MOTOR_PORT = RGO[Step_RG++];
if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++];
if(Step_RG>7) Step_RG=0;
if(Step_RB>7) Step_RB=0;
if(Value_R>0xfa) Value_R=0xfa;
if(Value_R<0x05) Value_R=0x05;
}
//TIMER1 initialize - prescale:256
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 100Hz
// actual value: 100.000Hz (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFD; //setup
TCNT1L = 0x8F;
OCR1AH = 0x02;
OCR1AL = 0x71;
OCR1BH = 0x02;
OCR1BL = 0x71;
OCR1CH = 0x02;
OCR1CL = 0x71;
ICR1H = 0x02;
ICR1L = 0x71;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0xFD; //reload counter high value
TCNT1L = 0x8F; //reload counter low value
if(Count++>50){
Input=PINA;
if(Input==0x01) Status = (Status&0xf0)|0x01;
if(Input==0x02) Status = (Status&0xf0)|0x02;
if(Input==0x04) Value_R++;
if(Input==0x08) Value_R--;
if(Input==0x10) Status = (Status&0x0f)|0x10;
if(Input==0x20) Status = (Status&0x0f)|0x20;
if(Input==0x40) Value_L++;
if(Input==0x80) Value_L--;
Input=0;
Count=0;
}
}
//TIMER2 initialize - prescale:256
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
TCNT2 = 0xC2; //setup
OCR2 = 0x3E;
TCCR2 = 0x04; //start
}
#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
void timer2_ovf_isr(void)
{
TCNT2 = Value_L; //reload counter value
if(Status&0x10) MOTOR_PORT = LGO[Step_LG++];
if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++];
if(Step_LG>7) Step_LG=0;
if(Step_LB>7) Step_LB=0;
if(Value_L>0xfa) Value_L=0xfa;
if(Value_L<0x05) Value_L=0x05;
}
//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();
timer0_init();
timer1_init();
timer2_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x45; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
MOTOR_PORT_DDR=0xFF;
while(1){
;
}
}
먼저 이전에 제가올린 질문에 답변주셔서 감사합니다^^
cs2p타이머 이용 제어 소스인데요~
각각의 변수들이 의미하는바를 잘모르겠어서 그러는데요~
Count, Value_R, Value_L, Input, Status 의 변수들이 어떤값을 의미하는지 좀 알려주새요ㅠㅠ
감사합니다!!!
관리자 답변
안녕하세요?
카운터를 이용하여 왼쪽, 오른쪽 모터를 각각 제어하는 소스입니다.
왼쪽모터, 오른쪽 의 속도도 제어하구요.
A 포트의 입력된 스위치 값에 의해, 여러가지를 제어할 수 있는 소스입니다.
수고하세요.
>#include <iom128v.h>
>#include <macros.h>
>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_PORT_DDR DDRC
>
>volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2;
>volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0;
>
>unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
>unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
>unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
>unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
>}
>
>//TIMER0 initialize - prescale:256
>// WGM: Normal
>// desired value: 1KHz
>// actual value: 1.008KHz (0.8%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0xC2; //set count
> OCR0 = 0x3E;
> TCCR0 = 0x06; //start timer
>}
>
>#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
>void timer0_ovf_isr(void)
>{
> TCNT0 = Value_R; //reload counter value
>
> if(Status&0x01) MOTOR_PORT = RGO[Step_RG++];
> if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++];
> if(Step_RG>7) Step_RG=0;
> if(Step_RB>7) Step_RB=0;
> if(Value_R>0xfa) Value_R=0xfa;
> if(Value_R<0x05) Value_R=0x05;
>
>}
>
>
>//TIMER1 initialize - prescale:256
>// WGM: 0) Normal, TOP=0xFFFF
>// desired value: 100Hz
>// actual value: 100.000Hz (0.0%)
>void timer1_init(void)
>{
> TCCR1B = 0x00; //stop
> TCNT1H = 0xFD; //setup
> TCNT1L = 0x8F;
> OCR1AH = 0x02;
> OCR1AL = 0x71;
> OCR1BH = 0x02;
> OCR1BL = 0x71;
> OCR1CH = 0x02;
> OCR1CL = 0x71;
> ICR1H = 0x02;
> ICR1L = 0x71;
> TCCR1A = 0x00;
> TCCR1B = 0x04; //start Timer
>}
>
>#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
>void timer1_ovf_isr(void)
>{
> //TIMER1 has overflowed
> TCNT1H = 0xFD; //reload counter high value
> TCNT1L = 0x8F; //reload counter low value
> if(Count++>50){
> Input=PINA;
> if(Input==0x01) Status = (Status&0xf0)|0x01;
> if(Input==0x02) Status = (Status&0xf0)|0x02;
> if(Input==0x04) Value_R++;
> if(Input==0x08) Value_R--;
> if(Input==0x10) Status = (Status&0x0f)|0x10;
> if(Input==0x20) Status = (Status&0x0f)|0x20;
> if(Input==0x40) Value_L++;
> if(Input==0x80) Value_L--;
> Input=0;
> Count=0;
> }
>}
>
>//TIMER2 initialize - prescale:256
>// WGM: Normal
>// desired value: 1KHz
>// actual value: 1.008KHz (0.8%)
>void timer2_init(void)
>{
> TCCR2 = 0x00; //stop
> TCNT2 = 0xC2; //setup
> OCR2 = 0x3E;
> TCCR2 = 0x04; //start
>}
>
>#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
>void timer2_ovf_isr(void)
>{
> TCNT2 = Value_L; //reload counter value
>
> if(Status&0x10) MOTOR_PORT = LGO[Step_LG++];
> if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++];
> if(Step_LG>7) Step_LG=0;
> if(Step_LB>7) Step_LB=0;
>
> if(Value_L>0xfa) Value_L=0xfa;
> if(Value_L<0x05) Value_L=0x05;
>
>}
>//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();
> timer0_init();
> timer1_init();
> timer2_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x45; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>void main(void)
>{
> init_devices();
> MOTOR_PORT_DDR=0xFF;
> while(1){
> ;
> }
>}
>
>먼저 이전에 제가올린 질문에 답변주셔서 감사합니다^^
>
>cs2p타이머 이용 제어 소스인데요~
>
>각각의 변수들이 의미하는바를 잘모르겠어서 그러는데요~
>
>Count, Value_R, Value_L, Input, Status 의 변수들이 어떤값을 의미하는지 좀 알려주새요ㅠㅠ
>
>감사합니다!!!
>
|
||||
| 3481 | 답변완료avr 활용 질문이요 | 이철원 | 2009-08-13 | 1,390 |
|
안녕하세요 질문있어서 글 씁니다. 일단 전 avr128 제품을 가지고 있고요, 무슨 패키지로 사서 아답터랑 이런것도 다 있습니다.
제가 dc모터 제어랑 co2제어 온도 제어를 해야되는데요
한 1m^3정도 공간을 실내의 축소판이라고 하고 그 안쪽에서 공기나 온도 같은걸 제어 하는 겁니다예를 들면 온도나 co2가 일정 이상 올라가면 펜이 작동하고 다시 그 이하로 내려가면 장치가 작동하지 않는 그런 장치입니다. dc모터는 다른 장치를 구동시키는데 필요합니다.
제가 전자과가 아니다 보니까 이쪽에 너무 문외한이라서 여기 있는 강좌같은걸 보면서 하나씩 배워갈려고 하는데 강좌가 너무 많은데 여기서 제가 만드는 제품에 도움을 줄수 있는 강좌가 어떤게 있을까요? 일단 동영상 강좌는 들어봤는데 제가 만드는거랑은 좀 틀린거 같네요.. 그리고 제가 제어소스같은거 하나도 만들줄 모르는데 이런건 어떻게 해야되나요? 답변 부탁드리겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
정확하게 그런 어플리케이션으로 된 강좌는 없습니다.
CO2 센서의 스펙에 따라서, 다르겠지만 일반적으로 센서는 A/D 컨버터 쪽을 보면 됩니다.
그리고, DC 모터 구동부쪽을 보면 되겠지요.
강좌->AVR 강좌에서 초초보 강좌를 보시면 좋겠습니다.
사실 이 분야는 열심히 공부해서 하지 않으면, 하기가 어렵습니다.
소스를 직접 짜야 하니까요. 누가 대신해서 소스를 짜 주거나, 하드웨어를 구성해 주지는 않습니다.
그리고, C언어도 공부하셔야 합니다.
만약, 개발건으로 개발 의뢰라면, 개발 의뢰로 받겠지만, 비용이 많이 높아지게 되기 때문에,
직접 개발하시는 것이 좋습니다.
수고하세요.
>안녕하세요 질문있어서 글 씁니다. 일단 전 avr128 제품을 가지고 있고요, 무슨 패키지로 사서 아답터랑 이런것도 다 있습니다.
>제가 dc모터 제어랑 co2제어 온도 제어를 해야되는데요
>한 1m^3정도 공간을 실내의 축소판이라고 하고 그 안쪽에서 공기나 온도 같은걸 제어 하는 겁니다예를 들면 온도나 co2가 일정 이상 올라가면 펜이 작동하고 다시 그 이하로 내려가면 장치가 작동하지 않는 그런 장치입니다. dc모터는 다른 장치를 구동시키는데 필요합니다.
>제가 전자과가 아니다 보니까 이쪽에 너무 문외한이라서 여기 있는 강좌같은걸 보면서 하나씩 배워갈려고 하는데 강좌가 너무 많은데 여기서 제가 만드는 제품에 도움을 줄수 있는 강좌가 어떤게 있을까요? 일단 동영상 강좌는 들어봤는데 제가 만드는거랑은 좀 틀린거 같네요.. 그리고 제가 제어소스같은거 하나도 만들줄 모르는데 이런건 어떻게 해야되나요? 답변 부탁드리겠습니다.
>
|
||||
| 3480 | 답변완료스테핑 모터에 대한 문의 사항입니다. | 정상현 | 2009-08-13 | 1,376 |
|
안녕하세요.
스테핑 모터를 이용하여 간단한 정 역 회전과
속도 제어, 거리 제어 하고 싶습니다
쓰고자 하는 스테핑 모터 모델은 SE-SM2이고
아직 나머지는 미정입니다.
들어가는 제품이 궁금합니다.
AVR 128을 이용하여 제어하고 싶은데
혹시 오픈 소스가 있나요?
관리자 답변
안녕하세요? 저희 N.T.C 제품에 관한 질문시 유의사항입니다.
저희 Q&A 게시판은 저희 N.T.C 제품을 사용하시는 분들을 위한 질문과 답변을 해 드리는 게시판입니다. 또한, 반드시 본명을 사용하여 질문하셔야 합니다.
이상의 내용을 지켜 주시면, 언제든 질문은 환영이고, 늘 최선을 다하여 답변 드리겠습니다.
감사합니다.
>안녕하세요.
>
>스테핑 모터를 이용하여 간단한 정 역 회전과
>
>속도 제어, 거리 제어 하고 싶습니다
>
>쓰고자 하는 스테핑 모터 모델은 SE-SM2이고
>
>아직 나머지는 미정입니다.
>
>들어가는 제품이 궁금합니다.
>
>AVR 128을 이용하여 제어하고 싶은데
>
>혹시 오픈 소스가 있나요?
>
>
|
||||
| 3479 | 답변완료아래 글에서 모터드라이버 문제 모터스펙 입니다. | 가승일 | 2009-08-13 | 1,469 |
|
http://www.dnj.co.kr/_data/2_dcgm/ecig_spec_ig32e2c0102.htm
위의 모터 사용중이고요. MCU 는 Atmega128 입니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
우선, 사용하시는 모터는 대략 12V 530mA 정도 사용이라 순간 전류가 1A 이상 흐를 것으로 예상됩니다. 하지만, 저희 모터 구동부로 충분히 구동이 가능한 부분입니다.
혹시, 그렇다면 사용하시는 전원부는 어떤 것을 쓰는 지 궁급합니다.
전원부가 안정이 안되면, 모터 구동부에 무리를 줄 수 있습니다.
전원부 스펙을 올려 보세요.
수고하세요.
>http://www.dnj.co.kr/_data/2_dcgm/ecig_spec_ig32e2c0102.htm
>
>위의 모터 사용중이고요. MCU 는 Atmega128 입니다.
|
||||
| 3478 | 답변완료USB ISP V03 가 장치관리자에 등록되지 않습니다 도움바랍니다. | 정연진 | 2009-08-13 | 1,410 |
|
USB ISP V03을 컴퓨터에서 사용할려고 합니다.
드라이버 프로그램은 컴퓨터로 다운 받았습니다.
하지만 압축을 풀고 인스톨은 성공적으로 되었으나,
드라이버가 장치관리자에 성공적으로 등록되지 않았습니다.
원인이 무엇인지 확인바랍니다....
fig1은 장치관리자의 드라이버가 등록되지 않은 화면이며,
fig2는 시스템에서 드라이버서명을 '경고'로 하였을떄 뜨는 화면입니다.
드라이버 서명을 '무시'로 화면 경고 화면은 뜨지 않으나
드라이버가 설치되지 않은 결과는 같습니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
PC에 따라서 그렇게 되는 경우도 있습니다.
이럴 때는, 고객님이 올려주신 마지막 화면에서 무시 하고, 계속 진행하여 드라이버를 설치하시기 바랍니다.
MS에서 인증받지 않은 드라이버라서 생기는 화면이니, 상관없이 진행하시면 됩니다.
감사합니다.
>USB ISP V03을 컴퓨터에서 사용할려고 합니다.
>드라이버 프로그램은 컴퓨터로 다운 받았습니다.
>
>하지만 압축을 풀고 인스톨은 성공적으로 되었으나,
> 드라이버가 장치관리자에 성공적으로 등록되지 않았습니다.
>
>원인이 무엇인지 확인바랍니다....
>
>fig1은 장치관리자의 드라이버가 등록되지 않은 화면이며,
>fig2는 시스템에서 드라이버서명을 '경고'로 하였을떄 뜨는 화면입니다.
>드라이버 서명을 '무시'로 화면 경고 화면은 뜨지 않으나
>드라이버가 설치되지 않은 결과는 같습니다.
>
|
||||
| 3477 | 답변완료USBISP 3.0 제품 ATMEGA2560지원? | 김성식 | 2009-08-13 | 1,407 |
|
USBISP 3.0 제품 ATMEGA2560지원하는지요?
관리자 답변
안녕하세요? 고객님,
네 지원됩니다.
제가 직접 테스트까지 하여 보았습니다.
수고하세요.
>USBISP 3.0 제품 ATMEGA2560지원하는지요?
>
|
||||
| 3476 | 답변완료AM-DC2-4C 모터 드라이버 문제 질문드립니다. | 가승일 | 2009-08-13 | 1,384 |
|
AM-DC2-4C 모터드라이버 2개이고요. 구입한지는 3주정도 되었구요.
그동안 잘되다가 갑자기 작동이 안돼네요.
증상은 1개는 한쪽만 작동이 되고,
다른 1개는 둘다 작동이 안됩니다.
그리고 이 제품 발열이 심한편인가요 ?
손 델정도로 심하게 뜨거워지던데...
제가 회로를 잘못연결한걸 수도 있고
발열이 너무 심해서 모듈이 나간거일수도 있는데, 아니면 제가 회로구성을 잘못했는지
확인할 방법이 없네요. 어쨋든 지금 작동이 2개 다 안됩니다 ㅠㅠ
혹시 A/S 가능한지 질문드립니다.
그렇다면 택배비용과 수리비용은 어떻게 되는지도 궁금합니다.
관리자 답변
부러워요 나는AM-DC2-2D 하고있는데 연락좀주세요 01027779721
|
||||
| 3475 | 답변완료질문있습니다!!!^^ | 이경섭 | 2009-08-13 | 1,435 |
|
#include <iom128v.h>
#include <macros.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2;
volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0;
unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//TIMER0 initialize - prescale:256
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xC2; //set count
OCR0 = 0x3E;
TCCR0 = 0x06; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = Value_R; //reload counter value
if(Status&0x01) MOTOR_PORT = RGO[Step_RG++];
if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++];
if(Step_RG>7) Step_RG=0;
if(Step_RB>7) Step_RB=0;
if(Value_R>0xfa) Value_R=0xfa;
if(Value_R<0x05) Value_R=0x05;
}
//TIMER1 initialize - prescale:256
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 100Hz
// actual value: 100.000Hz (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFD; //setup
TCNT1L = 0x8F;
OCR1AH = 0x02;
OCR1AL = 0x71;
OCR1BH = 0x02;
OCR1BL = 0x71;
OCR1CH = 0x02;
OCR1CL = 0x71;
ICR1H = 0x02;
ICR1L = 0x71;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0xFD; //reload counter high value
TCNT1L = 0x8F; //reload counter low value
if(Count++>50){
Input=PINA;
if(Input==0x01) Status = (Status&0xf0)|0x01;
if(Input==0x02) Status = (Status&0xf0)|0x02;
if(Input==0x04) Value_R++;
if(Input==0x08) Value_R--;
if(Input==0x10) Status = (Status&0x0f)|0x10;
if(Input==0x20) Status = (Status&0x0f)|0x20;
if(Input==0x40) Value_L++;
if(Input==0x80) Value_L--;
Input=0;
Count=0;
}
}
//TIMER2 initialize - prescale:256
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
TCNT2 = 0xC2; //setup
OCR2 = 0x3E;
TCCR2 = 0x04; //start
}
#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
void timer2_ovf_isr(void)
{
TCNT2 = Value_L; //reload counter value
if(Status&0x10) MOTOR_PORT = LGO[Step_LG++];
if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++];
if(Step_LG>7) Step_LG=0;
if(Step_LB>7) Step_LB=0;
if(Value_L>0xfa) Value_L=0xfa;
if(Value_L<0x05) Value_L=0x05;
}
//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();
timer0_init();
timer1_init();
timer2_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x45; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
MOTOR_PORT_DDR=0xFF;
while(1){
;
}
}
NEWTC카페에 올라온 타이머인터럽트를 이용해서 스텝모터돌려보는 소스인데요...
컴파일도 에러 없이 잘되는데...
스텝모터가 한쪽만 반응하고 또, 움직이질 않네요...
소스를 보고 또 보아도 잘 이해가 안가서 그러는데...
혹시 문제점이 어디있는지 설명해주실수있나요??
더불어 소스코드에대한 약간의 설명도 부탁드립니다^^;;
결과물을 가지고 발표를 해야하는 상황이라...
염치불구하고 부탁드립니다!!!
수고하세요^^
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
강좌->로봇강좌 쪽에 보면, 강의 내용이 잘 나와 있으니, 참고 바랍니다.
소스 관련 강좌도 있으니까, 그걸 보세요. 일부 첨부도 하였습니다.
그리고, CS2P 모터 구동부의 가변저항을 돌려서 바이어스를 맞춰줘야
다른쪽 바퀴도 돌아갈겁니다. 전압과 전류도 충분히 공급되는 지 확인하세요.
스테핑라인트레이서는 1.2V 1000mA 충전지(건전지가 아님) 12개를 사용하여 14.4V를 만들어서
사용하시기 바랍니다. 아답타로 할 경우, 15V 600mA 이상 아답타 또는 12V 1A이상의 SMPS를 사용하세요. 정격은 24V 3A 입니다.
수고하세요.
>#include <iom128v.h>
>#include <macros.h>
>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_PORT_DDR DDRC
>
>volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2;
>volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0;
>
>unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
>unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
>unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
>unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
>}
>
>//TIMER0 initialize - prescale:256
>// WGM: Normal
>// desired value: 1KHz
>// actual value: 1.008KHz (0.8%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0xC2; //set count
> OCR0 = 0x3E;
> TCCR0 = 0x06; //start timer
>}
>
>#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
>void timer0_ovf_isr(void)
>{
> TCNT0 = Value_R; //reload counter value
>
> if(Status&0x01) MOTOR_PORT = RGO[Step_RG++];
> if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++];
> if(Step_RG>7) Step_RG=0;
> if(Step_RB>7) Step_RB=0;
> if(Value_R>0xfa) Value_R=0xfa;
> if(Value_R<0x05) Value_R=0x05;
>
>}
>
>
>//TIMER1 initialize - prescale:256
>// WGM: 0) Normal, TOP=0xFFFF
>// desired value: 100Hz
>// actual value: 100.000Hz (0.0%)
>void timer1_init(void)
>{
> TCCR1B = 0x00; //stop
> TCNT1H = 0xFD; //setup
> TCNT1L = 0x8F;
> OCR1AH = 0x02;
> OCR1AL = 0x71;
> OCR1BH = 0x02;
> OCR1BL = 0x71;
> OCR1CH = 0x02;
> OCR1CL = 0x71;
> ICR1H = 0x02;
> ICR1L = 0x71;
> TCCR1A = 0x00;
> TCCR1B = 0x04; //start Timer
>}
>
>#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
>void timer1_ovf_isr(void)
>{
> //TIMER1 has overflowed
> TCNT1H = 0xFD; //reload counter high value
> TCNT1L = 0x8F; //reload counter low value
> if(Count++>50){
> Input=PINA;
> if(Input==0x01) Status = (Status&0xf0)|0x01;
> if(Input==0x02) Status = (Status&0xf0)|0x02;
> if(Input==0x04) Value_R++;
> if(Input==0x08) Value_R--;
> if(Input==0x10) Status = (Status&0x0f)|0x10;
> if(Input==0x20) Status = (Status&0x0f)|0x20;
> if(Input==0x40) Value_L++;
> if(Input==0x80) Value_L--;
> Input=0;
> Count=0;
> }
>}
>
>//TIMER2 initialize - prescale:256
>// WGM: Normal
>// desired value: 1KHz
>// actual value: 1.008KHz (0.8%)
>void timer2_init(void)
>{
> TCCR2 = 0x00; //stop
> TCNT2 = 0xC2; //setup
> OCR2 = 0x3E;
> TCCR2 = 0x04; //start
>}
>
>#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
>void timer2_ovf_isr(void)
>{
> TCNT2 = Value_L; //reload counter value
>
> if(Status&0x10) MOTOR_PORT = LGO[Step_LG++];
> if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++];
> if(Step_LG>7) Step_LG=0;
> if(Step_LB>7) Step_LB=0;
>
> if(Value_L>0xfa) Value_L=0xfa;
> if(Value_L<0x05) Value_L=0x05;
>
>}
>//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();
> timer0_init();
> timer1_init();
> timer2_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x45; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>void main(void)
>{
> init_devices();
> MOTOR_PORT_DDR=0xFF;
> while(1){
> ;
> }
>}
>
>NEWTC카페에 올라온 타이머인터럽트를 이용해서 스텝모터돌려보는 소스인데요...
>
>컴파일도 에러 없이 잘되는데...
>
>스텝모터가 한쪽만 반응하고 또, 움직이질 않네요...
>
>소스를 보고 또 보아도 잘 이해가 안가서 그러는데...
>
>혹시 문제점이 어디있는지 설명해주실수있나요??
>
>더불어 소스코드에대한 약간의 설명도 부탁드립니다^^;;
>
>결과물을 가지고 발표를 해야하는 상황이라...
>
>염치불구하고 부탁드립니다!!!
>
>수고하세요^^
|
||||
| 3474 | 답변완료ntc사 atmega128 개발용 보드에서 uart의 vcc는 몇볼트가 공급되나요?? | 이지웅 | 2009-08-12 | 1,449 |
|
5v인가요??
3.3v인가요??
관리자 답변
안녕하세요? 고객님,
아답타를 사용하여 보드를 사용하게 되면 5V가 공급됩니다.
하지만, 5V 쪽에 3.3V를 꽂아서 128L AVR을 사용하여 동작하게 되면,
3.3V가 공급되겠지요?
일반적인 사용인 기본은 5V입니다.
감사합니다.
>5v인가요??
>
>3.3v인가요??
>
>
|
||||
