Incubateur bon marché

From Hackuarium
Jump to navigation Jump to search



https://github.com/BioDesignRealWorld/IncubaLibre

Hardware

  • Minimize part count
  • Sur le hardware : tu peux peut-etre baisser le nombre de compo en mettant r4 a 1.5 kOhm et c4 a 1 uF ? Si tu fais un truc simple ca vaut peut-etre le coup... in english : reduce the number of different parts, to keep it simple (and maybe a bit cheaper ?)
  • Replace mechanical relay by triac + otpoisolator ? Forgo the optoisolator ?
  • Find better trimpot or use a push button ? Long push to kill, quick push to cycle modes (temperatures), feedback with led blinking pattern.
  • Use only one LED, to free one i2c pin, so that we can talk to other stuff, like a remote monitor or a screen. Use blink patterns to communicate with the human when we are isolated.

Hardware box

It seems that the design of the container is also very important.

  • The light bulb heats by radiation and this seems to be a problem for the following reasons.
  • The box, tempearture sensor, and objects placed in the incubator can have very different heat absorption coefficient, leading to the system not heating at a reliable temperature.
  • From first experience, it seems that Petri boxes display some greenhouse effect and the inside of the petri box heat up way over the target temperature over time.
  • Maybe a solution would be to switch to the blow dryer, as Boris is doing now.

Software

  • Flow changes:

Maintenant, je mesure la temperature a la fin du cycle 'allumé' du relai. Je pense que ça crée une irrégularité dans la boucle PID. Peut-être que je devrais faire ça dans l'interrupt de fin du compteur. La chaleur s'est bien stabilisée, et peut-être que le relai s'allume à ce moment là, mais il n'a pas trop le temps d'affecter la température du senseur je pense. A tester. l. 217 : tu mesures trimpot, alors pourquoi preciser que le chauffage est eteint. C'est un reste de mesure de temperature ? l. 189 : Moi j'aurais mis ca l 217 avec l'autre mesure, car ca fait plus longtemps que tu es eteinds, la chaleur s'est propagee. Ou tu veux etre conservatif pour pas tuer les bestioles ? D'autant que si tu vires cette ligne tu peux passer en mode PWM sur timer1 ? Safety of the small beasts : no overshoot allowed, set a max temperature (kill zone...) and force-cut heating if threading in the danger zone (with an associated blink pattern ?).

   Bonne idée!
   Simplifications on the temperature measurement process
  • Linear model of the thermistor response : no need for a LUT anymore. Which gives us back a bit of space back.
   I would rather propose that we shrink down the LUT to the range of interest. This should be narrow enough that it won't take too much space in memory and we do not sacrifice the precision of the measurement.
   One thing that we need to check is that the readings are precise in the range of interest (35 - 45 deg C ).
   We shall also make sure that the error is in the right direction (we want to be conservative, so overestimating temperature in the lower extremity of the range (think below set-point) should be ok and overestimating in the higher extremity of the range should also be fine.

Shall we prepare different sets of coefficients for different set-points ?

   Use fixed point arithmetics

The objective here is to get rid of the floating point code, because it's big. If this goes well, we could switch to a attiny45.

PID

Autotune

In this : https://learn.adafruit.com/sous-vide-powered-by-arduino-the-sous-viduino/autotune They refer to http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/#more-1893 as a way to tune the system. I think it would be a plus since the heater / bioreactor specifications are not fixed in our system. See also : https://learn.adafruit.com/sous-vide-powered-by-arduino-the-sous-viduino/persistent-data There would be a place in the 'UI' where we can reset these settings and do the autotune routine. A new blinking pattern after holding the switch for 10 s ?