Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 2033 | 답변완료3축 가속도계의 초기값 문의 | sprix | 2008-11-27 | 1,355 |
|
안녕하세요.
귀사의 3축가속도계를 구입하여 사용하고 있는 사용자입니다.
다름이 아니고 3축 가속도계를 ATmega128에 장착해서 사용중인데요
맞게 잘 장착한 것인지 궁금해서 문의 드립니다.
3.3V 전압을 인가했구요 XYZ 각 축에서의 ADC 값을 읽어 들여 사용중입니다.
그런데 보드의 특성상 AREF를 인가하기가 쉽지가 않아서 그냥 캐패시터만
전원부에 부착했는데요. 그러니까 결국 3.3V 전원 출력단에 캐패시터를 하나
달아서 전원을 안정화 시켰다는 이야기입니다.
이렇게 해도 될지요?
마지막으로 맞게 측정되는 값이라면, 그냥 평면의 책상에 올려 놓았을때 측정되는
값이 어느정도 나와야 잘 측정되는 것이라고 할 수 있을지 궁금합니다.
답변 부탁드릴께요.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
그런데, AVR 보드는 저희 보드가 아닌가 봅니다.
저희 보드는 AREF를 기본이 5V 로 되어 있지만, 따로 3.3V를 연결하면 되도록 AREF 핀을 별도로 제공하고 있거든요. 그 핀에 3.3V를 연결하면 ADC 범위가 0~3.3V가 됩니다. 하지만, 고객님의 사정상 어쩔수 없이 그렇게 연결하셨다고 해도, 3.3V가 잘 들어가고 있을 테니까, 괜찮을 거 같습니다. 물론 고주파 노이즈 제거상 104를 달아 주셨으면 더 좋았겠지요.
책상 위에 올려 놓았을 때, 어떤 위치에 있을 지 모르지만, 각 축마다 일정한 값으로 300~550 사이의 값이 잘 나오면 정상일 것 같습니다. 본사의 소스를 참고하여 쓰시면 될것 같습니다. 아래에 윈도쪽 소스와 ATMEGA128용 소스를 모두 공개하고 있으니, 사용하시면 되겠습니다.
- 아래 -
http://www.newtc.co.kr/download/AM-3AXIS/Window_Example.zip
수고하세요.
>안녕하세요.
>
>귀사의 3축가속도계를 구입하여 사용하고 있는 사용자입니다.
>
>다름이 아니고 3축 가속도계를 ATmega128에 장착해서 사용중인데요
>
>맞게 잘 장착한 것인지 궁금해서 문의 드립니다.
>
>3.3V 전압을 인가했구요 XYZ 각 축에서의 ADC 값을 읽어 들여 사용중입니다.
>
>그런데 보드의 특성상 AREF를 인가하기가 쉽지가 않아서 그냥 캐패시터만
>
>전원부에 부착했는데요. 그러니까 결국 3.3V 전원 출력단에 캐패시터를 하나
>
>달아서 전원을 안정화 시켰다는 이야기입니다.
>
>이렇게 해도 될지요?
>
>마지막으로 맞게 측정되는 값이라면, 그냥 평면의 책상에 올려 놓았을때 측정되는
>
>값이 어느정도 나와야 잘 측정되는 것이라고 할 수 있을지 궁금합니다.
>
>답변 부탁드릴께요.
|
||||
| 2032 | 답변완료'AD-USBISP V02' 질문 있습니다 | 김종구 | 2008-11-27 | 1,279 |
|
'AD-USBISP V02'를 구매하려고 합니다.
저는 C언어를 사용하지 않고 다를 언어를 사용합니다.
그래서 컴파일해서 HEX나 BIN로 만들어 포니프로에서 다운로드했습니다.
귀사의 'AD-USBISP V02'를 지원하는 프로그램이 있는지요?(HEX나 BIN을 불러와서 AVR에 다운로드...)
관리자 답변
안녕하세요. 고객님..
저희 NTC제품을 이용해 주셔서 감사합니다.
AVRSTUDIO나 ICCAVR을 이용하시면 쉽게 HEX파일을 타겟보드에 라이트할수 있습니다. AVRSTUDIO나 ICCAVR은 저희 자료실에 가시면 다운받을 수 있습니다.
감사합니다.
>'AD-USBISP V02'를 구매하려고 합니다.
>저는 C언어를 사용하지 않고 다를 언어를 사용합니다.
>그래서 컴파일해서 HEX나 BIN로 만들어 포니프로에서 다운로드했습니다.
>
>귀사의 'AD-USBISP V02'를 지원하는 프로그램이 있는지요?(HEX나 BIN을 불러와서 AVR에 다운로드...)
|
||||
| 2031 | 답변완료모터 제어시 궁금한점이 있습니다. | 모비딕 | 2008-11-27 | 1,335 |
|
BLDC나 스테핑 모터 제어시
모터에 Clock 과 Enable중 어느 것을 먼저 주어야하나요?
먼저 주어야하는 이유도 설명해주시면 고맙겠습니다.
관리자 답변
안녕하세요...고객님.
저희 NTC제품을 이용해 주셔서 감사합니다.
어느 것을 먼저 하셔도 상관없습니다.
보드에 파워를 넣고 스위치를 온하는것과 온 되어 있는 상태에서 파워를 넣으나 마찬가지겠지요..
감사합니다.
>BLDC나 스테핑 모터 제어시
>
>모터에 Clock 과 Enable중 어느 것을 먼저 주어야하나요?
>
>먼저 주어야하는 이유도 설명해주시면 고맙겠습니다.
|
||||
| 2030 | 답변완료시리얼통신용 usb가 이상해요. | 박재형 | 2008-11-27 | 1,394 |
|
안녕하세요..
얼마전까지 잘 사용하던 시리얼통신할때 쓰는 usb가.. 이상하네요
UART 랑 컴터랑 연결해서 사용하는거요..
GND, TXd, RXd 3핀만 연결했는데 이상하게 회로에 2.5v 전압이 걸리네요
그리고 당연히 데이터 송수신도 안돼고요..
이거 usb 가 고장난건가요??
만일 고장났다면.. a/s 도 가능한가요???
관리자 답변
안녕하세요. 고객님...저희 NTC제품을 이용해 주셔서 감사합니다.
핀연결 다시 한번 확인해주시고 전원이 안들어갔는데 회로에 전원이 들어갔다니 이상하네요. 혹시 RX, TX핀이 Vcc에 연결된건 아닌가요?
저희 회사로 보내주시면 테스트해서 A/S해 드리겠습니다.
참고로, 테스트 결과 유료 A/S에 해당되면 A/S비 부담하셔야 합니다.
감사합니다.
>안녕하세요..
>
>얼마전까지 잘 사용하던 시리얼통신할때 쓰는 usb가.. 이상하네요
>
>UART 랑 컴터랑 연결해서 사용하는거요..
>
>
>GND, TXd, RXd 3핀만 연결했는데 이상하게 회로에 2.5v 전압이 걸리네요
>
>그리고 당연히 데이터 송수신도 안돼고요..
>
>이거 usb 가 고장난건가요??
>
>만일 고장났다면.. a/s 도 가능한가요???
>
>
|
||||
| 2029 | 답변완료AM-128 Pro 질문입니다. | 신준수 | 2008-11-26 | 1,402 |
|
안녕하세요.
AM-128 Pro를 구입해서 사용중인데요.
설정중에 호기심으로 퓨즈비트 설정을 바꾸었는데 그후로 아예 부팅이 안됩니다.
A/S가 가능한지 아니면 돈 주고 새로 사야하는건지 질문 드려봅니다. ㅠ_ㅠ
관리자 답변
안녕하세요. 고객님...
저희 NTC제품을 이용해 주셔서 감사합니다.
퓨즈비트의 클럭선택부분을 외부 오실레이트로 설정한것 같군요..
인공호흡을 통해 살릴수 있습니다.
가지고 찾아오시든지 아님 택배로 보내주시면 A/S해 드리겠습니다.
참고로 택배비는 본인 부담입니다.
감사합니다.
>안녕하세요.
>AM-128 Pro를 구입해서 사용중인데요.
>설정중에 호기심으로 퓨즈비트 설정을 바꾸었는데 그후로 아예 부팅이 안됩니다.
>A/S가 가능한지 아니면 돈 주고 새로 사야하는건지 질문 드려봅니다. ㅠ_ㅠ
|
||||
| 2028 | 답변완료dc모터구동 문의 드립니다. | 이정 | 2008-11-26 | 1,396 |
|
아래 소스에서 for부문을 넣지않으면 dc모터가 정방향 역방향구동을 계속 반복하는데 for 부분을 넣으면 a 방향으로 돌다가 다시 방향을 바꿔서 b 방향으로만 계속 도는데 왜 그런가요?
예제 소스에 있는 부분에서 속도 조절하려고 하는데 잘 되지 않네요
void main(void)
{
int i, d;
init_devices();
ENABLE1_ON;
PWM1_ON;
BREAK1_OFF;
printf("Motor Control V01W\\r\\n");
while(1){
DIR1_ON;
for(d=0; d<10; d++){
for(i=0;i<1000;i++){
delay(5000);
PORTG = 0x01;
printf("CW\\r\\n");
DIR1_OFF;
for(d=0; d<10; d++){
for(i=0;i<1000;i++){
delay(5000);
PORTG = 0x02;
printf("CCW\\r\\n");
관리자 답변
안녕하세요? 고객님,
소스에서 }} 이렇게 닫는 부분이 없네요.
이 소스가 돌아갔나요?
for(d=0; d<10; d++){
for(i=0;i<1000;i++){
그리고, 정방향 역방향이라는 게 a방향, b 방향하고 같은 말인가요
수고하세요.
>아래 소스에서 for부문을 넣지않으면 dc모터가 정방향 역방향구동을 계속 반복하는데 for 부분을 넣으면 a 방향으로 돌다가 다시 방향을 바꿔서 b 방향으로만 계속 도는데 왜 그런가요?
>예제 소스에 있는 부분에서 속도 조절하려고 하는데 잘 되지 않네요
>
>void main(void)
>{
> int i, d;
> init_devices();
>ENABLE1_ON;
> PWM1_ON;
> BREAK1_OFF;
> printf("Motor Control V01W\\r\\n");
>
> while(1){
> DIR1_ON;
> for(d=0; d<10; d++){
> for(i=0;i<1000;i++){
> delay(5000);
> PORTG = 0x01;
> printf("CW\\r\\n");
> DIR1_OFF;
> for(d=0; d<10; d++){
> for(i=0;i<1000;i++){
> delay(5000);
> PORTG = 0x02;
> printf("CCW\\r\\n");
>
|
||||
| 2027 | 답변완료인터럽트 질문입니다 | 윤남준 | 2008-11-26 | 1,471 |
|
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
volatile int sec;
volatile char hour, min;
volatile char run_flag;
volatile char key_flag=0;
volatile char key;
void lcd_iw(char inst)
{
PORTB=0x04;
PORTD=inst & 0xF0;
PORTB&=0xFB;
PORTB=0x04;
PORTD=inst<<4;
PORTB&=0xFB;
_delay_ms(2);
}
void lcd_dw(char dw)
{
PORTB=0x05;
PORTD=dw & 0xF0;
PORTB&=0xFB;
PORTB=0x05;
PORTD=dw<<4;
PORTB&=0xFB;
_delay_ms(40);
}
void init_lcd(void)
{
lcd_iw(0x28);
lcd_iw(0x0C);
lcd_iw(0x06);
lcd_iw(0x01);
}
void lcd_str(char *str)
{
while(*str)
{
lcd_dw(*str++);
}
}
void lcd_2d(char number)
{
char i;
i=number/10;
lcd_dw(i+'0');
i=number%10;
lcd_dw(i+'0');
}
void Clear_time(void)
{
sec=0;
min=0;
hour=0;
lcd_iw(0xC0);
char *str=" aa:bb:cc.00 ";
lcd_str(str);
}
void Display_time(void)
{
lcd_iw(0xC2);
lcd_2d(hour);
lcd_iw(0xC5);
lcd_2d(min);
lcd_iw(0xC8);
lcd_2d(sec/100);
lcd_iw(0xCB);
lcd_2d(sec%100);
}
char key_in(void)
{
char key;
key=PINF & 0xFF;
if(key==0x00)
{
if(key_flag==0)
return 0x00;
else
{
_delay_ms(20);
key_flag=0;
return 0x00;
}
}
else
{
if(key_flag != 0)
return 0x00;
else
{
key_flag=1;
return key;
}
}
}
ISR(TIMER1_COMPA_vect)
{
sec++;
if(sec==6000)
{
sec=0;min++;
if(min==60)
{
min=0;hour++;
if(hour==24) hour=0;
}
}
Display_time();
}
int main(void)
{
DDRA=0xFF;
DDRD=0xF0;
DDRB=0x07;
DDRF=0x00;
//volatile char key;
char *str=" AVR STOP WATCH";
init_lcd();
lcd_str(str);
Clear_time();
run_flag=0;
TCCR1A=0x00;
TCCR1B=0x0C;
TCCR1C=0x00;
OCR1A=624;
TCNT1=0X00;
TIMSK=0x10;
ETIMSK=0x00;
TIFR=0x3C;
ETIFR=0x01;
while(1)
{
switch(key_in())
{
case 0x01: if(run_flag == 1) break;
run_flag = 1;
PORTA=0X03;
SREG = 0x80;
break;
case 0x04: if(run_flag == 1) break;
SREG =0x00;
PORTA=0X04;
run_flag = 1;
Clear_time();
break;
case 0x10: if(run_flag == 0) break;
SREG =0x00;
PORTA=0X08;
run_flag = 0;
break;
default: break;
}
}
}
관리자 답변
안녕하세요? 고객님,
질문이 뭔지 적는 걸 까먹으셨네요.
수고하세요.
>#include <avr/io.h>
>#include <avr/delay.h>
>#include <avr/interrupt.h>
>
>volatile int sec;
>volatile char hour, min;
>volatile char run_flag;
>volatile char key_flag=0;
>volatile char key;
>
>void lcd_iw(char inst)
>{
> PORTB=0x04;
> PORTD=inst & 0xF0;
> PORTB&=0xFB;
>
> PORTB=0x04;
> PORTD=inst<<4;
> PORTB&=0xFB;
> _delay_ms(2);
>}
>
>void lcd_dw(char dw)
>{
> PORTB=0x05;
> PORTD=dw & 0xF0;
> PORTB&=0xFB;
>
> PORTB=0x05;
> PORTD=dw<<4;
> PORTB&=0xFB;
> _delay_ms(40);
>}
>
>void init_lcd(void)
>{
> lcd_iw(0x28);
> lcd_iw(0x0C);
> lcd_iw(0x06);
> lcd_iw(0x01);
>}
>
>void lcd_str(char *str)
>{
> while(*str)
> {
> lcd_dw(*str++);
> }
>}
>
>void lcd_2d(char number)
>{
>char i;
>i=number/10;
>lcd_dw(i+'0');
>
>i=number%10;
>lcd_dw(i+'0');
>}
>
>void Clear_time(void)
>{
> sec=0;
> min=0;
> hour=0;
> lcd_iw(0xC0);
> char *str=" aa:bb:cc.00 ";
> lcd_str(str);
>}
>
>void Display_time(void)
>{
>lcd_iw(0xC2);
>lcd_2d(hour);
>lcd_iw(0xC5);
>lcd_2d(min);
>lcd_iw(0xC8);
>lcd_2d(sec/100);
>lcd_iw(0xCB);
>lcd_2d(sec%100);
>}
>
>char key_in(void)
>{
> char key;
> key=PINF & 0xFF;
> if(key==0x00)
> {
> if(key_flag==0)
> return 0x00;
> else
> {
> _delay_ms(20);
> key_flag=0;
> return 0x00;
> }
> }
> else
> {
> if(key_flag != 0)
> return 0x00;
> else
> {
> key_flag=1;
> return key;
> }
> }
>}
>
>ISR(TIMER1_COMPA_vect)
>{
> sec++;
> if(sec==6000)
> {
> sec=0;min++;
> if(min==60)
> {
> min=0;hour++;
> if(hour==24) hour=0;
> }
> }
> Display_time();
>}
>
>int main(void)
>{
>DDRA=0xFF;
>DDRD=0xF0;
>DDRB=0x07;
>DDRF=0x00;
>
>//volatile char key;
>char *str=" AVR STOP WATCH";
>init_lcd();
>lcd_str(str);
>Clear_time();
>run_flag=0;
>
>
>TCCR1A=0x00;
>TCCR1B=0x0C;
>TCCR1C=0x00;
>OCR1A=624;
>TCNT1=0X00;
>
>TIMSK=0x10;
>ETIMSK=0x00;
>TIFR=0x3C;
>ETIFR=0x01;
>
> while(1)
> {
> switch(key_in())
> {
> case 0x01: if(run_flag == 1) break;
> run_flag = 1;
> PORTA=0X03;
>
> SREG = 0x80;
> break;
>
> case 0x04: if(run_flag == 1) break;
> SREG =0x00;
> PORTA=0X04;
> run_flag = 1;
> Clear_time();
> break;
>
> case 0x10: if(run_flag == 0) break;
> SREG =0x00;
> PORTA=0X08;
> run_flag = 0;
> break;
>
> default: break;
> }
> }
>}
>
|
||||
| 2026 | 답변완료가속도 센서에 대해서 설명좀 부탁드리겠습니다. | 김한수 | 2008-11-26 | 1,390 |
|
충격에 반응하는 센서로 이용하려고하는데
알아보니까 가속도 센서를 사용하면 될것이라 하는데
설명 좀 부탁드리겠습니다.
구현하려는 시스템은 일정 충격에서 회로가 작동하도록 하는것입니다.
차량에 일정 충격이상이 가해지면 에어백 시스템이 작동되도록 하는것처럼 말이죠.
제가 생각한대로 구현하려면 이 센서를 사용하면 되는건가요?
어떤 식으로 사용해야 할지 답변좀 부탁드립니다.
아니라면 위 시스템을 구현하기 위한 더 나은 센서를 추천부탁드립니다.
-끝-
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
우선, 충격을 받으면 진동하게 되는 데, 그러한 움직임을 감지하는 데는 가속도 센서가 좋은 센서입니다.
다만, 갑자기 섰을 경우에도 움직임을 감지하다 보니, 같은 충격이 발생한 것으로 생각하게 될 수도 있습니다.
어떤 충격인지가 중요하겠습니다. 충격의 패턴을 분석하여 그러한 충격이면, 충격받은 것으로 감안한다할 수도 있으니까요.
또한, 눌림이나 꺽어짐의 정도를 감지하는 센서들도 있습니다.
일단은 3축 가속도 센서로도 자동차의 진동 등을 측정하는 용도로도 사용되기도 하고, 엘리베이터의 위아래 움직임을 감지하는 데도 쓰이기도 합니다.
또한, 노트북의 낙하충격 등을 감지하여 하드를 안전하게 만드는 용도로도 쓰지요.
생각해 보고, 의견 올려 주시면, 다시 대답해 드릴께요.
수고하세요.
>충격에 반응하는 센서로 이용하려고하는데
>
>알아보니까 가속도 센서를 사용하면 될것이라 하는데
>
>설명 좀 부탁드리겠습니다.
>
>구현하려는 시스템은 일정 충격에서 회로가 작동하도록 하는것입니다.
>
>차량에 일정 충격이상이 가해지면 에어백 시스템이 작동되도록 하는것처럼 말이죠.
>
>제가 생각한대로 구현하려면 이 센서를 사용하면 되는건가요?
>
>어떤 식으로 사용해야 할지 답변좀 부탁드립니다.
>
>아니라면 위 시스템을 구현하기 위한 더 나은 센서를 추천부탁드립니다.
>
>-끝-
|
||||
| 2025 | 답변완료스테핑모터 SE-SM9 | 강운석 | 2008-11-26 | 1,403 |
|
안녕하세요 스테핑모터에 대해서 궁금한게 있어서 글올립니다.
전자 저울로 4kg 힘을 받는 물건에 이 모터를 사용할려고 하는데
사용이 가능한지 알려주세요..
고생하시는데 빠른답변 부탁드립니다.
관리자 답변
안녕하세요..고객님.......
저희 NTC제품을 이용해 주셔서 감사합니다.
사용가능합니다.
24V 3A이상에서 사용하시면 풀 토크로 사용할 수 있습니다.
더 자세한 내용은 스펙을 참조하시기 바랍니다.
감사합니다.
>안녕하세요 스테핑모터에 대해서 궁금한게 있어서 글올립니다.
>
>전자 저울로 4kg 힘을 받는 물건에 이 모터를 사용할려고 하는데
>
>사용이 가능한지 알려주세요..
>
>고생하시는데 빠른답변 부탁드립니다.
|
||||
| 2024 | 답변완료스테핑모터 12MHz에서 작동가능한가요? | 김승한 | 2008-11-26 | 1,328 |
|
질문이 살짝 빗나갔나 보네요
스테핑모터가 고주파에서 동작을 못하는 걸로 알고있습니다.
12MHz에서 동작하는지 궁금하네요
그리고 SLA7024도 칩에 프로그램을 다운로드 해야 하나요?
아닌것으로 알고 있었는데.....
답변이 무슨말씀이신지 정확히 이해를 못하겠네요
관리자 답변
안녕하세요? 고객님,
스테핑 모터는 몇백 Hz 정도에서 동작합니다.
스펙상으로는 1kHz, 2kHz 정도에도 나와 있기는 하지만,
고속 동작보다는 정확한 제어를 위해서 보통 쓰이구요.
그리고, 고속 동작에서 쓰시려면, 일단은 저속부터 가속도 테이블을 만들어서, 차츰차츰 속도를 올려 나가야 합니다. 그 정도나 그런 것들은 모터와 가해지는 토크에 따라 다르니, 직접 사용할 환경에서 테스트 하시면서 만들어 가는 것이 가장 좋습니다.
고속 동작에는 보통 DC 모터를 쓰지요.
SLA7024에 프로그램을 다운로드 한다는 말은 한 적이 없는 데, 오해하신 것 같구요.
지난 번 질문에서 89S52 칩을 사용하기 위해서 12MHz를 구입하셨다고 하셔서, 89S52 MCU에 사용하는 줄 알아서, 거기에 프로그램을 다운로드 하시라는 말이었습니다.
언제든 질문 있으시면, 올려 주시구요.
수고하세요.
>질문이 살짝 빗나갔나 보네요
>스테핑모터가 고주파에서 동작을 못하는 걸로 알고있습니다.
>12MHz에서 동작하는지 궁금하네요
>그리고 SLA7024도 칩에 프로그램을 다운로드 해야 하나요?
>아닌것으로 알고 있었는데.....
>답변이 무슨말씀이신지 정확히 이해를 못하겠네요
|
||||
| 2023 | 답변완료kr-dl16 질문이요 | 변상균 | 2008-11-26 | 1,452 |
|
dc모터 속도 높이는거 pwm 제어를 통해서 올릴수 있다고 들었는데
어떤식으로 해야하는지 궁금해서요 자세하게 부탁드립니다
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
현재 DC 모터의 속도는 프로그램에서 그냥 돌릴 때 계속 1을 주고 있으므로, 최소 속도일겁니다. 다만, 프로그램상에서 알고리즘 수정을 통해, 약간 빨라질 수 있을 뿐이지요.
PWM은 Pulse Width Modulation이라고 해서,
펄스의 폭을 조절하여 Duty라는 것을 변경하면서 모터의 속도를 조절하는 것인데,
현재 알고리즘이 그냥 ON/OFF 개념으로 DL16이 짜져 있어서, 최고 속도 최저속도 왔다 갔다 하는 겁니다.
속도를 올리시려면, 모터 전압을 올리거나 하면 약간 올라가는 데, 6V 이상 가하면 모터가 탈 수도 있습니다.
모터 종류를 바꿔서 장착하시면 빨리도 달릴 수 있지만, 그렇지 않으면, 큰 변화는 없을 겁니다.
감사합니다.
>dc모터 속도 높이는거 pwm 제어를 통해서 올릴수 있다고 들었는데
>
>어떤식으로 해야하는지 궁금해서요 자세하게 부탁드립니다
|
||||
| 2022 | 답변완료서보모터 제어 | 김덕겸 | 2008-11-26 | 1,449 |
|
서보모터를 PWM 신호로 제어할 때
20ms를 한주기로 해서 0.7ms를 1로 하고 19.3ms를 0으로 주면
서보모터가 -90도 동작하는 것이 맞는지요??
혹시 서보모터에 PWM신호를 여러주기 주어야 동작하나요??
한주기의 신호만으로는 동작이 되는지 알고 싶습니다...
그리고 90도 이동후 10초 후 -90도를 이동하는 소스를 구성하려고
합니다. 90는 2.3ms를 1로 하고 17.7ms를 0으로 하는 PWM신호를
만들어 한주기 주고 타이머로 10초 센후 0.7ms 1로 주고 19.3ms를 0으로
하는 PWM 신호를 한주기 주면 동작이 되는건가요??
관리자 답변
안녕하세요. 고객님.......
저희 NTC제품을 이용해 주셔서 감사합니다.
이론상으론 맞습니다.
근데 서보모터의 특성에 따라 보정을 해 주어야 합니다.
20 ms 사이클로 0.7ms동안 1을 준다고 모든 서보가 -90도 되는건 아닙니다.
그 각은 고객님께서 직접 측정하면서 보정하는게 좋을듯 싶습니다.
서보는 이론을 바탕으로 직접 오실로스코프를 찍어 가면서 하시는게 좋습니다.
서보강좌나 자료실에서 서보관련 소스를 참조하시면 도움이 되실 겁니다.
감사합니다.
>서보모터를 PWM 신호로 제어할 때
>
>20ms를 한주기로 해서 0.7ms를 1로 하고 19.3ms를 0으로 주면
>
>서보모터가 -90도 동작하는 것이 맞는지요??
>
>혹시 서보모터에 PWM신호를 여러주기 주어야 동작하나요??
>
>한주기의 신호만으로는 동작이 되는지 알고 싶습니다...
>
>그리고 90도 이동후 10초 후 -90도를 이동하는 소스를 구성하려고
>
>합니다. 90는 2.3ms를 1로 하고 17.7ms를 0으로 하는 PWM신호를
>
>만들어 한주기 주고 타이머로 10초 센후 0.7ms 1로 주고 19.3ms를 0으로
>
>하는 PWM 신호를 한주기 주면 동작이 되는건가요??
|
||||
| 2021 | 답변완료라인트레이서 프로그램 입력.. | 허훈 | 2008-11-25 | 1,427 |
|
C:\\iccv7avr\\bin\\imakew -f led.mak
iccavr -c -e -D__ICC_VERSION="7.01" -l -g -Wa-W C:\\DOCUME~1\\Administrator\\바탕화~1\\lt\\led.c
iccavr -o led -g -Wl-W -bfunc_lit:0x4.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @led.lk
Device 0% full.
Done.
informational - project has no EEPROM file
Erasing memory ...Programming FLASH...
ISP programming done.
이렇게 나오면 프로그램 심어진거 맞나요.
ㅡㅡ;;;
관리자 답변
안녕하세요. 고객님....
저희 NTC제품을 이용해 주셔서 감사합니다.
플래쉬는 제대로 프로그램 됐네요.
위에 있는 메세지는 셋팅을 잘못해서 생긴 오류입니다.
Tools =>> In Systemprograming =>> EEPROM Options에서 Program with project file.을 선택하시면 이런 메세지가 안뜰겁니다.
해 보시고 이상있으면 또 질문 주세요...
감사합니다.
>C:\\iccv7avr\\bin\\imakew -f led.mak
> iccavr -c -e -D__ICC_VERSION="7.01" -l -g -Wa-W C:\\DOCUME~1\\Administrator\\바탕화~1\\lt\\led.c
> iccavr -o led -g -Wl-W -bfunc_lit:0x4.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @led.lk
>Device 0% full.
>Done.
>informational - project has no EEPROM file
>
>Erasing memory ...Programming FLASH...
>
>ISP programming done.
>
>이렇게 나오면 프로그램 심어진거 맞나요.
>ㅡㅡ;;;
|
||||
| 2020 | 답변완료스테핑 모터와 89S52 질문입니다 | 김승한 | 2008-11-25 | 1,483 |
|
89S52를 이용해 SE-SM 스테핑 모터를 제어하려고 합니다
89S52칩을 이용하기 위해 크리스털 오실레이터를 12MHz 짜리를 구입했는데
스테핑 모터를 살때 같이 온 설명서를 보니까 12MHz에서 동작을 안하는것 같네요
혹시 몰라서 회로도도 첨부합니다.
모터를 다시 사야 하는지 오실레이터를 다시 사야하는지 아니면 제가 구성을 잘못했는지 좀 알려주세요
그리고 오실레이터를 12KHz로 하면 89S52가 동작하나요?
부품을 다시 사야한다면 제품 가격과 모델좀 알려주시면 감사하겠습니다
관리자 답변
추가적으로 모터부분은 스텝모터에 맞춰서 회로구성을 다시 하였습니다
|
||||
| 2019 | 답변완료서보모터밑 모듈 사용법 | 김덕겸 | 2008-11-25 | 1,429 |
|
이번에 졸작을 만들면서
SE-A410 두개와 AM-CSV를 연결하여 8051칩을 이용 서보모터 제어를
하려고 하는데요... 아무리 8051에서 PWM 신호를 만들어 주어도
원하는 만큼의 동작을 하지 않습니다.
AM-CSV에 5V를 따로 입력해주고 8051의 P2_0과 P2_5에 PWM신호를
만들어주어 제어하는 건데요... 인터넷에 돌아다니는 소스를 이용하여
제어할려고 하는데...작동 동영상도 있던데 그 소스를 이용하였는데도
제대로 작동하지 않습니다. 칩은 AT89C51ED2를 쓰고 22.1184MHz의 크리
스탈을 사용하며 원하는 제어 각도는 1번은 90도와 -90도의 동작이며
2번은 180도의 동작을 원하고 잇습니다.
하지만 8051에 라이팅하고 동작해보면 서보모터가 둘다 약 10도정도
좌로 움직인 후 원상복귀 되는 것만 반복되더군요... 소스가 잘못된 것인지
아니면 모터에 문제가 있는 것인지 미치겠습니다.. 여기서는
AVR소스만 올려져 있고... 빨리 해결해야하는데 힘드네요...
8051용 기본 소스 하나 구할 수 없을까요??
제가 사용한 소스 입니다..문제점 좀 알려주세요. 이 소스는
두모터가 동작하는지만 알아보려고 만든 소스 입니다.. 이것조차도
동작을 안하네요..ㅠㅠ
#include <at89c51xd2.h>
#define msec0_7 60 //0.7msec소요
#define msec1_5 90 //1.5msec소요
#define msec2_3 120 //2.3msec소요
#define msec10 600 // 10msec소요
void main(void)
{
int i, j;
P2_0 = 0;
P2_5 = 0;
while(1) {
for(i = 0;i < 100;i++) { //-90도 동작
P2_0 = 1;
P2_5 = 1;
for(j = 0;j < msec2_3;j++);
P2_0 = 0;
P2_5 = 0;
for(j = 0;j < msec10;j++);
}
}
}
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용해 주셔서 감사합니다.
타이머 같은 걸 써서, 서보모터 타이밍에 맞게 제어해 주셔야 합니다.
본사에서 소스를 직접 짜주거나 하진 않거든요.
다만, 자료실->기존자료실에 가면 AVR로 된 예제 소스는 있구요.
그리고, 강좌->AVR 강좌에 가면 서보모터 관련 강좌가 있으니, 참고 바랍니다.
직접 오실로스코프로 재 가면서, 타이밍 맞춰야 합니다.
수고하세요.
>이번에 졸작을 만들면서
>
>SE-A410 두개와 AM-CSV를 연결하여 8051칩을 이용 서보모터 제어를
>
>하려고 하는데요... 아무리 8051에서 PWM 신호를 만들어 주어도
>
>원하는 만큼의 동작을 하지 않습니다.
>
>AM-CSV에 5V를 따로 입력해주고 8051의 P2_0과 P2_5에 PWM신호를
>
>만들어주어 제어하는 건데요... 인터넷에 돌아다니는 소스를 이용하여
>
>제어할려고 하는데...작동 동영상도 있던데 그 소스를 이용하였는데도
>
>제대로 작동하지 않습니다. 칩은 AT89C51ED2를 쓰고 22.1184MHz의 크리
>
>스탈을 사용하며 원하는 제어 각도는 1번은 90도와 -90도의 동작이며
>
>2번은 180도의 동작을 원하고 잇습니다.
>
>하지만 8051에 라이팅하고 동작해보면 서보모터가 둘다 약 10도정도
>
>좌로 움직인 후 원상복귀 되는 것만 반복되더군요... 소스가 잘못된 것인지
>
>아니면 모터에 문제가 있는 것인지 미치겠습니다.. 여기서는
>
>AVR소스만 올려져 있고... 빨리 해결해야하는데 힘드네요...
>
>8051용 기본 소스 하나 구할 수 없을까요??
>
>제가 사용한 소스 입니다..문제점 좀 알려주세요. 이 소스는
>
>두모터가 동작하는지만 알아보려고 만든 소스 입니다.. 이것조차도
>
>동작을 안하네요..ㅠㅠ
>
>#include <at89c51xd2.h>
>
>#define msec0_7 60 //0.7msec소요
>#define msec1_5 90 //1.5msec소요
>#define msec2_3 120 //2.3msec소요
>#define msec10 600 // 10msec소요
>
>void main(void)
>{
> int i, j;
>
> P2_0 = 0;
> P2_5 = 0;
>
> while(1) {
> for(i = 0;i < 100;i++) { //-90도 동작
> P2_0 = 1;
> P2_5 = 1;
> for(j = 0;j < msec2_3;j++);
> P2_0 = 0;
> P2_5 = 0;
> for(j = 0;j < msec10;j++);
> }
> }
>}
|
||||
