ぼちぼち仕様がまとまって来たので、自分用のメモも兼ねて色々書いとこうと思います。
こう言うのは落ち着いてやらなくなると忘れるのでw
今まで使ったファームウエアは大きく分けて2種類。
・Marlin と ・Repetier-Firmwareです。
僕の買ったMICROMAKE_D1に最初から入っていたのは
Repetier-Firmwareでしたが、
MICROMAKEのHPでダウンロード出来る、 ≪MICROMAKE 固件源码 v2.4(老版本marlin固件)≫は
Marlinです。
ここが混乱を招いたんですねぇ~( ;´Д`) 設定どころか根本的に違う物だと知らなかったので。
そしてMICROMAKE仕様のスライサー「Cura_15.04.0524」でインストールできるDefault firmwareは、
最初から入ってたのと同じRepetier-Firmwareです。
後にグーグルドライブに上がった Repetier-Firmwareは上記の物とは違い、前に書いた通り不完全なものでした。
何が何だかですねw
それでMICROMAKEに愛想を尽かしたので、
ATOM2.0のを使うことにした訳です。(これはMarlinです。)
闇雲にいじくり回したおかげで、多少は設定に詳しくなりましたが(;^ω^)
ATOM2.0のファームウエアは2種類。
ATOM-2.0.7 (最新版)と、ATOM-2.0.5bがあります。
ここ http://www.atom3dp.com/en/support/#toggle-id-1Configuration.h の各数値を変更すれば使えます。
最新版はLCDが文字化けして使えないと前に書きましたが、
・pins.h
・ultralcd_implementation_hitachi_HD44780.h
この二つのファイルを2.0.5bの物に交換すれば使えました。バグとか修正されてるようなので、最新版の方が良さそうです。
動かしてみると挙動も若干違います。
Configuration.h はこんな感じに修正しました。 (コメント文や不要な所はカットしてあります。)
重要! と書いてある所以外はまぁ適当でも大丈夫だと思います。
▼続きを読む Configuration.h▲たたむ
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__
#define STRING_CONFIG_H_AUTHOR "(jcrocholl, Mini Kossel)"
#define SERIAL_PORT 0
#define BAUDRATE 250000
#ifndef MOTHERBOARD
#define MOTHERBOARD 33
#endif
#define CUSTOM_MENDEL_NAME "ATOM 2.0.7" //LCDに表示される名前 お好きな様に。
#define EXTRUDERS 2
#define POWER_SUPPLY 1
//===========================================================================
//============================== Delta Settings =============================
//===========================================================================
// Enable DELTA kinematics
#define DELTA
#define DELTA_SEGMENTS_PER_SECOND 120 //円の分解能らしい。 高すぎると処理が追い付かない。
#define DELTA_DIAGONAL_ROD 216.0 // mm // 重要! ロッドの長さ。実測値。 プリントサイズが変わります。
#define DELTA_SMOOTH_ROD_OFFSET 0.0 // mm
#define DELTA_EFFECTOR_OFFSET 0.0 // mm
#define DELTA_CARRIAGE_OFFSET 0.0 // mm
//上の三つは下の計算に一回使用するだけなので、0で良いらしい。
//↓ 重要! 水平移動の調節。 中央が高い場合は数値を大きく。逆は逆で。 実際にプリントして調整。
#define DELTA_RADIUS 95.7 // (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET)
// Effective X/Y positions of the three vertical towers.
#define SIN_60 0.8660254037844386
#define COS_60 0.5
#define DELTA_TOWER1_X -SIN_60*DELTA_RADIUS // front left tower
#define DELTA_TOWER1_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER2_X SIN_60*DELTA_RADIUS // front right tower
#define DELTA_TOWER2_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER3_X 0.0 // back middle tower
#define DELTA_TOWER3_Y DELTA_RADIUS
// Diagonal rod squared
#define DELTA_DIAGONAL_ROD_2 pow(DELTA_DIAGONAL_ROD,2)
#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
#define TEMP_RESIDENCY_TIME 10
#define TEMP_HYSTERESIS 3
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 120
// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
// PID settings:
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define BANG_MAX 255
#define PID_MAX 255
#ifdef PIDTEMP
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
#define PID_FUNCTIONAL_RANGE 10
#define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term
#define K1 0.95 //smoothing factor within the PID
#define PID_dT ((16.0 * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
#define DEFAULT_Kp 14.76 //ホットエンド ヒーターの特性
#define DEFAULT_Ki 1.52 //実測値
#define DEFAULT_Kd 35.84 //
#endif // PIDTEMP
#define PIDTEMPBED
//
//#define BED_LIMIT_SWITCHING
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
#ifdef PIDTEMPBED
#define DEFAULT_bedKp 60.80 //ヒートベッド ヒーターの特性
#define DEFAULT_bedKi 9.77 //実測値
#define DEFAULT_bedKd 138.66 //
#endif // PIDTEMPBED
#define PREVENT_DANGEROUS_EXTRUDE
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MINTEMP 170 //この温度になるまでエクストルーダーは動かない。 (安全装置?)
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH)
//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================
// Uncomment the following line to enable CoreXY kinematics
// #define COREXY
// coarse Endstop Settings
#define ENDSTOPPULLUPS
#ifndef ENDSTOPPULLUPS
// fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined
// #define ENDSTOPPULLUP_XMAX
// #define ENDSTOPPULLUP_YMAX
// #define ENDSTOPPULLUP_ZMAX
// #define ENDSTOPPULLUP_XMIN
// #define ENDSTOPPULLUP_YMIN
// #define ENDSTOPPULLUP_ZMIN
#endif
#ifdef ENDSTOPPULLUPS
#define ENDSTOPPULLUP_XMAX
#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN
#define ENDSTOPPULLUP_YMIN
// #define ENDSTOPPULLUP_ZMIN //接近センサー プルアップをコメントアウト
#endif
const bool X_MIN_ENDSTOP_INVERTING = false;
const bool Y_MIN_ENDSTOP_INVERTING = false;
const bool Z_MIN_ENDSTOP_INVERTING = 1; //接近センサー 真に
const bool X_MAX_ENDSTOP_INVERTING = false;
const bool Y_MAX_ENDSTOP_INVERTING = false;
const bool Z_MAX_ENDSTOP_INVERTING = false;
//#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS
#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
#define DISABLE_MAX_ENDSTOPS
#endif
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
#define INVERT_E1_DIR true
#define INVERT_E2_DIR true
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1
#define min_software_endstops true
#define max_software_endstops true
#define X_MAX_POS 90 //プリント範囲の半径。 余裕もって小さめに。
#define X_MIN_POS -90
#define Y_MAX_POS 90
#define Y_MIN_POS -90
#define Z_MAX_POS MANUAL_Z_HOME_POS
#define Z_MIN_POS 0
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
#define MANUAL_HOME_POSITIONS
//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0)
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS 0
#define MANUAL_Z_HOME_POS 340 //ノズルから台までの距離。 多すぎると激突するので注意
//↓重要! オートレベリングの間隔。 18前後で様子見た方が良いです。
//今回はセンサーが中央じゃ無いので、少なめに設定
#define AUTOLEVEL_GRID 15 // Distance between autolevel Z probing points, should be less than print surface radius/3.
#define SAVE_G29_CORRECTION_MATRIX
//// MOVEMENT SETTINGS
#define NUM_AXIS 4
#define HOMING_FEEDRATE {60*60, 60*60, 60*60, 0}
// ノズル中央に対して、接近センサーの位置。 改造前のノズルで押すタイプは0で。
#define Z_PROBE_OFFSET {-21, 10, 0, 0} // X, Y, Z, E distance between hotend nozzle and deployed bed leveling probe.
// default settings
#define DEFAULT_AXIS_STEPS_PER_UNIT {100, 100, 100, 150} //重要! モーターのステップ数
#define DEFAULT_MAX_FEEDRATE {200, 200, 200, 200} //↓スピード、加速度等。 よく分からんので適当。
#define DEFAULT_MAX_ACCELERATION {3000,3000,3000,3000} //
#define DEFAULT_ACCELERATION 3000
#define DEFAULT_RETRACT_ACCELERATION 3000
#define DEFAULT_XYJERK 20.0 // (mm/sec)
#define DEFAULT_ZJERK 20.0 // (mm/sec)
#define DEFAULT_EJERK 5.0 // (mm/sec)
//**
//だいぶカットしてあるけど、ここから下は変更しなくて大丈夫です。
//**
//===========================================================================
//=============================Additional Features===========================
//===========================================================================
// EEPROM
#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT
// Preheat Constants
#define PLA_PREHEAT_HOTEND_TEMP 200
#define PLA_PREHEAT_HPB_TEMP 70
#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
#define ABS_PREHEAT_HOTEND_TEMP 240
#define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//LCD and SD support
#define SDSUPPORT // Enable SD Card Support in Hardware Console
#define REPRAP_DISCOUNT_SMART_CONTROLLER
//automatic expansion
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
#define ULTIPANEL
#define NEWPANEL
#endif
#ifdef ULTIPANEL
// #define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT
#define ULTRA_LCD
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
#define LCD_WIDTH 20
#define LCD_HEIGHT 5
#else
#define LCD_WIDTH 20
#define LCD_HEIGHT 4
#endif
#else //no panel but just lcd
#ifdef ULTRA_LCD
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
#define LCD_WIDTH 20
#define LCD_HEIGHT 5
#else
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
#endif
#endif
#endif
#include "Configuration_adv.h"
#include "thermistortables.h"
#endif //__CONFIGURATION_H
モーターのステップ数はRepetier-Hostの
ツール→演算:ベルトでも計算出来ます。
合ってないと正常に動きません。
エクストルーダーに関してはよく分からないので、MICROMAKE の数値のままです。 問題を感じないので合ってるんだろう。
ファームウエア書き込み後はEEPROMに前の数値が残っていて、設定が反映されない事があるので
初期化して下さ。
--
ホットエンドの特性 (Kp Ki Kd)はRepetier-Hostで
M303 E0 S200 C8
とコードを送ると、ヒーターが過熱されて、しばらくすると測定結果が表示されます。
(Sは温度。 普段よく使う感じの温度で)
同じくヒートベッドは
M303 E-1 S80 C8
と入れます。
何度か繰り返し違う測定結果が出て来ますが、まぁ一番最初に出たので良いと思います。
よく分かりませんw (他所様の受け売りなので設定する意味を理解してない(^^;))
--
接近センサーを使う場合は、前の記事で書いた様にMarlin_main.cppの修正も必要です。
接近センサーは本来、
磁石に付く金属に使う物らしい。
アルミや銅でも検出距離が短いですが、一応反応はします。
今の所0.1mmの銅板をガラス板に貼って使っていますが、オートレベリングも大丈夫そうです。(^^♪
--
LCDトップ画面で本体ツマミを回すと、プリントスピードの調節が出来ます。
60~70%前後に落とさないと早すぎる。
目玉機能はやはりLCD操作だけで出来るオートレベリングですね。
途中でフィラメントを交換できる機能もあるみたいです。 部分的に色を変えたり出来ますが、面倒だし使わないだろうなぁw
ブロアファンも搭載したし、これで本家ATOM2.0に負けない感じになってきたかな?(*´ω`*)
以上、何か思い出したら追記するかも。