BCN Smart Purge

Discussion in 'Getting Started' started by Paul Arden, Nov 27, 2019.

  1. Paul Arden

    Paul Arden Well-Known Member

    Joined:
    Aug 28, 2019
    Messages:
    162
    Likes Received:
    56
    From what I have heard, the BCN Sigma (an IDEX setup with purge buckets on each side) has one of the better working purge processes for multi-material out there. I went looking for information on how they do it and came across this post on the Duet forums.

    It’s a pretty interesting approach (tuning the purge length based on idle time) and has some merit. Unfortunately the thread doesn’t really talk about ways this could be done in RepRapFirmware. It also requires both the idle time and filament profile to work well (since the time depends on the filament type as well).

    Any thoughts on their approach? Has anyone seen what BCN actually use for the wiper in their purge system, I haven’t been able to find much information on that either. My feeling about their purging working well isn’t based on direct experience so I’d also be curious if others have seen it in action.

    Obviously the reason for the interest is trying to get a better purge process for the Toolchanger. I do like the idea of purging being based on idle time since with small extrusions of different colours right now you could often get away with no purge but it will always purge the full amount.
     
  2. Krayn

    Krayn Well-Known Member

    Joined:
    Aug 11, 2019
    Messages:
    49
    Likes Received:
    13
    I was thinking about a way to to preheat a hotend in advance prior to a filament swap and had the idea of writing a post processor that reads M73's that PrusaSlicer can generate. M73s are spit out when you enable "Supports Remaining Times" in the printer settings window. Prusa Slicer will then attempt to calculate the time to complete a print, and spit out an M73 every minute with an approximate percentage and time remaining.


    On a prusa printer it can be decently accurate but on the toolchanger we might have to allow prusaslicer to control accelerations and add some time for every filament swap in the program. To be honest I'm not sure how much time resolution we really need, as it might be immediately useful if we know if we've used an extruder in the last minute, ten minutes or thirty minutes.
     
  3. Paul Arden

    Paul Arden Well-Known Member

    Joined:
    Aug 28, 2019
    Messages:
    162
    Likes Received:
    56
    I was thinking this might help more at the scale of seconds. For example a big problem right now is doing a full purge between rapid tool changes tends to result in more oozing and in some cases tool changes get fast enough that purging really doesn’t make much sense. However determining this from the slicer seems pretty hard since it has no idea how long a tool change actually takes.
     
  4. Krayn

    Krayn Well-Known Member

    Joined:
    Aug 11, 2019
    Messages:
    49
    Likes Received:
    13
    Yeah, that's a harder problem. Another idea I had was to try and count the filament usage similarly to how the duet's web interface does. I wonder if it's possible to find small extrusions this way.
    Duet's firmware is open source so I suppose it's possible to add in an extruder idle timer. No idea how difficult that would be.
     
  5. Paul Arden

    Paul Arden Well-Known Member

    Joined:
    Aug 28, 2019
    Messages:
    162
    Likes Received:
    56
    I stumbled across this after a bit of searching (not sure why I had to search, it’s right there on their site in the end) for what BCN are using as a wiper material.

    https://www.bcn3d.com/product/silicone-cloth/

    Does anyone have any idea what silicone cloth actually is? If I search for it most of the references are to gun cleaning products, however those look more like thin cloths where as based on what I can see from the STLs for the holders, these BCN cloths are at least 2mm thick.

    I was hoping to find a source of this material to cut up and try for wiping, however so far I haven’t located anything. Perhaps there is another name for it. Since this original post I’ve asked others who own a BCN Sigma what they thought of the purge/wipe solution and was told it is very effective, which I imagine is a combination of the smart purge in the firmware and the wipe setup, if I could find this material I could at least replicate half of what they are doing.
     
  6. Krayn

    Krayn Well-Known Member

    Joined:
    Aug 11, 2019
    Messages:
    49
    Likes Received:
    13
    I had no idea that the BCN Sigma was open source, so I went to their github and started looking through their code. There are a lot of interesting things in there. There is a post processing python script that among other things does a purge if there have been too many retractions and unretractions in an attempt to prevent grinding filament. I started to look for references to their smart purge system and found the implementation in their firmware.
    In their LCD FSM they have this to keep track of extruder idle time:
    Code:
        if (millis() >= waitPeriod_inactive){
          
            time_inactive_extruder[!active_extruder] += 1;// 1 second
            waitPeriod_inactive=1000+millis();
        }
    Then in their main firmware file they have a dedicated smart purge gcode:
    Code:
    purge_distance = time_inactive_extruder[active_extruder]*Slope;
                if(purge_distance_min > purge_distance){
                    purge_distance = purge_distance_min;
                }
                if(purge_distance_max < purge_distance){
                    purge_distance = purge_distance_max;
                }
    In general their smart purge system appears relatively simple to implement and is probably very effective once you tune the slope variable to fit the material you are printing.

    The problem is that I'm having a hard time figuring out how one would implement a smart purge into duet without support for variables or a new smart extrusion gcode command. The latter is a project I might try out once I have some time. I'm thinking we could keep and update a timestamp of the last time an extrduer was used in the toolchange gcode handler and add a new command to extrude a variable amount of filament based on this value + a scaler. Then we could throw that into a prime.g along with the gcode that would control the actual wiping.


    As for the silicone cloth: I have no idea what it is. I wonder if it's just a thin sheet of high temperature silicone. I recently created my own implementation of brendonbuilds' wiper buckets using some high temperature silicone sheets I bought off mcmastercarr. If you find out let me know, they might be perfect for these wiper buckets.
     
  7. Nibbels

    Nibbels Well-Known Member

    Joined:
    Dec 12, 2019
    Messages:
    165
    Likes Received:
    32
    About purging and filling the nozzle up:
    My previous printers have DMS strain gauges measuring the force between extruder and nozzle. Note: on direct extruders.

    I used repetier firmware v1 and included several usefull applications based on the information this inner nozzle pressure gives me.

    One of them was a gcode which extrudes until a given pressure was reached. That seemed to be very reliable to recognize a filled nozzle. Even if the filament is different. Just have the e-speed high while pushing. This is like having an E endstop. Of course wiping is still necessary but only small amounts.

    I plan to try to have strain gauges again if I can somehow apply such sensors on titan aeros or later the hemeras housings. Maybe I would have to cut/saw into it and simulate strain sensor placement.

    Well I still dont know if I will be able to do such crazy shit with duet3d but my old printers can autoadjust the first layer height using the default inner nozzle pressure as reference. 0.08 In first layer is possible. And I get my tool offset automatically because a collision with the bed gives reverse force. Well and my printer can autoadjust its speed according to the needed extrusion force. And it is able to decrease volume output when the force gets big for 100% solid prints.

    I started playing around with that kind of features in 2016.
    But implementing such into a complete new programming and electronics environment is possibly not easy. And I have to do/learn the sensor application too, because I will never be able to fit standard sensors into an Hemera for example.
    Now I have a Toolchanger which lacks my beloved features :D

    Does anyone here have similare knowledge or strain sensor application experience?
     

Share This Page