Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 9768 | 답변완료DM-MSTYLE-EXT에 릴레이 보드 연결 | 심수정 | 2016-12-14 | 3,255 |
|
SRD-05VDC, SRD-12VDC 두종류의
릴레이 보드를 연결해 사용하고자 합니다.
DM-MSTYLE-EXT의 MEGA328에 연결된 디지털 I/O와 Power를 쓰는 것 같습니다.
mega2560으로 프로그래밍해서 제어하려 합니다.
연결 포트를 알려주세요.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
질문이 정확히 이해가 가지 않습니다.
저희 DM-MSTYLE-EXT를 사용하시는 것 같은데, 메인보드에는 UNO도 있고, 모듈타입으로 꽂는 것으로 MEGA2560도 있습니다.
어떤 쪽을 쓰시겠다는 건가요?
모듈만 따로 빼서, 외부에 회로를 구성해서 쓰시겠다는 거라면, MEGA2560 모듈은 AM-2560USB를 사용하시겠다는 것으로 보입니다만,
그런 경우, 별도로 어떤 핀을 써야 한다 이런 것은 없구요. 어떤 I/O핀이든 아두이노의 Digital 핀이면 릴레이 제어용으로 사용이 가능합니다. 혹시 답변이 부족하거나 하다면, 좀 더 정확하게 질문을 설명해 주세요.
감사합니다.
>
>
> SRD-05VDC, SRD-12VDC 두종류의
>
> 릴레이 보드를 연결해 사용하고자 합니다.
>
> DM-MSTYLE-EXT의 MEGA328에 연결된 디지털 I/O와 Power를 쓰는 것 같습니다.
>
> mega2560으로 프로그래밍해서 제어하려 합니다.
>
> 연결 포트를 알려주세요.
>
> 감사합니다.
>
|
||||
| 9767 | 답변완료Atmega8A ISP 다운로드 질문입니다. | 박정우 | 2016-12-14 | 3,283 |
|
안녕하세요
atmega8a PDIP 타입에 뉴티씨 USB-ISP 프로그래머로 다운로드를 하려고 하는데요
(뉴티씨 ISP : http://newtc.co.kr/dpshop/shop/item.php?it_id=1314600027 )
ISP와 atmega8a 를 직결하면 다운로드가 잘 되는데(+외장 8Mhz 크리스탈 + 20pF 캐패시터 2개 장착)
3.3v 레귤레이터 LP2950L을 넣어서, ISP의 5V 전원을 LP2950L의 INPUT에,
LP2950L의 3.3V OUTPUT을 atmega8a의 vcc에 연결해서 다운로드를 시도하면
stk500 error entering program mode 라는 에러가 나타납니다.
물론 전원 부분만 변경했고, 나머지 구성(Reset, MISO, MOSI, SCK, GND)등은 똑같이 했습니다. 8Mhz 크리스탈에 20pF 캐패시터 2개도 달아놨구요
재밌는건... 뉴티씨 사의 atmega8 실습모듈(http://newtc.co.kr/dpshop/shop/item.php?it_id=1406174560)을 LP2950L의 3.3V로 구성하면 다운로드가 잘 됩니다.
이거 왜 이러는건지 알 수 있을까요? ㅠㅠ
회로도 첨부 하였습니다 (ISP작동가능.bmp // 작동불가.bmp)
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
저희 USBISP로 저희 모듈인 AM-8PL을 이용하고, AM-8PL에 공급되는 VCC만 외부에서 3.3V로 변경해서 공급했을 때에 잘 되는 데,
직접 만드신 회로로는 같은 환경으로 하면 안된다는 거잖아요?
특별히 저희 회로에 뭔가 있는 것은 아니고, 아마도, 구성하신 회로의 PCB에 문제가 있거나 한 것이 아닌가 싶습니다. 확인해 보세요.
감사합니다.
>
>
> 안녕하세요
>
>
>
>
>
> atmega8a PDIP 타입에 뉴티씨 USB-ISP 프로그래머로 다운로드를 하려고 하는데요
>
> (뉴티씨 ISP : http://newtc.co.kr/dpshop/shop/item.php?it_id=1314600027 )
>
>
>
>
> ISP와 atmega8a 를 직결하면 다운로드가 잘 되는데(+외장 8Mhz 크리스탈 + 20pF 캐패시터 2개 장착)
>
>
>
>
> 3.3v 레귤레이터 LP2950L을 넣어서, ISP의 5V 전원을 LP2950L의 INPUT에,
>
>
>
>
> LP2950L의 3.3V OUTPUT을 atmega8a의 vcc에 연결해서 다운로드를 시도하면
>
>
>
>
> stk500 error entering program mode 라는 에러가 나타납니다.
>
>
>
>
> 물론 전원 부분만 변경했고, 나머지 구성(Reset, MISO, MOSI, SCK, GND)등은 똑같이 했습니다. 8Mhz 크리스탈에 20pF 캐패시터 2개도 달아놨구요
>
>
>
>
> 재밌는건... 뉴티씨 사의 atmega8 실습모듈(http://newtc.co.kr/dpshop/shop/item.php?it_id=1406174560)을 LP2950L의 3.3V로 구성하면 다운로드가 잘 됩니다.
>
>
>
>
> 이거 왜 이러는건지 알 수 있을까요? ㅠㅠ
>
>
>
>
> 회로도 첨부 하였습니다 (ISP작동가능.bmp // 작동불가.bmp)
>
|
||||
| 9766 | 답변완료cortex-m3 관련 | 유한철 | 2016-12-14 | 3,171 |
|
74page 이후 Perspective진행....IDE가 변하지 않고 첨부파일처럼 변하네요..
관리자 답변
안녕하십니까? 고객님.
항상 저희 뉴티씨 제품을 사용하여 주셔서 감사합니다.
제가 보기에는 소스 코드를 저장을 안해서 발생한 문제 같습니다.
보내주신 그림과 같은 창은 소스 코드를 저장 할 것인지 묻는 창이므로 OK를 눌러 진행하시면 됩니다.
저장은 왼쪽위에 플로피디스크 모양 아이콘을 클릭하시거나, 키보드의 CTRL+S를 눌러주시면 됩니다.
감사합니다.
>
>
> 74page 이후 Perspective진행....IDE가 변하지 않고 첨부파일처럼 변하네요..
>
|
||||
| 9765 | 답변완료에러 원인을 알고 싶읍니다. | 유한철 | 2016-12-12 | 3,863 |
|
#include "stm32f10x_conf.h"
void delay_ms(int ms)
{
for(volatile int i=0;i<ms/2;i++)
{
for(volatile int j=0;j<12000;j++);
}
}
int main(int argc, char* argv[])
{
GPIO_InitTypeDef PC;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
PC.GPIO_Mode = GPIO_Mode_Out_PP;
PC.GPIO_Pin = GPIO_Pin_All;
PC.GPIO_Speed = GPIO_Speed_50MHZ;
GPIO_Init(GPIOC,&PC);
while (1)
{
delay_ms(1000);
GPIO_Write(GPIOC,0xFFFF);
delay_ms(1000);
GPIO_Write(GPIOC,0x0000);
}
}
20:17:10 **** Incremental Build of configuration Debug for project ARM_Hellow ****
make all
'Building file: ../src/main.c'
'Invoking: Cross ARM C Compiler'
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Wall -Wextra -g3 -DDEBUG -DUSE_FULL_ASSERT -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f1-stdperiph" -std=gnu11 -MMD -MP -MF"src/main.d" -MT"src/main.o" -c -o "src/main.o" "../src/main.c"
../src/main.c: In function 'main':
../src/main.c:50:16: error: 'GPIO_Speed_50MHZ' undeclared (first use in this function)
PC.GPIO_Speed=GPIO_Speed_50MHZ;
^
../src/main.c:50:16: note: each undeclared identifier is reported only once for each function it appears in
make: *** [src/main.o] Error 1
20:17:12 Build Finished (took 2s.156ms)
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
교재 61~63에서 Build Tools Paths를 지정해줘야 하는 데,
최신 버전에서는 하지 않아도 되게 되어 있지만,
구 버전에서는 일일이 해줘야 툴체인 설정이 완료됩니다.
위에서처럼 해 보세요.
첨부 파일은 이후의 trace 하는 부분도 좀 추가된 소스인데, 참고 바랍니다.
감사합니다.
>
>
> #include "stm32f10x_conf.h"
> void delay_ms(int ms)
> {
> for(volatile int i=0;i<ms/2;i++)
> {
> for(volatile int j=0;j<12000;j++);
> }
>
> }
>
> int main(int argc, char* argv[])
> {
> GPIO_InitTypeDef PC;
>
> RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
>
> PC.GPIO_Mode = GPIO_Mode_Out_PP;
> PC.GPIO_Pin = GPIO_Pin_All;
> PC.GPIO_Speed = GPIO_Speed_50MHZ;
> GPIO_Init(GPIOC,&PC);
>
> while (1)
> {
> delay_ms(1000);
> GPIO_Write(GPIOC,0xFFFF);
> delay_ms(1000);
> GPIO_Write(GPIOC,0x0000);
> }
> }
>
>
>
>
>
> 20:17:10 **** Incremental Build of configuration Debug for project ARM_Hellow ****
> make all
> 'Building file: ../src/main.c'
> 'Invoking: Cross ARM C Compiler'
> arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Wall -Wextra -g3 -DDEBUG -DUSE_FULL_ASSERT -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f1-stdperiph" -std=gnu11 -MMD -MP -MF"src/main.d" -MT"src/main.o" -c -o "src/main.o" "../src/main.c"
> ../src/main.c: In function 'main':
> ../src/main.c:50:16: error: 'GPIO_Speed_50MHZ' undeclared (first use in this function)
> PC.GPIO_Speed=GPIO_Speed_50MHZ;
> ^
> ../src/main.c:50:16: note: each undeclared identifier is reported only once for each function it appears in
> make: *** [src/main.o] Error 1
>
> 20:17:12 Build Finished (took 2s.156ms)
>
|
||||
| 9764 | 답변완료다시 질문 드립니다. | 오창현 | 2016-12-09 | 3,225 |
|
먼저 늦은 시간에도 답변 주셔서 감사합니다.
AM-DC2-2D 모듈을 3개 가지고 있습니다. (1개는 최근에 구입했습니다. 색이 다르네요.)
이번에 새로 하나 더 구입하면서 테스트를 해봤습니다.
TEST 환경1: pwm 주파수 : 20kHz, dir: high, duty rate : 100%, 모터 구동전압 :: 전원 공급기 12.12V)
a채널이 11.8V b채널이 12V 나옵니다. 3개 모두 0.2V 차이가 납니다.
TEST 환경2: pwm 주파수 : 20kHz, dir: low, duty rate : 100%, 모터 구동전압 : 전원 공급기 12.12V)
a채널이 -12V b채널이 -11.8V 나옵니다. 3개 모두 0.2V 차이가 납니다.
테스트는 모두 모터 연결 없이 진행 하였습니다.
똑같은 입력을 줬을 때 A채널과 B채널이 항상 0.2V 차이가 나는 이유가 무엇일까요?
테스트 결과 :
A채널 출력 범위 -12V ~ 11.8V
B채널 출력 범위 -11.8V ~ 12V
제가 메일로 질문 드렸을 때는 출력이 18.8V 나온다고 잘 못 적었었네요...
혹시 이유가 답변 메일에 알려주신대로 "주요 칩인 L298의 칩내부에 있는 다이오드로 인하여 방향에 따라서, 약간의 내부적인 전압강하가 있을 수 있습니다." 이런 이유 때문인가요?
칩의 내부 회로 때문에 그런거라면 어떤식으로 되 있길래 방향에 따라 출력 offset이 달라지는 알 수 있을까요?
그렇다면 외부 회로와는 무관하게 칩의 특성으로 이해해도 되나요?
이해가 안되는게 풀브릿지 회로만 보면 대칭적인데,, 방향에 따라 출력 전압이 달라질 수 있다는게 이해가 안되네요..
마지막으로이러한 상황에서 4A출력을 위해 채널을 묶어서 하나로 출력 했을 때 문제가 없을까요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사내부에 5A용 제품이 준비중에 있습니다.
일단, 2A까지는 DC2-2D와 같은 해당 제품으로 테스트 하시고,
제품 적용시에는 신규로 적용되는 제품으로 쓰시는 것이 좋지 않을까 싶습니다.
아니면, 1-3D를 사용하셔서 테스트 하시는 것이 더 좋겠습니다.
반응속도도 더 빠르고, 그렇게 채널마다 전압 강하가 다를 문제도 없으니까요.
칩의 특성으로 보시면 됩니다만, 내부에 다이오드 등도 들어 있을 것이고,
현재의 AM-DC2-2D의 모듈의 특성도 조금 있을 수도 있습니다.
L298의 1번과 15번핀이 SENSE 저항을 각각 0.2옴 연결하고 GND와 연결해 주는 것이 추천됩니다만,
본 모듈은 GND로 직결되어 있어서, 그럴 수도 있다고 생각됩니다.
칩의 1번핀과 GND 사이에 0.2옴 저항을 15번핀과 GND 사이에 0.2옴 저항을 각각 달아주면,
그런 증상이 없어질 수도 있을 것 같기도 합니다.
교육용이라 그런 부분은 고려대상에 들어가 있지 않은데, 양산 제품이 필요하다면,
본사에 의뢰하시면 보다 정밀하게 제품 제작 용역도 가능합니다.
감사합니다.
>
>
> 먼저 늦은 시간에도 답변 주셔서 감사합니다.
>
> AM-DC2-2D 모듈을 3개 가지고 있습니다. (1개는 최근에 구입했습니다. 색이 다르네요.)
> 이번에 새로 하나 더 구입하면서 테스트를 해봤습니다.
>
> TEST 환경1: pwm 주파수 : 20kHz, dir: high, duty rate : 100%, 모터 구동전압 :: 전원 공급기 12.12V)
> a채널이 11.8V b채널이 12V 나옵니다. 3개 모두 0.2V 차이가 납니다.
>
> TEST 환경2: pwm 주파수 : 20kHz, dir: low, duty rate : 100%, 모터 구동전압 : 전원 공급기 12.12V)
> a채널이 -12V b채널이 -11.8V 나옵니다. 3개 모두 0.2V 차이가 납니다.
>
> 테스트는 모두 모터 연결 없이 진행 하였습니다.
> 똑같은 입력을 줬을 때 A채널과 B채널이 항상 0.2V 차이가 나는 이유가 무엇일까요?
> 테스트 결과 :
> A채널 출력 범위 -12V ~ 11.8V
> B채널 출력 범위 -11.8V ~ 12V
>
> 제가 메일로 질문 드렸을 때는 출력이 18.8V 나온다고 잘 못 적었었네요...
> 혹시 이유가 답변 메일에 알려주신대로 "주요 칩인 L298의 칩내부에 있는 다이오드로 인하여 방향에 따라서, 약간의 내부적인 전압강하가 있을 수 있습니다." 이런 이유 때문인가요?
> 칩의 내부 회로 때문에 그런거라면 어떤식으로 되 있길래 방향에 따라 출력 offset이 달라지는 알 수 있을까요?
> 그렇다면 외부 회로와는 무관하게 칩의 특성으로 이해해도 되나요?
> 이해가 안되는게 풀브릿지 회로만 보면 대칭적인데,, 방향에 따라 출력 전압이 달라질 수 있다는게 이해가 안되네요..
>
> 마지막으로이러한 상황에서 4A출력을 위해 채널을 묶어서 하나로 출력 했을 때 문제가 없을까요?
>
|
||||
| 9763 | 답변완료DM-MSTYLE-EXT 질문 | 심수정 | 2016-12-08 | 2,821 |
|
DM-MSTYLE-EXT V1.0를 구입하였습니다.
정확히 DM-MSTYLE-L 키트 구성물과 AD-USBISP V6.0 그리고 AD-USBSERIAL V02를 구입하였습니다.
저는 초보자이구요.
홈페이지 메뉴상 AVR 장비로 되어 있고.
홈페이지에 제시된 보드 매뉴얼과
허경영 교수님의 책에 따라 AVR 연습이 가능한 것으로 알았습니다.
아두이노 프로그램은 실행해 보니 잘 되는 것 같습니다.
C로 해보려 하니 리소스가 부족해 연습을 하기가 어렵습니다.
2560보드를 떼고 328P-AU로 하는 경우와 붙이고하는 경우가 다를 것 같고..
328P-AU 핀도 다를겉 같습니다. 포트와 가동 방식도 다를것 같은데...
현재 매뉴얼로는 보드도 알기 어려운 상태입니다.
어제 하루종일 LED 포트 A~G까지 찾았는데요.
보드에 있는 핀들, 핀커넥터 용도와 사용하는 방법... 등에 대해 알려 주시면 감사하겠습니다.
(2560보드를 제거했을 때, 연결 했을때, 점퍼 연결 시 기능 등...)
아두이노 헤더, 드라이버, 프로그램 소스를 추적해 가보며 하지만
초보자로서는 너무 힘든 일입니다
그래서... AVR 예제를 올려 주시면.... 감사하겠습니다.
한가지 더 질문드리면
328보드만 쓸 경우 방법도 알려 주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
이메일로 답변을 드리겠습니다.
감사합니다.
>
>
> DM-MSTYLE-EXT V1.0를 구입하였습니다.
> 정확히 DM-MSTYLE-L 키트 구성물과 AD-USBISP V6.0 그리고 AD-USBSERIAL V02를 구입하였습니다.
>
> 저는 초보자이구요.
> 홈페이지 메뉴상 AVR 장비로 되어 있고.
> 홈페이지에 제시된 보드 매뉴얼과
> 허경영 교수님의 책에 따라 AVR 연습이 가능한 것으로 알았습니다.
>
> 아두이노 프로그램은 실행해 보니 잘 되는 것 같습니다.
> C로 해보려 하니 리소스가 부족해 연습을 하기가 어렵습니다.
>
> 2560보드를 떼고 328P-AU로 하는 경우와 붙이고하는 경우가 다를 것 같고..
> 328P-AU 핀도 다를겉 같습니다. 포트와 가동 방식도 다를것 같은데...
>
> 현재 매뉴얼로는 보드도 알기 어려운 상태입니다.
>
> 어제 하루종일 LED 포트 A~G까지 찾았는데요.
> 보드에 있는 핀들, 핀커넥터 용도와 사용하는 방법... 등에 대해 알려 주시면 감사하겠습니다.
> (2560보드를 제거했을 때, 연결 했을때, 점퍼 연결 시 기능 등...)
>
> 아두이노 헤더, 드라이버, 프로그램 소스를 추적해 가보며 하지만
> 초보자로서는 너무 힘든 일입니다
>
> 그래서... AVR 예제를 올려 주시면.... 감사하겠습니다.
>
> 한가지 더 질문드리면
> 328보드만 쓸 경우 방법도 알려 주시면 감사하겠습니다.
>
|
||||
| 9762 | 답변완료질문드립니다. | 최승호 | 2016-12-08 | 3,073 |
|
모터는 작동이 되는데 한쪽이 정상적으로 작동하면 다른 한쪽이 덜덜덜 거리는 현상이 발생됩니다.
AM-cs2p에 se-243 사용하고 있습니다. 모터에서 선을 바꾸서 끼면 바꿔낀 곳이 떨떨거리는 현상이 발생합니다. 현재 사용한 코드는
// S/W Environment : AVR Studio + WINAVR Compiler
// Target : M128
// Crystal: 16MHz
//
// Made by NEWTC Co., Ltd. in Korea.
// DAEWOO RYU
// Email : davidryu@newtc.co.kr
// +82-2-704-4774(TEL), +82-2-704-4733(FAX)
// http://www.newtc.co.kr
// example : CS2P unipolar stepping motor controller test
--통신헤더---
#define BYTE unsigned char
#define WORD unsigned int
#define OFF 1
#define ON 0
void Delay_us(BYTE time_us) /* time delay for us */
{
BYTE i;
for(i = 0; i < time_us; i++) // 4 cycle +
{
asm(" PUSH R0 "); // 2 cycle +
asm(" POP R0 "); // 2 cycle +
asm(" PUSH R0 "); // 2 cycle +
asm(" POP R0 "); // 2 cycle +
asm(" PUSH R0 "); // 2 cycle +
asm(" POP R0 "); // 2 cycle = 16 cycle = 1 us for 16MHz
}
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<1000;j++);
}
}
void Delay_ms(WORD time_ms) /* time delay for ms */
{
WORD i;
for(i = 0; i < time_ms; i++)
{
Delay_us(250);
Delay_us(250);
Delay_us(250);
Delay_us(250);
}
}
void UART1_initialize(void)
{
DDRE = 0xFE;
UCSR1A = 0x00; // Asynchronous Normal Mode
UCSR1B = 0x18; // Receive enable, Transmitte enable
UCSR1C = 0x06; // 비동기 방식, No parity bit, 1 stop bit
UBRR1H = 0x00;
UBRR1L = 8; // 16MHz에서 115,200 bps
//UBRR1L=0x67;
}
void putch(BYTE data)
{
loop_until_bit_is_set(UCSR1A,5);
UDR1 = data;
UCSR1A |= 0x20; //Clear UDRE1
}
----MCU 헤더
void MCU_initialize(void) /* initialize ATmege128 MCU */
{
MCUCR = 0x00; // enable external memory and I/O
XMCRA = 0x00; // 0x1100-0xFFFF=1 wait
//check
XMCRB = 0x80; // enable bus keeper, use PC0-PC7 as address
SFIOR = 0x00; //입출력 bit 내부 풀업저항 안사용
//DDRD = 0xFF;
//PORTD = 0xFF;
//motor port
DDRC = 0xff;
PORTC = 0x00;
//DDRA = 0x00;
//PORTA = 0x00;
DDRA |= _BV(2); // Run Led
DDRF &= ~(_BV(0)); // VRE (AD0)
DDRF &= ~(_BV(1)); // LM35DZ (AD1)
DDRF &= ~(_BV(2)); // CdS (AD2)
DDRF &= ~(_BV(3)); // External Input (AD3)
//DDRG |= _BV(3); // Buzzer
}
---
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "UART1_initialize.h"
#include "MCU_initialize.h"
#define _BV(bit) (1<<(bit))
#define ADC_VREF 0x00
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
static FILE mystdout = FDEV_SETUP_STREAM(putch, NULL,_FDEV_SETUP_WRITE);
volatile unsigned int ADC_v1,ADC_v2,ADC_v3,ADC_v4;
void MPUinit(void)
{
ADMUX = ADC_VREF; //MUX bits를 이용 analog input channel 설정
ADCSRA = 0x86; //ADC Enable ADC prescaler select bits
}
unsigned int read_adc(unsigned char adc_input)//single conversion
{
static int tmp;
ADMUX = adc_input|ADC_VREF; //ADMUX select part
ADMUX |= _BV(5);
ADCSRA |= 0x40;
while ((ADCSRA & 0x10) == 0);
ADCSRA|= 0x10;
tmp = (ADCL >> 6) | (ADCH << 2); //ADLAR 0 인상태에서 상위비트 6오른 쪽 시프트 하위 2비트
return tmp;
}
void LineDatainput()
{
PORTF |= 0x01;//PORTF0사용
Delay_us(30);
ADC_v1 = read_adc(0); //PORTF0 사용
PORTF &= 0x00;
Delay_us(1000);
PORTF |= 0x02;//PORTF1사용
Delay_us(30);
ADC_v2 = read_adc(1); //PORTF1 사용
PORTF &= 0x00;
Delay_us(1000);
PORTF |= 0x04;//PORTF2사용
Delay_us(30);
ADC_v3 = read_adc(2); //PORTF2 사용
PORTF &= 0x00;
Delay_us(1000);
PORTF |= 0x08;//PORTF3사용
Delay_us(30);
ADC_v4 = read_adc(3); //PORTF3 사용
//ADC_v4 = read_adc(3);
PORTF &= 0x00;
Delay_us(1000);
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
//cli(); //disable all interrupts
//XMCRA = 0x00; //external memory
//XMCRB = 0x00; //external memory
//port_init();
// MCU_initialize();
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
}
/* 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;
}
//
int main(void)
{
volatile unsigned char stepleft=0, stepright=0;
MCU_initialize();
UART1_initialize();
stdout = &mystdout;
Delay_ms(2000);
init_devices();
MPUinit();
Delay_us(10);
//insert your functional code here...
MOTOR_PORT_DDR = 0xff;
while(1){
LineDatainput();
printf("%03d\t | %03d\t | %03d\t | %03d\t\n\r",ADC_v1,ADC_v2,ADC_v3,ADC_v4);
//forward moving
stepright = RIGHTmotorOneClock(stepright, 1);
stepleft = LEFTmotorOneClock(stepleft, 0);
delay(3);
MOTOR_PORT = stepleft|stepright;
//printf("%d",stepright);
//printf("%d",stepleft);
}
return 0;
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
이 현상은 전류 부족입니다.
충분한 전원을 공급해줘야 합니다.
전압은 최소 12V 이상 전류는 사용하는 토크에 따라 다르기 때문에, 뭐라 말씀드리긴 어렵지만,
아무것도 모터에 연결하지 않았을 경우에
1A 12V면 잘 돌아갑니다.
경우에 따라서는 100Watt 12V나 24V의 SMPS를 사용하여야 하는 경우도 있습니다.
감사합니다.
>
>
> 모터는 작동이 되는데 한쪽이 정상적으로 작동하면 다른 한쪽이 덜덜덜 거리는 현상이 발생됩니다.
> AM-cs2p에 se-243 사용하고 있습니다. 모터에서 선을 바꾸서 끼면 바꿔낀 곳이 떨떨거리는 현상이 발생합니다. 현재 사용한 코드는
> // S/W Environment : AVR Studio + WINAVR Compiler
> // Target : M128
> // Crystal: 16MHz
> //
> // Made by NEWTC Co., Ltd. in Korea.
> // DAEWOO RYU
> // Email : davidryu@newtc.co.kr
> // +82-2-704-4774(TEL), +82-2-704-4733(FAX)
> // http://www.newtc.co.kr
> // example : CS2P unipolar stepping motor controller test
> --통신헤더---
> #define BYTE unsigned char
> #define WORD unsigned int
> #define OFF 1
> #define ON 0
>
> void Delay_us(BYTE time_us) /* time delay for us */
> {
> BYTE i;
>
> for(i = 0; i < time_us; i++) // 4 cycle +
> {
> asm(" PUSH R0 "); // 2 cycle +
> asm(" POP R0 "); // 2 cycle +
> asm(" PUSH R0 "); // 2 cycle +
> asm(" POP R0 "); // 2 cycle +
> asm(" PUSH R0 "); // 2 cycle +
> asm(" POP R0 "); // 2 cycle = 16 cycle = 1 us for 16MHz
> }
> }
>
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<1000;j++);
> }
> }
>
> void Delay_ms(WORD time_ms) /* time delay for ms */
> {
> WORD i;
>
> for(i = 0; i < time_ms; i++)
> {
> Delay_us(250);
> Delay_us(250);
> Delay_us(250);
> Delay_us(250);
> }
> }
>
> void UART1_initialize(void)
> {
> DDRE = 0xFE;
> UCSR1A = 0x00; // Asynchronous Normal Mode
> UCSR1B = 0x18; // Receive enable, Transmitte enable
> UCSR1C = 0x06; // 비동기 방식, No parity bit, 1 stop bit
> UBRR1H = 0x00;
> UBRR1L = 8; // 16MHz에서 115,200 bps
> //UBRR1L=0x67;
> }
>
> void putch(BYTE data)
> {
> loop_until_bit_is_set(UCSR1A,5);
> UDR1 = data;
> UCSR1A |= 0x20; //Clear UDRE1
> }
>
> ----MCU 헤더
> void MCU_initialize(void) /* initialize ATmege128 MCU */
> {
> MCUCR = 0x00; // enable external memory and I/O
> XMCRA = 0x00; // 0x1100-0xFFFF=1 wait
> //check
> XMCRB = 0x80; // enable bus keeper, use PC0-PC7 as address
> SFIOR = 0x00; //입출력 bit 내부 풀업저항 안사용
>
> //DDRD = 0xFF;
> //PORTD = 0xFF;
> //motor port
> DDRC = 0xff;
> PORTC = 0x00;
> //DDRA = 0x00;
> //PORTA = 0x00;
>
> DDRA |= _BV(2); // Run Led
>
> DDRF &= ~(_BV(0)); // VRE (AD0)
> DDRF &= ~(_BV(1)); // LM35DZ (AD1)
> DDRF &= ~(_BV(2)); // CdS (AD2)
> DDRF &= ~(_BV(3)); // External Input (AD3)
> //DDRG |= _BV(3); // Buzzer
> }
> ---
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #include <stdio.h>
> #include <avr/io.h>
> #include <util/delay.h>
> #include <avr/interrupt.h>
> #include "UART1_initialize.h"
> #include "MCU_initialize.h"
> #define _BV(bit) (1<<(bit))
>
> #define ADC_VREF 0x00
> #define MOTOR_PORT PORTC
> #define MOTOR_PORT_DDR DDRC
>
> static FILE mystdout = FDEV_SETUP_STREAM(putch, NULL,_FDEV_SETUP_WRITE);
> volatile unsigned int ADC_v1,ADC_v2,ADC_v3,ADC_v4;
>
> void MPUinit(void)
> {
> ADMUX = ADC_VREF; //MUX bits를 이용 analog input channel 설정
> ADCSRA = 0x86; //ADC Enable ADC prescaler select bits
> }
> unsigned int read_adc(unsigned char adc_input)//single conversion
> {
> static int tmp;
>
> ADMUX = adc_input|ADC_VREF; //ADMUX select part
> ADMUX |= _BV(5);
> ADCSRA |= 0x40;
> while ((ADCSRA & 0x10) == 0);
> ADCSRA|= 0x10;
> tmp = (ADCL >> 6) | (ADCH << 2); //ADLAR 0 인상태에서 상위비트 6오른 쪽 시프트 하위 2비트
> return tmp;
> }
> void LineDatainput()
> {
> PORTF |= 0x01;//PORTF0사용
> Delay_us(30);
> ADC_v1 = read_adc(0); //PORTF0 사용
> PORTF &= 0x00;
> Delay_us(1000);
>
> PORTF |= 0x02;//PORTF1사용
> Delay_us(30);
> ADC_v2 = read_adc(1); //PORTF1 사용
> PORTF &= 0x00;
> Delay_us(1000);
>
> PORTF |= 0x04;//PORTF2사용
> Delay_us(30);
> ADC_v3 = read_adc(2); //PORTF2 사용
> PORTF &= 0x00;
> Delay_us(1000);
>
> PORTF |= 0x08;//PORTF3사용
> Delay_us(30);
> ADC_v4 = read_adc(3); //PORTF3 사용
> //ADC_v4 = read_adc(3);
> PORTF &= 0x00;
> Delay_us(1000);
>
> }
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> //cli(); //disable all interrupts
> //XMCRA = 0x00; //external memory
> //XMCRB = 0x00; //external memory
> //port_init();
> // MCU_initialize();
> 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
> }
>
>
> /* 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;
> }
>
>
>
> //
> int main(void)
> {
> volatile unsigned char stepleft=0, stepright=0;
> MCU_initialize();
> UART1_initialize();
> stdout = &mystdout;
> Delay_ms(2000);
> init_devices();
> MPUinit();
> Delay_us(10);
> //insert your functional code here...
> MOTOR_PORT_DDR = 0xff;
> while(1){
> LineDatainput();
> printf("%03d\t | %03d\t | %03d\t | %03d\t\n\r",ADC_v1,ADC_v2,ADC_v3,ADC_v4);
> //forward moving
> stepright = RIGHTmotorOneClock(stepright, 1);
> stepleft = LEFTmotorOneClock(stepleft, 0);
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> //printf("%d",stepright);
> //printf("%d",stepleft);
> }
> return 0;
> }
>
|
||||
| 9761 | 답변완료SE-SM243 스텝모터 스텝당 각도 문의 | 노성훈 | 2016-12-06 | 3,077 |
|
안녕하세요
SE-SM243 스텝모터를 구매하여 사용하고 있습니다.
구동할 때 스텝당 각도를 알고 싶습니다.
1상여자 방식으로 구동시 1펄스당 각도가 얼마인가요?
또 1-2상여자 방식일 때는 1상여자 방식일때 스텝당 각도의 절반으로 계산하면 될까요?
감사합니다.
관리자 답변
안녕하세요? 고객님,
1상여자에서 한 펄스당 1.8도 돌아갑니다.
1-2상 여자는 0.9도입니다.
자료실의 매뉴얼도 참조하실 수 있습니다.
감사합니다
>
>
> 안녕하세요
>
> SE-SM243 스텝모터를 구매하여 사용하고 있습니다.
>
> 구동할 때 스텝당 각도를 알고 싶습니다.
>
> 1상여자 방식으로 구동시 1펄스당 각도가 얼마인가요?
>
> 또 1-2상여자 방식일 때는 1상여자 방식일때 스텝당 각도의 절반으로 계산하면 될까요?
>
> 감사합니다.
>
|
||||
| 9760 | 답변완료스태핑 모터 2개 제어하기 질문입니다. | 김정현 | 2016-12-05 | 2,869 |
|
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL // 16 MHz
#include <util/delay.h>
//
#define MOTOR_ENABLE (PORTC=PORTC|0x80)
#define MOTOR_DISABLE (PORTC=PORTC&0x7f)
#define MOTOR_STEP_M0 (PORTC=(PORTC&0xcf)|0x00)
#define MOTOR_STEP_M1 (PORTC=(PORTC&0xcf)|0x10)
#define MOTOR_STEP_M2 (PORTC=(PORTC&0xcf)|0x20)
#define MOTOR_STEP_M3 (PORTC=(PORTC&0xcf)|0x30)
#define MOTOR_LEFT_CLK (PORTC=PORTC^0x01)
#define MOTOR_RIGHT_CLK (PORTC=PORTC^0x04)
#define MOTOR_LEFT_CW (PORTC=PORTC&0xfd)
#define MOTOR_LEFT_CCW (PORTC=PORTC|0x02)
#define MOTOR_RIGHT_CW (PORTC=PORTC&0xf7)
#define MOTOR_RIGHT_CCW (PORTC=PORTC|0x08)
//
int main(void){
int i;
DDRC=0xff;//motor
DDRG=0x00;
MOTOR_ENABLE; MOTOR_STEP_M3; MOTOR_LEFT_CW; MOTOR_RIGHT_CW;
while(1){
if(PING&0x04){for(i=0;i<400;i++){ MOTOR_LEFT_CLK; _delay_ms(7); } //마이크로 스탭 180도(1스탭=0.45도)
_delay_ms(3000);}
if(PING&0x08){for(i=0;i<200;i++){ MOTOR_RIGHT_CLK; _delay_ms(7); } //마이크로 스탭 90도(1스탭=0.45도)
_delay_ms(3000);}
}
}
-------------------------------------
여기서 양쪽에 모터 두개를 달면 동작이 안되는데 한쪽씩만 연결하면 작동이 됩니다..
왜 그런 걸까요?? 모듈은 am-ms2고 모터는 sm243 보드는 AB-M128-B 사용 중입니다.
관리자 답변
안녕하세요? 고객님,
같은 소스에 한쪽씩만 달면 되는 데, 두 쪽 다달면 안돌아가는 경우라면,
전류부족이라고 보입니다.
충분한 아답타를 사용해 주세요.
감사합니다.
>
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #define F_CPU 16000000UL // 16 MHz
> #include <util/delay.h>
> //
> #define MOTOR_ENABLE (PORTC=PORTC|0x80)
> #define MOTOR_DISABLE (PORTC=PORTC&0x7f)
> #define MOTOR_STEP_M0 (PORTC=(PORTC&0xcf)|0x00)
> #define MOTOR_STEP_M1 (PORTC=(PORTC&0xcf)|0x10)
> #define MOTOR_STEP_M2 (PORTC=(PORTC&0xcf)|0x20)
> #define MOTOR_STEP_M3 (PORTC=(PORTC&0xcf)|0x30)
> #define MOTOR_LEFT_CLK (PORTC=PORTC^0x01)
> #define MOTOR_RIGHT_CLK (PORTC=PORTC^0x04)
> #define MOTOR_LEFT_CW (PORTC=PORTC&0xfd)
> #define MOTOR_LEFT_CCW (PORTC=PORTC|0x02)
> #define MOTOR_RIGHT_CW (PORTC=PORTC&0xf7)
> #define MOTOR_RIGHT_CCW (PORTC=PORTC|0x08)
>
>
>
> //
> int main(void){
> int i;
> DDRC=0xff;//motor
> DDRG=0x00;
> MOTOR_ENABLE; MOTOR_STEP_M3; MOTOR_LEFT_CW; MOTOR_RIGHT_CW;
> while(1){
> if(PING&0x04){for(i=0;i<400;i++){ MOTOR_LEFT_CLK; _delay_ms(7); } //마이크로 스탭 180도(1스탭=0.45도)
> _delay_ms(3000);}
>
> if(PING&0x08){for(i=0;i<200;i++){ MOTOR_RIGHT_CLK; _delay_ms(7); } //마이크로 스탭 90도(1스탭=0.45도)
> _delay_ms(3000);}
>
> }
> }
> -------------------------------------
> 여기서 양쪽에 모터 두개를 달면 동작이 안되는데 한쪽씩만 연결하면 작동이 됩니다..
> 왜 그런 걸까요?? 모듈은 am-ms2고 모터는 sm243 보드는 AB-M128-B 사용 중입니다.
>
|
||||
| 9759 | 답변완료pm-lcd-t-420g 예제소스 좀 주세요ㅠ! | 이차영 | 2016-12-02 | 2,448 |
|
디바이스마트에서 구매했는데 라인 별 출력이 잘 안되서요ㅠ
소스 짜는게 아직 미숙해서 그러는데 예제소스 좀 받을 수 있을까요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AVR Studio V4.19 + GCC Tool Chain으로 된 20* 4라인 예제소스를 올려 드립니다.
참조하세요.
>
>
> 디바이스마트에서 구매했는데 라인 별 출력이 잘 안되서요ㅠ
> 소스 짜는게 아직 미숙해서 그러는데 예제소스 좀 받을 수 있을까요?
>
|
||||
| 9758 | 답변완료알기쉽게 풀어쓴 RL78/G13 문의 | 황홍섭 | 2016-12-02 | 2,469 |
|
알기쉽게 풀어쓴 RL78/G13
67페이지 e2 Studio 디버거를 이용하여 E2 programmer로 100GE 칩을
프로그램하려는데 첨부와 같은 에러가 뜹니다.
해결 방법을 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
죄송한데, E2 Programmer가 무엇인지요?
E2 Lite를 말씀하시는 건가요?
E2 Lite는 본사에서 판매하고 있지 않습니다만, 사용법은 기본적으로 E1 Debugger와 거의 같습니다.
E2 Lite는 E2 Studio 버전이 중요한데,
E2studio 4.3.0.08 이상, 5.0 OK입니다.
또한,Writing 프로그램으로는
Renesas Flash Programmer 3.00.00 업그레이드 또는 3.01.00 이상 또는 3.01.00 업그레이드에서 사용 가능합니다.
우선 설치하신 소프트웨어 버전부터 확인해 보세요.
E2 Lite의 고장 여부도 있을 수 있습니다.
기본적으로는 타겟에 전원이 안들어와 있거나 디버거 쪽을 잘못 꽂으면 나오는 겁니다.
만약, 전원 문제라면, 아답타에서 전원을 안 넣고 E2 Lite에서 전원을 넣어 주려면, Connection with Target Board에서 Power Target From The Emulator를 Yes로 바꿔 줘야 합니다.
현재 E2 Lite는 저희가 판매하지 않으므로, 제조사에 문의부탁합니다.
기본적으로 본 게시판에서는 저희 제품에 대한 질문만 받고 있습니다.
죄송하지만, 교재에도 본 내용은 나오지 않는 내용입니다. 가능한 저희 제품에 대한 내용만 질문해 주세요.
감사합니다.
>
>
> 알기쉽게 풀어쓴 RL78/G13
>
> 67페이지 e2 Studio 디버거를 이용하여 E2 programmer로 100GE 칩을
>
> 프로그램하려는데 첨부와 같은 에러가 뜹니다.
>
> 해결 방법을 부탁드립니다.
>
|
||||
| 9757 | 답변완료가속도 센서 관련 질문입니다!! | 박소정 | 2016-12-02 | 2,276 |
|
먼저 계속 전화해서 죄송합니다 ㅠㅠ 간단한거일것같지만 너무 급해서 ㅠ
보낸 파일은 자료실에서 다운받은 가속도 센서 계산법 인데요
0g의 경우 1.65V이고 여기서 +-2g모드의 경우 G=(1.65-3.3/1024)/(660*0.01)이라는 식을 보았습니다.
그런데 저 식을 그대로 계산해 보아도 2.495라는 값이 나오는데 1.65V에서 0G가 나와야 하는거 아닌가요? ㅠㅠ 아니면 혹시 괄호라도 더 넣어야 하나요? 그런데 어떻게 해봐도 0이 나오는 경우는 못봐서요
이거에 대한 자료를 찾아보다가 http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m52&wr_id=127913&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%B6%A9%EB%B6%81%EB%8C%80&sop=and 이 질문글도 보게 되었는데요 이 경우 Z가 1g일 때 전압값이 2.31이라고 하셨는데 저 식에 어디에 대입해도 결과값이 1이 나오는 경우를 못찾아서요
제가 랩뷰로 전압값을 받아서 1초에 1000번씩 5초간 총 5000개의 기록이 있는데 여기서 가속도 값을 어캐 구해야 할까요?
예를들어 2.5v의 전압이 출력되었다면 그때의 g 값을 구하는 식을 그대로 적어주시면 감사하겠습니다!!
그리고 Z축의 경우 가만히 놔두었을 때 1g라고 하는데 그럼 그때의 가속도 역시 9.81인가요? 가만히 있어도요?
그리고 지금 제가 사용하고 있는 센서의 버전은 2번인데 2번의 민감도를 보니 800이던데 그럼 660대신에 그냥 800을 넣으면 되는거겠죠?
참고로 센서는 AM-3AXIS V02, 모듈은 AM-ACCTB를 사용하고 있고 프로그램은 랩뷰를 사용하고있습니다!!
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
고객님의 요청으로 내용을 다시 분석하고,
다시 정확히 작성하였습니다.
전의 내용은 삭제하고 이 내용을 기본으로 해 주시면 되겠습니다.
감사합니다.
>
>
> 먼저 계속 전화해서 죄송합니다 ㅠㅠ 간단한거일것같지만 너무 급해서 ㅠ
>
> 보낸 파일은 자료실에서 다운받은 가속도 센서 계산법 인데요
>
> 0g의 경우 1.65V이고 여기서 +-2g모드의 경우 G=(1.65-3.3/1024)/(660*0.01)이라는 식을 보았습니다.
>
> 그런데 저 식을 그대로 계산해 보아도 2.495라는 값이 나오는데 1.65V에서 0G가 나와야 하는거 아닌가요? ㅠㅠ 아니면 혹시 괄호라도 더 넣어야 하나요? 그런데 어떻게 해봐도 0이 나오는 경우는 못봐서요
>
> 이거에 대한 자료를 찾아보다가 http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m52&wr_id=127913&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%B6%A9%EB%B6%81%EB%8C%80&sop=and 이 질문글도 보게 되었는데요 이 경우 Z가 1g일 때 전압값이 2.31이라고 하셨는데 저 식에 어디에 대입해도 결과값이 1이 나오는 경우를 못찾아서요
>
> 제가 랩뷰로 전압값을 받아서 1초에 1000번씩 5초간 총 5000개의 기록이 있는데 여기서 가속도 값을 어캐 구해야 할까요?
>
> 예를들어 2.5v의 전압이 출력되었다면 그때의 g 값을 구하는 식을 그대로 적어주시면 감사하겠습니다!!
>
> 그리고 Z축의 경우 가만히 놔두었을 때 1g라고 하는데 그럼 그때의 가속도 역시 9.81인가요? 가만히 있어도요?
>
> 그리고 지금 제가 사용하고 있는 센서의 버전은 2번인데 2번의 민감도를 보니 800이던데 그럼 660대신에 그냥 800을 넣으면 되는거겠죠?
>
> 참고로 센서는 AM-3AXIS V02, 모듈은 AM-ACCTB를 사용하고 있고 프로그램은 랩뷰를 사용하고있습니다!!
>
|
||||
| 9756 | 답변완료kt-m128 cd | 홍용재 | 2016-12-02 | 2,544 |
|
죄송한데
제가 영수증도 잃어버렸고
cd도 잃어벼려서
혹시 cd만 따로 살수 없나요?
아니면 구매인증할 다른방법이 있나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
고객님이 구매하신 내용은 이미 인증이 되어 있습니다.
CD 내용을 등록하신 이메일로 보내드렸습니다.
감사합니다.
>
>
> 죄송한데
> 제가 영수증도 잃어버렸고
> cd도 잃어벼려서
> 혹시 cd만 따로 살수 없나요?
> 아니면 구매인증할 다른방법이 있나요?
>
|
||||
| 9755 | 답변완료atmega128 ram 보드 회로설계 질문 | 박찬흠 | 2016-12-01 | 2,305 |
|
안녕하세요. 수고하십니다.
제가 이번에 뉴티씨에서 아트메가128 램 제품을 구매해서 프로젝트를 하고 있습니다.
그런데 궁금한 점이 하나 있는데요.
외부전압 5V-2A를 보드에 제공을 하려는데 여기서 보드 자체의 VCC GND단자는 어떻게 사용해야 할지
궁금해서 질문 올립니다
+ AVCC단자도 어떻게 연결을 해주어야 할지도 부탁드립니다
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
외부전압 정전압 전원 5V-2A를 모듈에 있는 2핀 전원단자로 넣어 주시면 됩니다.
필요한 만큼만 당겨주니까 스펙에서 2A라도 관계 없습니다.
또한, AVCC는 VCC와 연결되어 있습니다.
따로 처리하지 않으셔도 됩니다.
원래는 아날로그적인 관점에서 보면, AVCC와 VCC를 잘 구분하여 비드 등으로 연결하여 주는 것이 좋은데,
본 모듈은 학습용으로 개발되어서, 최소한의 회로로 학생들이 혼동을 일으키지 않도록 하는 목적으로 제작되어, 그런 부품들은 모두 빠져 있습니다.
그래서, 그냥 VCC와 AVCC를 연결해 두었기 때문에, 별도로 연결 등을 하지 않으셔도 됩니다.
다만, 만약 아날로그적인 회로를 통해 노이즈를 저감하여 테스트하고 싶으시다면,
AM-2560PRO나 AM-2560USB 모듈을 사용하시기를 권장해 드립니다.
이 회로에는 노이즈 제거 등도 회로에 반영되어 있고, 특히 AM-2560USB의 경우는 전자파 인증까지도 받은 회로 입니다.
감사합니다.
>
>
> 안녕하세요. 수고하십니다.
> 제가 이번에 뉴티씨에서 아트메가128 램 제품을 구매해서 프로젝트를 하고 있습니다.
> 그런데 궁금한 점이 하나 있는데요.
> 외부전압 5V-2A를 보드에 제공을 하려는데 여기서 보드 자체의 VCC GND단자는 어떻게 사용해야 할지
> 궁금해서 질문 올립니다
> + AVCC단자도 어떻게 연결을 해주어야 할지도 부탁드립니다
>
|
||||
| 9754 | 답변완료kt-m128 lcd | 홍용재 | 2016-12-01 | 2,131 |
|
제 kt-m128 에서 lcd에 관한예제를 돌려보았습니다
하지만 lcd에서 어떤 소스를쓰건 반응이 없습니다
lcd쪽 고장인것같습니다
그래도 혹시 모르니 본소스로 확인한번만 부탁드립니다
소스 가 제데로 작동한다면 고장이 확실한거라 조치를취해야 할거같아서..
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#define Control (*(volatile unsigned char *)0x8001)
#define Data (*(volatile unsigned char *)0x8000)
#define LCD_EN_ON (Control = (Controller |= 0x04))
#define LCD_EN_OFF (Control = (Controller &= 0x0b))
#define LCD_RW_ON (Control = (Controller |= 0x02))
#define LCD_RW_OFF (Control = (Controller &= 0x0d))
#define LCD_RS_ON (Control = (Controller |= 0x01))
#define LCD_RS_OFF (Control = (Controller &= 0x0e))
#define SCR_L_SHFT 0x18
#define SCR_R_SHFT 0x1c
char Controller;
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//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();
MCUCR = 0x80;
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
}
void delay(int cnt)
{
int i, j;
for (i=0; i<cnt; i++)
for (j=0; j<600; j++) {;}
}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data = value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data = value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Str(char *Str)
{
while (*Str){
Write_Data(*Str++);
}
}
void lcd_gotoxy(unsigned char x, unsigned char y)
{
switch(y){
case 1:
Write_Controller(0x80+x-1);
delay(30);
break;
case 2 :
Write_Controller(0xc0+x-1);
delay(30);
break;
}
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void printf_Lcd(int lin, int can, char *Str){
Write_Controller(0x38);
lcd_gotoxy(can, lin);
Write_Str(Str);
}
void main(void){
init_devices();
lcd_init();
Write_Controller(0x01);
Write_Controller(0x02);
delay(10);
printf_Lcd(1,1,"TEXT LCD TEST");
delay(10);
printf_Lcd(2,4,"NEWTC");
}
관리자 답변
안녕하세요? 고객님,
고객님이 테스트로 올려주신 교재의 소스는 동작하지 않았습니다.
다음 소스는 동작하므로 다음소스로 해보세요.
그리고, 텍스트 LCD는 길쭉한 커넥터의 위쪽 커넥터인 조금 짧은 것에 꽂아야 합니다.
LCD 왼쪽 옆에 가변 저항도 잘 조정해 보시고, 스위치인 J44는 위쪽으로 올려져 있어야 텍스트LCD용으로 설정되는 겁니다.
#include <avr/io.h>
#include <stdio.h>
#include "kt_m128.h"
// Delay Function
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
for(j=1;j<2000;j++);
}
void lcd_delay(char d)
{
volatile di;
while(d--)
for(di=0; di<2; di++);
}
void lcd_reg_write(unsigned char reg)
{
LCD_R_W_OFF;
LCD_RS_OFF;
lcd_delay(5);
LCD_ENABLE_ON;
EX_LCD_DATA = reg;
lcd_delay(10);
LCD_ENABLE_OFF;
lcd_delay(5);
}
void lcd_putch(unsigned char reg)
{
LCD_R_W_OFF;
LCD_RS_ON;
lcd_delay(5);
LCD_ENABLE_ON;
EX_LCD_DATA = reg;
lcd_delay(10);
LCD_ENABLE_OFF;
lcd_delay(5);
}
void lcd_puts(char *s)
{
while(*s)
{
lcd_putch(*s);
s++;
}
}
int main(void)
{
init_kt_m128();
delay(100);
printf("\n\rLab09_1 Text LCD test...\n\r");
LCD_ENABLE_OFF;
LCD_R_W_ON;
LCD_RS_ON;
lcd_delay(10);
lcd_reg_write(0x38);
lcd_reg_write(0x0C);
lcd_reg_write(0x06);
lcd_reg_write(0x01);
delay(10);
lcd_reg_write(0x02);
delay(10);
lcd_puts("NewTC KT-M128");
while(1) {
EX_LED = 0x01;
delay(100);
EX_LED = 0x02;
delay(100);
}
}
>
>
> 제 kt-m128 에서 lcd에 관한예제를 돌려보았습니다
> 하지만 lcd에서 어떤 소스를쓰건 반응이 없습니다
> lcd쪽 고장인것같습니다
> 그래도 혹시 모르니 본소스로 확인한번만 부탁드립니다
> 소스 가 제데로 작동한다면 고장이 확실한거라 조치를취해야 할거같아서..
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #include <stdio.h>
>
> #define Control (*(volatile unsigned char *)0x8001)
> #define Data (*(volatile unsigned char *)0x8000)
>
>
> #define LCD_EN_ON (Control = (Controller |= 0x04))
> #define LCD_EN_OFF (Control = (Controller &= 0x0b))
> #define LCD_RW_ON (Control = (Controller |= 0x02))
> #define LCD_RW_OFF (Control = (Controller &= 0x0d))
> #define LCD_RS_ON (Control = (Controller |= 0x01))
> #define LCD_RS_OFF (Control = (Controller &= 0x0e))
>
> #define SCR_L_SHFT 0x18
> #define SCR_R_SHFT 0x1c
>
> char Controller;
>
>
> void port_init(void)
> {
>
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00;
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
>
> }
>
> //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();
>
> MCUCR = 0x80;
> 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
> }
>
> void delay(int cnt)
> {
> int i, j;
> for (i=0; i<cnt; i++)
> for (j=0; j<600; j++) {;}
> }
>
> void Write_Controller(char value)
> {
> LCD_EN_OFF;
> delay(1);
> LCD_RS_OFF;
> delay(1);
> LCD_RW_OFF;
> delay(1);
> LCD_EN_ON;
> delay(1);
> Data = value;
> delay(1);
> LCD_EN_OFF;
> delay(1);
> }
>
> void Write_Data(char value)
> {
> LCD_EN_OFF;
> delay(1);
> LCD_RS_ON;
> delay(1);
> LCD_RW_OFF;
> delay(1);
> LCD_EN_ON;
> delay(1);
> Data = value;
> delay(1);
> LCD_EN_OFF;
> delay(1);
> }
>
> void Write_Str(char *Str)
> {
> while (*Str){
> Write_Data(*Str++);
> }
> }
>
> void lcd_gotoxy(unsigned char x, unsigned char y)
> {
> switch(y){
> case 1:
> Write_Controller(0x80+x-1);
> delay(30);
> break;
> case 2 :
> Write_Controller(0xc0+x-1);
> delay(30);
> break;
> }
> }
>
>
> void lcd_init(){
> Write_Controller(0x38);
> Write_Controller(0x0e);
> Write_Controller(0x06);
> }
>
> void printf_Lcd(int lin, int can, char *Str){
> Write_Controller(0x38);
> lcd_gotoxy(can, lin);
> Write_Str(Str);
> }
>
> void main(void){
> init_devices();
> lcd_init();
> Write_Controller(0x01);
> Write_Controller(0x02);
> delay(10);
> printf_Lcd(1,1,"TEXT LCD TEST");
> delay(10);
> printf_Lcd(2,4,"NEWTC");
>
> }
>
|
||||
