ginge robotfuzz marlin builder came out before umo+ and hasn't been updated. Use this instead:
Thanks for the replies. I did not get email notifications, hence my late response.
I tried the firmware builder in the link from gr5. I chose the "Ultimaker Original with HBK", which selects "The PT100 circuit found in the Ultimainboard V2.x" for heated bed temperature sensor. Inverted the extruder axis and that was all I changed. Uploaded new firmware and it thinks the bed is at 71 °C when at room temperature.
I looked at the main board just now and it says Version 1.5.6. I purchased my machine back in March of 2012. I'm assuming the heated bed temperature sensor circuitry on the earlier board is different than the 2.x versions and the cause of the reading error.
heated bed upgrade kit should have included a little board that converts the temperature. Also you need to remove the 4.7k resistor on the bed sensor circuit if you had inserted one long ago. Actually the 4.7k resistor issue is common for many people who built their own heated beds. Make sure no one installed one on your 1.5.6 board.
Well something is wrong somewhere. At room temp the bed resistor should be about 108 ohms and the little board (not shown in picture) converts that to some voltage between 0V and 5V and sends that to this bigger board (shown). Something somewhere in that long path is broken. I don't know what parts to probe other than the 108 ohms.
PT100 sensor resistance, measured at the connector that plugs into the little board (with the connector unplugged) is 108.8 Ω at 73 °F [22.78 °C]. Theoretical value for a PT100 at this temperature is 108.86 Ω, so close enough considering the accuracy of the thermometer and multimeter.
What can I check next? Any way to ping the Ultimaker from the computer for raw voltage of the temperature signal?
Looks like the PT100 comes in on J3 (2-pin) of the little board and the outgoing voltage to the main board is on J1 (3-pin):
That INA826 (U1) is a Texas Instruments instrumentation amplifier (see formulas on right side):
If I've done my calculations correctly (assuming the capacitors act like opens at steady state), then the output voltage should be ~1.2 V at room temperature and ~1.4 V when the bed is at 70 °C:
- 2
Hi dbotos,
You did your calculation right...
Next question, what is on the input side of the UMO board?
If there have been just a thermistor input(no thermocouple), then this is even more interesting to investigate.
Good job.
Thanks
Torgeir.
good work. So did you measure the voltage at J1 to see if it is indeed 1.2V and not 1.4V?
If it's the wrong voltage, check tp10 next to make sure that is 1.2V. If tp10 is correct and tp1 is wrong voltage then the problem is probably with the larger pcb. If both voltages are 1.4V then the problem is probably with the smaller pcb.
Little PCB's J1 connector reads 1.217 V across pins 1 and 3 where it goes into the board. Pin 1 (blue wire) is ground, pin 3 (red wire) is V_out. Tracing those same colors to the big board, I get the same voltage on the Temp 3 connector where it goes into the board. Looks like that is correct as measurement was taken with ambient a little above 20 °C.
On the big board, that V_out goes into ADCH pin 3, which I'm assuming is the high side of an analog-to-digital converter. My main board does not have R4 installed:
Hi David,
Great info. here! This mean the signal is going straight to the A/D converter, so it could(must) be a firmware issue. Cause here, R4 and the old type of thermistor is sending a voltage that is across of the thermistor directly to the A/D converter.
Good investigation!
Thanks.
Torgeir.
I agree - it's most likely a firmware issue. Maybe you said this already - but where did you get your firmware? Ideally you want to get the latest Cura and tell it that you have a UMO (not UMO+) with the heated bed (maybe you chose umo+ by accident?). Then update the firmware. Or you can choose custom update and look through the choices.
I have Cura 15.04.5, which is latest non-beta. I have a custom direct-drive extruder, so I need custom firmware to invert that axis and tell it steps per e. I had used Ginge's Marlin builder prior to getting the heated bed kit. I also tried the bultimaker Marlin builder, but unfortunately, it doesn't have a choice for my situation, which is the following three elements:
1) PT100 RTD heated bed temperature sensor
2) Main board version 1.5.6 (it has one for 2.x main boards)
3) No 4.7 kΩ pullup resistor (it has choices for PT100 with 4.7 kΩ and 1 kΩ pullups; no mention of main board version on those)
So I think I either need to find a Marlin builder than can combine those three elements or I might have to build my own Marlin firmware (which I've never done before).
If you just swap two of the wires for one of the phases on the feeder stepper, it will change direction and the number of steps might be an easy one to handle in the firmware... or?
Just a suggestion.
Thanks.
Torgeir.
Edited by GuestYes. What @Torgeir said. You can adjust steps/mm from the control panel. Make sure you do a save or you will lose that value the next time you power up the printer. And if needed, to reverse an axis swap just two wires in the extruder connector (the two wires of either twisted pair).
Source:
http://reprap.org/wiki/Stepper_wiring#Motor_moving_the_wrong_direction
Hmm., maybe another one, find the X thermistor (the thermistor supposed to be used on your UMO back then) by using a resistance bridge to find zero deg. Celsius, then same method to find the resistance for the 100 deg. Celsius value.
Those two temperatures are good calibration points to use when setting up your system.
Armed with this numbers it might be easy to adjust the Rg "gain resistor" in order to match the actual value the firmware use for the key temperatures.
Edit: You might need to adjust the offset for zero and the gain for 100 deg. Celsius.
Should be possible as an alternative solution?
Thanks
Torgeir.
Edited by GuestI'm hoping I can do everything with the firmware and not have to mess with the hardware. The steps per e for the extruder and inversion of the extruder axis seem simple to change in the Marlin configuration.h file prior to compiling:
#define DEFAULT_AXIS_STEPS_PER_UNIT {x,y,z,e} where x,y,z, and e are the steps per unit of that particular axis
#define INVERT_E0_DIR true
For the heated bed temperature sensor, it looks like it refers to a portion of the thermistortables.h file based on the chosen temperature sensor from a list of pre-defined sensors. I'm guessing it would be possible to make another choice and necessary data in the thermistortables.h file that works for my setup. I looked at the PT100 circuits in the 2.1.1 main board schematic (since one of the sensor choices in thermistortables.h is the PT100 circuit found in the 2.x main board) and it's just like the one on the little heated bed kit board - same flanking resistors and R_G. The V_out on the third PT100 circuit in the 2.1.1 schematic (assuming for heated bed, as first two should be for nozzle heaters) goes right to ADC10 with no pullup:
If you look at the Temp 3 portion of the 1.5.6 main board schematic (posted earlier), it also goes to ADC10 (same as ADCH3) if no R4 present (which is the case on mine). So it seems like that choice should have worked when I was using the online firmware builders.
Here's a link to the 2.1.1 main board electronics:
Yes the firmware is easy to mess with and build. In a nutshell there are instructions (broad but useful) in README file amont the firmware files. You get the firmware from github. Use ginge's website to get a Configuration.h file that is close to your final file (minimal editing).
I'll have to see what I can do with it. Is there any way to query the ADC pins from a computer via USB?
Hi David,
I've been looking into this many times and think that it is the look up table for the thermistors that's in error. This table shall contain the "offset value" (the value at zero deg. Celsius, water with ice cubes that's stirred to keep mixture at zero) and the "gain value" (boiling water 100 deg. Celsius at sea level). PT100 offset value (at zero deg.) is 100 ohm, will give 1.111 volt output from the extra PCB in your heat bed kit.
Actually, this table (in C) might be around some place I'm sure.
OK. Good Luck.
Torgeir.
Torgeir,
I think you're right. My circuitry is functionally identical to what's in the 2.1.1 main board so the bed temperature sensor ID choice of "20" (PT100 circuit found in the Ultimainboard V2.x) should be correct.
Here's what the sensor ID "20" section of thermistortables.h says:
#if (THERMISTORHEATER_0 == 20) || (THERMISTORHEATER_1 == 20) || (THERMISTORHEATER_2 == 20) || (THERMISTORBED == 20) // PT100 with INA826 amp on Ultimaker v2.0 electronics/* The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature.This does not match the normal thermistor behaviour so we need to set the following defines */#if (THERMISTORHEATER_0 == 20)# define HEATER_0_RAW_HI_TEMP 16383# define HEATER_0_RAW_LO_TEMP 0#endif#if (THERMISTORHEATER_1 == 20)# define HEATER_1_RAW_HI_TEMP 16383# define HEATER_1_RAW_LO_TEMP 0#endif#if (THERMISTORHEATER_2 == 20)# define HEATER_2_RAW_HI_TEMP 16383# define HEATER_2_RAW_LO_TEMP 0#endif#if (THERMISTORBED == 20)# define HEATER_BED_RAW_HI_TEMP 16383# define HEATER_BED_RAW_LO_TEMP 0#endifconst short temptable_20[][2] PROGMEM = {{ 0*OVERSAMPLENR , 0 },{ 227*OVERSAMPLENR , 1 },{ 236*OVERSAMPLENR , 10 },{ 245*OVERSAMPLENR , 20 },{ 253*OVERSAMPLENR , 30 },{ 262*OVERSAMPLENR , 40 },{ 270*OVERSAMPLENR , 50 },{ 279*OVERSAMPLENR , 60 },{ 287*OVERSAMPLENR , 70 },{ 295*OVERSAMPLENR , 80 },{ 304*OVERSAMPLENR , 90 },{ 312*OVERSAMPLENR , 100 },{ 320*OVERSAMPLENR , 110 },{ 329*OVERSAMPLENR , 120 },{ 337*OVERSAMPLENR , 130 },{ 345*OVERSAMPLENR , 140 },{ 353*OVERSAMPLENR , 150 },{ 361*OVERSAMPLENR , 160 },{ 369*OVERSAMPLENR , 170 },{ 377*OVERSAMPLENR , 180 },{ 385*OVERSAMPLENR , 190 },{ 393*OVERSAMPLENR , 200 },{ 401*OVERSAMPLENR , 210 },{ 409*OVERSAMPLENR , 220 },{ 417*OVERSAMPLENR , 230 },{ 424*OVERSAMPLENR , 240 },{ 432*OVERSAMPLENR , 250 },{ 440*OVERSAMPLENR , 260 },{ 447*OVERSAMPLENR , 270 },{ 455*OVERSAMPLENR , 280 },{ 463*OVERSAMPLENR , 290 },{ 470*OVERSAMPLENR , 300 },{ 478*OVERSAMPLENR , 310 },{ 485*OVERSAMPLENR , 320 },{ 493*OVERSAMPLENR , 330 },{ 500*OVERSAMPLENR , 340 },{ 507*OVERSAMPLENR , 350 },{ 515*OVERSAMPLENR , 360 },{ 522*OVERSAMPLENR , 370 },{ 529*OVERSAMPLENR , 380 },{ 537*OVERSAMPLENR , 390 },{ 544*OVERSAMPLENR , 400 },{ 614*OVERSAMPLENR , 500 },{ 681*OVERSAMPLENR , 600 },{ 744*OVERSAMPLENR , 700 },{ 805*OVERSAMPLENR , 800 },{ 862*OVERSAMPLENR , 900 },{ 917*OVERSAMPLENR , 1000 },{ 968*OVERSAMPLENR , 1100 }};#endif
Near the top of thermistortables.h is a line that says:
#define OVERSAMPLENR 16
So if we go back and plug that into the table, we get:
0 03632 13776 103920 204048 304192 404320 504464 604592 704720 804864 904992 1005120 1105264 1205392 1305520 1405648 1505776 1605904 1706032 1806160 1906288 2006416 2106544 2206672 2306784 2406912 2507040 2607152 2707280 2807408 2907520 3007648 3107760 3207888 3308000 3408112 3508240 3608352 3708464 3808592 3908704 4009824 50010896 60011904 70012880 80013792 90014672 100015488 1100
I'm assuming the first column is the digital value of the A-to-D converter and the second column is temperature in °C. If a digital zero (first row, first column) is equivalent to zero volts analog, then the table is saying a PT100 at 0 °C would read 0 Ω (which we know is not true - it's 100 Ω, as you said and is the namesake of the sensor).
So the next question, in order to fix the table (assuming it's not calculating in some other offset elsewhere that I'm oblivious to), is what's the A-to-D conversion factor (i.e. if I have X volts analog going into the ADC, what do I multiply that by to get the digital value in that first column of the table)?
PT100 resistance values at various temperatures. I've been using the type 404 (third column) in my calculations:
Recommended Posts
Top Posters In This Topic
39
23
11
Popular Days
Jun 21
7
Jun 10
6
Jun 5
6
Jun 16
6
Top Posters In This Topic
dbotos 39 posts
gr5 23 posts
Torgeir 11 posts
Popular Days
Jun 21 2016
7 posts
Jun 10 2016
6 posts
Jun 5 2016
6 posts
Jun 16 2016
6 posts
Posted Images
Torgeir 267
Hi David,
You should use; "PT100 circuit found in the Ultimainboard V2.X".
Have you checked the installation manual note on page 26?
I've looked a little into this and think the problems seem to be in the Ginge's Marlin builder software, since you cannot deselect the "old" reference amplifier used for the "K-thermocouple", the AD595. This old temp ref is added to the new absolute temp sensor and make this error reading.
I'll guess someone have a suggestion for this, but the best will be to have the software you're using updated to cope with this problem.
The manual is here:
https://ultimaker.com/en/resources/249-assembly-manual
Thanks.
Torgeir
Edited by GuestLink to post
Share on other sites