> Firstly I am pretty sure the blue trace for Valve is not showing the actual valve in use. I increased the pump on delay time and I could see the delay in the graph and the log showed the valve opening later but the graph didn't.
That's true, it records the request for valve actuation,
not the actual actuation, so if it has to wait for the pump to
start up, this delay is not shown. This is admittedly confusing
and could be fixed quite easily.
The graph was not intended to create a veritable "machine
history". It is only about how the vacuum sensor signal behaves
after the valve actuation was requested. The goal here is to distinguish
between when the part is nicely picked, i.e. creating a good
vacuum seal, and when it is not. The graph can give you feed-back
as to what happens there, and typically, only the end of the graph
is relevant, i.e., "does the vacuum level rise to the right
value in time?". The idea is to experiment with successful
picks and to provoke ones that aren't, like with an empty feeder,
then set the "good range" to discriminate between the two.
> I don't understand what the graph is showing. Why the two steps?
If you look into your log, you see these are the vacuum readings as reported by your controller. They match exactly what the graph plots over time.
There is the pump startup delay between the first and the second measurement, and the graph simply draws a straight line between the two, which is obviously a simplification.
But from then on, the vacuum readings are continuous and at high
rate (2ms, ~500Hz). But your controller seems to read the ADC only
every 50ms (20Hz) and then just reports the same value over and
over again, which creates the steps in the graph. It is probably
tuned for 3D printing where the measured temperatures cannot
fluctuate that much over time. You have a smoothie controller, so
you can change that polling interval on the controller side. There
is a readings_per_second setting,
on my machine it is at 320 (don't remember where that
came from).
> It might be nice if the graph also showed the Z height so you can better relate the timing of the graph.
Yes that would be nice, but not so easy, because (again) what we know is when we request the nozzle to move in Z, we do not really know when it will really move, and we do not want to add unnecessary "wait for completion" requests to know when it is done, because they disrupt the whole optimized asynchronous driver parallelism. Nowadays we could probably ask the Motion Planner what it predicted the Z to be at the current time, which is reasonably accurate on a Smoothie or Duet. That stuff wasn't around back when I first developed the vacuum sensing. 😉
https://makr.zone/openpnp-advanced-vacuum-sensing-part-on-part-off-detect/421/
I will keep these improvements in mind... or anybody is welcome to contribute 😁
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b95c42dc-0e98-4d9f-b9f2-c9c2439cde69n%40googlegroups.com.
> It is confusing but also useless because from what I can see it will always be shown turning on at time zero.
It is not useless in the PartOff graph. And both graphs are made the same way for consistency.
https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Vacuum-Sensing#valve-openclose-time
> The biggest problem I
have is correlating the graph to actual events.
I already agreed that this could be improved. For now just take that "elbow" as the actual valve actuation.
You also have to take into account that many of us keep the pump
running for better speed and vacuum stabilty, and then the "pump
wait" confusion resolves itself:
https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Vacuum-Setup#pump-control-setup
I for one run the pump on a hysteresis, based on a vacuum
reservoir pressure:
> adding dots where actual samples occur to distinguish point to point lines from actual samples
That's actually a graph feature Tony added later, I agree it
would be useful here.
> a function to generate a graph on demand for some predefined period would be useful for testing valve operation, leakage etc Otherwise I might need to get the scope out ;-)
Unfortunately not that easy to to. I believe Smoothie has a periodic reporting feature.
The other suggestions I think are better addressed by revamping vacuum sensing stuff a bit. Once Z axis and valve are better indicated, much of the mystery is gone.
> and a side note, I find the axis values on all graphs hard to read - they need to be a darker shade of grey
You should probably look at your monitor's gamma or contrast
setting. And use the mouse hovering feature for earnest readings.
Feel free to contribute!
_Mark
My Smoothie config did not have a readings_per_second entry but I found where to add it and it now samples at 2mS. :-)
It looks like this for anyone interested:YOu hve o be a bit
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/cfe4de87-026b-48e7-b82e-67f681eb18ccn%40googlegroups.com.
Just a wild guess:
Pick dwell times are defined in two places: for nozzles (fora a
basic wait) and nozzle tips (for a nozzle tip specific wait). They
are summed together.
Maybe you oversaw one or the other.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b50b5278-a4ef-46ee-ba6b-7f9c47423ce7n%40googlegroups.com.
It is a strange log extract. I don't see any controller
responses.
Curious that the next actuation equally takes 52ms. Almost as if
the controller takes that long.
Please send a whole unaltered, unfiltered log at TRACE level.
Best send one of the past 100 log files that OpenPnP keeps in the
log subdirectory.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/bc6daeef-0165-4f58-a8d1-92e709c3ee18n%40googlegroups.com.
Even if you specify 0ms for pump delay and/or pick dwell, the
thread will go asleep, which means the OS scheduler will
potentially select other threads for running first, i.e. it might
take much longer than "0ms" for our thread to be scheduled again
(granularity). If your PC is otherwise loaded, or has an
older/cheap/thermally constrained/energy saving CPU with fewer
cores (that might already struggle with decoding two quality web
cam MJPEG streams), the effect might be more prominent.
https://www.javamex.com/tutorials/threads/sleep.shtml
In my own (Windows) experience, I would expect a typical 15ms scheduling granularity, but in your case the granularity seems to be ~50ms, as I see it happen consistently, four times in the log.
That's all interesting as a computer science issue, but quite
irrelevant in practical terms. It will always take much more than
50ms for a vacuum switch to become effective. And you can still
use your vacuum graph for diagnostics, as only the right-hand part
matters, where the measured level reaches and stays in its good
range, or not.
Note, the graph extends to the check events you selected, so
there may also be individual Alignment (if you aligned)
and Before Place measurements. I already agreed, it would
be nice to mark the measurements with a dot.
Having said that, I will keep the Thread.sleep() shortcomings in
mind for any revision.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/6b925f6e-01e5-48b8-8213-16f3ab310a75n%40googlegroups.com.