Comments (4)
Hi @han94ros !
Not at all, I'm pleased you're making use of it. To be honest, I got a bit carried away with the OOP structures on this project: having learnt how, I forgot to ask why. Maybe if I were to redo it I'd use fewer fancy features and shrink the code a lot, but there you go.
I should explain the existence of the pins_4chan.h
and pins_2chan.h
files: once, there was a version of this board which only had two OPA output stages, using the OPA549 for higher currents. The version of the board that you have however uses 4x OPA548 devices instead. In this way it is the "4 channel version", although those four channels are actually used to implement two bipolar output channels. Unless you've redesigned the PCB itself or rolled back to a much older version, you should therefore use the four-channel set of pin connections in pins_4chan.h
.
And yes, I'd be happy to chat both about ARTIQ and this! I'll send you an email.
from digitaltemperaturecontroller.
I will clarify the PCB design and get back to you.
from digitaltemperaturecontroller.
Dear Charles,
Thank you again for this design and replies, they have been very useful!
I am using BPA and BPB as two output channels. The onboard thermistors are used as set resistors, so 1t, 2t are used as inputs.
As you suggested, pin_4chan.h is used.
By doing these, I was able to conduct most of the commands, including 'LOCK'. However, the temperature could not get stable at the setpoint. I have tried it on two completely different systems to make sure that the oscillation was not caused by the system, but I observed at least 0.01 volt fluctuation in both cases, by reading the output from 'ERRO' function. I tried to modify the PID parameters to improve this, however, changing PID parameters didn't seem to affect the temperature oscillation. For example, I changed P gain from 10 to 1 to 0.1, the amplitude of the oscillation didn't change much.
My colleague Roshan, who has also read your code, suggested that the class TemporaryLooper might be helpful with achieving autotuning function. I tried to include this class in the controller.h by uncommenting the line, however, it failed to find 'IOInterface.h' file that was called in 'TemporaryLooper.h'.
I wonder please could you help with the current oscillation issue? Any ideas could be useful.
Thank you for your help. I really appreciate your patience :)
Best regards,
Sarah
from digitaltemperaturecontroller.
Hi Sarah,
Great to hear you've got the board working! If you've got ERRO? 1t
producing a value which relates to your temperature and you can drive current via the outputs using e.g. VOLT BPA 1
then you've got everything set up correctly.
It sounds like you're able to lock to the setpoint but are still setting oscillations. Just to confirm that everything is working, I'd suggest locking to a different setpoint and making sure that the temperature responds and that you then see oscillations at this new temperature. If that's the case, from here it's just a matter of tuning the PID parameters. TemporaryLooper
was indeed made so that things like autotuning could be implemented. I didn't do this in the end, so you'd have to add this yourself. If you make it, please do contribute it back to this repository!
However, you'll probably find it much easier to tune manually. I'd suggest the Ziegler-Nichols rules as a decent starting point: https://en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method.
from digitaltemperaturecontroller.
Related Issues (3)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from digitaltemperaturecontroller.