commit
8ebcc9dc3a
@ -52,6 +52,7 @@
|
||||
// 65 = Azteeg X1
|
||||
// 66 = Melzi with ATmega1284 (MaKr3d version)
|
||||
// 67 = Azteeg X3
|
||||
// 68 = Azteeg X3 Pro
|
||||
// 7 = Ultimaker
|
||||
// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
// 77 = 3Drag Controller
|
||||
|
@ -268,6 +268,12 @@
|
||||
// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
|
||||
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
|
||||
|
||||
// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
|
||||
//#define DIGIPOT_I2C
|
||||
// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
|
||||
#define DIGIPOT_I2C_NUM_CHANNELS 8
|
||||
// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
|
||||
#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
|
||||
|
||||
//===========================================================================
|
||||
//=============================Additional Features===========================
|
||||
|
@ -55,7 +55,10 @@ UPLOAD_PORT ?= /dev/arduino
|
||||
BUILD_DIR ?= applet
|
||||
|
||||
# This defines whether Liquid_TWI2 support will be built
|
||||
LIQUID_TWI2 ?= 0
|
||||
LIQUID_TWI2 ?= 0
|
||||
|
||||
# this defines if Wire is needed
|
||||
WIRE ?= 0
|
||||
|
||||
############################################################################
|
||||
# Below here nothing should be changed...
|
||||
@ -174,6 +177,14 @@ else ifeq ($(HARDWARE_MOTHERBOARD),301)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
|
||||
# Azteeg
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),67)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),68)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
|
||||
endif
|
||||
|
||||
# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
|
||||
@ -213,6 +224,10 @@ VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
|
||||
endif
|
||||
ifeq ($(WIRE), 1)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
|
||||
endif
|
||||
else
|
||||
VPATH += $(HARDWARE_DIR)/libraries/LiquidCrystal
|
||||
VPATH += $(HARDWARE_DIR)/libraries/SPI
|
||||
@ -221,6 +236,10 @@ VPATH += $(HARDWARE_DIR)/libraries/Wire
|
||||
VPATH += $(HARDWARE_DIR)/libraries/Wire/utility
|
||||
VPATH += $(HARDWARE_DIR)/libraries/LiquidTWI2
|
||||
endif
|
||||
ifeq ($(WIRE, 1)
|
||||
VPATH += $(HARDWARE_DIR)/libraries/Wire
|
||||
VPATH += $(HARDWARE_DIR)/libraries/Wire/utility
|
||||
endif
|
||||
endif
|
||||
ifeq ($(HARDWARE_VARIANT), arduino)
|
||||
HARDWARE_SUB_VARIANT ?= mega
|
||||
@ -241,7 +260,7 @@ CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \
|
||||
MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \
|
||||
SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp \
|
||||
stepper.cpp temperature.cpp cardreader.cpp ConfigurationStore.cpp \
|
||||
watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp
|
||||
watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp
|
||||
ifeq ($(LIQUID_TWI2), 0)
|
||||
CXXSRC += LiquidCrystal.cpp
|
||||
else
|
||||
@ -249,6 +268,11 @@ SRC += twi.c
|
||||
CXXSRC += Wire.cpp LiquidTWI2.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(WIRE), 1)
|
||||
SRC += twi.c
|
||||
CXXSRC += Wire.cpp
|
||||
endif
|
||||
|
||||
#Check for Arduino 1.0.0 or higher and use the correct sourcefiles for that version
|
||||
ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true)
|
||||
CXXSRC += main.cpp
|
||||
|
@ -235,4 +235,9 @@ extern unsigned long stoptime;
|
||||
// Handling multiple extruders pins
|
||||
extern uint8_t active_extruder;
|
||||
|
||||
#ifdef DIGIPOT_I2C
|
||||
extern void digipot_i2c_set_current( int channel, float current );
|
||||
extern void digipot_i2c_init();
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -50,3 +50,7 @@
|
||||
#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
|
||||
#if defined(DIGIPOT_I2C)
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
|
@ -50,3 +50,7 @@
|
||||
#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
|
||||
#if defined(DIGIPOT_I2C)
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
|
@ -492,6 +492,10 @@ void setup()
|
||||
#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
|
||||
SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan
|
||||
#endif
|
||||
|
||||
#ifdef DIGIPOT_I2C
|
||||
digipot_i2c_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -2841,6 +2845,12 @@ void process_commands()
|
||||
#ifdef MOTOR_CURRENT_PWM_E_PIN
|
||||
if(code_seen('E')) digipot_current(2, code_value());
|
||||
#endif
|
||||
#ifdef DIGIPOT_I2C
|
||||
// this one uses actual amps in floating point
|
||||
for(int i=0;i<NUM_AXIS;i++) if(code_seen(axis_codes[i])) digipot_i2c_set_current(i, code_value());
|
||||
// for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
|
||||
for(int i=NUM_AXIS;i<DIGIPOT_I2C_NUM_CHANNELS;i++) if(code_seen('B'+i-NUM_AXIS)) digipot_i2c_set_current(i, code_value());
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 908: // M908 Control digital trimpot directly.
|
||||
|
54
Marlin/digipot_mcp4451.cpp
Normal file
54
Marlin/digipot_mcp4451.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include "Configuration.h"
|
||||
|
||||
#ifdef DIGIPOT_I2C
|
||||
#include "Stream.h"
|
||||
#include "utility/twi.h"
|
||||
#include "Wire.h"
|
||||
|
||||
// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro
|
||||
#define DIGIPOT_I2C_FACTOR 106.7
|
||||
#define DIGIPOT_I2C_MAX_CURRENT 2.5
|
||||
|
||||
static byte current_to_wiper( float current ){
|
||||
return byte(ceil(float((DIGIPOT_I2C_FACTOR*current))));
|
||||
}
|
||||
|
||||
static void i2c_send(byte addr, byte a, byte b)
|
||||
{
|
||||
Wire.beginTransmission(addr);
|
||||
Wire.write(a);
|
||||
Wire.write(b);
|
||||
Wire.endTransmission();
|
||||
}
|
||||
|
||||
// This is for the MCP4451 I2C based digipot
|
||||
void digipot_i2c_set_current( int channel, float current )
|
||||
{
|
||||
current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT);
|
||||
// these addresses are specific to Azteeg X3 Pro, can be set to others,
|
||||
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
|
||||
byte addr= 0x2C; // channel 0-3
|
||||
if(channel >= 4) {
|
||||
addr= 0x2E; // channel 4-7
|
||||
channel-= 4;
|
||||
}
|
||||
|
||||
// Initial setup
|
||||
i2c_send( addr, 0x40, 0xff );
|
||||
i2c_send( addr, 0xA0, 0xff );
|
||||
|
||||
// Set actual wiper value
|
||||
byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 };
|
||||
i2c_send( addr, addresses[channel], current_to_wiper(current) );
|
||||
}
|
||||
|
||||
void digipot_i2c_init()
|
||||
{
|
||||
const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
|
||||
Wire.begin();
|
||||
// setup initial currents as defined in Configuration_adv.h
|
||||
for(int i=0;i<=sizeof(digipot_motor_current)/sizeof(float);i++) {
|
||||
digipot_i2c_set_current(i, digipot_motor_current[i]);
|
||||
}
|
||||
}
|
||||
#endif
|
@ -375,7 +375,7 @@
|
||||
* Arduino Mega pin assignment
|
||||
*
|
||||
****************************************************************************************/
|
||||
#if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67
|
||||
#if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68
|
||||
#define KNOWN_BOARD 1
|
||||
|
||||
//////////////////FIX THIS//////////////
|
||||
@ -391,7 +391,7 @@
|
||||
// #define RAMPS_V_1_0
|
||||
|
||||
|
||||
#if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67
|
||||
#if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68
|
||||
|
||||
#define LARGE_FLASH true
|
||||
|
||||
@ -472,12 +472,26 @@
|
||||
#define E1_DIR_PIN 34
|
||||
#define E1_ENABLE_PIN 30
|
||||
|
||||
#if MOTHERBOARD == 68
|
||||
#define E2_STEP_PIN 23
|
||||
#define E2_DIR_PIN 25
|
||||
#define E2_ENABLE_PIN 40
|
||||
|
||||
#define E3_STEP_PIN 27
|
||||
#define E3_DIR_PIN 29
|
||||
#define E3_ENABLE_PIN 41
|
||||
|
||||
#define E4_STEP_PIN 43
|
||||
#define E4_DIR_PIN 37
|
||||
#define E4_ENABLE_PIN 42
|
||||
#endif
|
||||
|
||||
#define SDPOWER -1
|
||||
#define SDSS 53
|
||||
#define LED_PIN 13
|
||||
#endif
|
||||
|
||||
#if MOTHERBOARD == 33 || MOTHERBOARD == 35 || MOTHERBOARD == 67
|
||||
#if MOTHERBOARD == 33 || MOTHERBOARD == 35 || MOTHERBOARD == 67 || MOTHERBOARD == 68
|
||||
#define FAN_PIN 9 // (Sprinter config)
|
||||
#else
|
||||
#define FAN_PIN 4 // IO pin. Buffer needed
|
||||
@ -511,17 +525,33 @@
|
||||
#define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter)
|
||||
#endif
|
||||
|
||||
#define HEATER_2_PIN -1
|
||||
|
||||
#if MOTHERBOARD == 77
|
||||
#define HEATER_0_PIN 10
|
||||
#define HEATER_1_PIN 12
|
||||
#define HEATER_2_PIN 6
|
||||
#elif MOTHERBOARD == 68
|
||||
#define HEATER_2_PIN 16
|
||||
#define HEATER_3_PIN 17
|
||||
#define HEATER_4_PIN 4
|
||||
#define HEATER_5_PIN 5
|
||||
#define HEATER_6_PIN 6
|
||||
#define HEATER_7_PIN 11
|
||||
#else
|
||||
#define HEATER_2_PIN -1
|
||||
#endif
|
||||
|
||||
#define TEMP_0_PIN 13 // ANALOG NUMBERING
|
||||
#define TEMP_1_PIN 15 // ANALOG NUMBERING
|
||||
#define TEMP_2_PIN -1 // ANALOG NUMBERING
|
||||
#if MOTHERBOARD == 68
|
||||
#define TEMP_2_PIN 12 // ANALOG NUMBERING
|
||||
#define TEMP_3_PIN 11 // ANALOG NUMBERING
|
||||
#define TEMP_4_PIN 10 // ANALOG NUMBERING
|
||||
#define TC1 4 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
#define TC2 5 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
|
||||
#else
|
||||
#define TEMP_2_PIN -1 // ANALOG NUMBERING
|
||||
#endif
|
||||
|
||||
#if MOTHERBOARD == 35
|
||||
#define HEATER_BED_PIN -1 // NO BED
|
||||
@ -532,10 +562,9 @@
|
||||
#define HEATER_BED_PIN 8 // BED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define TEMP_BED_PIN 14 // ANALOG NUMBERING
|
||||
|
||||
|
||||
|
||||
#ifdef NUM_SERVOS
|
||||
#define SERVO0_PIN 11
|
||||
|
||||
@ -552,6 +581,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if MOTHERBOARD == 68
|
||||
#define BEEPER 33
|
||||
#endif
|
||||
|
||||
#ifdef TEMP_STAT_LEDS
|
||||
#if MOTHERBOARD == 67
|
||||
#define STAT_LED_RED 6
|
||||
|
Loading…
Reference in New Issue
Block a user