Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

3D 프린터와 아두이노

3,519 views

Published on

3D 프린터 하드웨어 및 아두이노 실습 종합

Published in: Education
  • Be the first to comment

3D 프린터와 아두이노

  1. 1. 3D 프린터와 아두이노 송치원
  2. 2. 3D 프린팅의 3단계 3D 모델링 슬라이싱 (Slicing) 3D 프린팅 후가공
  3. 3. 3D 모델링 123D Catch 123D Design Blender Illustrator Ink Scape Inventor Mesh LabMAYA Mesh Mixer Open SCAD Photoshop Rhino Sculptris Sketchup Solidworks Tinkercad Z BrushFusion 3D MAX
  4. 4. 슬라이싱 CURA Slic3r KISSlicer Simplify 3D
  5. 5. 3D Printer
  6. 6. Hardware Software
  7. 7. 3D 프린터의 구성 3D Printer Software Hardware CAD CAM Firmware Software Files Software Slicer G-Code Sender G-Code Interpreter G-Code Software Files Electronics Mechanics Extruder Controller Stepper Motors End Stops Heated Bed Stepper Drivers Axis Motion Belts / Pulleys Threaded rod Hot end Cold end Filament Files
  8. 8. 3D 프린터의 구성 CURA CAD CAM Firmware Electronics Mechanics Extruder 3D Printer Software Hardware Controller
  9. 9. 전기 제어부
  10. 10. 컨트롤러 Ramps REPRAP Arduino Mega Polulu Shield Arduino MEGA 2560 • Arduino : 오픈 하드웨어 (회로도가 공개되어 있다) • 저렴하다 • 개발환경 지원이 좋다 • USB 를 통해 쉽게 동작시킨다 • Arduino + Sensors • Arduino + Shield • Arduino Mega 2560 + Ramps http://www.arduino.cc/
  11. 11. https://en.wikipedia.org/wiki/G-code http://reprap.org/wiki/G-code/kr
  12. 12. Firmware
  13. 13. Arduino / Firmware Firmware Source Code Modify Compile Upload (Configuration.h)
  14. 14. G Code 1. read G code : G28 2. X motor on 3. Y motor on 4. Z motor on 5. if( X stop == on ) stop X motor 6. if( Y stop == on ) stop Y motor 7. if( Z stop == on ) stop Z motor 8. update LCD
  15. 15. G Code 1. read G code G1 x40 e10 2. move X motor 2,000 steps 3. move E motor 600 steps 4. update LCD
  16. 16. Firmware 수정 – Configuration.h 1. 보드 설정 - 통신속도 - 메인보드 종류 2. 온도 설정 - 온도 센서 - 온도 조정 3. 동작 설정 - 리미트 센서 설정 - 리미트 센서 종류 - 모터 회전 방향 설정 - 모터 움직임 제한 4. 출력 설정 - Steps Per Unit 설정
  17. 17. Marlin 3D Printer Firmware https://github.com/MarlinFirmware/Marlin
  18. 18. Steps Per Unit = 1 unit 을 이동하는데 필요한 Step 수 1mm X, Y 축 Teeth : 16 Belt : 2mm Cycle : 200 Steps Leadscrew : 1mm Z 축 1바퀴=200스텝=16이빨  16이빨X2mm = 32mm  1mm 이동에는 200/32 스텝 = 200/32*16 마이크로스텝 필요 1바퀴=200스텝=전산나사1바퀴=1mm 이동  1mm 이동에는 200/1 스텝 = 200/1*16 마이크로스텝 필요
  19. 19. Steps Per Unit = 1 unit 을 이동하는데 필요한 Step 수 1mm Extruder 1바퀴 = 피팅기어 원주만큼 이동 = 2*반지름*π  1mm 이동에는 200/(원주) 스텝 = 200/(원주)*16 마이크로스텝
  20. 20. Arduino
  21. 21. Hardware Software
  22. 22. http://arduino.cc/
  23. 23. https://youtu.be/Wn3Le37qW64 아두이노 + 모터 + 근접센서
  24. 24. https://youtu.be/jjvy_jzGlAQ 아두이노 + 가속도센서 + 빛센서
  25. 25. https://youtu.be/zE5PGeh2K9k 아두이노 + 소리센서 + 모터
  26. 26. https://youtu.be/FUR5NjsR1JQ 아두이노 + 적외선거리센서 + 피에조 센서 + LED
  27. 27. https://youtu.be/P614P9C4pdM 3D Printer 로봇 청소기 Type FFF Size 500x500x1000
  28. 28. http://123d.circuits.io/
  29. 29. 실습. LED 켜기 int PIN_LED = 8; int PIN_BUTTON = 9; void setup() { pinMode(PIN_LED, OUTPUT); pinMode(PIN_BUTTON, INPUT); } int prevButton = LOW; int ledOn = LOW; void loop() { int currButton = digitalRead(PIN_BUTTON); if(prevButton == LOW && currButton == HIGH) { ledOn = HIGH; } else if(prevButton == HIGH && currButton == LOW) { ledOn = LOW; } prevButton = currButton; digitalWrite(PIN_LED, ledOn); } http://makecube.in
  30. 30. 실습. 모터 돌리기 (토글) int PIN_MOTOR = 9; int PIN_BUTTON = 8; void setup() { pinMode(PIN_MOTOR, OUTPUT); pinMode(PIN_BUTTON, INPUT); } int prevButton = LOW; int motorOn = LOW; void loop() { int currButton = digitalRead(PIN_BUTTON); if(prevButton == LOW && currButton == HIGH) { motorOn = HIGH - motorOn; } prevButton = currButton; digitalWrite(PIN_MOTOR, motorOn); } http://makecube.in
  31. 31. 실습. 모터 전진, 후진, 스탑 (엔드스탑) class Button { int pinNum; int prevState; public: Button(int pin) { pinNum = pin; prevState = LOW; } boolean isPressed() { int currState = digitalRead(pinNum); if(prevState == LOW && currState == HIGH) return true; return false; } void loop() { prevState = digitalRead(pinNum); } }; http://makecube.in void loop() { if(left.isPressed()) { motorL = LOW; motorR = HIGH; } if(right.isPressed()) { motorL = HIGH; motorR = LOW; } if(stop.isPressed()) { motorL = LOW; motorR = LOW; } digitalWrite(PIN_MOTOR_L, motorL); digitalWrite(PIN_MOTOR_R, motorR); left.loop(); right.loop(); stop.loop(); delay(100); } int PIN_BUTTON_LEFT = 8; int PIN_BUTTON_RIGHT = 9; int PIN_BUTTON_STOP = 10; int PIN_MOTOR_L = 12; int PIN_MOTOR_R = 13; void setup() { pinMode(PIN_BUTTON_LEFT, INPUT); pinMode(PIN_BUTTON_RIGHT, INPUT); pinMode(PIN_BUTTON_STOP, INPUT); pinMode(PIN_MOTOR_L, OUTPUT); pinMode(PIN_MOTOR_R, OUTPUT); } Button left(PIN_BUTTON_LEFT); Button right(PIN_BUTTON_RIGHT); Button stop(PIN_BUTTON_STOP); int motorL = LOW, motorR = LOW;
  32. 32. http://makecube.in/
  33. 33. Printing
  34. 34. 레벨링 Leveling The first layer issue
  35. 35. 캘리브레이션 Calibration Accuracy issue 30mm 30mm 30mm Test Cube Thingiverse – 3D Printer Calibration Model M501 :Read parameters from EEPROM M92 : Set axis steps per unit M500 : Stores parameter to EEPROM Ex) x축 크기가 33mm 이고 설정값이 100인경우 33 : 100 = 30 : ? ? = 30 * 100 / 33 = 90.9 설정) M92 x91 저장) M500
  36. 36. 워블 Wobble Quality issue 원인 : z축 흔들림 해결1 : 환봉을 튼튼하게 한다. 해결2 : 커플링 회전에 의한 축 흔들림이 없도록 한다. Z축 환봉
  37. 37. 강도 Strength Quality issue 강 강약 약 - 힘을 받는 방향을 고려하여 모델링 한다 - 힘을 받는 방향을 고려하여 출력 방향을 결정한다. - 필요한 강도에 따라 In-Fill 설정 또는 소재를 달리한다. 해결방법 In-Fill 이 높을수록 강도가 좋음 강도 : ABS > PLA
  38. 38. 열수축 Shrinkage Accuracy issue 수축의 원리 In-Fill 이 높을수록 수축이 심함 온도차가 높을수록 수축이 심함 출력물이 클수록 수축이 심함 - 수축을 없앨 수는 없다 - 수축을 고려하여 모델을 제작한다. - 수축 방향을 고려하여 출력 방향을 결정한다. - Chamber 를 사용한다. - Brim 을 넓게 사용한다. - In-Fill 과 출력 온도를 달리한다. 해결방법
  39. 39. 챔버 Chamber Accuracy issue
  40. 40. Maintenance
  41. 41. Maintenance
  42. 42. Maintenance
  43. 43. Trouble Shooting
  44. 44. Trouble Shooting
  45. 45. Trouble Shooting
  46. 46. Trouble Shooting
  47. 47. Trouble Shooting
  48. 48. Trouble Shooting
  49. 49. Trouble Shooting
  50. 50. Trouble Shooting
  51. 51. Trouble Shooting
  52. 52. Trouble Shooting
  53. 53. Trouble Shooting

×