Advertisement
Swooshman46

Config.h

Dec 28th, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 17.97 KB | None | 0 0
  1. #ifndef CONFIGURATION_H
  2. #define CONFIGURATION_H
  3.  
  4. // BASIC SETTINGS: select your board type, thermistor type, axis scaling, and endstop configuration
  5.  
  6. //// The following define selects which electronics board you have. Please choose the one that matches your setup
  7. // MEGA/RAMPS up to 1.2  = 3,
  8. // RAMPS 1.3/1.4 = 33
  9. // Gen6 = 5,
  10. // Gen6 deluxe = 51
  11. // Sanguinololu up to 1.1 = 6
  12. // Sanguinololu 1.2 and above = 62
  13. // Gen 7 @ 16MHZ only= 7
  14. // Gen 7 @ 20MHZ only= 71
  15. // Teensylu (at90usb) = 8
  16. // Printrboard Rev. B (ATMEGA90USB1286) = 9
  17. // Gen 3 Plus = 21
  18. // gen 3  Monolithic Electronics = 22
  19. // Gen3 PLUS for TechZone Gen3 Remix Motherboard = 23
  20. #define MOTHERBOARD 62
  21.  
  22. //// Thermistor settings:
  23. // 1 is 100k thermistor
  24. // 2 is 200k thermistor
  25. // 3 is mendel-parts thermistor
  26. // 4 is 10k thermistor
  27. // 5 is ParCan supplied 104GT-2 100K
  28. // 6 is EPCOS 100k
  29. // 7 is 100k Honeywell thermistor 135-104LAG-J01
  30. #define THERMISTORHEATER 5
  31. #define THERMISTORBED 5
  32.  
  33. //// Calibration variables
  34. // X, Y, Z, E steps per unit - Metric Prusa Mendel with Wade extruder:
  35. #define _AXIS_STEP_PER_UNIT {80, 82, 3600/1.25,700}
  36. // default  {80, 80, 3200/1.25, 700}
  37. // Metric Prusa Mendel with Makergear geared stepper extruder:
  38. //#define _AXIS_STEP_PER_UNIT {80,80,3200/1.25,1380}
  39. // MakerGear Hybrid Prusa Mendel:
  40. // Z axis value is for .9 stepper(if you have 1.8 steppers for Z, you need to use 2272.7272)
  41. //#define _AXIS_STEP_PER_UNIT {104.987, 104.987, 2272.7272, 1487}
  42.  
  43.  
  44. //// Endstop Settings
  45. #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
  46. // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
  47. //If your axes are only moving in one direction, make sure the endstops are connected properly.
  48. //If your axes move in one direction ONLY when the endstops are triggered, set [XYZ]_ENDSTOP_INVERT to true here:
  49. const bool X_ENDSTOP_INVERT = false;
  50. const bool Y_ENDSTOP_INVERT = false;
  51. const bool Z_ENDSTOP_INVERT = false;
  52.  
  53. // This determines the communication speed of the printer
  54. #define BAUDRATE 9600
  55. //#define BAUDRATE 250000
  56.  
  57. // Comment out (using // at the start of the line) to disable SD support:
  58. #define SDSUPPORT
  59.  
  60. // Uncomment to make run init.g from SD on boot
  61. //#define SDINITFILE
  62.  
  63. //Only work with Atmega1284 you need +1 kb ram
  64. #define SD_FAST_XFER_AKTIV
  65.  
  66. //-----------------------------------------------------------------------
  67. //// STORE SETTINGS TO EEPROM
  68. //-----------------------------------------------------------------------
  69. // the microcontroller can store settings in the EEPROM
  70. // M500 - stores paramters in EEPROM
  71. // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
  72. // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
  73. // M503 - Print settings
  74. // define this to enable eeprom support
  75. #define USE_EEPROM_SETTINGS
  76.  
  77. // to disable EEPROM Serial responses and decrease program space by ~1000 byte: comment this out:
  78. // please keep turned on if you can.
  79. #define PRINT_EEPROM_SETTING
  80.  
  81. //-----------------------------------------------------------------------
  82. //// ARC Function (G2/G3 Command)
  83. //-----------------------------------------------------------------------
  84. //Uncomment to aktivate the arc (circle) function (G2/G3 Command)
  85. //Without SD function an ARC function the used Flash is smaller 31 kb
  86. #define USE_ARC_FUNCTION
  87.  
  88. //-----------------------------------------------------------------------
  89. //// ADVANCED SETTINGS - to tweak parameters
  90. //-----------------------------------------------------------------------
  91.  
  92. #ifdef SDSUPPORT
  93.     #ifdef SD_FAST_XFER_AKTIV
  94.         //Fast transfer chunk size (> 1024 is unstable, change at your own risk).
  95.         #define SD_FAST_XFER_CHUNK_SIZE 1024
  96.     #endif
  97. #endif
  98.  
  99. //-----------------------------------------------------------------------
  100. // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
  101. //-----------------------------------------------------------------------
  102. #define X_ENABLE_ON 0
  103. #define Y_ENABLE_ON 0
  104. #define Z_ENABLE_ON 0
  105. #define E_ENABLE_ON 0
  106.  
  107. //Uncomment if you have problems with a stepper driver enabeling too late, this will also set how many microseconds delay there will be after enabeling the driver
  108. //#define DELAY_ENABLE 15
  109.  
  110. //-----------------------------------------------------------------------
  111. // Disables axis when it's not being used.
  112. //-----------------------------------------------------------------------
  113. const bool DISABLE_X = false;
  114. const bool DISABLE_Y = false;
  115. const bool DISABLE_Z = true;
  116. const bool DISABLE_E = false;
  117.  
  118. //-----------------------------------------------------------------------
  119. // Inverting axis direction
  120. //-----------------------------------------------------------------------
  121. const bool INVERT_X_DIR = false;
  122. const bool INVERT_Y_DIR = true;
  123. const bool INVERT_Z_DIR = false;
  124. const bool INVERT_E_DIR = true;
  125.  
  126. //-----------------------------------------------------------------------
  127. //// ENDSTOP SETTINGS:
  128. //-----------------------------------------------------------------------
  129. // Sets direction of endstops when homing; 1=MAX, -1=MIN
  130. #define X_HOME_DIR -1
  131. #define Y_HOME_DIR -1
  132. #define Z_HOME_DIR -1
  133.  
  134. //#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
  135.  
  136. const bool min_software_endstops = true; //If true, axis won't move to coordinates less than zero.
  137. const bool max_software_endstops = true; //If true, axis won't move to coordinates greater than the defined lengths below.
  138.  
  139.  
  140. //-----------------------------------------------------------------------
  141. //Max Length for Prusa Mendel, check the ways of your axis and set this Values
  142. //-----------------------------------------------------------------------
  143. const int X_MAX_LENGTH = 160;
  144. const int Y_MAX_LENGTH = 160;
  145. const int Z_MAX_LENGTH = 150;
  146.  
  147. //-----------------------------------------------------------------------
  148. //// MOVEMENT SETTINGS
  149. //-----------------------------------------------------------------------
  150. const int NUM_AXIS = 4; // The axis order in all axis related arrays is X, Y, Z, E
  151. #define _MAX_FEEDRATE {400, 400, 2, 45}       // (mm/sec)    
  152. #define _HOMING_FEEDRATE {1500,1500,120}      // (mm/min) !!
  153. #define _AXIS_RELATIVE_MODES {false, false, false, false}
  154.  
  155. #define MAX_STEP_FREQUENCY 30000 // Max step frequency
  156.  
  157. //For the retract (negative Extruder) move this maxiumum Limit of Feedrate is used
  158. //The next positive Extruder move use also this Limit,
  159. //then for the next (second after retract) move the original Maximum (_MAX_FEEDRATE) Limit is used
  160. #define MAX_RETRACT_FEEDRATE 100    //mm/sec
  161.  
  162. //-----------------------------------------------------------------------
  163. //// Not used at the Moment
  164. //-----------------------------------------------------------------------
  165.  
  166. // Min step delay in microseconds. If you are experiencing missing steps, try to raise the delay microseconds, but be aware this
  167. // If you enable this, make sure STEP_DELAY_RATIO is disabled.
  168. //#define STEP_DELAY_MICROS 1
  169.  
  170. // Step delay over interval ratio. If you are still experiencing missing steps, try to uncomment the following line, but be aware this
  171. // If you enable this, make sure STEP_DELAY_MICROS is disabled. (except for Gen6: both need to be enabled.)
  172. //#define STEP_DELAY_RATIO 0.25
  173.  
  174. ///Oscillation reduction.  Forces x,y,or z axis to be stationary for ## ms before allowing axis to switch direcitons.  Alternative method to prevent skipping steps.  Uncomment the line below to activate.
  175. // At this Version with Planner this Function ist not used
  176. //#define RAPID_OSCILLATION_REDUCTION
  177.  
  178. #ifdef RAPID_OSCILLATION_REDUCTION
  179. const long min_time_before_dir_change = 30; //milliseconds
  180. #endif
  181.  
  182. //-----------------------------------------------------------------------
  183. //// Acceleration settings
  184. //-----------------------------------------------------------------------
  185. // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
  186. #define _ACCELERATION 1000         // Axis Normal acceleration mm/s^2
  187. #define _RETRACT_ACCELERATION 2000 // Extruder Normal acceleration mm/s^2
  188. #define _MAX_XY_JERK 20.0
  189. #define _MAX_Z_JERK 0.4
  190. #define _MAX_E_JERK 5.0    // (mm/sec)
  191. //#define _MAX_START_SPEED_UNITS_PER_SECOND {25.0,25.0,0.2,10.0}
  192. #define _MAX_ACCELERATION_UNITS_PER_SQ_SECOND {5000,5000,50,5000}    // X, Y, Z and E max acceleration in mm/s^2 for printing moves or retracts
  193.  
  194.  
  195. // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
  196. // of the buffer and all stops. This should not be much greater than zero and should only be changed
  197. // if unwanted behavior is observed on a user's machine when running at very slow speeds.
  198. #define MINIMUM_PLANNER_SPEED 0.05 // (mm/sec)
  199.  
  200. #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
  201. #define DEFAULT_MINTRAVELFEEDRATE     0.0
  202.  
  203. #define _MIN_SEG_TIME 20000
  204.  
  205. // If defined the movements slow down when the look ahead buffer is only half full
  206. #define SLOWDOWN
  207.  
  208.  
  209. const int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement
  210.  
  211. //-----------------------------------------------------------------------
  212. // Machine UUID
  213. //-----------------------------------------------------------------------
  214. // This may be useful if you have multiple machines and wish to identify them by using the M115 command.
  215. // By default we set it to zeros.
  216. #define _DEF_CHAR_UUID "00000000-0000-0000-0000-000000000000"
  217.  
  218.  
  219.  
  220. //-----------------------------------------------------------------------
  221. //// Planner buffer Size
  222. //-----------------------------------------------------------------------
  223.  
  224. // The number of linear motions that can be in the plan at any give time
  225. // if the SD Card need to much memory reduce the Values for Plannerpuffer (base of 2)
  226. #ifdef SDSUPPORT
  227.   #define BLOCK_BUFFER_SIZE 16
  228.   #define BLOCK_BUFFER_MASK 0x0f
  229. #else
  230.   #define BLOCK_BUFFER_SIZE 16  
  231.   #define BLOCK_BUFFER_MASK 0x0f
  232. #endif
  233.  
  234. //-----------------------------------------------------------------------
  235. //// SETTINGS FOR ARC FUNCTION (Command G2/G2)
  236. //-----------------------------------------------------------------------
  237.  
  238. // Arc interpretation settings:
  239. //Step to split a cirrcle in small Lines
  240. #define MM_PER_ARC_SEGMENT 1
  241. //After this count of steps a new SIN / COS caluclation is startet to correct the circle interpolation
  242. #define N_ARC_CORRECTION 25
  243.  
  244. //-----------------------------------------------------------------------
  245. //// FANCONTROL WITH SOFT PWM
  246. //-----------------------------------------------------------------------
  247.  
  248. //With this option its possible to drive the fan with SOFT PWM (500hz) and use
  249. //every Digital output for it, main usage for Sanguinololu
  250. #define FAN_SOFT_PWM
  251.  
  252. //-----------------------------------------------------------------------
  253. //// MINIMUM START SPEED FOR FAN
  254. //-----------------------------------------------------------------------
  255.  
  256. //Minimum start speed for FAN when the last speed was zero
  257. //Set to 0 to deaktivate
  258. //If value is set the fan will drive with this minimum speed for MINIMUM_FAN_START_TIME
  259. #define MINIMUM_FAN_START_SPEED  0
  260.  
  261. //This is the time how long the minimum FAN speed is set
  262. #define MINIMUM_FAN_START_TIME  6000    //6sec
  263.  
  264. //-----------------------------------------------------------------------
  265. //// HEATERCONTROL AND PID PARAMETERS
  266. //-----------------------------------------------------------------------
  267.  
  268. //Testfunction to adjust the Hotend temperatur in case of Printingspeed
  269. //If the Printer print slow the Temp is going to AUTO_TEMP_MIN
  270. //At the moment this Value dont change the targettemp from the Hotend
  271. //The result of this function is only send with the Temperaturerequest to the host
  272. //#define AUTOTEMP
  273. #ifdef AUTOTEMP
  274.     #define AUTO_TEMP_MAX 240
  275.     #define AUTO_TEMP_MIN 205
  276.     #define AUTO_TEMP_FACTOR 0.025
  277.     #define AUTOTEMP_OLDWEIGHT 0.98
  278. #endif
  279.  
  280. //// AD595 THERMOCOUPLE SUPPORT UNTESTED... USE WITH CAUTION!!!!
  281.  
  282. //// PID settings:
  283. // Uncomment the following line to enable PID support. This is untested and could be disastrous. Be careful.
  284. #define PIDTEMP 1
  285. #ifdef PIDTEMP
  286. //Sanguinololu 1.2 and above, the PWM Output Hotend Timer 1 is used for the Hardware PWM
  287. //but in this Software use Timer1 for the Stepperfunction so it is not possible to use the "analogWrite" function.
  288. //This Soft PWM use Timer 2 with 400 Hz to drive the PWM for the hotend
  289. #define PID_SOFT_PWM
  290.  
  291. //Measure the MIN/MAX Value of the Hotend Temp and show it with
  292. //Command M601 / Command M602 Reset the MIN/MAX Value
  293. //#define DEBUG_HEATER_TEMP
  294.  
  295. // M303 - PID relay autotune S<temperature> sets the target temperature.
  296. // (default target temperature = 150C)
  297. #define PID_AUTOTUNE
  298.  
  299. //PID Controler Settings
  300. #define PID_INTEGRAL_DRIVE_MAX 80 // too big, and heater will lag after changing temperature, too small and it might not compensate enough for long-term errors
  301. #define PID_PGAIN 2560 //256 is 1.0  // value of X means that error of 1 degree is changing PWM duty by X, probably no need to go over 25
  302. #define PID_IGAIN 64 //256 is 1.0  // value of X (e.g 0.25) means that each degree error over 1 sec (2 measurements) changes duty cycle by 2X (=0.5) units (verify?)
  303. #define PID_DGAIN 4096 //256 is 1.0  // value of X means that around reached setpoint, each degree change over one measurement (half second) adjusts PWM by X units to compensate
  304.  
  305. // magic formula 1, to get approximate "zero error" PWM duty. Take few measurements with low PWM duty and make linear fit to get the formula
  306. // for my makergear hot-end: linear fit {50,10},{60,20},{80,30},{105,50},{176,100},{128,64},{208,128}
  307. #define HEATER_DUTY_FOR_SETPOINT(setpoint) ((int)((187L*(long)setpoint)>>8)-27)  
  308. // magic formula 2, to make led brightness approximately linear
  309. #define LED_PWM_FOR_BRIGHTNESS(brightness) ((64*brightness-1384)/(300-brightness))
  310. #endif
  311.  
  312. // Change this value (range 30-255) to limit the current to the nozzle
  313. #define HEATER_CURRENT 255
  314.  
  315. // How often should the heater check for new temp readings, in milliseconds
  316. #define HEATER_CHECK_INTERVAL 250
  317. #define BED_CHECK_INTERVAL 2500
  318.  
  319. // Comment the following line to enable heat management during acceleration
  320. #define DISABLE_CHECK_DURING_ACC
  321. #ifndef DISABLE_CHECK_DURING_ACC
  322.   // Uncomment the following line to disable heat management during moves
  323.   //#define DISABLE_CHECK_DURING_MOVE
  324. #endif
  325.  
  326. // Uncomment the following line to disable heat management during travel moves (and extruder-only moves, eg: retracts), strongly recommended if you are missing steps mid print.
  327. // Probably this should remain commented if are using PID.
  328. // It also defines the max milliseconds interval after which a travel move is not considered so for the sake of this feature.
  329. #define DISABLE_CHECK_DURING_TRAVEL 1000
  330.  
  331. //// Temperature smoothing - only uncomment this if your temp readings are noisy (Gen6 without EvdZ's 5V hack)
  332. //#define SMOOTHING
  333. //#define SMOOTHFACTOR 16 //best to use a power of two here - determines how many values are averaged together by the smoothing algorithm
  334.  
  335.  
  336. //// Experimental watchdog and minimal temp
  337. // The watchdog waits for the watchperiod in milliseconds whenever an M104 or M109 increases the target temperature
  338. // If the temperature has not increased at the end of that period, the target temperature is set to zero. It can be reset with another M104/M109
  339. //#define WATCHPERIOD 5000 //5 seconds
  340.  
  341. // Actual temperature must be close to target for this long before M109 returns success
  342. //#define TEMP_RESIDENCY_TIME 20  // (seconds)
  343. //#define TEMP_HYSTERESIS 5       // (CĀ°) range of +/- temperatures considered "close" to the target one
  344.  
  345. //// The minimal temperature defines the temperature below which the heater will not be enabled
  346. #define MINTEMP 5
  347.  
  348. //// Experimental max temp
  349. // When temperature exceeds max temp, your heater will be switched off.
  350. // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
  351. // You should use MINTEMP for thermistor short/failure protection.
  352. #define MAXTEMP 275
  353.  
  354. // Select one of these only to define how the nozzle temp is read.
  355. #define HEATER_USES_THERMISTOR
  356. //#define HEATER_USES_AD595
  357. //#define HEATER_USES_MAX6675
  358.  
  359. // Select one of these only to define how the bed temp is read.
  360. #define BED_USES_THERMISTOR
  361. //#define BED_USES_AD595
  362.  
  363. //This is for controlling a fan to cool down the stepper drivers
  364. //it will turn on when any driver is enabled
  365. //and turn off after the set amount of seconds from last driver being disabled again
  366. //#define CONTROLLERFAN_PIN 23 //Pin used for the fan to cool controller, comment out to disable this function
  367. #define CONTROLLERFAN_SEC 60 //How many seconds, after all motors were disabled, the fan should run
  368.  
  369. //This is for controlling a fan that will keep the extruder cool.
  370. //#define EXTRUDERFAN_PIN 66 //Pin used to control the fan, comment out to disable this function
  371. #define EXTRUDERFAN_DEC 50 //Hotend temperature from where the fan will be turned on
  372.  
  373. //#define CHAIN_OF_COMMAND 1 //Finish buffered moves before executing M42, fan speed, heater target, and so...
  374.  
  375. //-----------------------------------------------------------------------
  376. // DEBUGING
  377. //-----------------------------------------------------------------------
  378.  
  379.  
  380. //Uncomment this to see on the host if a wrong or unknown Command is recived
  381. //Only for Testing !!!
  382. //#define SEND_WRONG_CMD_INFO
  383.  
  384. // Uncomment the following line to enable debugging. You can better control debugging below the following line
  385. //#define DEBUG
  386. #ifdef DEBUG
  387.   //#define DEBUG_PREPARE_MOVE //Enable this to debug prepare_move() function
  388.   //#define DEBUG_MOVE_TIME //Enable this to time each move and print the result  
  389.   //#define DEBUG_HEAT_MGMT //Enable this to debug heat management. WARNING, this will cause axes to jitter!
  390.   //#define DEBUG_DISABLE_CHECK_DURING_TRAVEL //Debug the namesake feature, see above in this file
  391. #endif
  392.  
  393. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement