로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2013/09/10
Link#1 easy-driver-with-arduino.html (Down:82)
ㆍ추천: 0  ㆍ조회: 2625   
  Arduino Uno로 만드는 3축 CNC
Arduino로 만드는 myStepper
참조 :
http://xavierstechno.blogspot.kr/2012/02/easy-driver-with-arduino.html

CNC는 인쇄기판(PCB) 절삭(Milling), 그림 그리기(Drawing), 필름 자르기(Cutting), 구멍 가공(Drilling),
금속의 절단(Routing), 주사기로 액체도포(Dispensing), 조각(engraving), 부품의 자동공급 및 조립을 할 수 있다.

장치 예: Mini CNC engraving machine CNC-3040-DJ : USD 630 (해외 배송비 포함)
 

CNC 기구를 3D로 설계했다.
  
 
Arduino Uno로 3개의 Stepping Motor를 제어한다.
 

하드웨어는 한개의 축으로 시험한다.

 
1장 : 최대 Stepper 속도
Stepper에서 구동할 수 있는 최고 속도를 알아야 한다.

 
스텝모터-계산기 :
http://www.daycounter.com/Calculators/Stepper-Motor-Calculator.phtml

  
먼저 stepper 모터의 규격을 알아야 한다.

- 모터 전원의 구동 전압은 12V
- 권선의 Inductance는 46mH 이지만 50 mH로 입력
- 1회전의 수텝 수 : 스텝 각도가 1.8도 이면 360도 / 1.8도 = 200 스텝/회전

- 구동 전류 : 모터의 규격은 0.33A 즉 330mA 이지만 135 mA를 입력
 
135mA를 입력한 것은 구동 기판의 가변저항으로 모터의 최대 전류를 쉽게 설정할 수 있기 때문이다.
중간의 Compute 단추를 누르면 다음과 같이 계산된다.
 
1 스텝의 시간 T는  50 * 0.135 * 2 / 12 = 1.125 ms이다.
기본 8 스텝이므로 T = 1.125ms / 8 = 0.140 ms = 140 us
소스에서 Timer2는 128로 분주하므로 구동펄스의 시간은 128 / 16000000 Hz = 0.000008 s-1 = 8 us-1
 
Arduion의 발진 주파수는 16 MHz 이다.
Timer2를 8us으로 작동시키려는 값은 140us /8us = 17.5 count 이나.
Timer2는 매 8us * 18 count = 144 us로 작동하게 된다. 

스텝모터의 1 회전시간은 144us * 1600 step/rev = 0.2304 sec/rev 이다.
그러므로 1 / 0.2304 sec/rev = 4.34 rev/sec 로 실제 속도에 근접한다.
1초에 4.34 회전을 rpm으로 환산하면 4.34 rev * 60 sec = 260.4 = 260 rpm 이다.
명령코드의 지연으로 20us 정도의 지연 시간이 발생하기 때문이다.
 
Arduino의 IDE로 이 값들을 복사해서, 변수 microSteping, stepsPerRev, I, V, iMax를 정의한다.

이 프로그램은 가속-감속 작동을 한다. 변수 accelDuring는 가속 값으로 바꾸어야 한다.
예를 들면 가속(accelates rate)은 10 스텝을 유지하고 정속으로 되어야 한다.
정속에서 감속도 10 스텝을 유지해야 한다. 만일 가속값을 원하지 않으면 0 으로 설정한다.
 
2장 : Arduino의 최대 Stepper 전류의 조절
드라이버는 스태핑모터 코일의 최대 전류를 조절한다.
- 큰 전류는 많은 힘(torque), 많은 발열, 낮은 속도, 많은 모터 잡음을 갖는다.
- 작은 전류는 적은 힘(torque), 낮은 온도, 높은 속도, 작은 잡음을 갖는다.
 
1. 최상의 선택은 필요로 하는 힘을 제공하는 한 낮은 전류로 조절해야 한다.
2. 실속(Dropped) 스텝이 없을 때 까지 전류를 조금씩 올리면서 힘을 조절한다. 
나는 오류와 도전으로 했었다. 충분하지 않은 힘(torque)일 때 이것을 경험했다.
전류가 낮을 때 어떤 스탭은 놓친다. (실속: 속도를 너무 빠르게 올리면 오히려 속도가 떨어진다)

 
 

전류의 조절은 간단히 가변저항 3을 돌린다. 반시계 방향은 전류를 낮춘다. 시계방향은 전류를 높인다.
현재 기판의 백색 사각형인 가변저항의 조절 방향의 인쇄는 잘 못 되어 있다.
 
1개의 스태퍼 코일의 실제 전류를 알려면,
- Vref = DVM으로 시험지점 1과 2의 전압을 감시한다.
- Rs = DVM으로 4번과 5번 사이의 저항을 감시한다. (0.75 혹은 1.5 ohm 이다)

다음 공식을 적용한다 : 
최대전류 = Imax = VREF/8Rs  (Allegro의 A3967 데이터 5쪽 각코일의 최대전류)
A3967 데이터 : https://skydrive.live.com/redir?resid=F83D8BD801F5CEB9!174
예을 들면, Vref = 1.7V 이고, Rs = 1.5 ohm 이라면  Imax = 1.7V /(8 * 1.5 ohm) = 0.141A = 141mA 이다.
 
Sleep과 Enable
 

Enable과 Sleep의 차이

- Enable 핀을 LOW로 하면 A397의 모든 출력이 허용된다.
- Enable 핀을 HIGH로 하면 A397의 모든 출력이 금지된다.
 
일반적인 작동에서 스탭드라이버는 Ebable 되어 있다.
스탭 드라이버가 정지되었다 하더라도, 스탭모터의 위치를 고정하기 위해 전류를 흘려야 한다.
스탭 드라이버가 금지되면, 스탭 모터는 전류를 받을 수 없고, 위치는 고정되지 않는다. (손으로 움직일 수 있다) 

- 스탭 드라이버를 재우려면(Sleep), Sleep 핀을 LOW로 만든다.

스탭 드라이버는 일반적인 작동일 때, Sleep 핀은 HIGH 이다.
A397 이 Sleep 상태(mode)에서, 내부회로에 포함된 출력은 금지된다.
A397 칩의 소비전력을 줄이기 위해, Sleep 상태에서 깨어나기 위해 약 1ms이 필요하다.

최종적인 차이점은
- Disabled 상태에서, 스탭 드라이버만 휴지 상태이다.
- Sleep 상태에서, 스탭 드라이버와 A397 칩은 모두 휴지 상태이다.
휴식 상태에서 깨우려면 1ms을 기다려야 한다.
절전을 하려면 Sleep으로 하고, 그렇지 않으면 Disable로 한다.
 
Arduino CCNC 소스
3축 스태핑모터 구동용 Arduino 펌웨어 소스 : arduino-3stepping.ino(11.1KB)

3축 스태핑모터 구동용 PC Processing 소스 : https://skydrive.live.com/redir?resid=F83D8BD801F5CEB9!162

3장 : myCNC 2.0
참조 : http://xavierstechno.blogspot.kr/2012/09/my-cnc-20-part-iii.html
동영상 : http://www.youtube.com/embed/TY2a3b9HZRY?feature=player_embedded

제작한 myCNC에서 처음으로 연삭(Milled)하여 만든 회로기판(PCB).
 
 
테이블의 높이를 조절한다. 오차는 0,2mm 이다. 잘 작동하고 있다.
지금도 사용하고 있지만, 나는 더 좋게 만들어야 만 한다.
 
 
  
 
  
 
Arduino Shield 개발(protoboard) 기판 : 
참조 : http://xavierstechno.blogspot.com/2012/02/easy-driver-with-arduino.html
  
 
기판의 설계는 무료 소프트 DipTrace를 사용했다 : http://www.diptrace.com/download.php
기판의 밀링가공 파일 DIP, PDF, SVG, GCode는 여기에서 찾을 수 있다.
https://skydrive.live.com/redir?resid=F83D8BD801F5CEB9!187

GCode 파일을 만들려면, 먼저 DipTrace 기판 배치를 Adobe Illustrator에서 pdf 파일로 저장한다.
  - 모든 동판연결(path)를 선택한다.
  - 그리고 동판연결(Path)을 출력(Object) 한다.  
  - 외곽선 가공폭(Outline Stroke 즉 사용할 밀링도구의 굵기)을 선택한다.
  - 동판연결(Path)의 안쪽은 채우지 않는다 (No Fill)
  - 가공폭(Stroke) - 선폭(Weight) 0.01 mm, Caps는 Projecting, 모서리(Corner)는 Miter Join으로 선택한다.
  - 동판연결(PathFinder)의 단위(Unit)를 선택한다.

이제 InkSkape의 laserengraver 보조소프트(addin)로 GCode를 만든다.
https://skydrive.live.com/redir?resid=F83D8BD801F5CEB9!190

마지막으로 GCode를 수작업으로 수정하였다.
GCode 파일에서 구멍 가공(drill holes)은 DipTrace에서 기판배치(PCBLayout)을 'Mach 2/3 Drill'으로 출력한다.  
수정된 파일은 나의 표준으로 개정(update) 했다.
 
설계된 3D Model 파일
참조 : http://xavierstechno.blogspot.kr/2012/06/my-cnc.html
 
 
부품도면인 3D 파일은 여기에서 받을 수 있다. 3 종류의 파일이 있다.

.DWFX : 'Autodesk Design Review'.
.DWG  : 'Autodesk 123D'.
.STL '123D' or Blender or MeshLab
 
부품을 3D로 볼 수 있는 무료 교육용 Autodesk Software : http://students.autodesk.com/?nd=home
나는 Android 와 iPhone의 무료 교육용 Autodesk Software App을 배포했다. 
iPhone : http://usa.autodesk.com/adsk/servlet/pc/index?id=14640987&siteID=123112
Android : https://skydrive.live.com/#cid=F83D8BD801F5CEB9&id=F83D8BD801F5CEB9%21141

레이저 절단 부품 (Laser Cutted Parts)
레이저 절단가공 재료로 10, 5,  2mm 두께(with)의 methacrylate (PMMA)를 쓰려고 했다.
SVG 파일: https://skydrive.live.com/#cid=F83D8BD801F5CEB9&id=F83D8BD801F5CEB9%21167
lnkSpace 파일: http://inkscape.org/

스탭모터 드라이버 회로
A3967 Stepping Motor Driver 회로도 : EasyDriver_v44_sch.pdf(24KB)
 
A3967의 1번 핀에는 1~5V를 인가하며, 1V는 166mA, 3.3V는 650mA, 5V는 833mA의 출력전류를 설정한다.
최소 전류는 부드러운 마이크로 스탭을 제공한다. 최대 전류는 높은 Torque를 제공한다.
24번 PFD 핀에 연결된 R17을 추가하면 가장 높은 속도성능이 나온다. (A3967 데이터를 보라)
  
 
  
스탭모터 드라이버 전원회로

SJ1은 연결되어 있다. JP4에 5V 전원을 연결하여 사용할 경우는 SJ1을 자른다.
8V 이상을 사용하려면 JP1에 연결한다. SJ2는 잘려 있으며 JP4에 5V를 공급한다. 
SJ2를 연결하면 3.3V를 VCC로 JP4에 공급한다.
 
 

이자료 외에도 Arduino를 이용한 CNC 만들기는 많이 있다
Arduino CNC 동영상 : http://www.youtube.com/embed/E7ZclkT-EL0?feature=player_embedded

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.

Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA 
 AVRTOOLS™
   
윗글 Arduino 음성인식 Speech/Voice Recognition
아래글 Arduino로 만드는 mySpectral 분광기
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 230 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 388 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 435 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 467 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 440 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 476 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 474 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 405 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 611 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 567 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 334 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 433 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 652 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 466 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 351 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 601 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 453 0
9 Arduino DUE based DDS Synthesizer avrtools™ 2016/01/24 (일) 273 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 479 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1730 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2625 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2161 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 540 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 483 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 3707 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2701 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0