Custom MCU-module for UP! Mini...

Post improvements made for UP, and share ideas.
roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Thu Sep 19, 2013 4:36 pm

And of course it also affects minimum wall thickness too. Not saying it isn't handy ... just saying it's not that exciting. Now if I could get 0.1 instead of a min of 0.2mm then I'd be modding away madly.

BTW, I've done a bunch of printing at 0.05mm and I don't think I will even bother again until I have a printer that is self calibrating ... the prints were prettier for sure but oh so painful to achieve and surprisingly very curvy prints were often uglier.

marto
Posts: 87
Joined: Wed Nov 14, 2012 2:01 pm

Re: Custom MCU-module for UP! Mini...

Post by marto » Tue Oct 08, 2013 11:03 pm

Yeh the only real reason was to get 0.15 mostly for some difficult prints which that little bit of extra resolution would be good for. Other than that and adjustable temperature I am pretty ok with up software.

Steve

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Tue Nov 12, 2013 9:30 am

roller wrote:
Michael_K wrote:
twocycler wrote:I would be curious to try changing the ID bytes in the rom code for the model type. If you reflashed the Mini rom so that the ID was for a Plus, would it print with 0.15MM layer height? 8-)
I never planned reflash the original ROM. Anyway, I don't think that changing ID would change any printing parameters.
I think the suggestion was more that changing ID may let you flash with the Plus firmware instead of Mini firmware. A slightly more dangerous proposition for your original mainboard though.
Bugger that, I want to know if (the UP Plus) stores "PLA" mode in it's flash as just "PLA MODE = ON", or as "BED TEMP = 50º EXTRUDER TEMP = 185º."

Unfortunately, I feel it is most likely that it stores it as "RANDOM BYTE = 0 | 1" and the software sends the temperature each time. Time to turn on the USB sniffer.

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Wed Nov 13, 2013 12:50 pm

Unlikely. Doing such would mean new firmware is required any time Up wanted to tweak a print setting. Plus I think you will find the extruder temp may not be consistent throughout the print. Lowering the head temp is one way to help support/raft separation. I would expect it's don't exactly the same way it's done in gcode where a temp can be declared and changed throughout the print by the slicing software. That gives the greatest flexibility to tweak print quality settings.

In the Mini the heater for the bed is likely to be a binary on/off setting.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Wed Nov 13, 2013 3:09 pm

Nah, the current temp or PLA/ABS setting would be stored in flash, along with the platform height, and could be rewritten quite easily.

Because I am presently swapping between the Mac and the Windows UP software, I have noticed that it gets the platform height from the printer when it's connected.

And because I'm running Windows in VMWare, I can enable USB logging... although I haven't logged an actual print yet.

I'm extremely skeptical about the claims that temperate is changed while printing the support, it just can't change temperature that quickly - and there would have to be a pause inbetween while it waited for the temperature to change. More likely, it's simply related to a property of the factory ABS that takes effect when printing those tiny thin supports. Perhaps they cool differently, perhaps not. There's a great (laborious) patent from 2009 that Stratasys filed that goes into all sorts of details about such things, but pffft.... if you can't change it, who cares :)

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Thu Nov 14, 2013 10:29 am

sfinktah wrote:Nah, the current temp or PLA/ABS setting would be stored in flash, along with the platform height, and could be rewritten quite easily.

Because I am presently swapping between the Mac and the Windows UP software, I have noticed that it gets the platform height from the printer when it's connected.

And because I'm running Windows in VMWare, I can enable USB logging... although I haven't logged an actual print yet.

I'm extremely skeptical about the claims that temperate is changed while printing the support, it just can't change temperature that quickly - and there would have to be a pause inbetween while it waited for the temperature to change. More likely, it's simply related to a property of the factory ABS that takes effect when printing those tiny thin supports. Perhaps they cool differently, perhaps not. There's a great (laborious) patent from 2009 that Stratasys filed that goes into all sorts of details about such things, but pffft.... if you can't change it, who cares :)
That's some poor logic. Because the temp is stored of flash the temps would be ... where's the connection there. The height is stored in flash and uploaded to the software when the printer connects so when defining a job the height is used from the software not from the flash. It's an ingenious idea because it lets the machine specific info (start height calibration) to be carried from software to software. Clever place to store a variable that relates to specific hardware. But temp doesn't relate to the hardware ... it relates to the filament .. to the print speed, to the layer height, to the need for support material (all valid reason to tweak temp). Even if the Up doesn't ever change the temp during print, what you are suggesting is that Up do it differently to just about every other FFF/FDM printer out there. Why would they bother.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Mon Nov 18, 2013 4:24 pm

Lets simplify this a little.

Here's what my fresh Windows install of the UP! 2.0 software knows about my printer:

Image

What we can see here, is that it's also storing information regarding the material currently attached to the printer:
  • How much is left on the roll
    How much has been used in total
    What kind of plastic it is (untested)
There is a distinct possibility that you are not considering, and that is this: The temperature is not sent as part of the print job. It is stored in flash once, and the software doesn't update that flash unless required - or perhaps only when you change rolls.

I have had the opportunity to obtain a full USB sniff/capture of a print job, however initial analysis has not proved particularly helpful in this regard.

Initial ID reply from Printer

Code: Select all


Up dev=3 'usb:2' endpt=81 stream=0 datalen=63 numPackets=0 status=0 0
000: 55 50 21 20 50 6c 75 73 00 00 00 00 00 00 00 00 UP! Plus........
010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
The body of a print job

Code: Select all



Down dev=3 'usb:2' endpt=1 stream=0 datalen=3178 numPackets=0 status=0 0
000: 2f 03 06 00 00 00 0a 00 00 00 01 00 00 00 00 00 /...............
010: 16 c3 00 00 a0 41 06 00 00 00 0b 00 00 00 00 00 .....A..........
020: 00 00 00 ec be 08 20 eb be 08 03 00 00 00 00 00 ...... .........
030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
040: 2f 03 03 00 00 00 00 40 1c c6 00 80 fe c2 00 40 /......@.......@
050: 1c 46 00 00 20 c1 03 00 00 00 00 00 16 c3 0a 17 .F.. ...........
060: 6f c2 00 00 16 c3 00 00 a0 41 03 00 00 00 00 00 o........A......
070: 00 00 00 00 00 00 00 40 1c 46 00 00 00 00 00 00 .......@.F......
080: 2f 03 03 00 00 00 00 00 00 00 00 00 00 00 00 00 /...............
090: 00 00 00 00 00 00 03 00 00 00 00 40 1c c6 00 40 ...........@...@
0a0: 00 c3 00 40 1c 46 00 00 20 41 05 00 00 00 f4 01 ...@.F.. A......
0b0: 00 00 00 83 be 08 f0 fc be 08 00 00 00 00 00 00 ................
0c0: 2f 03 03 00 00 00 00 00 16 c3 0a 17 6f c2 00 00 /...........o...
0d0: 16 c3 00 00 a0 41 03 00 00 00 00 40 1c c6 00 40 .....A.....@...@
0e0: 00 c3 00 40 1c 46 00 00 00 00 03 00 00 00 cd cc ...@.F..........
0f0: cc bd 0a 17 6f c2 27 85 8a c1 55 55 05 42 00 00 ....o.'...UU.B..
100: 2f 03 03 00 00 00 cd cc cc bd 00 40 00 c3 bb c7 /..........@....
110: cf 42 00 00 a0 42 03 00 00 00 cd cc cc bd 0a 17 .B...B..........
120: 6f c2 27 85 8a c1 ab aa 3a 42 03 00 00 00 cd cc o.'.....:B......
130: cc bd 00 40 00 c3 bb c7 cf 42 00 00 a0 42 00 00 ...@.....B...B..
140: 2f 03 03 00 00 00 cd cc cc bd 0a 17 6f c2 27 85 /...........o.'.
150: 8a c1 00 00 70 42 03 00 00 00 cd cc cc bd 00 40 ....pB.........@
160: 00 c3 bb c7 cf 42 00 00 a0 42 03 00 00 00 00 00 .....B...B......
170: 16 c3 0a 17 6f c2 00 00 16 c3 00 00 84 42 00 00 ....o........B..
180: 2f 03 03 00 00 00 00 00 00 00 00 00 00 00 00 40 /..............@
190: 1c 46 00 00 00 00 05 00 00 00 f4 01 00 00 21 00 .F............!.
1a0: 00 00 40 01 00 00 2c ea be 08 03 00 00 00 00 00 ..@...,.........
1b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
1c0: 2f 03 03 00 00 00 00 40 1c c6 00 80 fe c2 00 40 /......@.......@
1d0: 1c 46 00 00 20 c1 03 00 00 00 00 00 16 c3 29 5c .F.. .........)\
1e0: 7f c2 00 00 16 c3 46 81 22 42 03 00 00 00 00 00 ......F."B......
1f0: 00 00 00 00 00 00 00 40 1c 46 00 00 00 00 00 00 .......@.F......
200: 2f 03 03 00 00 00 00 00 00 00 00 00 00 00 00 00 /...............
210: 00 00 00 00 00 00 03 00 00 00 00 40 1c c6 00 40 ...........@...@
220: 00 c3 00 40 1c 46 00 00 20 41 05 00 00 00 f4 01 ...@.F.. A......
230: 00 00 21 00 00 00 60 01 00 00 d0 27 3c 00 00 00 ..!...`....'<...
240: 2f 03 03 00 00 00 00 00 16 c3 29 5c 7f c2 00 00 /.........)\....
250: 16 c3 46 81 22 42 03 00 00 00 00 40 1c c6 00 40 ..F."B.....@...@
260: 00 c3 00 40 1c 46 00 00 00 00 03 00 00 00 cd cc ...@.F..........
270: cc bd 29 5c 7f c2 27 85 8a c1 98 77 65 42 00 00 ..)\..'....weB..

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Mon Nov 18, 2013 9:37 pm

What we can see here, is that it's also storing information regarding the material currently attached to the printer:
  • How much is left on the roll
    How much has been used in total
    What kind of plastic it is (untested)
Yep, it stores the physical aspects of the printer to make it portable from PC to PC
There is a distinct possibility that you are not considering, and that is this: The temperature is not sent as part of the print job. It is stored in flash once, and the software doesn't update that flash unless required - or perhaps only when you change rolls.
I am considering it ... but occams razor would make the bet on it being set in software because a) that's how everyone else does it it and b) because it's a variable so why the hell would you store it a constant since there is no benefit to it and c) there is a reasonable chance it might be varied throughout a print job.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Tue Nov 19, 2013 7:12 am

Print temperature does NOT (intentionally) vary during a print job.

Accepting that stipulation, the razor would actually favour sending the temperature only when you change rolls.

But we need prevaricate nor presume not a nano-second nearer to the heat death of the universe, since I have empirical data.

Code: Select all


Maintenance -> New Spool -> PLA

USB OUT:
000: 56 39 d2 00 00 00
|-----|
00 d2 = 210 (Decimal)




Maintenance -> New Spool -> ABS

USB OUT:
000: 56 39 0e 01 00 00
|-----|
01 0e = 270 (Decimal)

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Tue Nov 19, 2013 7:59 am

.. and here's the PLA "New Spool" temperature from v1.15

Code: Select all


USBIO:  000: 56 39 c8 00 00 00
0xc8 = 200º C (10 degress cooler than normal).

Sound about right?

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Tue Nov 19, 2013 12:30 pm

The fact that it stores this info does not mean that it uses it later for anything ... and if it does that would just be dumb in design terms. Anyway, if it is as you think then the temp will be set when you select the filament and it will be set by the particular software you set that with. If you set the filament type with 1.15 and print with latest software then set the filament with latest software and print with latest software - you should see a temp difference based on your theory. If the temps are the same then its set by the software at time of print. IR thermometer would be the best way to check but if you get a temp sensitive filament and you might be able to tell. Probably a non genuine ABS filament would be best as 200C is getting a little low and you should be able to tell by a willingness to jam if the temp is lower.

twocycler
Posts: 59
Joined: Tue Aug 21, 2012 5:09 am

Re: Custom MCU-module for UP! Mini...

Post by twocycler » Tue Nov 19, 2013 4:54 pm

[quote="sfinktah"]Lets simplify this a little.



There is a distinct possibility that you are not considering, and that is this: The temperature is not sent as part of the print job. It is stored in flash once, and the software doesn't update that flash unless required - or perhaps only when you change rolls.

I have had the opportunity to obtain a full USB sniff/capture of a print job, however initial analysis has not proved particularly helpful in this regard.

quote]

So, based on the USB sniff you performed, if im reading you right, temp for a given material is written to the onboard SSD card after a spool change function and all print parameters reference these two bytes of data for all print temps? Have you looked at the file structure for the internal SSD card? Why doesn't someone write a simple patch utility to patch the config file on the SSD for whatever material temp you want? It would make all the awkward resistor cables obsolete.

Thanks for the info!

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Tue Nov 19, 2013 11:50 pm

First we have to find if it's actually using this setting for anything or if it's just informational. Second it's still not quite as useful as a print mod which you can use while printing - high on first layer for adhesion, lower for easy raft removal up to first print layer then high later for higher interlayer bonding and strong prints.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Wed Nov 20, 2013 3:49 pm

Well, it might be more useful if you wanted to increase the temperature, to (say) print with some stratasys filament @ 290º or whatnot.

twocycler
Posts: 59
Joined: Tue Aug 21, 2012 5:09 am

Re: Custom MCU-module for UP! Mini...

Post by twocycler » Wed Nov 20, 2013 4:19 pm

roller wrote:First we have to find if it's actually using this setting for anything or if it's just informational. Second it's still not quite as useful as a print mod which you can use while printing - high on first layer for adhesion, lower for easy raft removal up to first print layer then high later for higher interlayer bonding and strong prints.
I think someone should simply hack the flash card data and see if the extruder temp changes. Otherwise, you will be stuck continuing to wonder if PP3DP alters the temp at all during the print process. I agree that scaling temp could yield useful improvements, but the accuracy of it would be stymied by the relatively slow response time of the heater block. My impression of the Up! product is that consistency and repeatability were high on their list of priorities. Varying temp during print does not seem like a formula for these goals. It is all conjecture though until someone tries it.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Thu Nov 21, 2013 2:29 pm

twocycler wrote:I think someone should simply hack the flash card data and see if the extruder temp changes. Otherwise, you will be stuck continuing to wonder if PP3DP alters the temp at all during the print process. I agree that scaling temp could yield useful improvements, but the accuracy of it would be stymied by the relatively slow response time of the heater block. My impression of the Up! product is that consistency and repeatability were high on their list of priorities. Varying temp during print does not seem like a formula for these goals. It is all conjecture though until someone tries it.
I couldn't agree more.

But no need to hack the flash, I spent a couple of hours working on the problem, and am happy to announce that I can change the temperature of the extruder and the bed, at will, from the comfort of my Herman Miller Aeron chair, before or even during the print.

I did a test print with cheap ABS at 210º (with external mods disabled), and a bed temp of 120º.

Turns out the bed can't exceed 100º, so they showed as 80% during the print. After aborting the print after the first layer (since I didn't want to see percentages), I got these results:

Image

And this is the end result... somewhat varied due to either the Gekko board I just swapped in (I assume), although it could be temperature related. Reading the entrails of ABS printers is not a specialty of mine.

Image

code probably needs a mac to run on, and can't run at the same time as the UP! app. You fire off the print job in the UP! app, quit, adjust the temperature, and (if you want) re-open the UP! App.

Code: Select all


#!/opt/local/bin/python2.7
# requires py-usb1.0
import sys, usb.core

dev = usb.core.find(idVendor=0x4745, idProduct=0x0001)
if dev is None:
raise ValueError('Sfinktah! Our device is not connected, or you need to change the idVendor/idProduct to match your printer')

dev.set_configuration(1)

extruder = '\x56\x39\xd2\x00\x00\x00' # temp 210 degrees
dev.write(1, extruder, 0);
dev.read(0x81,8,0,1000)

bed = '\x56\x3b\x78\x00\x00\x00' # bed 120 degrees
dev.write(1, bed, 0);
dev.read(0x81,8,0,1000)

dev.write(1, '\x70\x30', 0) # this might be a commit command, or just random noise
dev.read(0x81,8,0,1000)
All tests performed on a Mac, with UP! running in a VMWare Fusion session. YMMV. No Windows support unless you want to pay for it.

Todays odd fact: ABS print temperature is actually set to 268º in current (2.0) version of UP! software, as opposed to 270º in 1.15

twocycler
Posts: 59
Joined: Tue Aug 21, 2012 5:09 am

Re: Custom MCU-module for UP! Mini...

Post by twocycler » Thu Nov 21, 2013 6:19 pm

Hey, nice work (even if you didn't even have to get out of your chair)! Now I will have to run that script on my W8 machine. I just scanned the USB from W8 and it looks like the Plus and Mini use the same VID and PID codes.

sfinktah
Posts: 46
Joined: Sat Aug 17, 2013 10:51 am

Re: Custom MCU-module for UP! Mini...

Post by sfinktah » Fri Nov 22, 2013 5:18 am

Yeah, not surprised the USB IDs are the same, the printer identifies itself via USB anway.

If you have a mini, I imagine the first step you'd be trying would be to get the bed to 100º. I did a test (still running it in fact) of 105º, and it made it.

Good luck running that under windows, from what I have read, pyusb 1.0 does not work so well under windows... but YMMV. You can always install a virtual machine running Linux or something, just to tweak the settings.

It seem to work when run after a print job is already sent to the printer, (I think it might reset the temp when you do an Initialise from software), but I did a test just then... Initialise, (suspend VM), (run temp script), (resume), Print Last Job.

And it kept all the temp settings.

Image

And another test, (since that last one didn't stick to my Gekko). I stopped the print with the hardware switch (does the mini have that?) and restarted it with the same switch (means you don't have to use Initialise in the software), told it to autoheat, and then hit print last job again.

Image
Image
oops, evidently it forgot the extruder temp somewhere, as it shot above my request 225º, so I quickly quit it, ran the script, and instantly heard the beep beep beep of "now printing" :)

roller
Posts: 1622
Joined: Sat Oct 06, 2012 9:09 pm
Location: Brisbane, Australia

Re: Custom MCU-module for UP! Mini...

Post by roller » Fri Nov 22, 2013 2:22 pm

If you have a mini, I imagine the first step you'd be trying would be to get the bed to 100º. I did a test (still running it in fact) of 105º, and it made it.
This is the single regard in which the Mini seems quite different. It doesn't have a variable heater controlled through a temp sensor mainboard loop. Rather it is a fixed temp heater cartridge that is simply set on for the duration of the print and rises to its peak temp of 50C. A few of the Mini hardware hackers have replaced them with higher temp modules (70C seems popular) and no software, mainboard or probe trickery was required. So no point experimenting there.

twocycler
Posts: 59
Joined: Tue Aug 21, 2012 5:09 am

Re: Custom MCU-module for UP! Mini...

Post by twocycler » Fri Nov 22, 2013 4:23 pm

sfinktah wrote:Yeah, not surprised the USB IDs are the same, the printer identifies itself via USB anway.

If you have a mini, I imagine the first step you'd be trying would be to get the bed to 100º. I did a test (still running it in fact) of 105º, and it made it.

Good luck running that under windows, from what I have read, pyusb 1.0 does not work so well under windows... but YMMV. You can always install a virtual machine running Linux or something, just to tweak the settings.

It seem to work when run after a print job is already sent to the printer, (I think it might reset the temp when you do an Initialise from software), but I did a test just then... Initialise, (suspend VM), (run temp script), (resume), Print Last Job.
I have downloaded the pyusb1.0 package but haven't installed it yet. I was wondering about the possibility of adding input lines to the script for temp settings then making it a standalone executable with py2exe. Have you used this much?

I have a Plus and a Mini. My mini has a 80C thermostat instead of the stock 60C part. What I have found is that the raft sticks tenaciously to the perf board and warping is reduced substantially, BUT raft and support removal is not nearly as easy as before. My thought is that the increased heat from the bed heater (it is substantially hotter to the touch), combined with the enclosed environment of the Mini really changes the adhesion properties of the filament as its laid down. This has been using PP3DP filament as well.

Post Reply