Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 9693 | 답변완료NEWTC에서 판매하는 cortex m3 관련 서적 | 차금강 | 2016-09-20 | 1,916 |
|
안녕하세요
http://www.devicemart.co.kr/31081 이 보드를
ST-LINK/V2 JTAG를 이용해서 개발하려고하는데
NEWTC에서 판매하는 cortex m3 서적을 보면서 개발을 진행해도 상관이 없을까요?
혹시 NEWTC에서 판매하는 디버거를 사용할때랑
ST-LINK/V2 를 사용해서 할 때랑 차이점이 무엇인지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 교재를 이용하여 주셔서 감사합니다.
큰 이상은 없을 듯 합니다.
다만, 회로가 다르므로, 참고하셔서 보셔야 할 듯 합니다.
컴파일러에서의 다운로드 설정 등이 달라질 듯 합니다.
ST-LINK의 경우 ST-LINK Utility를 실행하여 사용이 가능합니다.
KEIL컴파일러에서 Options for Target 같은 곳에서 Debugger 설정 등을 ST-Link Debugger로 설정하셔야 겠습니다.
IAR에서는 Debugger를 ST-Link로 설정하고, ST-Link에서 JTAG인지 SWD인지 설정하여 써야 합니다.
Eclipse에서는 OPENOCD로 설정 후, 교재를 참고하여 cfg 파일을 수정하여 사용합니다.
이 이상 관련 질문은 보드제조사의 도움을 받으시는 것이 좋습니다.
다른 질문들은 본사에서 제조한 제품이 아니라서, 정확한 답변이 곤란합니다.
감사합니다.
감사합니다.
>
>
> 안녕하세요
> http://www.devicemart.co.kr/31081 이 보드를
> ST-LINK/V2 JTAG를 이용해서 개발하려고하는데
> NEWTC에서 판매하는 cortex m3 서적을 보면서 개발을 진행해도 상관이 없을까요?
>
> 혹시 NEWTC에서 판매하는 디버거를 사용할때랑
> ST-LINK/V2 를 사용해서 할 때랑 차이점이 무엇인지 궁금합니다.
>
|
||||
| 9692 | 답변완료안녕하십니까. 현금영수증 관련 질문입니다. | 김영윤 | 2016-09-19 | 2,080 |
|
안녕하세요.
현금영수증을 이메일로 보내주실수 있나요?
가능하다면 주문번호와 이메일 주소를 남기니 꼭 보내주시면 감사하겠습니다.
주문번호 : 1604110004, 1607060007
메일주소 : swors2004@naver.com
답변 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
해당부서에 통보하여 내일 처리하겠습니다.
감사합니다.
>
>
> 안녕하세요.
>
> 현금영수증을 이메일로 보내주실수 있나요?
>
> 가능하다면 주문번호와 이메일 주소를 남기니 꼭 보내주시면 감사하겠습니다.
>
> 주문번호 : 1604110004, 1607060007
>
> 메일주소 : swors2004@naver.com
>
> 답변 부탁드립니다.
>
|
||||
| 9691 | 답변완료PORTF문의 드립니다. | 장상진 | 2016-09-19 | 2,179 |
|
PORTF에 LED를 연결하여 사용중입니다.
1. 사용환경
AB-M128-B에 단자 연결하여 사용중입니다.
회로 구성은 첨부파일 참조
코드비전 사용
2. 문제점
PF0~PF4까지 LED 5개를 첨부파일의 사진과 같이 사용중인데 PF4에 불이 들어오지 않습니다.
나머지 4개는 들어옵니다.
3. 참조사항
D포트에 연결하여 테스트 해보니 LED5개가 정상작동.
키트차제 문제로 의심되어 KD-128PRO에 연결시 증상 동일
키트전원은 인가시키지 않고 LED VCC전원만 인가시 LED5개 모두 점등되는 걸로 봐서 회로 문제 없음
PF5~PF7에 연결해도 점등되지 않음
4. 초기화 코드
DDRF=0xFF; //스위치 LED를 출력으로 설정
PORTF=0xFF; //PORTF를 초기화
PORTF 문제인가요? 아니면 다른 문제인가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
아무래도 퓨즈비트를 JTAGEN으로 두셨나 봅니다.
그런 경우, 상위 4비트가 JTAG으로 잡히므로, 포트 동작은 되지 않습니다.
방법은 퓨즈비트를 0xFFD9EF로 고치시거나 JTAGEN을 DISABLE로 해 주시면 잘 될겁니다.
감사합니다.
>
>
> PORTF에 LED를 연결하여 사용중입니다.
> 1. 사용환경
> AB-M128-B에 단자 연결하여 사용중입니다.
> 회로 구성은 첨부파일 참조
> 코드비전 사용
>
> 2. 문제점
> PF0~PF4까지 LED 5개를 첨부파일의 사진과 같이 사용중인데 PF4에 불이 들어오지 않습니다.
> 나머지 4개는 들어옵니다.
>
> 3. 참조사항
> D포트에 연결하여 테스트 해보니 LED5개가 정상작동.
> 키트차제 문제로 의심되어 KD-128PRO에 연결시 증상 동일
> 키트전원은 인가시키지 않고 LED VCC전원만 인가시 LED5개 모두 점등되는 걸로 봐서 회로 문제 없음
> PF5~PF7에 연결해도 점등되지 않음
>
> 4. 초기화 코드
> DDRF=0xFF; //스위치 LED를 출력으로 설정
> PORTF=0xFF; //PORTF를 초기화
>
> PORTF 문제인가요? 아니면 다른 문제인가요?
>
|
||||
| 9690 | 답변완료2가지 오동작의 원인을 알고 싶습니다. | 이정주 | 2016-09-19 | 2,066 |
|
휴일인데도 답변해 주셔서 감사합니다.
포트방향레지스터 설정용 명령어가 Port IN, OUT 설정을 말씀하시나요?
Port IN/OUT은 제대로 설정했고 입출력 포트는 정상 동작합니다.
다시 한 번 말씀 드리자면
D7~D12를 출력으로 사용하고, 아랫 글에 적은 것처럼 2N2222를 Open Collector로 사용하여 24V Relay나 Lamp 등을 구동했습니다.
그래서 2N2222를 Open Collector로 접속하고 D7~D12는 10k 저항을 통하여 Base에 접속하였습니다.
D7~D12 모두 프로그램에 의해 High(5V)/Low(0V)가 잘 출력됩니다.
그런데 Bias 저항에 접속한 상태에서는 D7~D10은 정상적으로 High(5V)/Low(0V)로 정상 변화하는데, D11~D12는 High(1.5V)/Low(0V)로 변화합니다.
물론 D11~D12도 Base에 접속한 10k Bias 저항을 끊으면 High(5V)/Low(0V)로 정상적으로 출력합니다.
이 증상은 CPU를 바꾸어도 마찬가지라, CPU 불량은 아닌 듯 싶습니다.
DM-USTYLE-CT V1.0 회로도를 보아도 D11~D12에 별 특이사항은 안 보입니다.
6개 출력 포트의 NPN TR 회로 6개를 서로 바꾸어 보아도 유독 D11~D12만 접속하면 같은 증상으로 출력이 제대로 안 나오니 2N2222 회로 불량도 아닙니다.
그러니 도저히 무엇이 문제인지 모르겠습니다.
또한 2N2222 콜렉터에 24V Relay를 접속하여 구동했는데 정상 동작합니다.
하지만 Relay 접점으로 24V Solenoid를 구동시키는 순간 매 번 확실하게 CPU가 오동작하여 초기화 됩니다.
Relay와 Solenoid의 한쪽은 +24V에 접속되어 있습니다.
물론 Relay와 Solenoid Coil 양단에는 역방향 다이오드를 접속했습니다.
AC 전원에는 Noise Filter도 있습니다.
지금까지 다른 CPU나 컴퓨터 PCI용 32Bit(64Bit) I/O Board 등과 접속하여 사용할 때는 Noise 문제가 전혀 없었습니다.
너무 시간을 허비하고 납기를 계속 연기한 상태라 추석 연휴가 끝나면 바로 납품을 해야 해서 17일(토)에 DM-USTYLE-CT 보드를 제거하고 Relay 구성으로 장비를 완성했습니다.
하지만 앞으로 우노 보드를 사용하고 싶은데 위 2가지 문제점들에 대한 원인을 꼭 알고 싶습니다.
바쁘시겠지만 왜 이런 현상이 일어났는지 검토 좀 해 주시기 부탁 드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
보통, 그런 경우 솔레노이드도 일종의 모터이므로, 역기전력으로 역전류로 인한 노이즈 유입입니다.
DC모터제어기의 경우 그 부분의 회로까지 감안해서 들어가 있어서 문제가 없습니다만,
Tr. 등으로 구동해도 그렇게 들어올 수가 있습니다.
저 같은 경우는 AM-DC2-2D 같은 모터 제어기를 사용하는 데, 모터 제어기를 사용하시거나
또는 좀 더 확실한 역기전력 방지 회로를 넣어주는 것이 좋습니다.
감사합니다.
>
>
> 휴일인데도 답변해 주셔서 감사합니다.
>
> 포트방향레지스터 설정용 명령어가 Port IN, OUT 설정을 말씀하시나요?
> Port IN/OUT은 제대로 설정했고 입출력 포트는 정상 동작합니다.
>
> 다시 한 번 말씀 드리자면
> D7~D12를 출력으로 사용하고, 아랫 글에 적은 것처럼 2N2222를 Open Collector로 사용하여 24V Relay나 Lamp 등을 구동했습니다.
> 그래서 2N2222를 Open Collector로 접속하고 D7~D12는 10k 저항을 통하여 Base에 접속하였습니다.
> D7~D12 모두 프로그램에 의해 High(5V)/Low(0V)가 잘 출력됩니다.
> 그런데 Bias 저항에 접속한 상태에서는 D7~D10은 정상적으로 High(5V)/Low(0V)로 정상 변화하는데, D11~D12는 High(1.5V)/Low(0V)로 변화합니다.
> 물론 D11~D12도 Base에 접속한 10k Bias 저항을 끊으면 High(5V)/Low(0V)로 정상적으로 출력합니다.
> 이 증상은 CPU를 바꾸어도 마찬가지라, CPU 불량은 아닌 듯 싶습니다.
> DM-USTYLE-CT V1.0 회로도를 보아도 D11~D12에 별 특이사항은 안 보입니다.
> 6개 출력 포트의 NPN TR 회로 6개를 서로 바꾸어 보아도 유독 D11~D12만 접속하면 같은 증상으로 출력이 제대로 안 나오니 2N2222 회로 불량도 아닙니다.
> 그러니 도저히 무엇이 문제인지 모르겠습니다.
>
> 또한 2N2222 콜렉터에 24V Relay를 접속하여 구동했는데 정상 동작합니다.
> 하지만 Relay 접점으로 24V Solenoid를 구동시키는 순간 매 번 확실하게 CPU가 오동작하여 초기화 됩니다.
> Relay와 Solenoid의 한쪽은 +24V에 접속되어 있습니다.
> 물론 Relay와 Solenoid Coil 양단에는 역방향 다이오드를 접속했습니다.
> AC 전원에는 Noise Filter도 있습니다.
> 지금까지 다른 CPU나 컴퓨터 PCI용 32Bit(64Bit) I/O Board 등과 접속하여 사용할 때는 Noise 문제가 전혀 없었습니다.
>
> 너무 시간을 허비하고 납기를 계속 연기한 상태라 추석 연휴가 끝나면 바로 납품을 해야 해서 17일(토)에 DM-USTYLE-CT 보드를 제거하고 Relay 구성으로 장비를 완성했습니다.
> 하지만 앞으로 우노 보드를 사용하고 싶은데 위 2가지 문제점들에 대한 원인을 꼭 알고 싶습니다.
> 바쁘시겠지만 왜 이런 현상이 일어났는지 검토 좀 해 주시기 부탁 드립니다.
>
|
||||
| 9689 | 답변완료Coil Noise | 이정주 | 2016-09-17 | 1,885 |
|
수고 하십니다.
휴일이지만 급해서 질문 좀 드리겠습니다.
Board는 우노 DM-USTYLE-CT V1.0입니다.
프로그램은 Arduino cc입니다.
Board 전원은 12V를 사용하였습니다.
[질문 내용]
출력에 24V Relay를 구동했습니다.
그런데 Relay 접점으로 24V Solenoid를 구동시키는 순간 매 번 확실하게 CPU가 오동작을 합니다.
Relay와 Solenoid의 한쪽은 +24V에 접속되어 있습니다.
물론 Relay와 Solenoid Coil 양단에는 역방향 다이오드를 접속했습니다.
이런 경우 해결책이 없을까요?
관리자 답변
안녕하세요? 고객님,
전에 말씀드린것처럼 솔래노이드나 릴레이 등은 가능한 TR써서 접속해주세요.
DC라면 모터제어기 보드로 제어하는것도 방법입니다.
감사합니다.
>
>
> 수고 하십니다.
> 휴일이지만 급해서 질문 좀 드리겠습니다.
> Board는 우노 DM-USTYLE-CT V1.0입니다.
> 프로그램은 Arduino cc입니다.
> Board 전원은 12V를 사용하였습니다.
>
> [질문 내용]
> 출력에 24V Relay를 구동했습니다.
> 그런데 Relay 접점으로 24V Solenoid를 구동시키는 순간 매 번 확실하게 CPU가 오동작을 합니다.
> Relay와 Solenoid의 한쪽은 +24V에 접속되어 있습니다.
> 물론 Relay와 Solenoid Coil 양단에는 역방향 다이오드를 접속했습니다.
> 이런 경우 해결책이 없을까요?
>
|
||||
| 9688 | 답변완료일부 출력의 비정상 동작 문의 | 이정주 | 2016-09-17 | 1,848 |
|
수고 하십니다.
휴일이지만 급해서 질문 좀 드리겠습니다.
Board는 우노 DM-USTYLE-CT V1.0입니다.
프로그램은 Arduino cc입니다.
Board 전원은 12V를 사용하였습니다.
[질문 내용]
D7~D12를 출력으로 사용하였습니다.
출력은 모두 24V Relay나 Lamp 등을 구동해야 합니다.
그래서 NPN TR을 Open Collector로 접속하고 D7~D12는 10k 저항을 통하여 Base에 접속하였습니다.
D7~D12 모두 프로그램에 의해 High(5V)/Low(0V)가 잘 출력됩니다.
그런데 Bias 저항에 접속한 상태에서는 D7~D10은 정상적으로 High(5V)/Low(0V)로 정상 변화하는데, D11~D12는 High(1.5V)/Low(0V)로 변화합니다.
물론 D11~D12도 Base에 접속한 10k Bias 저항을 끊으면 High(5V)/Low(0V)로 정상적으로 출력합니다.
D11~D12는 Sink Current가 적은 것인지, 아니면 D0~D1처럼 특기 사항이 있는 것인지, 그도 아니면 CPU가 일부 손상된 것일까요?
왜 그런지 좀 알려 주시면 감사하겠습니다.
추신 : CPU를 바꾸어도 마찬가지입니다. CPU 불량은 아닌 듯 싶습니다.
DM-USTYLE-CT V1.0 회로도를 보아도 D11~D12에 별 특이사항은 안 보이네요.
NPN TR 회로 6개를 서로 바꾸어 보아도 유독 D11~D12만 접속하면 같은 증상으로 출력이 제대로 안 나오네요.
제 머리로는 도저히 원인을 모르겠습니다.
명쾌한 답변 기대하겠습니다.
관리자 답변
안녕하세요?고객님,
추석날도 열심이시군요.
포트방향레지스토 설정용 명령어를 잘해주셔할겁니다.
감사합니다.
>
>
> 수고 하십니다.
> 휴일이지만 급해서 질문 좀 드리겠습니다.
> Board는 우노 DM-USTYLE-CT V1.0입니다.
> 프로그램은 Arduino cc입니다.
> Board 전원은 12V를 사용하였습니다.
>
> [질문 내용]
> D7~D12를 출력으로 사용하였습니다.
> 출력은 모두 24V Relay나 Lamp 등을 구동해야 합니다.
>
> 그래서 NPN TR을 Open Collector로 접속하고 D7~D12는 10k 저항을 통하여 Base에 접속하였습니다.
> D7~D12 모두 프로그램에 의해 High(5V)/Low(0V)가 잘 출력됩니다.
> 그런데 Bias 저항에 접속한 상태에서는 D7~D10은 정상적으로 High(5V)/Low(0V)로 정상 변화하는데, D11~D12는 High(1.5V)/Low(0V)로 변화합니다.
> 물론 D11~D12도 Base에 접속한 10k Bias 저항을 끊으면 High(5V)/Low(0V)로 정상적으로 출력합니다.
>
> D11~D12는 Sink Current가 적은 것인지, 아니면 D0~D1처럼 특기 사항이 있는 것인지, 그도 아니면 CPU가 일부 손상된 것일까요?
> 왜 그런지 좀 알려 주시면 감사하겠습니다.
>
>
> 추신 : CPU를 바꾸어도 마찬가지입니다. CPU 불량은 아닌 듯 싶습니다.
> DM-USTYLE-CT V1.0 회로도를 보아도 D11~D12에 별 특이사항은 안 보이네요.
> NPN TR 회로 6개를 서로 바꾸어 보아도 유독 D11~D12만 접속하면 같은 증상으로 출력이 제대로 안 나오네요.
> 제 머리로는 도저히 원인을 모르겠습니다.
> 명쾌한 답변 기대하겠습니다.
>
|
||||
| 9687 | 답변완료아두이노 우노 업로드 오류 | 황시연 | 2016-09-12 | 2,374 |
|
현재 윈도우7 32비트 아두이노스케치 프로그램은 1.7.10 버전을 사용하고 있고
AD-USBISP-S , DM-USTYLE-CT V1.0 두 모델을 사용하고 있습니다.
자료실에 있는 3. Hello! Arduino! PDF 파일에 적혀 있는대로
VCP 드라이버, 윈도우용 바이너리를 전부 설치하고 스케치 프로그램을 이용하여 업로드를 하는데 다음과 같은 오류가 계속 발생 합니다.
스케치는 프로그램 저장 공간 (3%) 중 1,030 바이트를 사용. 최대 32,256 바이트.
전역 변수는 (0%)의 동적 메모리중 9바이트를 사용, 2,039바이트의 지역변수가 남은. 최대는 2,048 바이트.
업로드 오류: 설정 값'program.tool' 이 없음
이유를 잘 모르겠어서 홈페이지를 돌아다니며 드라이버도 이것저것 설치 해 보았는데도
해결이 되지 않습니다. 해결방법을 알고 싶습니다.
다음은 제가 설치한 드라이버 목록 입니다
CP210xVCPInstaller_x86
CP210x_VCP_7_32_64bit
CDM21218_setup
자료실에 있는 usbisp 0.36 및 0.35 드라이버 입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
최근 arduino.cc의 스케치 IDE 프로그램이 오류를 일으키고 있습니다.
깔으신 것을 제거하시고, 아래의 링크를 이용하여 다시 깔아 주세요.
아래의 것은 문제가 없네요. 경우에 따라서는 부트로더도 다시 깔아야 하실 수도 있습니다.
http://www.arduino.org/downloads
감사합니다.
>
>
> 현재 윈도우7 32비트 아두이노스케치 프로그램은 1.7.10 버전을 사용하고 있고
> AD-USBISP-S , DM-USTYLE-CT V1.0 두 모델을 사용하고 있습니다.
> 자료실에 있는 3. Hello! Arduino! PDF 파일에 적혀 있는대로
> VCP 드라이버, 윈도우용 바이너리를 전부 설치하고 스케치 프로그램을 이용하여 업로드를 하는데 다음과 같은 오류가 계속 발생 합니다.
>
>
> 스케치는 프로그램 저장 공간 (3%) 중 1,030 바이트를 사용. 최대 32,256 바이트.
> 전역 변수는 (0%)의 동적 메모리중 9바이트를 사용, 2,039바이트의 지역변수가 남은. 최대는 2,048 바이트.
> 업로드 오류: 설정 값'program.tool' 이 없음
>
>
>
> 이유를 잘 모르겠어서 홈페이지를 돌아다니며 드라이버도 이것저것 설치 해 보았는데도
> 해결이 되지 않습니다. 해결방법을 알고 싶습니다.
> 다음은 제가 설치한 드라이버 목록 입니다
> CP210xVCPInstaller_x86
> CP210x_VCP_7_32_64bit
> CDM21218_setup
> 자료실에 있는 usbisp 0.36 및 0.35 드라이버 입니다.
>
|
||||
| 9686 | 답변완료24V Relay 구동 방법 문의 | 이정주 | 2016-09-12 | 1,906 |
|
Board는 우노 DM-USTYLE-CT V1.0입니다.
프로그램은 Arduino cc입니다.
Board 전원은 12V를 사용하였습니다.
[질문 내용]
DM-USTYLE-CT V1.0의 D0~D13을 출력으로 사용하는 경우 허용 인가전압이 얼마인가요?
ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet를 찾아 보아도 그런 내용은 찾아 볼 수가 없습니다.
따라서 전원을 투입하고 싶어도 아직 하지 못하고 있습니다.
출력단에 24V Relay나 Solenoid를 사용하고 싶은데,
출력단에 TR 등을 Open Collector 형식으로 사용하여 Interface(전류 증폭 및 전압 Level 조정)를 해야 하는지,
아니면 Relay나 Solenoid에 24V를 공급하고 출력단이 Low로 될 때
Relay나 Solenoid가 동작하도록 Board 출력단에 직결해도 되는 지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우노는 DC5V 사용으로 DC4.5 ~ 5.5V 까지 입력 가능합니다.
직결하면 무리가 되므로, 반드시 5V를 사용할 수 있는 회로를 거쳐서 릴레이 같은 것들과 연결되도록 해야 하며, 릴레이를 잘못 사용하면, 보드가 망가질 수도 있으므로, 회로에 주의하여 사용해야 합니다.
감사합니다.
>
>
> Board는 우노 DM-USTYLE-CT V1.0입니다.
> 프로그램은 Arduino cc입니다.
> Board 전원은 12V를 사용하였습니다.
>
> [질문 내용]
> DM-USTYLE-CT V1.0의 D0~D13을 출력으로 사용하는 경우 허용 인가전압이 얼마인가요?
> ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet를 찾아 보아도 그런 내용은 찾아 볼 수가 없습니다.
> 따라서 전원을 투입하고 싶어도 아직 하지 못하고 있습니다.
>
> 출력단에 24V Relay나 Solenoid를 사용하고 싶은데,
> 출력단에 TR 등을 Open Collector 형식으로 사용하여 Interface(전류 증폭 및 전압 Level 조정)를 해야 하는지,
> 아니면 Relay나 Solenoid에 24V를 공급하고 출력단이 Low로 될 때
> Relay나 Solenoid가 동작하도록 Board 출력단에 직결해도 되는 지 궁금합니다.
>
|
||||
| 9685 | 답변완료AM-DC2-2D 제품 허용전류 | 이준한 | 2016-09-02 | 1,832 |
|
AM-DC2-2D를 사용하려고 하는데 허용전류가 1.2A (Peak 2A)라고 되잇네요
그런데 2채널이라서 모터를 동시에 2개 돌리려고하는데 그러면 모터 각각 0.6A까지 되는건가요?
아니면 두개 둘다 1.2A까지 돌려도 되는건가요?
관리자 답변
안녕하세요? 고객님,
각각 1.2 A까지 쓸수 있습니다.
다만, 모터용 전원 2핀단자에 충분한 전원공급이 되어야합니다.
감사합니다.
>
>
> AM-DC2-2D를 사용하려고 하는데 허용전류가 1.2A (Peak 2A)라고 되잇네요
>
> 그런데 2채널이라서 모터를 동시에 2개 돌리려고하는데 그러면 모터 각각 0.6A까지 되는건가요?
>
> 아니면 두개 둘다 1.2A까지 돌려도 되는건가요?
>
|
||||
| 9684 | 답변완료추가 질문입니다. | 강승원 | 2016-09-02 | 1,907 |
|
소스가 문제가 있다는것은 아닙니다.
제가 아직 몰라서 질문을 드립니다.
PWM 제어 소스에 대한 자세한 설명자료가 있으면 연습을 해볼텐데 어디를 건드려야 할지 몰라서 그렇습니다.
1차로 정,역방향, 브레이크 기능을 구현해보고 싶습니다.
지금은 스위치 모듈이 없어서 구현이 불가능한 상태입니다.
가장 간단한 정.역.브레이크 기능에 대한 소스가 없을런지요.
모터의 속도가 너무 빨라서 조절하고 싶습니다.
관리자 답변
안녕 하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
아래의 소스를
// SWITCH Control
#define SW_PORT PINA
#define SW_PORT_DDR DDRA
아래처럼 바꿔주고,
#define SW_PORT PING
#define SW_PORT_DDR DDRG
아래에서,
switch(SW_PORT&0x0f){
case 0x01 : motor_speed+=SPEED_UP;
break;
case 0x02 : motor_speed-=SPEED_UP;
break;
case 0x04 : sw_state[2] = PRESSED;
break;
case 0x08 : sw_state[3] = PRESSED;
break;
case 0x00 : if(sw_state[2] == PRESSED)
밑에처럼 변경,
switch(SW_PORT&0x0f){
case 0x01 : sw_state[2] = PRESSED;
break;
case 0x02: sw_state[3] = PRESSED;
break;
case 0x00 : if(sw_state[2] == PRESSED)
이렇게 변경하면 보드의 스위치로 속도 변경은 될겁니다.
지금 주말이라 테스트는 여기선 못해보고 씁니다.
모터 속도는
motor_speed = 1; 최소속도구요.
motor_speed = 1700; 최고속도입니다.
감사합니다.
>
> 소스가 문제가 있다는것은 아닙니다.
> 제가 아직 몰라서 질문을 드립니다.
>
> PWM 제어 소스에 대한 자세한 설명자료가 있으면 연습을 해볼텐데 어디를 건드려야 할지 몰라서 그렇습니다.
>
> 1차로 정,역방향, 브레이크 기능을 구현해보고 싶습니다.
> 지금은 스위치 모듈이 없어서 구현이 불가능한 상태입니다.
>
> 가장 간단한 정.역.브레이크 기능에 대한 소스가 없을런지요.
>
> 모터의 속도가 너무 빨라서 조절하고 싶습니다.
>
|
||||
| 9683 | 답변완료PWM 제어 문의 | 강승원 | 2016-09-01 | 2,031 |
|
사용환경
ATMEGA128 PRO + AM-DC1-3D + USBISP v03.6
Window7 + Iccavr 7.0 + STK500.exe(드라이버 설치)
아래의 PWM 소스 컴파일을 에러없이 완료되는것을 확인하였습니다.
그런데 정,역방향 동작은 안되고 한방향으로만 작동됩니다.
문의사항 입니다.
제가 PWM 제어에 대하여 문외한이라 아래 소스에 대하여 개괄적인 설명을 하여 주실수 없는지요.
아니면 참고자료 또는 참조 소스라도 알려주시면 감사하겠습니다.
그리고 아래 소스에서 회전속도 조절 / 정,역방향 전환 / 브레이크 기능을 구현하려면
어느부분을 변경하여야 하는지 알려 주시면 감사하겠습니다.
============== 소스코드( DC 모터 PWM 제어)================
//ICC-AVR application builder : 2008-05-07 오후 11:19:12
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
// DC MOTOR Control
#define MOTOR_PORT PORTC
#define PWM_PORT 0x00
#define PWM1_ON (MOTOR_PORT|=0x01)
#define PWM1_OFF (MOTOR_PORT&=0xFE)
#define DIR1_ON (MOTOR_PORT|=0x02)
#define DIR1_OFF (MOTOR_PORT&=0xFD)
#define ENABLE1_OFF (MOTOR_PORT|=0x04)
#define ENABLE1_ON (MOTOR_PORT&=0xFB)
#define BREAK1_ON (MOTOR_PORT|=0x08)
#define BREAK1_OFF (MOTOR_PORT&=0xF7)
#define LEFT 1
#define RIGHT 2
#define STOP 3
// SPEED Control
#define MIN_SPEED 1
#define MAX_SPEED 1700
#define SPEED_UP 1
// SWITCH Control
#define SW_PORT PINA
#define SW_PORT_DDR DDRA
#define PRESSED 1
#define OPEN 0
volatile unsigned char T20ms=0, num=PWM_PORT, motor_state=LEFT;
volatile unsigned int DCMOTOR[8], Tcount=0, motor_speed,sw_state[8]={0,0,0,0,0,0,0,0};
// printf 함수 사용시 추가할 것.
int putchar(char c)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = c;
return c;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
//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;
}
//TIMER0 initialize - prescale:128
// WGM: Normal
// desired value: 1mSec
// actual value: 1.000mSec (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0x06; //set count
OCR0 = 0xFA;
TCCR0 = 0x04; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
TCNT0 = 0x06; //reload counter value
T20ms++;
if(T20ms >= 20)
{
T20ms = 0;
Tcount = 0;
}
}
//TIMER2 initialize - prescale:8
// WGM: Normal
// desired value: 100uSec
// actual value: 100.000uSec (0.0%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
TCNT2 = 0xEC; //setup
OCR2 = 0x14;
TCCR2 = 0x02; //start
}
#pragma interrupt_handler timer2_ovf_isr:11
void timer2_ovf_isr(void)
{
TCNT2 = 0xEC; //reload counter value
Tcount++;
if(DCMOTOR[num]>Tcount)
MOTOR_PORT |= (0x01<<num);
else
MOTOR_PORT &= (~(0x01<<num));
}
//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();
uart0_init();
timer0_init();
timer2_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x41; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(int cnt)
{
unsigned int i, j;
for(i=0;i<cnt;i++){
for(j=0;j<1000;j++)
{
}
}
}
void motor_init(void){
ENABLE1_ON;
PWM1_ON;
BREAK1_OFF;
DIR1_ON;
printf("Motor Control V01W\r\n");
}
//
void main(void)
{
unsigned char i, j;
init_devices();
//insert your functional code here...
motor_init();
SW_PORT_DDR = 0x00;
DCMOTOR[PWM_PORT] = motor_speed = 800;
while(1){
switch(SW_PORT&0x0f){
case 0x01 : motor_speed+=SPEED_UP;
break;
case 0x02 : motor_speed-=SPEED_UP;
break;
case 0x04 : sw_state[2] = PRESSED;
break;
case 0x08 : sw_state[3] = PRESSED;
break;
case 0x00 : if(sw_state[2] == PRESSED){
if(motor_state == STOP){
motor_state = LEFT;
}else{
motor_state = STOP;
}
sw_state[2] = OPEN;
}
if(sw_state[3] == PRESSED){
if(motor_state == STOP){
motor_state = RIGHT;
}else{
motor_state = STOP;
}
sw_state[3] = OPEN;
}
break;
default : break;
}
if(motor_speed >= MAX_SPEED){
motor_speed = MAX_SPEED;
}
if(motor_speed <= MIN_SPEED){
motor_speed = MIN_SPEED;
}
switch(motor_state){
case LEFT : BREAK1_OFF;
DIR1_ON;
break;
case RIGHT : BREAK1_OFF;
DIR1_OFF;
break;
case STOP : BREAK1_ON;
break;
default : break;
}
DCMOTOR[PWM_PORT] = motor_speed;
delay(4);
printf("SW:%d Speed:%d State:%d\r\n",SW_PORT&0x0f, motor_speed, motor_state);
}
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
소스는 크게 문제가 없어 보입니다만,
PORTA에 연결한 AM-TS8 모듈에서 스위치를 D2와 D3 위치의 스위치를 각각 누를 때마다, 방향이 바뀔 겁니다.
감사합니다.
>
>
> 사용환경
> ATMEGA128 PRO + AM-DC1-3D + USBISP v03.6
>
> Window7 + Iccavr 7.0 + STK500.exe(드라이버 설치)
>
> 아래의 PWM 소스 컴파일을 에러없이 완료되는것을 확인하였습니다.
> 그런데 정,역방향 동작은 안되고 한방향으로만 작동됩니다.
>
> 문의사항 입니다.
> 제가 PWM 제어에 대하여 문외한이라 아래 소스에 대하여 개괄적인 설명을 하여 주실수 없는지요.
> 아니면 참고자료 또는 참조 소스라도 알려주시면 감사하겠습니다.
>
> 그리고 아래 소스에서 회전속도 조절 / 정,역방향 전환 / 브레이크 기능을 구현하려면
> 어느부분을 변경하여야 하는지 알려 주시면 감사하겠습니다.
>
> ============== 소스코드( DC 모터 PWM 제어)================
> //ICC-AVR application builder : 2008-05-07 오후 11:19:12
> // Target : M128
> // Crystal: 16.000Mhz
>
> #include <iom128v.h>
> #include <macros.h>
> #include <stdio.h>
>
> // DC MOTOR Control
> #define MOTOR_PORT PORTC
> #define PWM_PORT 0x00
> #define PWM1_ON (MOTOR_PORT|=0x01)
> #define PWM1_OFF (MOTOR_PORT&=0xFE)
> #define DIR1_ON (MOTOR_PORT|=0x02)
> #define DIR1_OFF (MOTOR_PORT&=0xFD)
> #define ENABLE1_OFF (MOTOR_PORT|=0x04)
> #define ENABLE1_ON (MOTOR_PORT&=0xFB)
> #define BREAK1_ON (MOTOR_PORT|=0x08)
> #define BREAK1_OFF (MOTOR_PORT&=0xF7)
> #define LEFT 1
> #define RIGHT 2
> #define STOP 3
>
> // SPEED Control
> #define MIN_SPEED 1
> #define MAX_SPEED 1700
> #define SPEED_UP 1
>
> // SWITCH Control
> #define SW_PORT PINA
> #define SW_PORT_DDR DDRA
> #define PRESSED 1
> #define OPEN 0
>
> volatile unsigned char T20ms=0, num=PWM_PORT, motor_state=LEFT;
> volatile unsigned int DCMOTOR[8], Tcount=0, motor_speed,sw_state[8]={0,0,0,0,0,0,0,0};
>
> // printf 함수 사용시 추가할 것.
> int putchar(char c)
> {
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
>
> UDR0 = c;
> return c;
> }
>
> // scanf 함수 사용시 추가할 것.
> int getchar(void)
> {
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
> }
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
> }
>
>
> //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;
> }
>
> //TIMER0 initialize - prescale:128
> // WGM: Normal
> // desired value: 1mSec
> // actual value: 1.000mSec (0.0%)
> void timer0_init(void)
> {
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0x06; //set count
> OCR0 = 0xFA;
> TCCR0 = 0x04; //start timer
> }
>
> #pragma interrupt_handler timer0_ovf_isr:17
> void timer0_ovf_isr(void)
> {
> TCNT0 = 0x06; //reload counter value
> T20ms++;
> if(T20ms >= 20)
> {
> T20ms = 0;
> Tcount = 0;
> }
> }
>
> //TIMER2 initialize - prescale:8
> // WGM: Normal
> // desired value: 100uSec
> // actual value: 100.000uSec (0.0%)
> void timer2_init(void)
> {
> TCCR2 = 0x00; //stop
> TCNT2 = 0xEC; //setup
> OCR2 = 0x14;
> TCCR2 = 0x02; //start
> }
> #pragma interrupt_handler timer2_ovf_isr:11
> void timer2_ovf_isr(void)
> {
> TCNT2 = 0xEC; //reload counter value
> Tcount++;
>
> if(DCMOTOR[num]>Tcount)
> MOTOR_PORT |= (0x01<<num);
> else
> MOTOR_PORT &= (~(0x01<<num));
> }
>
> //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();
> uart0_init();
> timer0_init();
> timer2_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x41; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> void delay(int cnt)
> {
> unsigned int i, j;
> for(i=0;i<cnt;i++){
> for(j=0;j<1000;j++)
> {
> }
> }
> }
>
> void motor_init(void){
> ENABLE1_ON;
> PWM1_ON;
> BREAK1_OFF;
> DIR1_ON;
> printf("Motor Control V01W\r\n");
> }
>
> //
> void main(void)
> {
> unsigned char i, j;
> init_devices();
> //insert your functional code here...
> motor_init();
> SW_PORT_DDR = 0x00;
> DCMOTOR[PWM_PORT] = motor_speed = 800;
>
> while(1){
>
> switch(SW_PORT&0x0f){
> case 0x01 : motor_speed+=SPEED_UP;
> break;
> case 0x02 : motor_speed-=SPEED_UP;
> break;
> case 0x04 : sw_state[2] = PRESSED;
> break;
> case 0x08 : sw_state[3] = PRESSED;
> break;
> case 0x00 : if(sw_state[2] == PRESSED){
> if(motor_state == STOP){
> motor_state = LEFT;
> }else{
> motor_state = STOP;
> }
> sw_state[2] = OPEN;
> }
> if(sw_state[3] == PRESSED){
> if(motor_state == STOP){
> motor_state = RIGHT;
> }else{
> motor_state = STOP;
> }
> sw_state[3] = OPEN;
> }
> break;
>
> default : break;
> }
>
> if(motor_speed >= MAX_SPEED){
> motor_speed = MAX_SPEED;
> }
> if(motor_speed <= MIN_SPEED){
> motor_speed = MIN_SPEED;
> }
>
> switch(motor_state){
> case LEFT : BREAK1_OFF;
> DIR1_ON;
> break;
> case RIGHT : BREAK1_OFF;
> DIR1_OFF;
> break;
> case STOP : BREAK1_ON;
> break;
> default : break;
> }
>
>
> DCMOTOR[PWM_PORT] = motor_speed;
> delay(4);
>
> printf("SW:%d Speed:%d State:%d\r\n",SW_PORT&0x0f, motor_speed, motor_state);
> }
> }
>
|
||||
| 9682 | 답변완료20101답변 이어서 답변 드립니다. | 장상진 | 2016-08-31 | 1,956 |
|
모터 전압으로는 12V 씁니다.
그리고 B포트와 연결시 드라이버 모듈 핀번호 7번에서 OC0이 나올수 있는지요?
전화 해서 물어보니 된다고 하던데 AM-DC2-2D로는 되는데 DC1-3D로는 되지 않아서 다시 문의합니다.
관리자 답변
안녕하세요? 고객님,
네, 질문의 요지를 이제 이해했습니다.
ATMEGA128과의 연결시,
AM-DC2-2D에서는 PB4가 OC0라서, 10핀으로 B 포트에 연결하면, AVR PWM이 PWM2에 연결됩니다.
그래서, 2번 모터가 돌아갔을 겁니다. 포트 1개에는 D0 ~ D7까지의 8개 비트가 존재합니다.
그런데, AM-DC1-3D에서는 1번 모터만 존재하므로, 10핀으로 B포트에 연결하면, 5번핀 즉 D4에 연결된 것이 없으므로, 동작하지 않았을 겁니다.
이 때는, 모터 제어기의 1번과 5번을 서로 선을 연결시켜주면 잘 동작할 겁니다. 방향도 바꾸려면,2번과 6번을 연결시켜 주세요.
7번핀은 D6인데, 질문과 관계없는 것 같습니다.
감사합니다.
>
>
> 모터 전압으로는 12V 씁니다.
> 그리고 B포트와 연결시 드라이버 모듈 핀번호 7번에서 OC0이 나올수 있는지요?
> 전화 해서 물어보니 된다고 하던데 AM-DC2-2D로는 되는데 DC1-3D로는 되지 않아서 다시 문의합니다.
>
|
||||
| 9681 | 답변완료쉽게 풀어쓴 Cortex-M3 | 황홍섭 | 2016-08-31 | 1,828 |
|
E-Mail 드렸으나 회신이 없어 올립니다.
ST-Link/v2 JTAG을 사용하기 위하여 저자님의 알기 쉽게 풀어쓴 Cortex-M3 서적을
구입하여 내용대로 ST-Link/v2 JTAG 연결을 시도하였으나 되지 않아 방문하여 연결
방법을 습득코져 합니다. 바쁘시겠지만 허용되는 시간을 알려 주시면 그시간에
맟추어 방문하겠습니다. 감사합니다.
xcom.kr@gmail.com
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
네 유선상으로 약속드린 시간에 오시면 됩니다.
감사합니다.
>
>
> E-Mail 드렸으나 회신이 없어 올립니다.
>
> ST-Link/v2 JTAG을 사용하기 위하여 저자님의 알기 쉽게 풀어쓴 Cortex-M3 서적을
>
> 구입하여 내용대로 ST-Link/v2 JTAG 연결을 시도하였으나 되지 않아 방문하여 연결
>
> 방법을 습득코져 합니다. 바쁘시겠지만 허용되는 시간을 알려 주시면 그시간에
>
> 맟추어 방문하겠습니다. 감사합니다.
>
> xcom.kr@gmail.com
>
|
||||
| 9680 | 답변완료에러 문의 (usbisp) | 강승원 | 2016-08-31 | 2,077 |
|
avr mega128pro + usbisp + AM-DC1-3A 조합입니다.
USBISP 드라이버는 V03.5 로 CP210x_VCP_Win_XP_S2K3_Vista_7 를 설치하였는데.
STK500.EXE 디렉토리가 생기지 않아 웹에서 다운로드하여 폴더를 생성하여 그곳으로 지정하였습니다.
포트는 COM3을 설정되었습니다.
cd에 포함된 v03.5 버젼 사용설명처럼 셑팅을 하였습니다.
========= 에러내용==============
C:\iccv7avr\bin\imakew -f TEST_DC_MOTOR.mak
iccavr -o TEST_DC_MOTOR -g -nb:12 -e:0x20000 -ucrtatmega.o -bfunc_lit:0x60.0x10000 -dram_end:0xfff -bdata:0x60.0xfff -dhwstk_size:30 -beeprom:0.4096 -fihx_coff -S2 @TEST_DC_MOTOR.lk -lcatm128
ROM 1% full. 2019 out of 131072 bytes used.
RAM 63 bytes used (does not include stack usage).
Done. Tue Aug 30 23:47:29 2016
"C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" -dATMega128 -ccom3
STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
Error: Could not create Stk500Common layer
Error: Could not create hex file reader
Error: Could not create source buffer
Error: Could not create destination buffer
Fatal: Make sure 'AvrCommon.dll' and 'Stk500Common.dll' are properly installed
Done: there are error(s). Exit code: 1. Tue Aug 30 23:47:29 2016
에러 내용에 대하여 문의합니다. ICCAVR 7.0 DEMO 버젼입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AVR Studio V4.19를 자료실에서 AVR 쪽에서 다운로드 받아서 깔아주시면,
C:\Program Files (x86)\Atmel\AVR Tools\STK500 여기에
생깁니다.
여기를 지정해 주셔야 합니다.
감사합니다.
>
>
> avr mega128pro + usbisp + AM-DC1-3A 조합입니다.
>
> USBISP 드라이버는 V03.5 로 CP210x_VCP_Win_XP_S2K3_Vista_7 를 설치하였는데.
> STK500.EXE 디렉토리가 생기지 않아 웹에서 다운로드하여 폴더를 생성하여 그곳으로 지정하였습니다.
>
> 포트는 COM3을 설정되었습니다.
>
> cd에 포함된 v03.5 버젼 사용설명처럼 셑팅을 하였습니다.
>
> ========= 에러내용==============
>
> C:\iccv7avr\bin\imakew -f TEST_DC_MOTOR.mak
> iccavr -o TEST_DC_MOTOR -g -nb:12 -e:0x20000 -ucrtatmega.o -bfunc_lit:0x60.0x10000 -dram_end:0xfff -bdata:0x60.0xfff -dhwstk_size:30 -beeprom:0.4096 -fihx_coff -S2 @TEST_DC_MOTOR.lk -lcatm128
> ROM 1% full. 2019 out of 131072 bytes used.
> RAM 63 bytes used (does not include stack usage).
> Done. Tue Aug 30 23:47:29 2016
> "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" -dATMega128 -ccom3
> STK500 command line programmer, v 2.2 Atmel Corp (C) 2004-2005.
>
> Error: Could not create Stk500Common layer
> Error: Could not create hex file reader
> Error: Could not create source buffer
> Error: Could not create destination buffer
> Fatal: Make sure 'AvrCommon.dll' and 'Stk500Common.dll' are properly installed
> Done: there are error(s). Exit code: 1. Tue Aug 30 23:47:29 2016
>
>
> 에러 내용에 대하여 문의합니다. ICCAVR 7.0 DEMO 버젼입니다.
>
|
||||
| 9679 | 답변완료AM-DC1-3D모터 드라이버 질문입니다. | 장상진 | 2016-08-30 | 1,914 |
|
아래 코드로 AM-DC1-3D모터 드라이버를 제어 할려고 합니다.
AM-DC2-2D로 아래 코드로 사용시 모터가 움직이는데 AM-DC1-3D로는 움직이지가 않습니다.
LM182000과 L298N과의 차이점인지요?
코드비전사용하고ATMEGA128사용합니다.
코드는 아래와 같습니다.
--------------------------------------------------------------
#include<mega128.h>
#include <delay.h>
voidPwm_init(void) //Pwm 초기화
{
TCCR0=0x69; //CTC모드, 분주비 64
TCNT0=0x00;
OCR0=0;
SREG=0x80;
}
int forward (void) //모터 정회전
{
OCR0=400; //속도변환
}
return 0;
}
int stop(void) //모터 정지
{
OCR0=0; //PWM 정지
}
return 0;
}
voidmain(void)
{
portinit(); //포트초기화 함수로써 모터와 연결된 B포트 초기화했고 질문에서는 불필요하여 삭제하였습니다
Pwm_init; //Pwm 초기화
while(1)
{
if (PINE.3==0) //버튼 누름
{
forward(); //정회전
while(1)
{
if (PIND==0xFE) //센서 감지
{
stop(); //정지
break;
}
}
}
}
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AM-DC2-2D는 모터의 전압범위가 5V ~ 45V이지만,
AM-DC1-3D는 모터의 전압봄위가 12V ~ 55V 입니다.
즉, 모터가 5V 모터라면 DC2-2D로는 제어가 가능해도 DC1-3D로는 제어가 되지 않습니다.
혹시 그런 것은 아니신지요?
감사합니다.
>
>
> 아래 코드로 AM-DC1-3D모터 드라이버를 제어 할려고 합니다.
>
> AM-DC2-2D로 아래 코드로 사용시 모터가 움직이는데 AM-DC1-3D로는 움직이지가 않습니다.
>
> LM182000과 L298N과의 차이점인지요?
>
> 코드비전사용하고ATMEGA128사용합니다.
>
>
>
> 코드는 아래와 같습니다.
>
> --------------------------------------------------------------
>
> #include<mega128.h>
> #include <delay.h>
>
>
>
>
>
>
> voidPwm_init(void) //Pwm 초기화
> {
>
> TCCR0=0x69; //CTC모드, 분주비 64
>
> TCNT0=0x00;
> OCR0=0;
>
> SREG=0x80;
> }
>
>
>
> int forward (void) //모터 정회전
> {
> OCR0=400; //속도변환
> }
> return 0;
> }
>
>
>
> int stop(void) //모터 정지
> {
>
> OCR0=0; //PWM 정지
> }
> return 0;
>
> }
>
>
>
>
>
>
>
> voidmain(void)
> {
> portinit(); //포트초기화 함수로써 모터와 연결된 B포트 초기화했고 질문에서는 불필요하여 삭제하였습니다
> Pwm_init; //Pwm 초기화
> while(1)
> {
> if (PINE.3==0) //버튼 누름
>
>
> {
> forward(); //정회전
>
> while(1)
> {
> if (PIND==0xFE) //센서 감지
> {
> stop(); //정지
> break;
> }
> }
> }
>
> }
>
> }
>
|
||||
