Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 3608 | 답변완료하이퍼 터미널 과 7세그먼트 질문이요. | 김석현 | 2009-09-11 | 1,440 |
|
안녕하세요.
대학생들인데 처음접해보는거라 모든게 생소합니다.
첫번째 질문은 하이퍼 터미널과 atmega128을 연결했는데 하이퍼터미널창에 연결은 되었따고
나오지만 아무런 테스트도 뜨지않습니다.
하드웨어적인 연결방법과 소프트웨어적인 연결방법에대해 설명 부탁드립나다.
두번째로 초음파센서 거리측정결과 7세그먼트에 표시하고싶은데 과련소스를 다운로드해보았지만 생각처럼 쉽지가 않더습니다..혹시 가능하지 여부와 가능하다면 까페에서 소스를 올려두셨는지
답변 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
반갑습니다. 저희 NewTC에 오신 것을 환영합니다.
질문하신 내용에 답변하여 드릴께요.
하이퍼 터미널은 아무것도 PC에 연결하지 않아도 포트만 살아 있으면 무조건 연결됩니다.
하지만, 128의 시리얼을 PC와 크로스(PC의 TX - 128의 RX를 PC의 RX - 128의 TX를)로 연결하고, 물론 이 때, PC의 시리얼 통신 레벨은 +-12V 레벨이기 때문에 AVR의 시리얼 출력인 5(3.3)V level인 TTL(CMOS) Level을 PC Level로 MAX232나 MAX3232 등을 통해서 변경해 주어야 합니다.
구매하신 모듈이 어떤 모듈인가요?
AM-128Pro 모듈이라면 MAX3232가 붙어 있는 모듈입니다.따라서, PC level로 나오겠죠.
모듈위에 3핀 커넥터가 있는 데, 그게 그거에요.
그리고, SE-3T9라는 케이블을 통해서, PC와 AM-128PRO 모듈은 직접 연결이 가능합니다.
그럼, 하드웨어적으로 연결을 쉬울 거구요. PC에서 하이퍼터미널만 잘 잡고,
AVR에 시리얼 통신용 프로그램을 하나 짜서 올려준 후에, 통신이 잘 되는 지 확인하면 되겠네요.
예제는 자료실->기존자료실에 가서 소스 라고 쳐서 찾아 보세요.
그리고, 아래의 강좌->AVR 강좌에서 초초보 강좌를 찾아 보기 바랍니다.
- 아래 -
http://newtc.co.kr/board/view.php?id=mega128_lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=87
여기서 UART 직렬 통신 부분을 보면 자세히 나옵니다.
수고하세요.
>안녕하세요.
>
>대학생들인데 처음접해보는거라 모든게 생소합니다.
>
>첫번째 질문은 하이퍼 터미널과 atmega128을 연결했는데 하이퍼터미널창에 연결은 되었따고
>나오지만 아무런 테스트도 뜨지않습니다.
>하드웨어적인 연결방법과 소프트웨어적인 연결방법에대해 설명 부탁드립나다.
>
>두번째로 초음파센서 거리측정결과 7세그먼트에 표시하고싶은데 과련소스를 다운로드해보았지만 생각처럼 쉽지가 않더습니다..혹시 가능하지 여부와 가능하다면 까페에서 소스를 올려두셨는지
>
>답변 부탁드립니다.
>
>
|
||||
| 3607 | 답변완료CS-2P 스텝모터 구동모듈 전류 조절 물음인데요... | 79 | 2009-09-11 | 1,279 |
|
CS-2P 스텝모터 구동모듈을 쓰고 있습니다.
8255를 이용한 인터페이스 카드를 컴퓨터에 직접연결 해서 모듈에 A /A B /B를 주고 있습니다.
근데 모터구동을 함에 있어 2~3분만 지나면 너무 회로가 뜨거워지더라구요,
(인터페이스에서 나오는 5V 12V를 썼더니요..)
타거나 하는건 아닌데 저항이 너무 뜨거워지고 7026로 많이 뜨거워지길래...
그래서 아무래도 컴터에서 나온거 전압이다보니 전류가 너무 많아서 열이 많이 나나보다 하고..
전류를 조절한다는 걸 처음 샀을때보다 오른쪽으로 90도 정도 돌려봤습니다
여기서 질문.1 가변저항을 어디로 돌릴때 전류를 늘리고 줄이는 건가요??왼쪽 오른쪽?
그러고 다시 컴터에 연결해서 돌리려고 하는순간...
컴퓨터가 꺼졌습니다. 대충 보아하니 파워서플이랑 그래픽카드가 나간거 같더라구요.
역전류니 그런말도 있는거 같은데...그래서 이럴수있나요??;;
또 시도할때 역전류가 걱정된다면...
인터페이스와 모터구동모듈 사이에...다이오드를 연결해주면 역전류가 컴퓨터로 안흐를수있나요?
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
그런데, 본 게시판은 반드시 실명을 사용하여 질문하는 것을 원칙으로 하고 있습니다.
많은 사람들이 함께 사용하는 공간이라서, 약간의 질문 규칙을 정해 놓고 있지요.
반드시 다음에는 본명으로 질문하여 주세요. 본명으로 질문하지 않으면 답변이 나가지 않을 수도 있습니다.
우선, PC의 전원을 당겨 쓰신 것 같은데요. 전원 전류가 일단 약할 것이구요.
전류가 딸리니까 전압이 불안정해 졌을 겁니다. 이에 따라서, 모듈도 정상보다 더 뜨거워질 것이구요. 그게 심해지면, 딸리던 전류 때문에 PC의 파워 써플라이도 망가질 수 있을 겁니다.
어느정도 모터 구동모듈에는 역전류 방지 회로는 달려 있기 때문에, 그런 역전류가 아니라, 전압 유동에 따른 전류 인입으로 보입니다.
해결책은 모터 구동용 전원을 별도로 전용 24V 3A 정도의 SMPS를 이용하여 공급해 주는 것이 좋겠습니다. 12V 라면 풀 구동을 위해서는 전압이 좀 낮을 수도 있습니다.
반드시 다음에는 본명으로 질문하여 주세요.
수고하세요.
>
>
>
>CS-2P 스텝모터 구동모듈을 쓰고 있습니다.
>
>8255를 이용한 인터페이스 카드를 컴퓨터에 직접연결 해서 모듈에 A /A B /B를 주고 있습니다.
>
>근데 모터구동을 함에 있어 2~3분만 지나면 너무 회로가 뜨거워지더라구요,
>(인터페이스에서 나오는 5V 12V를 썼더니요..)
>
>타거나 하는건 아닌데 저항이 너무 뜨거워지고 7026로 많이 뜨거워지길래...
>
>
>그래서 아무래도 컴터에서 나온거 전압이다보니 전류가 너무 많아서 열이 많이 나나보다 하고..
>
>전류를 조절한다는 걸 처음 샀을때보다 오른쪽으로 90도 정도 돌려봤습니다
>
>
>
>여기서 질문.1 가변저항을 어디로 돌릴때 전류를 늘리고 줄이는 건가요??왼쪽 오른쪽?
>
>
>
>그러고 다시 컴터에 연결해서 돌리려고 하는순간...
>
>컴퓨터가 꺼졌습니다. 대충 보아하니 파워서플이랑 그래픽카드가 나간거 같더라구요.
>
>
>역전류니 그런말도 있는거 같은데...그래서 이럴수있나요??;;
>
>
>
>또 시도할때 역전류가 걱정된다면...
>
>인터페이스와 모터구동모듈 사이에...다이오드를 연결해주면 역전류가 컴퓨터로 안흐를수있나요?
|
||||
| 3606 | 답변완료계속 질문드려서 죄송합니다 ㅠ | 최성권 | 2009-09-11 | 1,278 |
|
안녕하세요.
매일매일 새로운 질문을 가지고 오게 되네요.
이번에는 스테핑모터 구동 관련 질문입니다.
ATMega16을 사용하여 구동하기 위해 예제소스를 응용하여 프로그램을 짜고 있습니다.
다름이 아니라,
예제소스는 카운터를 동작시켜 모터 초기값을 주는데요,
TCNT0값을 변경하여 초기 구동값을 조절하면 그만큼 구동속도가 변경되는 것이 맞는지요.
초기 구동속도의 변경을 위해서 TCNT0 이외에 변경해주어야 하는 레지스터 값이 어떤것이
있는지 궁금합니다.
Xtal clock과 동작클럭은 각각 16M,10k로 맞춰놓았습니다.
대략 소스는 아래와 같습니다.
-------------------------------------------------
// LineTracer Application : 07-03-09 오후 12:09:10
// Target : M16
// Crystal: 16.000Mhz
//
// Made by New Technology Company(N.T.C) in Korea.
// DAEWOO RYU
// Email : [email protected]
// 82-2-704-4774(TEL), 82-2-704-4733(FAX)
// http://www.NewTC.co.kr
//
/*
마이크로 스텝드라이버 구동 소스
포트 연결
Enable : PORTB 7번핀
Mode1 : PORTB 5번핀
Mode0 : PORTB 4번핀
R_DIR : PORTB 3번핀
R_CLK : PORTB 2번핀
L_DIR : PORTB 1번핀
L_CLK : PORTB 0번핀
*/
#include <iom16v.h>
#include <macros.h>
#include <stdio.h>
#define MOTOR_PORT PORTA // 스테핑 모터 연결 포트
#define MOTOR_PORT_DDR DDRA // 스테핑 모터 연결 포트의 DDR REG
#define MOTOR_ENABLE (MOTOR_PORT = MOTOR_PORT|0x80)
#define MOTOR_DISABLE (MOTOR_PORT = MOTOR_PORT&0x7f)
#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x00)
#define MOTOR_STEP_M1 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x10)
#define MOTOR_STEP_M2 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x20)
#define MOTOR_STEP_M3 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x30)
#define MOTOR_LEFT_CLK (MOTOR_PORT = MOTOR_PORT^0x01)
#define MOTOR_RIGHT_CLK (MOTOR_PORT = MOTOR_PORT^0x04)
#define MOTOR_LEFT_CW (MOTOR_PORT = MOTOR_PORT&0xfd)
#define MOTOR_LEFT_CCW (MOTOR_PORT = MOTOR_PORT|0x02)
#define MOTOR_RIGHT_CW (MOTOR_PORT = MOTOR_PORT&0xf7)
#define MOTOR_RIGHT_CCW (MOTOR_PORT = MOTOR_PORT|0x08)
// char data[100] = {0};
//int cnt = 0;
volatile unsigned char chr;
//int RM,LM,HS,VS;
#pragma interrupt_handler uart0_rx_isr:19
void uart0_rx_isr(void)
{
chr=UDR;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0xff;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0xff;
}
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 10KHz
// actual value: 10.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x05; //set count
OCR0 = 0xC8; //set compare
TCCR0 = 0x02; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0 = 0x01; //reload counter value
MOTOR_LEFT_CLK;
MOTOR_RIGHT_CLK;
PORTB = ~PORTB;
/* if(MOTOR_PORT & 0x01){
MOTOR_PORT = MOTOR_PORT & 0xfe;
}else{
MOTOR_PORT = MOTOR_PORT | 0x01;
}
*/
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x67; //set baud rate lo //115200 -> 08
UBRRH = 0x00; //set baud rate hi
UCSRB = 0xD8;
}
int putchar(char c)
{
while (((UCSRA>>UDRE)&0x01) == 0) ; // UDRE, data register empty
UDR = c;
return c;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSRA & 0x80) == 0);
return UDR;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<600;j++);
}
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x01; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
int RM,LM,HS,VS,HD;
init_devices();
//insert your functional code here...
//printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
MOTOR_PORT_DDR = 0xff;
/*
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CW;
MOTOR_RIGHT_CW;
PORTB=0x01;*/
/* 타이머로 마이크로 스텝 드라이버 구동 */
while(1){
while(1){
HD=(int)getchar();
if(HD=='V') break;
}
RM=(int)getchar();
LM=(int)getchar();
HS=(int)getchar();
VS=(int)getchar();
if((RM=='8')||(LM=='8')){
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CCW;
MOTOR_RIGHT_CW;
PORTB=0x01;
} else if((RM=='2')||(LM=='2')){
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CW;
MOTOR_RIGHT_CCW;
PORTB=0x01;
} else if((RM=='4')||(LM=='4')){
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CW;
MOTOR_RIGHT_CW;
PORTB=0x01;
} else if((RM=='6')||(LM=='6')){
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CCW;
MOTOR_RIGHT_CCW;
PORTB=0x01;
} else if((RM=='5')||(LM=='5')) {
MOTOR_DISABLE;
PORTB=0x01;
}
}
기본 define값은 건드리지 않았고, TCNT0값 외에는 변경하지 않았습니다.
매번 올라오는 답변, 너무나도 감사드립니다. 하루하루 하나하나 해결해나가는 보람이
너무 좋습니다.
좋은 하루 보내시길 기도하겠습니다. 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
네, 질문 답변을 잘 활용하시는 고객님을 보는 것도 뿌듯합니다.
열심히 하는 사람들에게 답변해 주는 일은 즐거운 일이지요.
우선, 속도 조절을 위한 타이밍 조절에서
주어진 소스에서는 그냥 TCNT0 값 조절로 하고 있지만,
int cnt; 로 전역변수로 선언하고
사실 그 타이머 오버플로 함수 안에 전역변수( 예를 들어서 cnt 라고 하면) 하나로
타이머 들어올 때마다 cnt++; 하면서
if(cnt > 1000){
MOTOR_LEFT_CLK;
MOTOR_RIGHT_CLK;
cnt = 0;
}
이렇게 하여 타이머 들어오는 1000번마다 클럭을 한 번씩 돌릴겁니다.
이런 식으로 하면 보다 섬세하게 제어할 수 있겟지요. 타이밍을 늘렸다 줄였다 할 수 있으니까요.
수고하세요.
>안녕하세요.
>
>매일매일 새로운 질문을 가지고 오게 되네요.
>
>이번에는 스테핑모터 구동 관련 질문입니다.
>
>ATMega16을 사용하여 구동하기 위해 예제소스를 응용하여 프로그램을 짜고 있습니다.
>
>다름이 아니라,
>
>예제소스는 카운터를 동작시켜 모터 초기값을 주는데요,
>
>TCNT0값을 변경하여 초기 구동값을 조절하면 그만큼 구동속도가 변경되는 것이 맞는지요.
>
>초기 구동속도의 변경을 위해서 TCNT0 이외에 변경해주어야 하는 레지스터 값이 어떤것이
>
>있는지 궁금합니다.
>
>Xtal clock과 동작클럭은 각각 16M,10k로 맞춰놓았습니다.
>
>대략 소스는 아래와 같습니다.
>
>-------------------------------------------------
>
>// LineTracer Application : 07-03-09 오후 12:09:10
>// Target : M16
>// Crystal: 16.000Mhz
>//
>// Made by New Technology Company(N.T.C) in Korea.
>// DAEWOO RYU
>// Email : [email protected]
>// 82-2-704-4774(TEL), 82-2-704-4733(FAX)
>// http://www.NewTC.co.kr
>//
>
>
>/*
> 마이크로 스텝드라이버 구동 소스
> 포트 연결
> Enable : PORTB 7번핀
> Mode1 : PORTB 5번핀
> Mode0 : PORTB 4번핀
> R_DIR : PORTB 3번핀
> R_CLK : PORTB 2번핀
> L_DIR : PORTB 1번핀
> L_CLK : PORTB 0번핀
>*/
>
>#include <iom16v.h>
>#include <macros.h>
>#include <stdio.h>
>
>#define MOTOR_PORT PORTA // 스테핑 모터 연결 포트
>#define MOTOR_PORT_DDR DDRA // 스테핑 모터 연결 포트의 DDR REG
>
>#define MOTOR_ENABLE (MOTOR_PORT = MOTOR_PORT|0x80)
>#define MOTOR_DISABLE (MOTOR_PORT = MOTOR_PORT&0x7f)
>#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x00)
>#define MOTOR_STEP_M1 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x10)
>#define MOTOR_STEP_M2 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x20)
>#define MOTOR_STEP_M3 (MOTOR_PORT = (MOTOR_PORT&0xcf)|0x30)
>#define MOTOR_LEFT_CLK (MOTOR_PORT = MOTOR_PORT^0x01)
>#define MOTOR_RIGHT_CLK (MOTOR_PORT = MOTOR_PORT^0x04)
>#define MOTOR_LEFT_CW (MOTOR_PORT = MOTOR_PORT&0xfd)
>#define MOTOR_LEFT_CCW (MOTOR_PORT = MOTOR_PORT|0x02)
>#define MOTOR_RIGHT_CW (MOTOR_PORT = MOTOR_PORT&0xf7)
>#define MOTOR_RIGHT_CCW (MOTOR_PORT = MOTOR_PORT|0x08)
>
>// char data[100] = {0};
>//int cnt = 0;
>volatile unsigned char chr;
>
>//int RM,LM,HS,VS;
>#pragma interrupt_handler uart0_rx_isr:19
>void uart0_rx_isr(void)
>{
>chr=UDR;
>}
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0xff;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0xff;
>}
>
>//TIMER0 initialize - prescale:8
>// WGM: Normal
>// desired value: 10KHz
>// actual value: 10.000KHz (0.0%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> TCNT0 = 0x05; //set count
> OCR0 = 0xC8; //set compare
> TCCR0 = 0x02; //start timer
>}
>
>#pragma interrupt_handler timer0_ovf_isr:10
>void timer0_ovf_isr(void)
>{
>
>
> TCNT0 = 0x01; //reload counter value
> MOTOR_LEFT_CLK;
> MOTOR_RIGHT_CLK;
> PORTB = ~PORTB;
> /* if(MOTOR_PORT & 0x01){
> MOTOR_PORT = MOTOR_PORT & 0xfe;
> }else{
> MOTOR_PORT = MOTOR_PORT | 0x01;
> }
>*/
>}
>
>
>//UART0 initialize
>// desired baud rate: 9600
>// actual: baud rate:9615 (0.2%)
>void uart0_init(void)
>{
> UCSRB = 0x00; //disable while setting baud rate
> UCSRA = 0x00;
> UCSRC = BIT(URSEL) | 0x06;
> UBRRL = 0x67; //set baud rate lo //115200 -> 08
> UBRRH = 0x00; //set baud rate hi
> UCSRB = 0xD8;
>}
>
>int putchar(char c)
>{
> while (((UCSRA>>UDRE)&0x01) == 0) ; // UDRE, data register empty
>
> UDR = c;
> return c;
>}
>
>// scanf 함수 사용시 추가할 것.
>int getchar(void)
>{
> while ((UCSRA & 0x80) == 0);
> return UDR;
>}
>
>
>
>void delay(int n)
>{
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<600;j++);
> }
>}
>
>
>//call this routine to initialize all peripherals
>void init_devices(void)
>{
> //stop errant interrupts until set up
> CLI(); //disable all interrupts
> port_init();
> timer0_init();
> uart0_init();
>
> MCUCR = 0x00;
> GICR = 0x00;
> TIMSK = 0x01; //timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>void main(void)
>{
> int RM,LM,HS,VS,HD;
>
> init_devices();
> //insert your functional code here...
> //printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
>
> MOTOR_PORT_DDR = 0xff;
>/*
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CW;
> MOTOR_RIGHT_CW;
> PORTB=0x01;*/
> /* 타이머로 마이크로 스텝 드라이버 구동 */
>
> while(1){
>
> while(1){
> HD=(int)getchar();
> if(HD=='V') break;
> }
> RM=(int)getchar();
> LM=(int)getchar();
> HS=(int)getchar();
> VS=(int)getchar();
>
> if((RM=='8')||(LM=='8')){
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CCW;
> MOTOR_RIGHT_CW;
> PORTB=0x01;
> } else if((RM=='2')||(LM=='2')){
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CW;
> MOTOR_RIGHT_CCW;
> PORTB=0x01;
> } else if((RM=='4')||(LM=='4')){
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CW;
> MOTOR_RIGHT_CW;
> PORTB=0x01;
> } else if((RM=='6')||(LM=='6')){
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CCW;
> MOTOR_RIGHT_CCW;
> PORTB=0x01;
> } else if((RM=='5')||(LM=='5')) {
> MOTOR_DISABLE;
> PORTB=0x01;
> }
>
>
>}
>
>기본 define값은 건드리지 않았고, TCNT0값 외에는 변경하지 않았습니다.
>
>매번 올라오는 답변, 너무나도 감사드립니다. 하루하루 하나하나 해결해나가는 보람이
>
>너무 좋습니다.
>
>좋은 하루 보내시길 기도하겠습니다. 감사하겠습니다.
>
|
||||
| 3605 | 답변완료시리얼통신 관련 질문 드립니다. | 최성권 | 2009-09-10 | 1,426 |
|
안녕하세요.
매번 난해한 질문에 정성스레 답글 올려주셔서 감사합니다.
이번에는 다름이 아니라,
데이터 송수신이 가능한 무선카메라를 연결하여 라인트레이서를 조종하는데,
카메라가 RS232를 사용하기 때문에 AD-DEBUG 보드를 사용하여 중간에 변환과정을
거쳐 시리얼통신을 하려고 합니다. 카메라쪽엔 RX,TX만 있고, AD-DEBUG보드와
카메라 사이의 연결은 카메라RX->디버그보드TX, 카메라TX->디버그보드RX, 그리고
GND는 연결하지 않고 오픈시켰습니다. 이 연결이 제대로 된 것인지 궁금합니다.
프로그램 코딩상의 문제는 없다고 생각하지만, 계속 쓰레기값이 들어가 라인트레이서
의 모터가 제멋대로 동작하는 문제가 발생하네요ㅠㅠ
그리고, ATMega16의 UART통신시, 수신되는 데이터는 UDR 레지스터로 가는게 맞죠?
수신되는 데이터 처리시, 레지스터에 있는 값을 그대로 불러오면 되는지, 아니면 일정
데이터단위로 쪼개서 받도록 처리해야 하는지 궁금합니다. 만약 문자값이 날라온다면
이를 문자 그대로 읽어들이도록 코드에 써줘야 하는지 아니면 아스키코드로 바꾸어
처리하도록 해야하는지도 궁금합니다.
계속 번거롭게 해드려서 죄송합니다. 하지만 달아주신 답글은 많은 도움이 되고 있습니다.
이번에도 잘 부탁드립니다. 감사합니다.
관리자 답변
안녕하세요? 고객님,
반갑습니다.
카메라와 RX-TX가 서로 꼬이게 연결되는 것은 맞지만,
카메라의 UART 레벨이 +-15V로 PC RS 232C 레벨이 맞는지 확인하여 보시기 바랍니다.
그리고, GND는 모든 통신 보드들이 서로 연결되어야 합니다.
연결되지 않으면, 붕 떠있게 되어서, 기준 전압을 잡지 못하여 값이 제멋대로 들어갈 수도 있습니다.
수고하세요.
>안녕하세요.
>
>매번 난해한 질문에 정성스레 답글 올려주셔서 감사합니다.
>
>이번에는 다름이 아니라,
>
>데이터 송수신이 가능한 무선카메라를 연결하여 라인트레이서를 조종하는데,
>
>카메라가 RS232를 사용하기 때문에 AD-DEBUG 보드를 사용하여 중간에 변환과정을
>
>거쳐 시리얼통신을 하려고 합니다. 카메라쪽엔 RX,TX만 있고, AD-DEBUG보드와
>
>카메라 사이의 연결은 카메라RX->디버그보드TX, 카메라TX->디버그보드RX, 그리고
>
>GND는 연결하지 않고 오픈시켰습니다. 이 연결이 제대로 된 것인지 궁금합니다.
>
>프로그램 코딩상의 문제는 없다고 생각하지만, 계속 쓰레기값이 들어가 라인트레이서
>
>의 모터가 제멋대로 동작하는 문제가 발생하네요ㅠㅠ
>
>그리고, ATMega16의 UART통신시, 수신되는 데이터는 UDR 레지스터로 가는게 맞죠?
>
>수신되는 데이터 처리시, 레지스터에 있는 값을 그대로 불러오면 되는지, 아니면 일정
>
>데이터단위로 쪼개서 받도록 처리해야 하는지 궁금합니다. 만약 문자값이 날라온다면
>
>이를 문자 그대로 읽어들이도록 코드에 써줘야 하는지 아니면 아스키코드로 바꾸어
>
>처리하도록 해야하는지도 궁금합니다.
>
>계속 번거롭게 해드려서 죄송합니다. 하지만 달아주신 답글은 많은 도움이 되고 있습니다.
>
>이번에도 잘 부탁드립니다. 감사합니다.
|
||||
| 3604 | 답변완료모듈 전원 공급 관련 질문 드려요~ | 대학생 | 2009-09-10 | 1,347 |
|
AVR Mega 128 PRO 모듈 ( AM-128PRO V03) 을 사용하고 있는데요
휴대용으로 만들어야 되서 전원을 전지로 공급해야 되는데
인가 전원이 5V인데 건전지 1.5V*3 으로 연결해도 작동이 되나요?
답변 주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
본 게시판은 실명 게시판입니다.
본명으로 질문하여 주시기 바랍니다.
본명으로 질문하지 않으시면 답변이 나가지 않습니다.
이론적으론 딱 4.5V라서 AVR의 기준 공급 전압인 4.5V ~ 5.5V 사이에 들어가지만,
실제로 전압이 그보다 높을 수도 있고, 낮을 수도 있습니다.
그런 경우 AVR이 잘못하면 망가지게 되고, 정상동작하지 않을 수 있습니다.
그러므로, 반드시 DC-DC 컨버터나 레귤레이터 등을 사용하여 전압을 변환하여 사용합니다.
즉, 5V 정격을 만들어 써야 합니다. 쉽게는 7.2V 이상 넣으시고 7805 같은 걸로 5V로 다운시켜 쓰는 게 좋겠습니다.
감사합니다.
>AVR Mega 128 PRO 모듈 ( AM-128PRO V03) 을 사용하고 있는데요
>
>휴대용으로 만들어야 되서 전원을 전지로 공급해야 되는데
>
>인가 전원이 5V인데 건전지 1.5V*3 으로 연결해도 작동이 되나요?
>
>답변 주시면 감사하겠습니다.
|
||||
| 3603 | 답변완료답변좀 빨리 해주세요. | 풀빵 | 2009-09-10 | 1,446 |
|
DL 16을 구동하기 위해서는
smps 12v 와
avr usb isp 만 있으면 되죵?
답변좀 빨리 해주세요.
관리자 답변
네 맞습니다. 완제품인 경우 그렇습니다. 조립용인 경우 일일이 조립하기 위하여 인두랑 납도 필요합니다. 본명으로 질문하여 주시기 바랍니다.
수고하세요.
>DL 16을 구동하기 위해서는
>
>smps 12v 와
>
>avr usb isp 만 있으면 되죵?
>
>답변좀 빨리 해주세요.
|
||||
| 3602 | 답변완료질문이있습니다. | 학생 | 2009-09-10 | 1,350 |
|
atmega128 소형킷을 구입해서 사용하고있습니다,
코드비전을 사용하여 프로그램을 작성할때
처음 초기설정에서 클럭을, 8로 잡아주면 어떻게되는지 궁금합니다,
16.0000으로 되어있긴한데
프로그램상에서 8.000으로 잡으면
원래 클럭보다 낮아서 이상이없는지
아니면 혹시라도 오류가날수있는지 알려주세요,
그리고, 프로그램상에서,
클럭을 설정했을때 ,
8.00000으로 하는것과 16.000000으로 하는것의 차이점도,, 알려주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC제품을 이용하여 주셔서 감사합니다.
통신 관련된 것들 동작 속도가 두배로 나오겟네요.
delay 같은 것들도 실제로는 짧아지는 효과가 있어서, 빠른 것처럼 느껴질겁니다.
망가지거나 그러지는 않습니다.
그러므로, 크리스탈과 마법사에서 설정하는 것과는 같은 것으로 사용하는 게 좋겠습니다.
본 게시판에서는 반드시 본명으로 질문하여 주시기 바랍니다. 본명으로 질문하지 않으면 답변이 나가지 않을 수도 있습니다.
수고하세요.
>atmega128 소형킷을 구입해서 사용하고있습니다,
>코드비전을 사용하여 프로그램을 작성할때
>처음 초기설정에서 클럭을, 8로 잡아주면 어떻게되는지 궁금합니다,
>16.0000으로 되어있긴한데
>프로그램상에서 8.000으로 잡으면
>원래 클럭보다 낮아서 이상이없는지
>아니면 혹시라도 오류가날수있는지 알려주세요,
>
>그리고, 프로그램상에서,
>클럭을 설정했을때 ,
>8.00000으로 하는것과 16.000000으로 하는것의 차이점도,, 알려주시면 감사하겠습니다.
|
||||
| 3601 | 답변완료am-dc1-3d 문의입니다. | 임동욱 | 2009-09-10 | 1,408 |
|
데이터시트를 찾아봤더니..
작동 전압이5~55V가 아니라 12~55V던데요..ㅜㅜㅜㅜ
에고,, 스펙이 뭔가 이상한데 확인좀해주세요~~
그리고 모터를 연결하지않은상태에서 전압을 체크했더니
입력이 10V이하에선 출력단에서 1V도 안나오다가
10.2V? 이상이 돼니 출력단에서도 동일전압이 나오더라구요
모터문제는 아닌거같은데.. 제가산 모듈이 불량인가요?
관리자 답변
안녕하세요? 고객님,
저희 NewTC 를 이용하여 주셔서 감사합니다.
네, 저도 지금 데이터시트를 다시 찾아 봤는 데, 고객님 말씀이 맞습니다.
죄송합니다. 지금까지 그렇게 알고 있었는 데, 죄송합니다.
수정하도록 하겠습니다.
혹시, 그런 문제가 있었다면, 다른 모듈로 교체하여 드리도록 하겠습니다.
본사로 연락 주셔서, Q&A에서 전화하라고 했다고 말씀하시면, 원하시는 방향으로 조치 도와드리도록 하겠습니다.
본의 아니게 불편함을 끼쳐드려서 죄송합니다.
감사합니다.
>데이터시트를 찾아봤더니..
>작동 전압이5~55V가 아니라 12~55V던데요..ㅜㅜㅜㅜ
>에고,, 스펙이 뭔가 이상한데 확인좀해주세요~~
>
>그리고 모터를 연결하지않은상태에서 전압을 체크했더니
>입력이 10V이하에선 출력단에서 1V도 안나오다가
>10.2V? 이상이 돼니 출력단에서도 동일전압이 나오더라구요
>
>모터문제는 아닌거같은데.. 제가산 모듈이 불량인가요?
|
||||
| 3600 | 답변완료am-dc1-3d문의입니다. 스펙상 5~55V 라고 돼어있는데요 | 임동욱 | 2009-09-09 | 1,334 |
|
1,2,4, vcc, gnd 모두 연결한뒤
dc input 만 5~12V까지 천천히 올렸더니
10V가 넘어서야 모터가 움직이던데요
다시 말하면,모터에공급하는전원이 10V이하일때(DC_input)
출력단에서 출력이 안나오는데, 무슨문제인가요??
관리자 답변
안녕하세요?
모터마다 스펙이 다릅니다. 모터의 스펙을 확인하여 보기 바랍니다.
어떤 모터는 7V 넣어도 타버리는 모터가 있습니다.
수고하세요.
>1,2,4, vcc, gnd 모두 연결한뒤
>dc input 만 5~12V까지 천천히 올렸더니
>10V가 넘어서야 모터가 움직이던데요
>
>다시 말하면,모터에공급하는전원이 10V이하일때(DC_input)
>출력단에서 출력이 안나오는데, 무슨문제인가요??
|
||||
| 3599 | 답변완료AM-128PL 문의 | zerobase | 2009-09-09 | 1,443 |
|
ISP핀에 관련 문의
ISP MOSI는 PortB.2, MISO는 PortB.3에 연결이 않되어 있는 것 같은데요....??
관리자 답변
안녕하세요? 고객님,
반드시 본 Q&A는 본명으로 질문하셔야 합니다.
게시판은 여러사람들이 함께 공용으로 보는 공간으로, 본명으로 질문하지 않으시면 질문에 대한 답변을 드리지 않고 있습니다. 계속된 본명이 아닌 질문은 아예 삭제되게 됩니다.
반드시 본명으로 바꿔 주시기 바랍니다. 이번만 답변해 드립니다.
그리고, ATMEGA128 데이터 시트를 받아 보시면, 없으시면 자료실->기존자료실에서 검색하여 찾을 수 있음, ATMEGA128에서는 MOSI MISO를 PDI, PDO로 대체하여 사용한다고 되어 있습니다.
그래서, 그 곳에 연결되어 있지 않은 것입니다.
아래의 초초보 강좌 중 회로도 강좌를 참고 바랍니다.
- 아래 -
http://cafe.naver.com/newtc/256
질문하신 내용은 ATMEGA16과 같은 다른 AVR 쓰시다가 올라오시는 분들이나 처음 AVR을 공부하는 분들이 많이 갖는 질문입니다. 이것 때문에, PCB를 떳다가도 실수하는 분들을 많이 봤습니다.
본사의 자료실->기존자료실의 각종 모듈의 회로도들을 참고하기 바랍니다.
본사 자료실->기존자료실은 내용이 많아서 검색을 통해 찾으면 편리합니다.
수고하세요.
>ISP핀에 관련 문의
>ISP MOSI는 PortB.2, MISO는 PortB.3에 연결이 않되어 있는 것 같은데요....??
|
||||
| 3598 | 답변완료토크와 관련하여 | 김영남 | 2009-09-09 | 1,539 |
|
안녕하세요.
am-ms2 모쥴을 구입해서 테스트를 하고 있는데 궁금한게 있어 문의합니다.
1. 토크를 최대로 해도 샤프트축을 이용하여 잠금장치를 밀어주고 당기는 용도로 사용하고 있는데
밀때 밀리는 반대쪽으로 힘을 가하면 모타가 회전을 하지않습니다.
반대쪽으로 가하는 힘의 세기는 아주 약한편입니다. 어느정도까지는 밀려야 하는데....
왜그런지 ?
2. 주기가 2ms로 clk를 가하면 정상적으로 동작하는데 주기를 1ms로 하면 모타가 돌아가지를 않습니다.
왜그런지 ?
3. 제가 사용하고 있는 모타사양을 첨부하여 보냅니다.
회신바랍니다.
관리자 답변
안녕하세요?
우선, 모터의 토크는 대부분 모터용 전원과 관련이 있습니다.
MS2에 전압은 얼마를 가해주고 있으며, 전류를 어느정도 흘릴 수 있는 어떤 파워를 사용중인지요?
전원 소스로 24V 3A급 SMPS를 추천합니다. 본사에서도 24V 100W급 넉넉한 파워를 필요하신 분들을 위하여 추천 공급하고 있습니다.
전원부를 확인 바랍니다. 그리고, 바이어스 조정을 위한 MS2 중앙에 있는 가변 저항을 돌려 보세요. 적절한 포인트가 있을 겁니다.
감사합니다.
>안녕하세요.
>am-ms2 모쥴을 구입해서 테스트를 하고 있는데 궁금한게 있어 문의합니다.
>1. 토크를 최대로 해도 샤프트축을 이용하여 잠금장치를 밀어주고 당기는 용도로 사용하고 있는데
> 밀때 밀리는 반대쪽으로 힘을 가하면 모타가 회전을 하지않습니다.
> 반대쪽으로 가하는 힘의 세기는 아주 약한편입니다. 어느정도까지는 밀려야 하는데....
> 왜그런지 ?
>
>2. 주기가 2ms로 clk를 가하면 정상적으로 동작하는데 주기를 1ms로 하면 모타가 돌아가지를 않습니다.
> 왜그런지 ?
>
>3. 제가 사용하고 있는 모타사양을 첨부하여 보냅니다.
>
>회신바랍니다.
|
||||
| 3597 | 답변완료USB-ISP 사용 범위 | 박영일 | 2009-09-09 | 1,411 |
|
안녕하세요
USB-ISP 는 ATMEGA만 되는건가요 아니면 AT90S모델들도 가능한가요??
저희 쪽에서 앞에 ATMEGA모델은 잘 라이트가 되는데요
현재 AT90S8515모델에서는 SCK에러가 나오는데요 방법이 있을까요??
로드된 파일을 보시면 에러 내용이 나와 있습니다.
확인 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 USBISP는 90S2313에서 테스트 한 적이 있습니다.
잘 됩니다. 구성하신 회로에 문제가 있는 것은 아니신지요?
확인 바라구요.
확인이 잘 안되시면, 본사로 오셔서 확인하시거나, 택배로 보내서 확인해 주시기 바랍니다.
감사합니다.
>안녕하세요
>
>USB-ISP 는 ATMEGA만 되는건가요 아니면 AT90S모델들도 가능한가요??
>
>저희 쪽에서 앞에 ATMEGA모델은 잘 라이트가 되는데요
>
>현재 AT90S8515모델에서는 SCK에러가 나오는데요 방법이 있을까요??
>
>로드된 파일을 보시면 에러 내용이 나와 있습니다.
>
>확인 부탁드립니다.
|
||||
| 3596 | 답변완료커넥터 연결 관련 문의 | 신성호 | 2009-09-09 | 1,429 |
|
귀사의 AB-M128Pro-A 모델과 타사의 MISP 10핀 커넥터(ISP)커넥터를 JTAG부분에
연결하여 프로그램을 다운로드 받는것이 가능한지 알고 싶습니다.
가능하다면은 연결법을 알고 싶습니다.
그리고 ICC 컴파일러에 해당하는 예제파일 좀 구하려고 하는데 지원 해주실 수 없나
궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
JTAG에 ISP 커넥터를 연결하면 당연히 동작하지 않습니다.
JTAG 포트에는 JTAG을 꽂아야 합니다.
그리고, JTAG을 쓰려면 AVR의 퓨즈비트가 JTAGEN에 체크되어 있어야 합니다.
사용법은 아래와 같습니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=298
그리고, 본사의 예제들이 대부분 ICCAVR로 된 예제들입니다.
자료실->기존자료실에서 소스라고 치면 나옵니다.
- 아래 -
http://www.newtc.co.kr/board/zboard.php?id=pds&select_arrange=headnum&desc=asc&page_num=15&selected=&exec=&sn=off&ss=on&sc=off&category=&keyword=%BC%D2%BD%BA
참고 바랍니다.
감사합니다.
>귀사의 AB-M128Pro-A 모델과 타사의 MISP 10핀 커넥터(ISP)커넥터를 JTAG부분에
>
>연결하여 프로그램을 다운로드 받는것이 가능한지 알고 싶습니다.
>
>가능하다면은 연결법을 알고 싶습니다.
>
>
>그리고 ICC 컴파일러에 해당하는 예제파일 좀 구하려고 하는데 지원 해주실 수 없나
>
>궁금합니다.
|
||||
| 3595 | 답변완료USBISP 질문 드립니다. | 최성권 | 2009-09-09 | 1,381 |
|
안녕하세요. 질문 한가지 드리려고 합니다.
현재 USBISP V02를 구입하여 사용중입니다.
그런데 현 시점에서 장치와의 UART연결이 필요하게 되었습니다(시리얼연결테스트)
V03은 변환커넥터가 있어 연결에 아무런 문제가 없지만 V02는 변환커넥터도 없고, ISP상
에서도 다른 방법이나마 시도할 수 있는 여건이 안되는 걸로 알고 있습니다.
AD-USBSerial을 구매하는 것 외에 가능한 방법이 있는지 알고 싶습니다.
답글 기다리겠습니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
본사에 AD-USBSERIAL 말고도 비슷한 용도로 AD-USBTiny라는 보드가 있습니다.
16,500원으로 USBSERIAL보다 저렴하면서, TTL Level로 쓴다면 모든 기능이 제공됩니다.
USBSERIAL은 PC와 같은 레벨인 +-15V 레벨로 제공되는 추가 기능외에도 몇가지 추가 기능이 더 있습니다만, 임베디드 보드에서의 시리얼 통신만을 하신다면, AD-USBTiny를 구매하셔도 가능합니다.
아쉽게도 말씀하신 대로 USBISP V02는 USBUART 기능이 제공되지 않지만,
V03 펌웨어로(현재 최신버전은 V3.3 버전임) 업그레이드는 무료이니, 본사로 보내주시면 업그레이드 해드립니다.
USBISP V03에서 제공해 드리는 USBUART의 추가 기능은 USBISP 커넥터를 꽂은 상태에서 USBUART를 같이 꽂아서 사용할 수는 없습니다. 같이 계속 꽂아 두면, 두 가지 기능 다 사용이 안 됩니다. 그래서 꼭 주의하여 하나만 꽂아서 사용하여야 합니다.
그래서, 하나의 AVR MCU에서 한 곳에 같이 꽂아서 쓸 수는 없어서, 다운로드 하면서 계속 UART로 모니터링 하려면, 어차피 두가지가 따로 있는 것이 좋습니다. 하나로 다 쓰려면 ISP 커넥터 꽂아서 다운로드 하고, 커넥터 바꿔 꽂고 다시 테스트 후, 다시 빼서 다시 ISP 커넥터 꽂고 이런 식으로 써야 하니까요. USBtiny를 구매하여 사용하시기를 권해 드립니다.
감사합니다.
>안녕하세요. 질문 한가지 드리려고 합니다.
>
>현재 USBISP V02를 구입하여 사용중입니다.
>
>그런데 현 시점에서 장치와의 UART연결이 필요하게 되었습니다(시리얼연결테스트)
>
>V03은 변환커넥터가 있어 연결에 아무런 문제가 없지만 V02는 변환커넥터도 없고, ISP상
>
>에서도 다른 방법이나마 시도할 수 있는 여건이 안되는 걸로 알고 있습니다.
>
>AD-USBSerial을 구매하는 것 외에 가능한 방법이 있는지 알고 싶습니다.
>
>답글 기다리겠습니다.
>
>감사합니다.
|
||||
| 3594 | 답변완료A/S 관련 문의.... | 김태진 | 2009-09-08 | 1,398 |
|
지난주에 A/S 보냈는데
오늘에서야 입금을 했군요
입금자 명은 김태진입니다....
주소는 아마 전북대학교 공대4334호 되있을겁니다.
관리자 답변
네 고객님,
입금 확인 하였구요.
처리해 드리겠습니다.
감사합니다.
>지난주에 A/S 보냈는데
>오늘에서야 입금을 했군요
>입금자 명은 김태진입니다....
>주소는 아마 전북대학교 공대4334호 되있을겁니다.
|
||||
