Blue-Marlin
0631541166
Fix disable_all_heaters() for MAX6675
2016-03-02 14:17:23 +01:00
AnHardt
57da1b8497
Host parseble output for M109, M190 and M303
...
Make the output of M105 more similar to Repetier.
Make the text-print pert of M105 an extra function to make it reusable. `print_heaterstates()`
Use `print_heaterstates()` in M019, M190 and M303
2015-12-07 15:37:53 -06:00
Richard Wackerbarth
956418c674
Kc is also a multi-PID parameter
2015-11-23 06:08:01 -06:00
Scott Lahteine
dbd4c17096
Init Kp, Ki, Kd to 0
2015-11-12 00:03:22 -06:00
Scott Lahteine
b4af4441c5
Clean up watchdog impl.
2015-11-12 00:03:22 -06:00
Scott Lahteine
9bdab4f3a8
Clean up "else" and other spacing
2015-11-12 00:03:21 -06:00
Richard Wackerbarth
25d636c9e0
Compiler issues (PR#2696)
2015-11-11 23:52:11 -06:00
AnHardt
47401ec97b
MSG_EXTRUDER_SWITCHED_OFF was renamed to MSG_REDUNDANCY
...
in language.h, but was not renamed here. If TEMP_SENSOR_1 is enabled as redundant then
an error is thrown that MSG_EXTRUDER_SWITCHED_OFF is not defined.
Originaly by @12dstring
2015-10-08 10:45:11 -05:00
Scott Lahteine
0c7f7ebcfb
Styling adjustments (PR#2668 & PR#2670)
...
Keep "astyled" reformatting
2015-10-03 22:02:45 -05:00
Scott Lahteine
bc50db9cf6
Implement PID_ADD_EXTRUSION_RATE
2015-09-12 07:53:20 -05:00
Scott Lahteine
51e89a269c
Overridable Options - Part 9 (PR#2561)
...
Apply `ENABLED` / `DISABLED` macros to temperature-related files.
2015-07-31 01:05:55 -05:00
AnHardt
d17f7ebc8a
Multiply WATCH_TEMP_PERIOD by 1000UL (PR#2535)
...
instead of 1000. Else we get errors with times over 32 seconds.
2015-07-27 20:30:53 -05:00
Scott Lahteine
e4c01f1c7e
Simplify init with ARRAY_BY_EXTRUDERS1 macro (PR#2507)
2015-07-26 20:40:27 -05:00
Scott Lahteine
77e80ef367
Require extruders for thermal code
2015-07-16 16:36:30 -05:00
Scott Lahteine
3bde4f4855
Require temp sensor for bed thermal protection
2015-07-16 16:36:30 -05:00
ayberkozgur
7268d46508
Always calculate extruder temperature PID d term (PR#2432)
2015-07-13 13:22:26 -05:00
Scott Lahteine
a274769f4f
Clean up spacing and comments
...
Also clean up some trailing spaces in a few other sources
2015-06-15 20:20:31 -05:00
Scott Lahteine
1d94d098bf
Formatting tweaks as part of fixing issue 1497
2015-06-14 19:57:27 -05:00
Scott Lahteine
e602c28ad9
Set auto fan pins to OUTPUT during init
...
Fixes the problem of these pins being left in INPUT state, as described
in #1497
2015-06-14 19:57:27 -05:00
MagoKimbra
eb81982fcd
Fix error next command in autotune (PR#2274)
...
Now send only temperature for T or B, but not send OK.
Host interprets the line to show the right temperature, but not in
response to M105 then stop and send commands until it ends the autotune.
2015-06-12 07:10:38 -05:00
AnHardt
b1404a0743
fix thermal protection state machine target temp. V2
...
If the target temperature is changed then it would always stay in the reset state.
Thanks to @tonokip.
Replaces #2119
2015-06-02 12:26:21 +02:00
Jonathan Bastien-Filiatrault
e86f2342c0
Separate the maximum integral power for the bed from PID_INTEGRAL_DRIVE_MAX / PID_MAX.
...
My PID_INTEGRAL_DRIVE_MAX was at 96, which was insufficient for my bed
to reach its intended temperature. The head requires a low maximum power since
I run on 24 volts and it has a somewhat low thermal mass.
2015-05-28 11:48:04 -04:00
AnHardt
da246f5cb1
Activate BED_MINTEMP error.
...
And call _temp_error() directly for ERR_MAXTEMP_BED to avoid the only one time use of bed_max_temp_error().
Includes #2156 .
2015-05-25 13:23:19 +02:00
AnHardt
959da98d8e
Call kill() only once when triggered by a temperature error
...
to avoid stack overflow when called from interrupt.
Some clean up for calls of disable_all_heaters().
'disable_all_heaters()' is called in kill() and again when 'killed' is already set inside _temp_error().
2015-05-25 12:44:03 +02:00
Scott Lahteine
063881b5bd
Fix a couple of doubled semicolons
2015-05-21 18:15:29 -07:00
Scott Lahteine
00716d0ca0
Small start_watching_heater adjustment
2015-05-21 16:44:49 -07:00
AnHardt
4422365a53
Merge branch 'Development' of https://github.com/MarlinFirmware/Marlin into _temp_error
2015-05-20 23:34:39 +02:00
AnHardt
4113762062
Merge pull request #2130 from AnHardt/kill2
...
Add a string parameter to kill()
2015-05-20 23:32:51 +02:00
AnHardt
120d4c7a8c
Merge remote-tracking branch 'origin/kill2' into _temp_error
2015-05-20 21:25:32 +02:00
AnHardt
cb6e82dc60
Change from kill() to kill(const char *)
...
in temperature.cpp
2015-05-20 21:22:48 +02:00
AnHardt
9d13942278
Use new kill() with parameter.
2015-05-20 21:18:52 +02:00
AnHardt
2990c6c45f
Use new kill_() for _temp_error()
...
instead of stop(). We really want to require a reset and no chance to set a new temperature.
2015-05-20 14:03:14 +02:00
AnHardt
70163dafb9
Use _temp_error() for all errors thrown by different mechanisms
...
Now ending in an endless loop.
Tidy up the output format.
We now get:
ERRORTEXT ", system stopped! Heater_ID: " HEATERID
Where ERRORTEXT can be:
"Heating failed"
"Thermal Runaway"
"MAXTEMP triggered"
"MINTEMP triggered"
and soon
"Thermal Jump"
HEATERID can be
0, 1, 2 ,3 , "bed"
This messages are always followed by the common:
"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
2015-05-18 20:26:25 +02:00
AnHardt
97ca1b3f4d
Name magic value 20 to MAX_OVERSHOOT_PID_AUTOTUNE
...
to make it better findable.
2015-05-18 14:15:29 +02:00
Scott Lahteine
f65833931d
Formatting tweaks
2015-05-13 02:02:19 -07:00
Scott Lahteine
d693e0f378
Use WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1 as difference limit
2015-05-12 18:30:38 -07:00
Scott Lahteine
6697a8f375
Watch the heater a little longer
2015-05-12 18:22:47 -07:00
Scott Lahteine
5693a6e3c9
Fix heating error message
2015-05-12 18:17:13 -07:00
Scott Lahteine
8332a15899
Fix testing of runaway options in temperature.cpp
2015-05-10 23:03:24 -07:00
Scott Lahteine
2445ae3d3a
Combine thermal runaway and watch-period
...
- Make thermal protection for all hotends and/or bed into simple
switches
- Now enable `WATCH_TEMP_PERIOD` when `THERMAL_PROTECTION_HOTENDS` is
enabled
- Move detailed thermal parameters to `Configuration_adv.h`
- Add sanity checks to warn about old configurations
- Change `WATCH_TEMP_PERIOD` to seconds instead of milliseconds
2015-05-10 22:52:01 -07:00
Scott Lahteine
9b3d4380d3
Only watch the heater that was set
2015-05-10 20:26:45 -07:00
Scott Lahteine
28c87ec81b
Disable all heaters on temp error
2015-05-08 23:17:25 -07:00
Scott Lahteine
54deb9eea3
Enable WATCH_TEMP_PERIOD by default
2015-05-08 22:36:02 -07:00
Scott Lahteine
deedb00c18
Document WATCH_TEMP_PERIOD
2015-05-08 22:25:51 -07:00
Scott Lahteine
a120bf3fe4
Latest upstream commits
2015-04-27 22:40:19 -07:00
Scott Lahteine
ae53b3cdc3
Fix the M303 S-1 report text
2015-04-27 22:25:00 -07:00
Scott Lahteine
0fca084ea6
Make EEPROM reproducible in GCode
...
With these changes the output of `M503 S0` is all you need to restore
the EEPROM. Building on this it is straightforward to save and restore
the EEPROM state using the SD card or external GCode file.
- Added `M145` to set “heatup states” for the LCD menu
- Added `M420` to toggle Mesh Bed Leveling
- Added `M421` to set a single Mesh coordinate
- Extended `Config_PrintSettings` with added M codes
- Cleaned up some comments here and there
2015-04-26 20:56:33 -07:00
paclema
581685a231
Added new PID autotune info, to make easy copy & paste results to marlin
2015-04-17 11:15:09 +02:00
Scott Lahteine
09d60e0128
Naming and code comments
2015-04-13 17:17:36 -07:00
Scott Lahteine
257a907456
Fix typo in next_bed_check_ms
2015-04-12 23:17:28 -07:00
Scott Lahteine
e4b1e8651b
next_ vars faster than previous_
...
- Change some `previous_` time vars to `next_` so an add only happens
at intervals
- Fix `HEATER_0_USES_MAX6675` polling too frequently, or not at all
2015-04-12 23:06:50 -07:00
Scott Lahteine
ccddc280be
Apply three more commits
2015-04-12 22:47:44 -07:00
Scott Lahteine
27cb90da8b
IsStopped / IsRunning inline
2015-04-08 00:56:19 -07:00
Scott Lahteine
e502144eda
Fixup formatting of last commit
2015-04-06 21:28:14 -07:00
Richard Miles
1a5293c2ce
Prevents MINTEMP / MAXTEMP when no heaters present
...
This commit checks whether or not HEATER_0 is in use, and if not, skips
the MIN / MAX temperature checks.
2015-04-05 22:27:14 +01:00
Scott Lahteine
b0f198c153
heater_index above its use
2015-04-04 06:18:08 -07:00
Scott Lahteine
60f8e0386f
More thermal runaway states
2015-04-04 05:45:36 -07:00
Scott Lahteine
f9dbd73652
Fix tr_target_temperature type - float!
2015-04-04 05:25:53 -07:00
Scott Lahteine
a3e129e091
Merge pull request #1801 from thinkyhead/fixup_probing
...
Minor optimizations
2015-04-03 22:30:01 -07:00
Natealus
a6ba40ae48
Compiling error temperature.cpp with multiple extruders defined
...
It wouldn't compile because of this line in temperature.cpp it turns out
it was just a stray ( that didn't line up with the previous lines so I
just made it in line with the rest and it compiled fine.
2015-04-03 23:09:31 -06:00
Scott Lahteine
fc3c76fc16
Fix #1800
2015-04-03 22:04:42 -07:00
Scott Lahteine
9ba55baa5b
Track target temperature separately for each heater
2015-04-03 19:42:40 -07:00
Scott Lahteine
528e32a1d4
Fix timeout in thermal_runaway when temperature is set higher
2015-04-03 19:34:55 -07:00
Scott Lahteine
b98ebd517e
disable / enable_all_steppers functions
2015-04-03 19:25:22 -07:00
Scott Lahteine
c756b4cf07
Comment tweak
2015-04-02 06:11:03 -07:00
Scott Lahteine
e96df67630
Clarify thermal_runaway_protection
...
- Add comments documenting `thermal_runaway_protection`
- Add an enum for the thermal runaway states
- Add macros for temperature helper functions
- Fix a glitch with the z probe sled in homeaxis
2015-04-02 05:10:14 -07:00
AnHardt
488666832b
Remove the previously introduced ()
2015-04-01 13:40:05 +02:00
AnHardt
3f2e863206
Improve conditions for HAS_TEMP
...
and use them in temperuture.h
Flattened the if structure - the preprocessor is doing the work - not the Arduino. Arduino.
2015-04-01 02:56:14 +02:00
AnHardt
85f8a26ba4
Fix MIN&MAX temperatures again
...
replaced GE0 with th matching GEX in the second row.
added some ()
2015-04-01 00:48:04 +02:00
Scott Lahteine
571652c49b
Fix LCD click
...
- Make the default LCD click sound more pleasant
- Fix warnings about bed temperature runaway
2015-03-31 01:41:24 -07:00
AnHardt
7b2550a604
Times can't be negative.
...
cardreader.cpp needs temperature.h for autotempShutdown() when
AUTOTEMP is defined but warns about unused variables.
Unpublished variables by putting them in to temperature.cpp.
2015-03-30 01:58:46 +02:00
Scott Lahteine
ba871e46bf
Fix compiler warnings
...
- Patched up for most included configurations
2015-03-27 20:29:05 -07:00
Scott Lahteine
df02b992b0
Fix redundant_temperatrure_raw setting
2015-03-27 16:37:22 -07:00
Scott Lahteine
ce485175eb
Give all temp arrays 4 indices
2015-03-27 16:11:28 -07:00
Scott Lahteine
410f64782a
Always 4 temp sensors
2015-03-26 16:22:21 -07:00
Scott Lahteine
ad05a726c1
Merge pull request #1691 from AnHardt/PID_dt
...
Move definition of PIDdT back to temperature.h
2015-03-25 21:22:39 -07:00
AnHardt
f680e509c4
Enclosed error-messages for TEMP_SENSOR_1_AS_REDUNDANT in PSTR()
2015-03-25 23:26:06 +01:00
AnHardt
ac81b4084f
Make variables and function static.
2015-03-25 21:37:15 +01:00
AnHardt
01cc97a3c3
Corected condition for PIDdT
2015-03-25 12:08:23 +01:00
AnHardt
94330705c7
Move definition of PIDdT back to temperature.h
...
make it unconditional
remove all definitions in the 'Configuration.h's
remove form 'Conditionals.h'
2015-03-25 11:51:41 +01:00
AnHardt
dd0067afa6
Fix MAX6675 again and introduce set_current_temp_raw()
...
to make the temperature-code work again with Arduino 1.0.6.
Sorry could not make an extra block on base level.
2015-03-25 11:08:24 +01:00
Scott Lahteine
0d81abe1c9
Merge branch 'Development' into config_testing
...
Latest upstream commits
2015-03-23 21:13:04 -07:00
Scott Lahteine
fc53e43de6
Don't test raw temp for MAX6675
...
- Remove test of raw temp for thermistor 0 when using MAX6675
- Longer `raw_temp_value` array for `TEMP_SENSOR_1_AS_REDUNDANT`
2015-03-23 20:55:48 -07:00
Scott Lahteine
1fac388664
Revert measurement loop
2015-03-23 15:18:22 -07:00
Scott Lahteine
6bdee87be3
Cleanup temperature code
...
- Get rid of unused temp states in the ISR, resulting in more frequent
temperature reading with fewer sensors
- Shrink code slightly in min/max testing
2015-03-23 00:27:29 -07:00
Scott Lahteine
15eb5d35a2
Merge branch 'Development' into config_testing
...
Latest upstream commits
2015-03-21 15:42:45 -07:00
Scott Lahteine
3703694e30
Fix temperature min/max test
...
- Base tests on all thermistors/thermocouples, not just heater 0
2015-03-21 14:23:43 -07:00
Scott Lahteine
63d5d28085
Merge branch 'Development' into config_testing
...
Latest upstream changes
2015-03-20 04:15:18 -07:00
Scott Lahteine
670006b919
Remove invariant code from Configurations
...
- Add `Conditionals.h` with calculated configuration values
- Add `SanityCheck.h` with checks for configuration errors
- Remove equivalent code from all configurations
- Move error checks from some sources to `SanityCheck.h` also
- Fix initialization of count_direction in stepper.cpp
2015-03-19 22:22:23 -07:00
AnHardt
47c1ea72af
Merge https://github.com/kieranc/Marlin into PIDdebug
...
Conflicts:
Marlin/temperature.cpp
Cleaned merge conflict.
Codeposition had changed.
Variable pid_input had vanished.
Signed-off-by: AnHardt <github@kitelab.de>
2015-03-20 00:07:36 +01:00
AnHardt
28b1c37dea
Fix for #1612
2015-03-15 21:35:33 +01:00
Scott Lahteine
bb4cb1b15a
Merge pull request #1606 from thinkyhead/cleanup_stepper
...
Cleanup of stepper.cpp
2015-03-15 06:05:08 -07:00
Scott Lahteine
c37f7d15c9
- Rename WRITE_E_STEP for consistency
...
- Add BIT and TEST macros
- Add _APPLY_ macros to stepper.cpp to help with consolidation
- Consolidate code in stepper.cpp using macros
- Apply standards in stepper.cpp
- Use >= 0 instead of > -1 as a better semantic
- Replace DUAL_Y_CARRIAGE with Y_DUAL_STEPPER_DRIVERS
2015-03-14 04:28:22 -07:00
Scott Lahteine
cb57fc727d
Declare pid_output for PIDBEDTEMP
2015-03-13 20:19:51 -07:00
Scott Lahteine
3d6deb9bdf
Simplify manage_heater
...
- Make separate get_pid_output(e) and get_pid_output_bed() function
- Reduce size of manage_heater function
- Hopefully work around linker errors
2015-03-13 19:49:41 -07:00
Scott Lahteine
e3ca9137b5
Fix missing temp_error declarations
...
- Fix for #1591 replacing #1595
2015-03-11 16:38:42 -07:00
AnHardt
3024f6c706
Undubble MSG_MIN &MSG MAX
2015-03-06 00:25:44 +01:00
Scott Lahteine
dfb38874f8
Some suggested changes for #1555
2015-03-03 00:48:20 -08:00
Scott Lahteine
1a7b0d9a37
Redo HAS_* macros to fix define error
2015-02-26 01:14:59 -08:00
Scott Lahteine
864dddc878
Macros to the top, a few HAS_* macros
2015-02-26 00:33:30 -08:00
Scott Lahteine
fd1ea9d56f
Move literal strings to language files
2015-02-24 23:03:08 -08:00
Scott Lahteine
aa9c1f1bed
Better name for ADC macro
2015-02-24 05:38:10 -08:00
Scott Lahteine
9c9726d469
Cleanup of temperature code
...
- Reduce calls to millis()
- General cleanup of manage_heaters
- General cleanup of pid autotune
- Formatting here & there
- Macros to clean up and shrink ISR code (reduced by ~364 lines)
2015-02-24 04:46:11 -08:00
Scott Lahteine
e3fd3e8fa4
Fix typos in checkExtruderAutoFans
2015-02-20 00:08:59 -08:00
Natealus
ea9e49b20d
ARRAY_BY_EXTRUDERS 4th hotend PID parameters
2015-02-12 00:56:47 -07:00
kieranc
0a19109476
Enable PID debugging for heated bed
2015-02-10 14:11:44 +01:00
Natealus
f4b0a40abb
Additional fixes to temperature.cpp and found another missing line
...
Looks like INVERT_E3_DIR was missing in the configuration.h also as I
did a test compile with 4 extruders and Azteeg X3 Pro defined. So I also
added those lines too. Additional formatting to make the comments line
up better in that section.
2015-02-08 15:43:58 -07:00
Natealus
697ee2dc50
Compiling errors with 4 Extruders defined
...
Here were a few changes that I had to make/add lines for the 4th hotend.
A compiling problem in the Temperature.cpp and missing lines in
configuration.h and configuration_adv.h. I added these lines in all of
the example configs too.
2015-02-08 01:05:05 -07:00
MagoKimbra
3021f7f743
Fix PID_dT
...
Add PID_dT in temeprature.cpp
2015-01-25 17:56:14 +01:00
MagoKimbra
ef5959a705
Fix Temperature
...
Githun insert this line when i merge with actual Branch development...
2015-01-24 13:49:29 +01:00
MagoKimbra
3d4ee6c868
Merge branch '4th-extruders' of https://github.com/MagoKimbra/Marlin into 4th-extruders
...
Conflicts:
Marlin/temperature.cpp
2015-01-24 13:41:15 +01:00
MagoKimbra
986e723eeb
Add 4th extruder
2015-01-24 13:37:58 +01:00
Scott Lahteine
f16bdd2ff2
Borrow from Ultimaker to fix MAX6675 SPI conflict
...
Changes to temperature.cpp from Ultimaker fork, intended to address
#1226 and #1227
2015-01-24 03:49:15 -08:00
MagoKimbra
0ebf896070
Add 4th extruder
2015-01-23 23:13:06 +01:00
Mark Hindess
0ce252ba7a
This ifdef is for bed code so should use bed constants for testing.
...
Without this fix, the code wont compile with extruder but without bed
runaway protection defined.
2015-01-23 16:30:13 +00:00
daid
53f971095d
Revert "Reduce PROGMEM warnings"
2015-01-16 16:48:22 +01:00
galexander1
d4880a9e60
Revert "Move Sd library out into library"
2015-01-15 18:52:10 -05:00
Bo Herrmannsen
4b51b5a46d
Merge pull request #1357 from odewdney/SDlib
...
Move Sd library out into library
2015-01-15 10:56:07 +01:00
odewdney
f84ff4ba7d
Move SD Fat library out of main src
2015-01-13 13:31:55 +00:00
Bo Herrmannsen
ab074dac17
Merge pull request #1344 from grob6000/independent_pid
...
Independent PID parameters for each extruder
2015-01-13 12:10:37 +01:00
Bo Herrmannsen
d4a665694a
Merge pull request #1350 from odewdney/Development
...
Reduce PROGMEM warnings
2015-01-13 11:26:50 +01:00
odewdney
538859669d
Removing compiler warnings for progmem
2015-01-11 18:14:21 +00:00
grob6000
bf2c923db5
Make multiple PID parameters a config option
...
* Adds config parameter `PID_PARAMS_PER_EXTRUDER` - allows single PID
parameters to be used where this would be preferable (e.g. dual
identical extruders)
* When disabled, will use `float Kp, Ki, Kd, Kc;` as before.
Preprocessor macros used to switch between.
* ultralcd.cpp defines extra menus for extra parameters only where
required
* M301 reports `e:xx` only if independent pid parameters enabled
* EEPROM structure still leaves space for 3 extruders worth, when undef
will save single parameter to all extruder positions, but only read the
first
* Switching off saves approx 330 B with no LCD enabled, 2634B with LCD
(RRD) enabled: this is significant.
* LCD modifications should be tested.
2015-01-11 13:50:17 +11:00
grob6000
37c7e8300f
Independent PID parameters for each extruder
...
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 16:35:12 +11:00
Dino Del Favero
038fccd7a1
I have added some code in the "temperature.cpp" for have the possibility of control the time of the states with the heater drived by relays, with this feature now it is possible use PID function in conjunction with relay to control the temperature. I have made some tests and the temperature stay always in the range of +-1°C from the setted temp.
...
There is the possibility of turn on this features adding "#define SLOW_PWM_HEATERS" in Configuration.h
2015-01-06 18:32:17 +01:00
Philippe L
30248214c7
temp runaway: proper cast to prevent any overflow.
2015-01-04 14:23:31 +01:00
Alexander Hirzel
ae12ad0d6c
Fix typo, PID_BED_POWER -> MAX_BED_POWER
2015-01-02 01:38:03 -05:00
alexborro
80b17ab573
Merge pull request #1285 from drf5n/PID_CI_v2
...
temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER.
2015-01-01 22:56:21 -02:00
David Forrest
625860f086
temperature.cpp: Fix typo of PID_MAX to MAX_BED_POWER for the bed.
2015-01-01 19:24:42 -05:00
David Forrest
6583bb781d
temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER.
2015-01-01 19:11:42 -05:00
Bo Herrmannsen
0d957872a0
Merge pull request #1234 from gregrebholz/issue_1069
...
Fixes #1069 . Added "auto fan" checks to PID_autotune.
2014-12-28 10:12:08 +01:00
David Forrest
984177c40c
temperature.cpp:Add PID Conditional integration on heated bed.
2014-12-27 15:26:09 -05:00
David Forrest
c9b8435749
heater.c: Limit PID I term with conditional integration.
2014-12-27 15:26:09 -05:00
Greg Rebholz
7ecb7cbd46
Added "auto fan" checks to PID_autotune
2014-12-23 23:50:00 -05:00
Denis Chertykov
b086394178
Fix syntax errors in #ifdef.
2014-12-20 19:33:43 +03:00
Scott Lahteine
f83d0f2a68
Defines for electronics boards
...
Added boards.h which contains defines for all the board numbers, plus
some shorthand macros for less typing.
2014-12-18 13:59:31 -08:00
Erik van der Zalm
058e446531
Merge pull request #1037 from filipmu/Filament-Sensor
...
Support for a filament diameter sensor
2014-10-11 22:56:01 +02:00
Filip Mulier
62db9848d3
Improvements and bug fixes in sensor delay buffer for filament sensor code
...
Improvement to avoid reinitializing delay buffer with every print. Fixed
issues in buffer indexing and memory out of bounds due to floating point
imprecision. Simplified the code by avoiding conversion to standard
diameter and 1cu mm extrusion, which caused complications in determining
mm extruded.
2014-08-16 06:50:13 -05:00
Filip Mulier
85649a4549
Real-time filament diameter measurement and control
...
This feature allows the printer to read the filament diameter
automatically and adjust the printer in real time. Added code to read
an analog voltage that represents a filament diameter measurement. This
measurement is delayed in a ring buffer to compensate for sensors that
are a distance away from the extruder. The measurement is used to
adjust the volumetric_multiplier for the extruder. Some additional g
codes (M404, M405, M406, M407) are used to set parameters and turn
on/off the control. g code M221 is updated. Pins for RAMPS1.4, RAMBO,
and Printrboard are identified for analog input. The configuration file
is updated with relevant user parameters.
2014-08-06 19:30:57 -05:00
Grogyan
82606354dd
Update temperature.cpp
...
Enables both SD card and MAX6675 to talk with each other
Fixes also issue #750
2014-07-05 17:17:17 +12:00
alexborro
43c298a7a9
Add "Thermal Runaway Protection" feature
...
This is a feature to protect your printer from burn up in flames if it
has a thermistor coming off place (this happened to a friend of mine
recently and motivated me writing this feature).
The issue: If a thermistor come off, it will read a lower temperature
than actual. The system will turn the heater on forever, burning up the
filament and anything
else around.
After the temperature reaches the target for the first time, this
feature will start measuring for how long the current temperature stays
below the target minus _HYSTERESIS (set_temperature -
THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
If it stays longer than _PERIOD, it means the thermistor temperature
cannot catch up with the target, so something *may be* wrong. Then, to
be on the safe side, the system will he halt.
Bear in mind the count down will just start AFTER the first time the
thermistor temperature is over the target, so you will have no problem
if your extruder heater takes 2 minutes to hit the target on heating.
2014-06-30 15:22:49 -03:00
Erik van der Zalm
cfb98ef682
More coverity fixes
2014-05-15 22:09:50 +02:00
Erik van der Zalm
9db9842aea
Fixed error found by the free coverity tool ( https://scan.coverity.com/ )
...
===================================================
Hi,
Please find the latest report on new defect(s) introduced to ErikZalm/Marlin found with Coverity Scan.
Defect(s) Reported-by: Coverity Scan
Showing 15 of 15 defect(s)
** CID 59629: Unchecked return value (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()
** CID 59630: Operands don't affect result (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()
** CID 59631: Missing break in switch (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()
** CID 59632: Missing break in switch (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()
** CID 59633: Out-of-bounds write (OVERRUN)
/temperature.cpp: 914 in disable_heater()()
** CID 59634: Out-of-bounds write (OVERRUN)
/temperature.cpp: 913 in disable_heater()()
** CID 59635: Out-of-bounds read (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()
** CID 59636: Out-of-bounds read (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()
** CID 59637: Out-of-bounds write (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()
** CID 59638: Out-of-bounds read (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()
** CID 59639: Out-of-bounds write (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()
** CID 59640: Out-of-bounds read (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()
** CID 59641: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
** CID 59642: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
** CID 59643: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
________________________________________________________________________________________________________
*** CID 59629: Unchecked return value (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()
2148 }
2149 #endif
2150 }
2151 }
2152 break;
2153 case 85: // M85
CID 59629: Unchecked return value (CHECKED_RETURN)
Calling "code_seen" without checking return value (as is done elsewhere 66 out of 67 times).
2154 code_seen('S');
2155 max_inactive_time = code_value() * 1000;
2156 break;
2157 case 92: // M92
2158 for(int8_t i=0; i < NUM_AXIS; i++)
2159 {
________________________________________________________________________________________________________
*** CID 59630: Operands don't affect result (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()
313 else
314 {
315 // two choices for the 16 bit timers: ck/1 or ck/64
316 ocr = F_CPU / frequency / 2 - 1;
317
318 prescalarbits = 0b001;
CID 59630: Operands don't affect result (CONSTANT_EXPRESSION_RESULT)
"ocr > 65535U" is always false regardless of the values of its operands. This occurs as the logical operand of if.
319 if (ocr > 0xffff)
320 {
321 ocr = F_CPU / frequency / 2 / 64 - 1;
322 prescalarbits = 0b011;
323 }
324
________________________________________________________________________________________________________
*** CID 59631: Missing break in switch (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()
1181 case 2: // G2 - CW ARC
1182 if(Stopped == false) {
1183 get_arc_coordinates();
1184 prepare_arc_move(true);
1185 return;
1186 }
CID 59631: Missing break in switch (MISSING_BREAK)
The above case falls through to this one.
1187 case 3: // G3 - CCW ARC
1188 if(Stopped == false) {
1189 get_arc_coordinates();
1190 prepare_arc_move(false);
1191 return;
1192 }
________________________________________________________________________________________________________
*** CID 59632: Missing break in switch (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()
1187 case 3: // G3 - CCW ARC
1188 if(Stopped == false) {
1189 get_arc_coordinates();
1190 prepare_arc_move(false);
1191 return;
1192 }
CID 59632: Missing break in switch (MISSING_BREAK)
The above case falls through to this one.
1193 case 4: // G4 dwell
1194 LCD_MESSAGEPGM(MSG_DWELL);
1195 codenum = 0;
1196 if(code_seen('P')) codenum = code_value(); // milliseconds to wait
1197 if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait
1198
________________________________________________________________________________________________________
*** CID 59633: Out-of-bounds write (OVERRUN)
/temperature.cpp: 914 in disable_heater()()
908 WRITE(HEATER_0_PIN,LOW);
909 #endif
910 #endif
911
912 #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
913 target_temperature[1]=0;
CID 59633: Out-of-bounds write (OVERRUN)
Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "1".
914 soft_pwm[1]=0;
915 #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916 WRITE(HEATER_1_PIN,LOW);
917 #endif
918 #endif
919
________________________________________________________________________________________________________
*** CID 59634: Out-of-bounds write (OVERRUN)
/temperature.cpp: 913 in disable_heater()()
907 #if defined(HEATER_0_PIN) && HEATER_0_PIN > -1
908 WRITE(HEATER_0_PIN,LOW);
909 #endif
910 #endif
911
912 #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
CID 59634: Out-of-bounds write (OVERRUN)
Overrunning array "target_temperature" of 1 2-byte elements at element index 1 (byte offset 2) using index "1".
913 target_temperature[1]=0;
914 soft_pwm[1]=0;
915 #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916 WRITE(HEATER_1_PIN,LOW);
917 #endif
918 #endif
________________________________________________________________________________________________________
*** CID 59635: Out-of-bounds read (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()
620 if(heater_ttbl_map[e] != NULL)
621 {
622 float celsius = 0;
623 uint8_t i;
624 short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625
CID 59635: Out-of-bounds read (OVERRUN)
Overrunning array "heater_ttbllen_map" of 1 bytes at byte offset 1 using index "e" (which evaluates to 1).
626 for (i=1; i<heater_ttbllen_map[e]; i++)
627 {
628 if (PGM_RD_W((*tt)[i][0]) > raw)
629 {
630 celsius = PGM_RD_W((*tt)[i-1][1]) +
631 (raw - PGM_RD_W((*tt)[i-1][0])) *
________________________________________________________________________________________________________
*** CID 59636: Out-of-bounds read (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()
614 if (e == 0)
615 {
616 return 0.25 * raw;
617 }
618 #endif
619
CID 59636: Out-of-bounds read (OVERRUN)
Overrunning array "heater_ttbl_map" of 1 2-byte elements at element index 1 (byte offset 2) using index "e" (which evaluates to 1).
620 if(heater_ttbl_map[e] != NULL)
621 {
622 float celsius = 0;
623 uint8_t i;
624 short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625
________________________________________________________________________________________________________
*** CID 59637: Out-of-bounds write (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()
196 {
197 soft_pwm_bed = (MAX_BED_POWER)/2;
198 bias = d = (MAX_BED_POWER)/2;
199 }
200 else
201 {
CID 59637: Out-of-bounds write (OVERRUN)
Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "extruder" (which evaluates to 1).
202 soft_pwm[extruder] = (PID_MAX)/2;
203 bias = d = (PID_MAX)/2;
204 }
205
206
207
________________________________________________________________________________________________________
*** CID 59638: Out-of-bounds read (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()
208
209 for(;;) {
210
211 if(temp_meas_ready == true) { // temp sample ready
212 updateTemperaturesFromRawValues();
213
CID 59638: Out-of-bounds read (OVERRUN)
Overrunning array "current_temperature" of 1 4-byte elements at element index 1 (byte offset 4) using index "extruder" (which evaluates to 1).
214 input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
215
216 max=max(max,input);
217 min=min(min,input);
218 if(heating == true && input > temp) {
219 if(millis() - t2 > 5000) {
________________________________________________________________________________________________________
*** CID 59639: Out-of-bounds write (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()
2272 tmp_extruder = code_value();
2273 if(tmp_extruder >= EXTRUDERS) {
2274 SERIAL_ECHO_START;
2275 SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER);
2276 }
2277 }
CID 59639: Out-of-bounds write (OVERRUN)
Overrunning array "volumetric_multiplier" of 1 4-byte elements at element index 1 (byte offset 4) using index "tmp_extruder" (which evaluates to 1).
2278 volumetric_multiplier[tmp_extruder] = 1 / area;
2279 }
2280 break;
2281 case 201: // M201
2282 for(int8_t i=0; i < NUM_AXIS; i++)
2283 {
________________________________________________________________________________________________________
*** CID 59640: Out-of-bounds read (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()
1796 int pin_status = code_value();
1797 int pin_number = LED_PIN;
1798 if (code_seen('P') && pin_status >= 0 && pin_status <= 255)
1799 pin_number = code_value();
1800 for(int8_t i = 0; i < (int8_t)sizeof(sensitive_pins); i++)
1801 {
CID 59640: Out-of-bounds read (OVERRUN)
Overrunning array "sensitive_pins" of 28 2-byte elements at element index 55 (byte offset 110) using index "i" (which evaluates to 55).
1802 if (sensitive_pins[i] == pin_number)
1803 {
1804 pin_number = -1;
1805 break;
1806 }
1807 }
________________________________________________________________________________________________________
*** CID 59641: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
45 }
46
47 LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
48 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49 {
50 init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
CID 59641: Uninitialized scalar field (UNINIT_CTOR)
Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
51 }
52
53 void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
54 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
55 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
56 {
________________________________________________________________________________________________________
*** CID 59642: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
39 }
40
41 LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
42 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
43 {
44 init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
CID 59642: Uninitialized scalar field (UNINIT_CTOR)
Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
45 }
46
47 LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
48 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49 {
50 init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
________________________________________________________________________________________________________
*** CID 59643: Uninitialized scalar field (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
26
27 LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
28 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
29 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
30 {
31 init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
CID 59643: Uninitialized scalar field (UNINIT_CTOR)
Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
32 }
33
34 LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
35 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
36 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
37 {
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, http://scan.coverity.com/projects/2224?tab=overview
2014-05-14 21:59:48 +02:00
Cameron Lai
6460709d92
Fix bug in PID Autotune report
2014-04-25 16:05:05 +08:00
David Forrest
8c4377dd63
temperature.cpp: Fix PID_DEBUG compile error.
2014-02-26 00:44:22 -05:00
ErikZalm
e8291ed728
Merge pull request #802 from Makers-Tool-Works/Marlin_v1
...
Clarify which PID values to enter
2014-02-24 22:31:13 +01:00
RoyOnWheels
aee63afccd
Clarify which PID values to enter
...
Users can be confused as to which values to enter after a PID tune. Updating the message to help clarity it.
New message: "PID Autotune finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"
Old message: "PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h"
2014-02-23 14:36:50 -08:00
Christian Axelsson
c00383f286
Fixed typo.
2014-02-18 18:50:12 +01:00
ErikZalm
0d81ae77bc
Merge pull request #727 from drf5n/oversampling
...
temperature.cpp: Actually use OVERSAMPLENR in the oversampling calculation.
2014-01-31 07:09:10 -08:00
David Forrest
476c7193d8
temperature.cpp: Use OVERSAMPLENR in oversampling calculation.
2014-01-21 16:49:03 -05:00
daid
df194f75e1
Added PT100 support for Ultiboard2
2014-01-06 11:20:03 +01:00
Alex Borro
5c44f6c434
Bed Heater monitoring in Controller Fan
...
In some cases the Bed Heater FET heats up more then stepper drivers, so
this change add the bed monitoring to the controller fan. As soon as the
bed heater is turned on, the controller fan will run as well.
2013-11-27 23:23:06 -02:00
Alex Borro
35905ea4f9
Allow heaters to stay full On when PWM=127
...
In previous version, even with PWM = 127, the system turns the FET off
and then on in the next cycle. This bevavior may increase the FET heat
dissipation.
It was fixed keeping the FET always On when PWM=127.
2013-11-27 18:13:38 -02:00
Erik van der Zalm
69af392554
Added HEATERS_PARALLEL (Request from reifsnyderb)
...
This allows a hot end with two heaters and a FET for each heater. This is useful if the FET is not capable of heating two heaters.
2013-11-17 13:29:02 +01:00
bkubicek
d147a057ac
Add the socalled "Babystepping" feature.
...
It is a realtime control over the head position via the LCD menu system that works _while_ printing.
Using it, one can e.g. tune the z-position in realtime, while printing the first layer.
Also, lost steps can be manually added/removed, but thats not the prime feature.
Stuff is placed into the Tune->Babystep *
It is not possible to have realtime control via gcode sending due to the buffering, so I did not include a gcode yet. However, it could be added, but it movements will not be realtime then.
Historically, a very similar thing was implemented for the "Kaamermaker" project, while Joris was babysitting his offspring, hence the name.
say goodby to fuddling around with the z-axis.
2013-10-06 21:14:51 +02:00
ErikZalm
07e7de3600
Merge pull request #569 from hg42/convert-PROTOCOL-macros-from-statements-to-expressions
...
convert PROTOCOL macros from statements to (multiple, comma separated) expressions
2013-08-02 13:13:29 -07:00
hg42@gmx.net
3700f688f5
convert PROTOCOL macros from statements to (multiple, comma separated) expressions
2013-08-01 14:56:39 +02:00
daid
a504c88346
Fix a bug where the PID controllers D action kicks in hard as soon as the PID controller starts.
2013-08-01 14:12:30 +02:00
Erik van der Zalm
bd96d22bfb
Merge branch 'Marlin_v1' into thinkyhead
...
Conflicts:
Marlin/Configuration.h
Marlin/Configuration_adv.h
Marlin/Marlin.h
Marlin/Marlin_main.cpp
Marlin/Servo.cpp
Marlin/language.h
Marlin/pins.h
Marlin/planner.cpp
Marlin/ultralcd_implementation_hitachi_HD44780.h
README.md
2013-06-09 22:26:47 +02:00
Erik van der Zalm
c8dcc7c208
Allow increasing the software PWM frequency.
2013-06-09 12:52:49 +02:00
Scott Lahteine
5dabc95409
Apply all changes from latest Marlin_V1
...
Diffed and merged, preserving my updates
2013-06-06 15:49:25 -07:00
Erik van der Zalm
5090c56651
More redundant temp sensor changes. (After testing and debugging by reifsnderb)
2013-05-29 19:29:30 +02:00
Erik van der Zalm
9be61cdc02
Added redundant temp sensor
2013-05-26 17:57:49 +02:00
Robert F-C
40eb07bad4
Revert and extend previous change pin check change
...
Reviert previous change of #if BLAH_PIN > 0 to #if defined(BLAH_PIN) &&
BLAH_PIN > -1. Unfortunately some times pin 0 is used. For my sins I've
gone through and replaced all unsafe checks of #if BLAH_PIN > -1 with
the safe version.
2013-05-22 21:33:23 +10:00
Robert F-C
0d4a9444c4
Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
2013-05-19 08:50:58 +10:00
MaikStohn
95dff34b73
fixed wrong compare for min temp check of heater 1 and heater 2
2013-05-16 01:17:38 +02:00
MaikStohn
4cc6f9f6de
fixed wrong pin initialization when using temperature 2 pin input
2013-05-16 01:17:08 +02:00
MaikStohn
61a48cc662
Add support for RUMBA thermocouple add on
2013-05-16 01:16:33 +02:00
Scott Lahteine
a200521eab
Added CUSTOM_MENDEL_NAME option to Configuration.h and language.h
...
Also cosmetic comment changes and spelling corrections in printed
messages
2013-05-02 09:22:58 -07:00
Robert F-C
d5ad7a0814
Rework change to incorporate CONTROLLERFAN
...
Also refactor extruder auto fan logic to simplify further and now only
check every 2.5 seconds
2013-04-30 01:08:29 +10:00
Robert F-C
c3cdaceab3
Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
2013-04-29 22:13:55 +10:00
Simon Oliver
93f0463b21
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
...
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-04-12 13:31:30 +02:00
whosawhatsis
fd5b7e0cec
Separate PID_MAX from BANG_MAX
...
This allows PID_FUNCTIONAL_RANGE to use a maximum duty cycle higher
than PID_MAX. This is useful for powerful heaters to heat quickly in
bang-bang mode, but use a lower duty cycle that is easier to stabilize
in PID mode.
2013-03-22 18:16:26 -07:00
Robert F-C
f1263d3f88
Further reduce code by using precompiler logic
2013-03-02 16:12:11 +11:00
Robert F-C
372e12f83f
Implement automatic extruder/cold-end fan control based on temperature
...
This change allows fan outputs to automatically turn on/off when the
associated nozzle temperature of an extruder is above/below a threshold
temperature.
Multiple extruders can be assigned to the same pin in which case the fan
will turn on when any selected extruder is above the threshold.
It also makes the M42 command compatible with the M106/M107 command.
The majority of the logic in this change will be evaluated by the
compiler at build time (i.e, low code space requirements).
2013-03-01 21:57:23 +11:00
daid303
38ee395ac7
Replace the 1ms delay for 2 nops to get a 100ns delay. #259
2012-12-17 11:12:11 +01:00
oni303
ab09fa4bbf
fixed pwm generation at pin D12 and D13 when one of them is used as FAN_PIN on Sanguino, added soft pwm entry for FAN_PIN in temperature.cpp
2012-12-16 01:36:57 +01:00
daid303
08356361ac
Fixing a problem with heated beds not working without PID and BED_LIMIT_SWITCHING
2012-12-13 10:25:29 +01:00
daid303
f30b46b2a8
One more fix for #338 , I really should get a heated bed to test with.
2012-12-12 23:06:17 +01:00
daid303
65c3f1ffcd
Most likely fixing #338
2012-12-12 21:56:17 +01:00
daid303
55ba90ac19
Add PID functional range setting. With high powered heaters the current functional range of 10 degrees causes high overshoots as the PID needs to kick in before the temperature hits 10 degrees below target.
2012-12-12 09:08:37 +01:00
daid303
5ff5cee8ce
Fix the sensitive pin definitions, there where analogue numbers in the digital pin list. Also made M42 without a P function on the LED_PIN (which was otherwise a useless pin definition)
2012-12-11 14:53:53 +01:00
daid303
3fb07d9b8d
Add MINTEMP/MAXTEMP error to LCD, and fix temperature bug with more then 1 extruder.
2012-12-10 10:48:46 +01:00
daid303
82c8724b33
Fix compile with PID_DEBUG
2012-12-09 23:50:12 +01:00
daid303
52158dffcc
Big temperature code update. No longer converts back and forwards between temperature and raw sample value. Reducing complexity, removing code. Also named some variables better. While keeping the safety intact and functionality the same.
2012-12-09 23:00:06 +01:00
daid303
587154c01b
Fix the WATCHPERIOD implementation. It did not work correctly in a multi extruder setup, it did not work after 32 seconds after startup (int16 used as millies timestamp). And it did not work if you gave an M104 or M109 when the target was already around the target setpoint. So on average, it did not work at all. The new implementation should be robust in detecting a failure to heat up.
2012-12-06 10:36:07 +01:00
daid303
529748894c
Minor changes in the temperature code for some cleanup.
2012-12-05 19:54:01 +01:00
daid303
6a9bee27cc
Changed the naming of some LCD functions, so the names match better what the function does. Also moved around some prototypes for general cleanup.
2012-12-03 12:52:00 +01:00
daid303
94ea26ff46
Some minor changes on code style. And a bugfix where the counters for positioning in the stepper where wrong depending on compiler settings. (Caused strange values to reported back with M114 and endstop triggers). Also fixed compiling with FWRETRACT enabled.
2012-12-03 12:13:20 +01:00
daid303
72586eb30a
Solved few warnings.
2012-11-12 09:29:12 +01:00
daid303
06b58a9c4f
First cleanup. Moved all code to cpp files, so there are no dependencies on pde files. And no more odd requirement to cat files together. (Still need to fix the Makefile). Also cleaned up some defines and made defines upper case as by C coding conventions.
2012-11-06 12:06:41 +01:00
Mark Finn
d197f8504b
clean up and changes from testing
2012-09-17 19:18:50 -05:00
Mark Finn
eb06a886c4
missed
2012-09-17 14:23:49 -05:00
Mark Finn
04631d2250
cleanup for pull
2012-09-17 14:17:24 -05:00
Mark Finn
9698f4ea64
bed pid
...
Conflicts:
Marlin/Configuration.h
2012-09-12 21:18:59 -05:00
ZetaPhoenix
e8c92e0a95
Missing #else in temperature.cpp prevented reading bed temp when TEMP_BED_PIN <7. Thanks to Leland Wallace for helping me track this down via "Sesame Street" coding (what is not like the other)
2012-09-09 16:06:02 -07:00
Dabble63
6b45e9f167
Add Duty Cycling to the Heater Bed
2012-08-11 09:17:47 +03:00
Erik van der Zalm
e31bef31ad
Limit PID autotune PWM to PID_MAX
2012-05-16 19:32:23 +02:00
Erik van der Zalm
1874cb71a6
Added option to increase the FAN PWM frequency.
2012-05-02 19:26:14 +02:00
Logan Bowers
3eacb4c16d
Wrap the call to turn off the bed heater in a #if to prevent a compile error on boards that do not have a bed heater
2012-04-25 19:22:38 -07:00
Bernhard
33bb044d7c
fixed catsting to (int)e in serial error messages.
...
see https://github.com/ErikZalm/Marlin/issues/148
2012-04-22 20:04:39 +02:00
Erik van der Zalm
67cf105bc6
Fixed AUTOTEMP (M109 S215 B260 F1 starts autotemp)
...
Changed SLOWDOWN. IF this does not work ok OLD_SLOWDOWN is the old algo.
2012-04-15 19:17:33 +02:00
Erik van der Zalm
8aee9d51b6
Disabled disable_heater in PID_autotune.
2012-04-12 21:12:31 +02:00
Daid
414408b2d0
Fix for wrong systax in #ifdef.
2012-04-12 14:01:30 +02:00
Erik van der Zalm
cf7c8c458f
Fixed MAX6675
2012-04-10 21:57:57 +02:00
Erik van der Zalm
63aec3c56e
Replaced Kill by Stop. If the printer is stopped. Fix the error and use M999 to restart.
...
Moved the PID_dT in the Ki and Kd calculation from the configuration.h to temperature.cpp
2012-03-25 14:36:51 +02:00
Erik van der Zalm
33f5697888
PPID tune exports more constants.
2012-03-11 22:18:25 +01:00
Erik van der Zalm
15ad923310
Removed !!!. Stupid arduino bootloader can't handle this.
2012-03-09 17:42:32 +01:00
Erik van der Zalm
c077316b2b
Added PID autotune. (experimental)
...
M303 Starts autotune. Wait till the Kp Ki and Kd constants are printed.
Put these values in Configuration.h
2012-03-08 21:43:21 +01:00
haxar
79a466ca26
make analog2tempBed return a precise celsius reading for BED_USES_THERMISTOR, complementing changes to analog2temp in d15f01e
2012-03-02 17:15:21 -08:00
Erik van der Zalm
b48d67ce10
Fixed homing
2012-02-27 18:31:40 +01:00
Phil Hord
740f0c7690
Add explicit #define for bogus temp override
...
The code to ignore the "bad thermistor reading failsafe"
suicide function depends on the existing of the PS_ON pin
feature. But in some boards this shouldn't be the case
Fix this by adding an explicit definition to make our
intentions more clear and separable.
2012-02-26 20:26:16 -05:00
Erik van der Zalm
4fbda5c3f5
Merge remote-tracking branch 'daid/Marlin_v1' into Test
2012-02-26 16:10:59 +01:00
Daid
73344e69c1
Added temperature offset/gain settings for AD595.
2012-02-16 11:05:08 +01:00
Christian Thalhammer
d309565b56
Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
...
Conflicts:
Marlin/Configuration.h
2012-02-13 13:07:55 +01:00
Erik van der Zalm
11518a987f
merged with triffid fork
2012-02-12 13:58:36 +01:00
Christian Thalhammer
14702089ee
-disable TEMP Min MAX Kill while using PS_ON Pin
...
ON GEN7 there is no temperature reading when power is off.. so Marlin
would kill itself. There seems to be an update from "Traumflug" on GEN7
using standby VCC for thermistors.
2012-02-06 12:28:33 +01:00
Erik van der Zalm
9f139d6e0e
Added MAX6675 support. (Thanks to gregfrost)
...
Needs some work to remove the blocking in read max6675.
2012-02-05 13:05:07 +01:00
Michael Moon
8d0916af13
allow Marlin to actually compile with Makefile pulled from Sprinter and a few other modifications
2012-01-24 13:18:54 +11:00
Bernhard
3c1a4aac2b
header file simplification
2011-12-22 12:38:50 +01:00
Bernhard
415aadf704
lcd panel bed support
...
advance and ultipanel not any more in default config
2011-12-22 11:45:52 +01:00
Erik van der Zalm
84d9cf7339
merging
2011-12-12 20:35:46 +01:00
Erik van der Zalm
e017228569
Merged multiple extruder support.
...
Soft PWM. (Sanguinololu can also have PID temperature control)
Interrupt save WRITE for addresses > 0x0FF
2011-12-12 19:34:37 +01:00
Bernhard
88ee053af0
heating up santity, formarly knows as "watchdog", but renamed due to the existance of the real watchdog, works now.
2011-12-09 17:07:44 +01:00
Denis B
4fd75dc813
Working version of multiple extruders (up to 3)
...
- The temperature control is pretty much complete
(not sure what to do w/ autotemp though)
Changed the pins assignment to clearly separate bed and extruder heaters
and temp sensors, changed a bit how termistor tables are handled.
- The steppers control is rudimentary
(only chanages what pins it uses depending on the active_extruder var,
but that's enough for switching extruder in the start.gcode in the
the profiles)
- Tested only w/ RAMPS 1.4
2011-12-06 00:09:16 -05:00
Bernhard
7714b98da7
solved some compiler warnings that are now visible in arduino 1.0.
...
Found a couple of unused variables, that I commented.
Tried to solve the program memory warning message, and failed.
2011-12-04 12:40:18 +01:00
Bernhard
59205ac5fc
preliminiary implementation for the early heating finish.
...
Might be replaced by something more clever, e.g. by erik, and does not yet support the second extruder or the bed.
its kind of not so cool, because you need 6 more ints.
Maybe isheating() should use the degrees directly, as it is not used in time-critical anyways.
Then it would be much easier. to have the offsets without additional variables.
2011-11-30 08:51:46 +01:00
Erik van der Zalm
dd5296ad4d
Fixed temperature reading bug.
...
(When using the lower and upper adc input bank)
2011-11-28 17:42:49 +01:00
Erik van der Zalm
959d82e81e
Small temperature disable bug.
2011-11-20 15:03:35 +01:00
Erik van der Zalm
2e43f9c809
Changed min max temperature code.
2011-11-20 13:14:58 +01:00
Erik van der Zalm
6841a10446
Fixed max/min temperature bug
2011-11-19 16:16:26 +01:00
Erik van der Zalm
ff69e0a772
Changed max/min temp init. Removed second uart from sabguino core
2011-11-19 12:19:53 +01:00
Bernhard Kubicek
a9c7da06e3
and changed ultipanel to have the mm/sec and not mm/min
...
Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1
Conflicts:
Marlin/Marlin.pde
Marlin/ultralcd.h
2011-11-15 22:50:43 +01:00
Bernhard Kubicek
c57906b627
fixed bug with adjusting ki in realtime.
2011-11-13 21:43:26 +01:00
Bernhard Kubicek
ff592b056a
heater power repair.
2011-11-13 00:48:55 +01:00
Bernhard Kubicek
e9adfa27b5
re-enabled heaterpower as storage for the current storage of the heater PWM duty cycle.
...
the M301 now returns the current PID settings of the machine.
M105 returns heating pwm duty cylce as "@:"
2011-11-12 20:37:28 +01:00
Bernhard Kubicek
ba8a53a40f
Streaming.h is gone. It conflicted with PROGMEM. And saving memory is more important than nicer code, imho
2011-11-09 20:30:41 +01:00
Bernhard Kubicek
ab154d5592
project progmem finished: total change with ultipanel: 2456 byte free ram initial. now: 4374 ram.
2011-11-09 20:27:44 +01:00
Bernhard Kubicek
72ace55e6a
better visibility of public/private/imported variables
2011-11-06 23:34:40 +01:00
Erik van der Zalm
e3af73ee0c
Thermistor name problem
2011-11-06 23:20:01 +01:00
Bernhard Kubicek
79d1bfb5c0
made many possible variables static, so they cannot be used extern.
2011-11-06 19:36:29 +01:00
Bernhard Kubicek
1d171e9e52
reformating and some minor bugs/things found on the way.
2011-11-06 19:23:08 +01:00
Bernhard Kubicek
900e0c9bf2
overworked the serial responses. Quite difficult, since many texts are Pronterface protocol.
2011-11-06 17:33:09 +01:00
Bernhard Kubicek
1740a83e11
correcting commit errors.
2011-11-06 15:10:29 +01:00
Bernhard Kubicek
2afb7bd4cf
refactured temperature.cpp so that there are now abstract functions to access temperatures.
2011-11-06 14:03:41 +01:00
Erik van der Zalm
2e8e8878e5
Corrected temp variables.
2011-11-05 20:21:09 +01:00
Erik van der Zalm
04d3b5537f
Merge remote-tracking branch 'origin/Marlin_v1' into Marlin_v1
...
Conflicts:
Marlin/Configuration.h
Marlin/EEPROMwrite.h
Marlin/Marlin.h
Marlin/Marlin.pde
Marlin/temperature.cpp
Marlin/temperature.h
Marlin/thermistortables.h
2011-11-05 20:03:38 +01:00
Erik van der Zalm
d15f01e1b4
Temperature changes
2011-11-05 19:21:36 +01:00
Bernhard Kubicek
ea86a5e10f
moved the variables in the ISR, thats the most normal use case of static.
2011-11-05 16:53:37 +01:00
Bernhard Kubicek
b9ea0651ec
Revert "this is not working. Do you maybe know why?"
...
This reverts commit 8bcdb9f5f0
.
2011-11-05 16:49:29 +01:00