Git Product home page Git Product logo

Comments (12)

chron0 avatar chron0 commented on July 25, 2024

Ah, nice thanks, I had to finish some other stuff first, but I'll look into it tonight. And BTW, not to be a smart-ass, but it's all javascript, not java. There is a big difference, even though the names imply similarity :)

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

Ach! That was me trying to type quickly on my phone ;)
Sorry for any confusion.

from picoreflow.

chron0 avatar chron0 commented on July 25, 2024

Could you pull and try how that feels (in terms of the graph display)? You still have to add/edit the points in the curve editor in seconds but at least the graph will show a somewhat more sensible timescale, automagically scaling after 1800 sec (30 min) for now. I've been thinking about this a bit and would really like to give picoReflow a complete UI refactoring but the time is too tight right now.

I think the next sensible solution will be to add some ui element in the curve editor, where the user can simply switch between seconds and hours(including minutes), whatever is preferred for the particular use case. And I would like to have the tickFormater lock on 0 and maybe 15/30 minute ticks, not every odd or even minute inbetween, it seems too confusing to me (as it is now with #d782185).

Unfortunately I ran out of time for my budget today, so depending on where you are, you might be just getting up and can test it and tomorrow when I wake up there will already be feedback :)

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

Having the graph automagically scale is something that I never considered, and it seems to work pretty well! I agree that having the tick labels read in even 10 or 15 minutes increments would make the graph easier to read, but the last point on the graph could get tricky. Would you make the last column short so it lands on the point? Or allow the graph to overflow, and have a dead spot at the end? The first option is the more friendly (although probably not friendly to code).

Really it would be best to do the same for the temperature axis as well. I've been resetting the max temp to 1300C. Having it auto scale to the highest temp value would make the whole thing more versatile (even for my application I can peak at 250, 600, 1000 or 1300C). You of course have the same odd tick label values. Here overshooting would be fine, I think.

I was also thinking about the time entry, and was thinking of just having 3 entry boxes per data point (hours/minutes/seconds). That way the user could enter into any field they wanted, and let the script convert it all into seconds in the background. The user could choose what they wanted to enter, even if it was all in seconds. Right now there's no way for the profile to remember that I entered 120 seconds and not 2 minutes. It would probably need to convert what ever was entered into hh:mm:ss. Would this be an issue? I don't think so . For me, once its entered, the converted format is easier to read. Even now the total time and ETA are converted. Also, my "professional" reflow oven at work uses mm:ss... :-)

This is an awesome start! And I should be able springboard off this new code to make some further modifications. Thanks so much for your help!! I'll share back with an update.

By the way, I was wondering if you had any thoughts on visualizing the fan control? Having the fan icon turn on when the fan is on is good, but what about setting times for the fan to turn on, ramp speed with the mosfet, or show on the graph? Would you show it as another line on the graph with fan speed (in % power) on the right axis? I'd appreciate your thoughts/plans.

from picoreflow.

chron0 avatar chron0 commented on July 25, 2024

Hey scott, sorry for the delay but I'm really in a bad spot right now and except for the critical factor of my forcefully wasted lifetime, my mind is not in the best of spirits to just let go and dig into it. I very much appreciate your feedback though and I'd love to come up with a quick fix but the more I look at the code the more I want to get rid of all this messy original proof-of-concept code and refactor the client to make all these valuable thoughts and considerations much easier to implement than in its current state. It makes no sense to minimize the area of impact of this software by constraining it to reflow soldering purposes. It should be just called picoPID and highly configurable to any kind of hardware and use-case (seconds/mm:ss/hh:mm) that needs comfortable web based PID temperature control. I see this often, that there are plenty of different cases where the user should actually be able to decide how the app presents itself, to give maximum freedom and range of use cases, we maybe didn't even consider. Hell, I could even see an internal scheduler, where you could just connect, create/select a curve and schedule a time to run (cron/at functionality), done. If you were willing to offer some time we could come up with some from of structure what we basically want (feature/infrastructure wise) and use this as a guide for a more efficient/structured development process... what do you think?

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

Sorry, I was away from my computer the last 2 days due to the holiday. I would of course be willing to help however I can. Having a programmable PID controller with added event control would be AWESOME!!

from picoreflow.

chron0 avatar chron0 commented on July 25, 2024

Alrighty then, that's the spirit :) I've opened a new pad to make collaboration a bit more friendly and structured than messing around back and forth in ticket comments. When ever you've got time or are thinking/reflecting about it go to:

https://apollo.open-resource.org/pad/picoPID

I've begun to abstract the the actions, elements and possible flows in a crude draft. But this only covers the inevitable boundaries of my own universe and needs/views. I would very much like to see your view/experience and use cases/interaction scenarios in there as well to figure out what probably everyone will need (basic set) and which features should come optional/configurable so that everyone can adjust the system's behavior, actor availability/control and user interface appeal to either global defaults, per-curve overrides or client setting overrides to achieve the least amount of pre-determination towards specific use cases and make it usable in as many contexts one can imagine.

Just add the things you would like to see as well, even if conflicting with already existing stuff. When we're done with summing up what we both want we can start to compromise and divide it down again to simple packages which should be easy enough to tackle.

It would also be great to collect more feedback of people who would also like to have something like this and also can contribute their scenarios as well. So, if anyone else reads this and has something to contribute then go to the pad and add it. If you know people hacking around with ovens/reflow/kiln or closed-loop temperature control systems in general, send them a link to get their feedback. The more data we collect now, the better we can analyse what people really need from a broad perspective, to work out a really useful, open-source PID control system, which is comfortable and intuitive to use, preferably from a mobile device like a tablet.

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

Sorry for taking so long to reply. I got thrown a ridiculous deadline that took all my time. Its done now, so I'm back in action! Honestly what you've got looks great. I made a few suggestions/comments.

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

I just wanted to let you know that I ran a complete firing using the system, and other then the MAX31855 ground fault problem others are getting (which I just had the code ignore), and having to swap the SSR output, the run went GREAT! The PID loop was right on with out any tweaking!

I did have a small issue of the websocket being slow/non-responsive after 5-6 hours of run time. Other then not being able to monitor the system well, it ran smoothly. Any ideas how to fix this? Could it be that I jut have too many data points after 5 hours and its lagging the whole system?

Thanks for sharing this code, and I'm definitely looking forward to the picoPID!

from picoreflow.

chron0 avatar chron0 commented on July 25, 2024

Nice, I'm happy that it kinda works for you :) Now we just have to iron out the bugs. Using PID for temperature control is actually completely overblown, as a german idiom would say, firing cannons at sparrows but it's a proven and reliable technology, so we figured it wouldn't hurt. Thanks for using, testing and coming back and reporting to help improve it.

from picoreflow.

ScottW1 avatar ScottW1 commented on July 25, 2024

Is there an easy way in the code, like add a time multiplier, to only store data points every 5 seconds or so? Even 30 seconds would probably be fine in my situation. That might alleviate the resource drain of having millions of data points after a long run.

from picoreflow.

chron0 avatar chron0 commented on July 25, 2024

Nope, not yet anyways and I don't think that is really the issue. Of course we could think about building some input throttling but today storage is cheap and available and leveldb is is pretty robust and scales very well up and down. The issue is the aggregation when querying, which has to kick in automatically if the query would return a dataset that is too big for the browser to handle so that we can have both, a macroscopic view, showing the whole timeframe aggregated to viewer points and the ability to "zoom" in, with full data resolution in a microscopic view which might help with other things.

from picoreflow.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.