Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 4758 | 답변완료ATmega128 다운로드시 | 김현석 | 2010-03-22 | 1,347 |
|
USB type의 ISP 다운로드 방식의 키트를 사용하고 있는데요...
connect시 어떤 타입으로 선택해야 하나요?
AVRISP 에 com3로 해야하나요?
관리자 답변
모든 종류가 다 fail 납니다....
|
||||
| 4757 | 답변완료 스테핑 라인트레이서 키트 최고 회전수는 | Tarcy | 2010-03-22 | 1,192 |
|
스테핑 라인트레이서 키트
모델 KR-SL16
에서 이 키트가 구동할 수 있는 Stepping Motor의 최고 회전수는 몇 RPM인가요?
약간 변형해서 다른 곳에 쓰려고 합니다.
관리자 답변
안녕하세요
아래는 SM243 스텝모터 스펙입니다.
- 아래 -
http://www.newtc.co.kr/board/download.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=sm243&select_arrange=headnum&desc=asc&no=299&filenum=2
스템모터는 최대 2400RPM까지 회전하지만, 한 번에 그 속도까지 올릴 수는 없습니다.
가속도 테이블을 작성하여, 하여야 합니다.
스텝모터는 일반 dc 모터 처럼 빨리 회전 하지 못합니다.
이한계 영역을 넘어가면 모든 스텝모터는 탈조 현상을 일으켜
진동만 할뿐입니다.
즉 스텝 모터는 한계 영역이 있기 떄문에 고속 mcu 가 필요 가 없습니다.
KR-SL16 구동 할수 있다는 말입니다.
이 곳은 여러 사람들이 함께 이용하는 공간이므로, 다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>스테핑 라인트레이서 키트
>모델 KR-SL16
>에서 이 키트가 구동할 수 있는 Stepping Motor의 최고 회전수는 몇 RPM인가요?
>약간 변형해서 다른 곳에 쓰려고 합니다.
|
||||
| 4756 | 답변완료[re] [ICC AVR_ATmega48]Code address error 관련 | 정명훈 | 2010-03-22 | 1,290 |
|
빠른 답변 정말 감사합니다...
그런데 귀사에서 제공해주시는 ICC AVR 데모 버젼을 다시 깔아봐도 저같은 경우는 컴파일이 되지
않는데요..
혹시 제가 컴파일을 위한 설정을 잘못한 건가 의심되는데... 이번 PLL이 처음은 아닌데 지금과 같
은 에러가 계속 나와서 당황스럽습니다 ^^
죄송한데 혹시 제가 드린 c파일을 컴파일하셨다면 설정이나 기타 주의해야할 사항같은것을 알려주
실 수 있는지요. 그리고 어려운 부탁이 되지 않을까 조심스럽게 여쭤보는데,혹시 통화가능하시면
연락처 좀 남겨주실수 있으신가요 ..
참고로 동영상 강좌에서 제공하는 프로젝트 설정을 응용하여 아래와 같이 설정하였습니다.
Device configuration : ATmega48
In system programming 부분도 설정함.
좋은 하루 보내시고 수고하십시오.
관리자 답변
다시 확인해 결과 틀린 부분이 있어 내용을 아래와 같습니다.
unsigned char R5_INIT2[24]; << 배열 변수 24개 사용
R5_INIT1[1]=0x01; R5_INIT1[2]=0x00; R5_INIT1[3]=0x01; R5_INIT1[4]=0x00;
R5_INIT1[5]=0x00; R5_INIT1[6]=0x00; R5_INIT1[7]=0x00; R5_INIT1[8]=0x00;
R5_INIT1[9]=0x00; R5_INIT1[10]=0x00; R5_INIT1[11]=0x00; R5_INIT1[12]=0x00;
R5_INIT1[13]=0x00; R5_INIT1[14]=0x00; R5_INIT1[15]=0x00; R5_INIT1[16]=0x00;
R5_INIT1[17]=0x00; R5_INIT1[18]=0x00; R5_INIT1[19]=0x01; R5_INIT1[20]=0x00;
R5_INIT1[21]=0x00; R5_INIT1[22]=0x00; R5_INIT1[23]=0x00; R5_INIT1[24]=0x01;
사용되는 배열변수는 25개 사용하여 변수 오류로 컴파일이 안된 경우 같아 보입니다.
배열의 시작 0 부터이면 24개를 잡았을경우 23번이 끝입니다.
R5_INIT1[0]=0x01; R5_INIT1[1]=0x00; R5_INIT1[2]=0x01; R5_INIT1[3]=0x00;
...........
.........
........
R5_INIT1[20]=0x00; R5_INIT1[21]=0x00; R5_INIT1[22]=0x00; R5_INIT1[23]=0x01;
전부 이렇씩으로 고치셔야 합니다.
직접 작성한 코드는 써포트를 하지 않습니다.
ISP나 컴파일러 문제로 인식 할까봐.? 답변을 드릴는 경우입니다.
감사합니다.
>빠른 답변 정말 감사합니다...
>
>그런데 귀사에서 제공해주시는 ICC AVR 데모 버젼을 다시 깔아봐도 저같은 경우는 컴파일이 되지
>
>않는데요..
>
>혹시 제가 컴파일을 위한 설정을 잘못한 건가 의심되는데... 이번 PLL이 처음은 아닌데 지금과 같
>
>은 에러가 계속 나와서 당황스럽습니다 ^^
>
>죄송한데 혹시 제가 드린 c파일을 컴파일하셨다면 설정이나 기타 주의해야할 사항같은것을 알려주
>
>실 수 있는지요. 그리고 어려운 부탁이 되지 않을까 조심스럽게 여쭤보는데,혹시 통화가능하시면
>
>연락처 좀 남겨주실수 있으신가요 ..
>
>참고로 동영상 강좌에서 제공하는 프로젝트 설정을 응용하여 아래와 같이 설정하였습니다.
>
>Device configuration : ATmega48
>In system programming 부분도 설정함.
>
>좋은 하루 보내시고 수고하십시오.
|
||||
| 4755 | 답변완료뭘 고쳐야 동작할지....(서보모터제어) | 김현석 | 2010-03-22 | 1,436 |
|
아래 질문 답변 감사합니다.^^
일단 UART 제어는 놔두구요.
모터를 돌아가게라도 해보려는데
인터넷에서 카피해온건데 아무리
해도 안돌아 갑니다. 좀 뭐가 틀렸는지 봐주세요.
ㅠㅠ소스는 아래와 같습니다. 제가 임으로 간단히 수정을 좀 했습니다.
#include <avr/io.h>
#include <stdio.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 8000000UL
#define BaudRate 4800
#define PULSE_DUTY 1500000UL // 1500000ns = 1.5 ms (ns단위) // default 가운데
#define PULSE_WIDTH 20000000UL // 20000000ns = 20ms (ns 단위)
#define PULSE_CNT 50 // Pulse count. 한 번 command안에서 실행되는 펄스 갯수
volatile unsigned long clk_period = (uint16_t) (1000000000UL/F_CPU) * 8; // clkio/8 사용하므로 period는 x8
volatile uint8_t pulse_count = PULSE_CNT;
volatile uint8_t op_flag = 0;
/*
Timer 3 사용, OC3A 로 출력
Fast PWM, non-inverting mode
PULSE_DUTY
|<----->|
|<------------ PULSE_WIDTH ------------>|
+-------+ +--------+
| | | |
OC3A +-------+-------------------------------+--------+----------------- ~~~ ---
+ ^ ^
| | |
| +-- OCR3B +--- OCR3A
| OCR3B 비교 일치시 clear OCR3A 일치시 다시 0 부터 count (OCR3A 가 TOP)
+-- Set at bottom
*/
void Usart0_Tx(char send_data)
{
while(!(UCSR0A & 0x20));
UDR0 = send_data;
}
char Usart0_Rx()
{
char receive_data;
while(!(UCSR0A & 0x80));
receive_data = UDR0;
Usart0_Tx(receive_data);
return (receive_data);
}
void Usart0_Init(void)
{
UBRR0L = (uint8_t) (F_CPU/16/BaudRate - 1);
UCSR0B = 0x18; //Rx,Tx enable, 8bit
UCSR0C = 0x06; //no parity, 1 stop bit, 8bit
}
void send_str(char *str)
{
while(*str != 0) {
if(*str == '\\n') {
Usart0_Tx(0x0D);
//Usart0_Tx(0x0A);
}
Usart0_Tx(*str++);
}
}
SIGNAL(SIG_OUTPUT_COMPARE3B)
{
cli();
pulse_count--;
if(pulse_count == 0) {
TCCR3A = 0x00;
TCCR3B = 0x00;
//op_flag = 0;
}
sei();
}
int main()
{
DDRE |= 0x10; // PE4/OC3B output
// Counter 3, channel B, Compare Output Mode, Fast PWM
TCCR3A = 0x23; //
TCCR3B = 0x1A; // Waveform generation mode 15. clkio/8 clock 사용.
OCR3A = (uint16_t) (PULSE_WIDTH/clk_period); //
OCR3B = (uint16_t) (PULSE_DUTY/clk_period); // default로 1.5ms 가운데
ETIMSK = 0x08; // Timer/Counter3, Output Compare B Match Interrupt Enable
sei();
return 0;
}
관리자 답변
컴파일러는 AVR STUDIO입니다
|
||||
| 4754 | 답변완료USB-to-UART | 김현석 | 2010-03-22 | 1,302 |
|
메인키트의 UART 포트(4핀)과 Usb 키트를 연결하여 pc와 연동하려는데
본 사이트의 제품은 uart포트가 3핀으로 되어있네요
그래서 케이블을 자작하려는데 배선도좀 표기해 주시면 감사하겠습니다
관리자 답변
안녕하세요
AM-128PL 로 된 모델이시면, 케이블 작업만으로 컴푸터와 rs232 통신을
하지못합니다.
max232 이라는 칩을 사용하여 컴퓨터 rs232 레벨로 변경하여 사용해야합니다.
AD-USBSERIAL,AM-RS232M 이두제품이 max232 칩을 역할을 하고 있습니다.
두제품은 키트형식이 판매되는 제품이 아니여서 회로도 공개는 되지 않습니다.
아래에 max232 칩의 시트입니다. 참고 하여 제작 하시길 바랍니다.
http://pdf1.alldatasheet.co.kr/datasheet-pdf/view/73074/MAXIM/MAX232.html
수고하세요
>메인키트의 UART 포트(4핀)과 Usb 키트를 연결하여 pc와 연동하려는데
>본 사이트의 제품은 uart포트가 3핀으로 되어있네요
>그래서 케이블을 자작하려는데 배선도좀 표기해 주시면 감사하겠습니다
|
||||
| 4753 | 답변완료모터 구동부 부품 종류에 대해서요 | 조성진 | 2010-03-22 | 1,304 |
|
AM-DC1-4D
AM-DC1-3D
AM-DC2-2D
AM-DC2-4C
종류가 있는데 듀얼은 모터2개가 들어가는건 알겠고 싱글은 1개인거 아는데
숫자 뒤에 A가 암페어고 제어신호에서
/enable 랑 /break 랑 이런게 뭔지 찾아봐도 안나와서요
또 모터 구동부 듀얼되는걸로 스텝핑 모터랑 DC모터 2개를 꼽을수있나요?
관리자 답변
안녕하세요
일반 dc모터와 스텝 모터 와 함께는 사용할수가 없습니다.
- 아래는 듀얼로 된 스텝 모터 드라이버입니다.
AM-CS2P
AM-MS2
- 아래는 듀얼로 된 DC 모터 드라이버입니다.
AM-DC2-4C
AM-DC2-2D
- 아래는 싱글로 된 DC 모터 드라이버입니다.
AM-DC1-3D
AM-DC1-4D
아래 용어에 뜻은
/enable - 액티브 low 일때 , 즉 전압이 0일때 모터 드라이버를 사용이 가능하다는 말입니다.
/break -액티브 low 일때, 즉 전압이 0일때 모터를 멈추는 기능 입니다.
수고하세요
>AM-DC1-4D
>
>AM-DC1-3D
>
>AM-DC2-2D
>
>AM-DC2-4C
>
>종류가 있는데 듀얼은 모터2개가 들어가는건 알겠고 싱글은 1개인거 아는데
>
>숫자 뒤에 A가 암페어고 제어신호에서
>
>/enable 랑 /break 랑 이런게 뭔지 찾아봐도 안나와서요
>
>또 모터 구동부 듀얼되는걸로 스텝핑 모터랑 DC모터 2개를 꼽을수있나요?
|
||||
| 4752 | 답변완료다시 문의 합니다. | 정성진 | 2010-03-22 | 1,354 |
|
ATmega 64를 이용한 보드가 있는데 그 보드에 JTAG포트로 단자가 10핀짜리가 나와있습니다.
그래서 그부분에 USB-ISP를 이용하여 Read Flash를 하고자 하는데 셋팅 방법을 몰라 문의 하게 되었습니다.
컴파일러는 CodeVision을 사용하고 있습니다.
관리자 답변
안녕하세요
jtag 과 isp 핀을 서로 다른것 사용합니다.
즉 jtag 과 isp 나오는 포트는 서로 사용할 수 없다는 말입니다.
사용하는 보드에 isp용 포트가 안나와있으면 따로 뽑아서 사용하셔야 합니다
아래에 데이타 시트입니다. 핀맵을 확인하시길바랍니다.
http://atmel.com/dyn/resources/prod_documents/doc8160.pdf
수고하세요
>ATmega 64를 이용한 보드가 있는데 그 보드에 JTAG포트로 단자가 10핀짜리가 나와있습니다.
>그래서 그부분에 USB-ISP를 이용하여 Read Flash를 하고자 하는데 셋팅 방법을 몰라 문의 하게 되었습니다.
>컴파일러는 CodeVision을 사용하고 있습니다.
|
||||
| 4751 | 답변완료[ICC AVR_ATmega48]Code address error 관련 | 정명훈 | 2010-03-22 | 1,526 |
|
안녕하세요. 저는 ATmega48을 사용하는 사람입니다.
다름이 아니라 제가 ATmega48을 이용하여 LMX2531 PLL을 구동해야 하는데, 제가 건드릴 수 있
는 레지스터는 총 24비트짜리 13개 입니다. ICC AVR을 사용하고 있어서 이를 이용하여 본 레지스
터를 짠 프로그램을 입력하려 하는데 address 에러가 뜨는데 당췌 알지 못해서 이렇게 연락드립니
다. 귀사에 ATmega128kit이나 usb-isp 포트를 사용하고 있어서, 매번 들르느데 참고자료도 많고
많은 질문에도 답변을 해주셔서, 난관에 부딪힌 저도 이렇게 남겨봅니다 ^^
좋은 하루보내시고 수고하십시오.
답변기다리겠습니다.
관리자 답변
안녕하세요
정확히는 모르지만 , 메모리 초과로 인한 메시지로 보입니다.
정확한 내용은 완전한 코드를 올리셔야 알수 있습니다.
코드를 첨부해서 다시 올려 주시길 바랍니다.
수고하세요
>안녕하세요. 저는 ATmega48을 사용하는 사람입니다.
>
>다름이 아니라 제가 ATmega48을 이용하여 LMX2531 PLL을 구동해야 하는데, 제가 건드릴 수 있
>
>는 레지스터는 총 24비트짜리 13개 입니다. ICC AVR을 사용하고 있어서 이를 이용하여 본 레지스
>
>터를 짠 프로그램을 입력하려 하는데 address 에러가 뜨는데 당췌 알지 못해서 이렇게 연락드립니
>
>다. 귀사에 ATmega128kit이나 usb-isp 포트를 사용하고 있어서, 매번 들르느데 참고자료도 많고
>
>많은 질문에도 답변을 해주셔서, 난관에 부딪힌 저도 이렇게 남겨봅니다 ^^
>
>좋은 하루보내시고 수고하십시오.
>
>답변기다리겠습니다.
>
|
||||
| 4750 | 답변완료AVR STUDIO 에서 지원해 주는 드라이버를 이용가능한 다운로더가 있나요? | 박래익 | 2010-03-22 | 1,316 |
|
기능경기대회 모바일로보틱스에서 사용하고자 하는데요.
AVR STUDIO 에서 지원해 주는 드라이버를 이용가능한 다운로더가 있나요?
드라이버를 따로 가지고 갈 수 없도록 되어 있어서요.
저희는 AD-USB ISP 03을 이용하고 있는데 지원드라이버가 문제일 것 같네요...
관리자 답변
안녕하세요
AD-USB ISP 는 드라이버 를 꼭 깔아서 사용하는 제품입니다.
avrstdio 를 드라이버 없이 사용할려면 현재 판매 하고 있는 AD-JTAG이 있습니다.
jtag을 사용사능한 avr계열을 mega8 부터 mega 128 까지만 지원되면
퓨즈 비트중에 jtag en 셋팅이 되어 있어야 사용이 가능합니다.
수고하세요
>기능경기대회 모바일로보틱스에서 사용하고자 하는데요.
>
>AVR STUDIO 에서 지원해 주는 드라이버를 이용가능한 다운로더가 있나요?
>드라이버를 따로 가지고 갈 수 없도록 되어 있어서요.
>
>저희는 AD-USB ISP 03을 이용하고 있는데 지원드라이버가 문제일 것 같네요...
|
||||
| 4749 | 답변완료예제자료 컴파일러 관련질문입니다. | 염태호 | 2010-03-22 | 1,376 |
|
제품구입후 시디에 있는 예제들을봤는데 대부분이 컴파일러를 ICCAVR로 되있습니다.
저는 AVRSTUDIO를 사용하는데 AVRSTUDIO로 컴파일러 된 예제는 없습니까?
참고로 제품은 128PRO입니다.
답변기다리겠습니다.
관리자 답변
안녕하세요, 고객님
대부분의 예제는 icc 컴파일러로 작성하였습니다.
코드비젼 ,winavr 를 사용자를 위해 간략한 예제코드만 제공합니다.
컴파일로 코드짜는법은 동일합니다. 헤더와 인터럽터 선언 부분이 틀립니다.
아래 링크를 참조하시길 바랍니다.
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=winavr
http://www.newtc.co.kr/board/view.php?id=mega128_lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=winavr&select_arrange=headnum&desc=asc&no=101
수고하세요
>제품구입후 시디에 있는 예제들을봤는데 대부분이 컴파일러를 ICCAVR로 되있습니다.
>저는 AVRSTUDIO를 사용하는데 AVRSTUDIO로 컴파일러 된 예제는 없습니까?
>참고로 제품은 128PRO입니다.
>답변기다리겠습니다.
|
||||
| 4748 | 답변완료문의사항!!!!!!!!!!! | 김상태 | 2010-03-22 | 1,310 |
|
서보모터 제어모듈(일반형)AM-CSVP 을 구입하는데요
이 보드에 사용할수 있는 모터좀 알려주세요!!
관리자 답변
안녕하세요, 고객님
AM-CSVP 보드와 연결이 가능한 서보모터 모델명은
SE-A410 입니다. 현재는 한종류만 판매 되고 있습니다.
다른 회사의 서보 모터들도 호환 가능하므로, 서보 모터는 메이커 관계없이 사용하시면 됩니다.
수고하세요
>서보모터 제어모듈(일반형)AM-CSVP 을 구입하는데요
>
>이 보드에 사용할수 있는 모터좀 알려주세요!!
>
>
|
||||
| 4747 | 답변완료USB-ISP V03을 이용한 Read | 정성진 | 2010-03-22 | 1,354 |
|
ATmega64의 칩을 JTAG를 이용해서 READ Flash하려고합니다.
codevision을 이용하여 하려고 하는데 잘 안되 다른 셋팅이 필요한지 알고 싶어
글을 남깁니다.
자세한 설명을 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
그런데, USBISP 와 JTAG은 전혀 다른 장비입니다.
어떤 장비를 이용하여 하려고 하는 것인지 알려 주시기 바랍니다.
수고하세요.
>ATmega64의 칩을 JTAG를 이용해서 READ Flash하려고합니다.
>codevision을 이용하여 하려고 하는데 잘 안되 다른 셋팅이 필요한지 알고 싶어
>글을 남깁니다.
>자세한 설명을 부탁드립니다.
|
||||
| 4746 | 답변완료Servo Motor 제어 | sorii8 | 2010-03-21 | 1,374 |
|
저는 아래의 두가지를 사용하여 서보 모터를 돌리려고 합니다.
1)AVR MEGA 128pro 개발키트
2) 서보모터 제어모듈(저가형): AM-CSV
그런데, 위의 AM-CSV 제어 모듈은 전력이 모자라서
서보 모터 4개 밖에 못 돌리더군요.
4개도 버거워 하는 것 같습니다.
시분할 을 통해 12개의 모터를 돌릴 수 있는 방법은 없을까요?
12 관절 로봇을 만드려 하는 데 이것이 걸림돌 이네요..
친절한 예제 code 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
서보모터의 경우 전류 문제가 관건입니다.
4족이나 6족 로봇 등을 제작하는 경우, 전류 문제로 많이 골치를 썩게 되죠.
CSVP를 이용하시면 보다 나은 전류 환경으로 동작시킬 수 있습니다.
CSVP에 직접 전원을 공급하여, 사용하는 방법입니다.
그것도 부족하게 되면, CSVP의 방열판을 떼어네고, 거기에 큰 알미늄 판을 달아서 방열판 대용으로 이용하면 됩니다. 예전에 제가 가르친 학생은 그걸 로봇 바디에 붙여서 방열을 시키더군요.
그리고, 아무리 시분할 시켜도, 기본적으로 서보 자체가 먹는 전류량이 있기 때문에, CSV만 가지고는 할 수가 없습니다. CSVP를 이용하세요. 예제코드는 자료실->기존자료실에서 서보 라고 치면 나옵니다.
그리고, 다음에는 꼭 본명으로 질문하여 주시기 바랍니다. 본 게시판은 여러사람이 함께 사용하는 게시판으로 반드시 본명으로 질문하는 것을 원칙으로 하고 있습니다.
수고하세요.
>저는 아래의 두가지를 사용하여 서보 모터를 돌리려고 합니다.
>
>1)AVR MEGA 128pro 개발키트
>
>2) 서보모터 제어모듈(저가형): AM-CSV
>
>그런데, 위의 AM-CSV 제어 모듈은 전력이 모자라서
>서보 모터 4개 밖에 못 돌리더군요.
>4개도 버거워 하는 것 같습니다.
>
>시분할 을 통해 12개의 모터를 돌릴 수 있는 방법은 없을까요?
>12 관절 로봇을 만드려 하는 데 이것이 걸림돌 이네요..
>
>친절한 예제 code 부탁드립니다.
>
|
||||
| 4745 | 답변완료스텝모터구동 소스 | 박영재 | 2010-03-21 | 1,388 |
|
M128-B 보드, AM-MS2 ,SE-SM모터(2개) 입니다
예제에 있는 아래의소스를 avr studio로 에러메세지 없이 컴파일 하여 다운로드 하였는데
모터가 작동하질 않고, 웅~ 소리만나고 돌지는않습니다, 12v300mA로 직접전원공급하는데
충전기에서 열이 굉장히납니다
혹시 아래의 소스가AM-MS2 에적용않되는 소스인가요?
스위치나 외부신호받는것없이
단순히 오른쪽반바퀴정도 돈후 왼쪽반바퀴정도만 돌고 스톱 할려고 합니다
그렇게만 해주시면 나머지는 내가응용할수있겠습니다
아래소스좀 수정해주시면 고맙겠습니다
// Stepping Motor Control Application
// Target : M128
// Crystal: 16Mhz
//
// Made by New Technology Company(N.T.C) in Korea.
// DAEWOO RYU
// Email : davidryu@newtc.co.kr
// 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 <avr/io.h>
#define MOTOR_PORT PORTD // 스테핑 모터 연결 포트
#define MOTOR_PORT_DDR DDRD // 스테핑 모터 연결 포트의 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)
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x03;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0xff;
PORTD = 0x00;
DDRD = 0xff;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
//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
MOTOR_LEFT_CLK;
MOTOR_RIGHT_CLK;
/* 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%)
// 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;
}
int putchar(char c)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = c;
return c;
}
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<600;j++);
}
}
/* main function-----------------------------------*/
void main(void)
{
volatile unsigned char step=0;
MOTOR_PORT_DDR = 0xff;
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CCW;
MOTOR_RIGHT_CW;
PORTG=0x01;
/* 딜레이로 마이크로 스텝 드라이버 구동 */
while(1){
PORTG = ~PORTG;
delay(100);
}
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 아래 소스는 맞는 것 같습니다만, 전원에 문제가 있는 것 같네요.
스테핑 모터는 최소 12V 1A 짜리 SMPS를 사용하는 것이 좋겠습니다.
그렇지 않으면 전류가 떨어지니까, 전압이 떨리면서 무지 열이 나게 됩니다.
제대로된 동작도 안되구요. 그리고, 전원을 교체한 후 모터 드라이버 중간에 있는 가변저항을 돌려서 바이어스를 맞춰서 사용해야 열도 안나고, 제대로 돌게 됩니다.
그리고, 너무 빨리 돌려도 웅웅 거리게 되는 데, 그런 것 같지는 않네요.
수고하세요.
>M128-B 보드, AM-MS2 ,SE-SM모터(2개) 입니다
>예제에 있는 아래의소스를 avr studio로 에러메세지 없이 컴파일 하여 다운로드 하였는데
>모터가 작동하질 않고, 웅~ 소리만나고 돌지는않습니다, 12v300mA로 직접전원공급하는데
>충전기에서 열이 굉장히납니다
>혹시 아래의 소스가AM-MS2 에적용않되는 소스인가요?
>
>스위치나 외부신호받는것없이
>단순히 오른쪽반바퀴정도 돈후 왼쪽반바퀴정도만 돌고 스톱 할려고 합니다
>그렇게만 해주시면 나머지는 내가응용할수있겠습니다
>아래소스좀 수정해주시면 고맙겠습니다
>
>
>
>// Stepping Motor Control Application
>// Target : M128
>// Crystal: 16Mhz
>//
>// Made by New Technology Company(N.T.C) in Korea.
>// DAEWOO RYU
>// Email : davidryu@newtc.co.kr
>// 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 <avr/io.h>
>#define MOTOR_PORT PORTD // 스테핑 모터 연결 포트
>#define MOTOR_PORT_DDR DDRD // 스테핑 모터 연결 포트의 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)
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x03;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00;
> DDRC = 0xff;
> PORTD = 0x00;
> DDRD = 0xff;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
>}
>
>//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
> MOTOR_LEFT_CLK;
> MOTOR_RIGHT_CLK;
>/* 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%)
>// 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;
>}
>
>
>int putchar(char c)
>{
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
>
> UDR0 = c;
> return c;
>}
>
>int getchar(void)
>{
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
>}
>
>
>void delay(int n)
>{
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<600;j++);
> }
>}
>
>
>/* main function-----------------------------------*/
>void main(void)
>{
> volatile unsigned char step=0;
>
> MOTOR_PORT_DDR = 0xff;
>
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
> MOTOR_LEFT_CCW;
> MOTOR_RIGHT_CW;
> PORTG=0x01;
> /* 딜레이로 마이크로 스텝 드라이버 구동 */
> while(1){
> PORTG = ~PORTG;
> delay(100);
> }
>
>}
>
>
|
||||
| 4744 | 답변완료USB-UART 질문입니다 | 김동준 | 2010-03-20 | 1,450 |
|
AVR E번 채널에서 나오는 TX신호를
USB-UART 미니모듈의 RX에 물려 사용하려합니다
GND와 VCC에는 어떤 값을 물려야 하나요??
VCC에 입력전압 5볼트를 걸어야 합니까??
USB를 통해 전원이 입력되지 않나요??
VCC에 전압을 걸어야 한다면 어떤전압을, 왜 걸어야 하는건지용?
답변부탁드립니다-
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
그렇게 연결하여 사용하시면 됩니다. 즉, AVR의 TX와 USBUART의 RX에 물리면 서로 크로스가 되니까, 한쪽에선 보내고 한쪽에선 받고 하고, 레벨도 서로 맞으니까 문제 없습니다.
다만, 무슨 회로를 꾸미시던지 간에 GND를 일치 시키는 것은 당연히 하여야 합니다.
GND가 일치되지 않으면, 전압 레벨이 안정될 수 없어서, 기준이 없으니 당연히 제대로 된 동작이 될 수 없겠지요?
그리고, USBUART의 VCC는 연결하지 않아도 됩니다. 그냥 남겨 두어도 된다는 말이지요.
메뉴얼을 좀 더 읽어보면 나오는 사항인데, 혹시라도 USB에서 나오는 5V를 외부 회로에서 사용하는 것이 필요한 사람들을 위해서 남겨둔 것이지, 꼭 필요한 것은 아닙니다. 그리고, 거기서 나오는 5V는 가능하면 사용하지 않는 것을 권고합니다. 왜냐하면, 500mA로 제한된 전류 문제도 있지만, PC 메이커마다 또 제한시키는 전류들이 다 다르며, 너무 많이 끌어 쓰게 되면, PC 자체가 끊어 버리는 경우가 대부분이지만, 실수하면 PC가 망가질 수 있는 가능성도 있어서입니다. 물론, PC도 보호회로를 내장하고 있고, 본사의 USBUART 미니모듈도 그렇습니다. 하지만, 주의하여 사용하는 것이 중요하며, 꼭 필요할 때 이외에는 가능한 그 쪽 전원은 끌어 쓰지 않는 것이 좋습니다.
수고하세요.
>AVR E번 채널에서 나오는 TX신호를
>
>USB-UART 미니모듈의 RX에 물려 사용하려합니다
>
>GND와 VCC에는 어떤 값을 물려야 하나요??
>
>VCC에 입력전압 5볼트를 걸어야 합니까??
>
>USB를 통해 전원이 입력되지 않나요??
>
>VCC에 전압을 걸어야 한다면 어떤전압을, 왜 걸어야 하는건지용?
>
>답변부탁드립니다-
|
||||
