freeMemory()
8
Gordon: Add this line to line 73 in vent.h extern char *__brkval; // leading double-underscore to prevent name collisions and around line 139 in the same file, insert: int freeMemory(); // Function prototype Add this line around line 101 in the INO file: char *__brkval; Finally, add this function block to the INO file around line 179: / Purpose: To measure the runtime amount of SRAM memory available at the point where called Parameter list: void Return value: int the amount of remaining free SRAM at the point called CAUTION: Function assumes that Arduino.h is #include'd in the project / int freeMemory() { char top; return __brkval ? &top - __brkval : &top - __malloc_heap_start; } When you wish to measure SRAM at a point in the program, insert: Serial.print("============ free memory: "); Serial.println(freeMemory()); I cannot test it on the vent code because of the runtime test for the pressure sensor, which hangs my system. Let me know if it doesn't work. Jack, W8TEE
|
IMPORTANT
4
All: I was going through the code looking for spots for a speed-up and found the following statement in the INO file, line 665: if ( (current_phase > cut_off) & (inspiratory_pause == 0) & (p + 1 < atmospheric_pressure) ) These look very suspicious and should likely be relational operators, not bitwise operators. I checked all uses of the bitwise operators and the rest of them are in the Nano gui file working on the display data. Those likely are bitwise operators, so I think the line above is the only one. Jack, W8TEE
|
PANDAflow
3
A new design from the PANDA team. Flow Restrictor Valve www.thingiverse.com/thing:4289425 James
|
Free/Pro-Bono Injection Molding Needed!
The UF CSSALT Open Source Ventilator team is looking for free/pro-bono injection molding. If you are able to help us out or can connect us to someone who can, please reply to this post or email me at khao2016@.... Thanks!
|
Readily Available One Way Valve
4
#ExhalationValve
Hi, I was thinking of using a check valve to pressurize my Toro jar-top exhalation valve. The idea is to not need an extra solenoid valve to get the dwell time. The pressure to close the valve would be supplied through a check valve, then the valve could stay closed after the closing air pressure stops. After a dwell delay the solenoid, already on the modified sprinkler valve, could be activated to release the pressure and open the exhalation path. In looking for ways to construct a one way check valve, I realized I had a reasonable supply of one valves already sitting around the house, in the humble hand soap pump dispensers. Tom wb6b ----------- ----------- -----------
|
alternative inspiratory valve
3
Thanks MA! is it ok if include your photo from 1102 in my briefing doc? This is essentially just taking a solenoid based valve and replacing the solenoid with a pneumatic line, right? or am I missing something? e Erich Schulz, mbbs, mba, fanzca 0410 277 408
|
#ExhalationValve
77
#ExhalationValve
Please help make the exhalation valve last one million cycles at 20 PSI! build instructions here: https://simulation.health.ufl.edu/technology-development/open-source-ventilator-project/build-test-instructions/ later today we will post version 2 with a similar exhalation valve build
|
Help with Tidal Volume
4
Dear Sirs, First a disclaimer: a have zero background about Tidal Volume. I only imagine that it estimates air volume based in a factor of the pressure accumulated in the time domain. If my assumption is correct than I believe that the sample code I have received to calculate Tidal Volume is incorrect/incompleted. It has been called with no pre-defined time as the function has been called from the main loop. The main loop timing, for the POC sample code, may change as features are added/removed as well as CPU load changes per loop duo different operations (buttons/LCD updates etc). I do not see any compensation based on elapse time. Here is the actual code: exLitersPerCycle = exLitersPerCycle + ( CalculateInstantFlow() * 60 / ( (float) (beats_per_minute +MAX_PHASES)) ) ; where: CalculateInstantFlow(): returns a relative pressure (from pressure calibrated reference) beats_per_minute: we can consider "constant" if operator does not change it MAX_PHASES: constant It may work if it is called from a known periodic time or multiplies by an elapse factor. But even so I would guess that it is missing a coefficient tied to the pipes and other characteristics. I would imagine that wider pipes vs narrow pipes with same reading pressure would have different tidal volumes as wider pipes would "deliver" more volume per milliseconds If all that is correct then I assume that we need method to find this coefficient. Thoughts?
|
Air Fitting Requirements
2
I'm looking at the enclosure requirements. I understand from Gordon that commercial ventilators use some variation of Luer Lock fittings. Does anyone know definitively what kind of fitting we should use for the metering air circuits for the pressure transducers? What diameter tubing have we settled on for the metering air circuits? I'm looking for preferably a bulkhead mount fitting that can attach to the chassis. The inside fitting would preferably be barbed and connect to the on board pressure sensor by a short length of tubing. The pressure sensors have a size tolerance of .115-.125 port diameter so I believe 1/8" ID tubing is appropriate. Keep in mind that the smallest ID tubing will give the lowest volume and therefore have the highest dynamic response. As there are three fittings. I wonder if different sized fittings should be used to prevent installing the wrong tube in the wrong port. Is there any standard for this? As a secondary question the UF prototype appears to be using a shop air chuck to supply the compresed air to the regulator. Is there a standard "air chuck" in use in hospital rooms for the air supply? 73, Mike N8WFF
|
Help on boot loader¡®s?
5
OK, need to call on all of you experts once again. we are having troubles with one particular batch of Nanos not being willing to be uploaded new code. this batch of three did not seem to have a boot loader on it, so I followed instructions on the Internet and used an Arduino Uno to load a boot loader on to them, following which they initially seemed to work. However, we have had intermittent problems getting the IDE to load to these Nanos. anybody have something we should check? we have also made sure that we have the right comport, right type of device, I have suggested to the gentleman having trouble that he check com port speeds at Cetera at Cetera and we are a bit perplexed suggestions? You guys have been great, answering lots and lots of issues quickly
|
UQ Ventilator Design Hackathon
5
Hi Folk, FYI my alma mater is running a Ventilator Design Hackathon to "Design an ¡®open source¡¯, low-cost, simple ventilator that can serve COVID-19 patients, in an emergency timeframe." The Prof running the hackathon emailed me tonight to tell me he had over 200 students (mostly 2nd and 3rd year engineers of different flavours) enrolled. Sadly the event web-page features yet-another-baq-squeezer (henceforth to be referred to as YABS). I will do my utmost to derail any desires to pursue this strategy! You may wish to consider if there are any opportunities for them to address particular pain points you are having. Commencing Tuesday 14 April at 9am and ending Friday 17 April at 3pm. The event will be closed by out by presentations of designs by teams from 3pm to 5pm. (all times UTC-10). This event was part of my motivation for writing the briefing. e Erich Schulz, mbbs, mba, fanzca 0410 277 408
|
UQ Ventilator Design Hackathont
https://github.com/CSSALTlab/Open_Source_Ventilator/tree/master/ControllerSourceCode
|
RC Servo controlled low pressure valve
6
#fanpressuredesign
Hi Erich, I found some cheat sheets and was able to figure out OpenSCAD well enough to produce this exploded view drawing. Basically the valve consists of five layers of plexiglass sheet sandwiched together. Likely 2.38mm thick. The top manifold layer is twice or more thicker. This is just a first rough concept drawing, with no premature optimizations included. An overpressure poppet valve and a negative pressure one way valve should be added to the valve body. A strip on enclosed foam elastomer of some sort could replace the small gap barrier across the bottom of the valve disk in the "air chamber" layer of the valve assembly. It could be a safety feature in that it is possible to allow some play of the valve disk against the top valve plate (the layer below the manifold). The air pressure will hold the valve disk against the top plate. If supply pressure is lost and a positive pressure be exerted by the patient, or negative pressure from the patient the valve disk could lift away from the top valve plate and provide an air path. However, it will be reverse to the normal flow. Inline filters should be included in the supply and exhaust lines if enabling this "safety" breathing path is desired. I'm waiting on the RC servos I ordered to arrive to see how well this design works. Tom, wb6b ----- -----
|
P Sensor mounting
35
I suggest that the pressure sensor be mounted in a 1" PVC T with a threaded leg using a threaded cap. The sensor can be mounted in the cap and wires brought out through a hole easily drilled in the flat cap. If the sensor fails it can be easily replaced.
|
zoom meeting very soon on inter-group collaboration
Hi folk, some people have reached out to me and invited to me to a zoom meeting - I don't know them, but they seem good hearted. If you're interested in facilitating inter-group collaboration please join! Hey Jonas!! Topic: Ventilation Team Meeting (all welcome) Time: Apr 11, 2020 08:00 PM Eastern Time (US and Canada) Join Zoom Meeting: https://zoom.us/j/210092599?pwd=aS9vbXlVVmg4NDdLZlN0YmJuRlVLdz09 Meeting ID: 210 092 599 Password: 637594 One tap mobile: +19292056099,,210092599#,,#,637594# US (New York) +12532158782,,210092599#,,#,637594# US Dial by your location: +1 929 205 6099 US (New York) +1 253 215 8782 US +1 301 715 8592 US +1 312 626 6799 US (Chicago) +1 346 248 7799 US (Houston) +1 669 900 6833 US (San Jose) Meeting ID: 210 092 599 Password: 637594 Find your local number: https://zoom.us/u/ad0ZPBIdot I will be keep notes here Erich Schulz, mbbs, mba, fanzca 0410 277 408
|
Anyone working on solutions that work on 12VDC and facilities without compressed air?
22
I wonder if anyone in this group is working on solutions that work on 12VDC (or 3S Lithium batteries) to be used in field setting and/or facilities without availability of compressed air? Thanks --Ron N7FTZ
|
FINISHING: Capturing Baselines, and Adjusting Alarms
9
Folks, it is time to FINISH the software. This is Saturday, and I plan to build a physical hardware today, The team at UF needs a freeze on the hardware and needs to have something that WORKS. The FDA requires FAR LESS testing than we get done very single day now. We have now conquered the I2C issue, whether optimally or not. Now in my view we only need two more things: (1) SOME WAY for the user to be able to notify the software "Now is the time to gather our baseline pressure, or zero this or that" -- as needed for sensors. Because we can't just assume that on a restart that the patient is disconnected, and the clinician may require a change in a pressure, or a timing, or add positive-end-expiratory-pressure (PEEP) that CHANGES the baseline pressure that our system sees in the BMP280. So we need a way to allow the user to indicate "now is the chance to grab your baelines for this or that" (2) SOME WAY for the user to modify the Alarms. I don't really care how fancy, and I don't think the FDA cares either. And we don't have infinite memory available. -- The LOW PRESS alarm needs to fire if the inspiratory pressure never increases above 3 cm above baseline during inspiration. (The baseline will CHANGE if the clinician adds more PEEP mechanically.) -- The HI PRESS alarm needs to be in some way adjustable. Find a way. Default is 35 cm H2o above "baseline" and range is probably 20-60 cmH2O -- The TIDAL VOLUME needs low and high alarms and they need to be adjustable in SOME WAY-- either in reference to what is happening, or even more simply (and QUITE WORKABLE) just set to absolute numbers. For example, a reasonable set of tidal volume alarms might be: (THIS IS A SUGGESTION NOT A REQUIREMENT) Tidal Alarms LOW HIGH 1 100 300 2 200 400 3 300 600 4 400 700 5 500 800 6 600 900 7 700 1000 8 800 1100 (all values are cc (equivalent to milliliters) If you can individually just set low and high tidal volumes, --- that probably even BETTER. Being able to set high and low to specific values is how most aneshtesthisa equipment that I used in my career normally worked. But this is not "normal" anymore. We just need a way to make some setting..... I don't particularly care at this moment exactly HOW and I don't think the FDA cares either. But we need it FINISHED THANKS!!! Gordon Gibby My current crappy code enclosed. NO WARANTEE FOR ANY PURPOSE WHATSOEVER. But it now survives removing an I2C line.
|
Backup battery
3
Dear all, I've been re-reading the specs and considering the "must have" 30 minutes backup battery. The issue had been addressed for sure but in the all this coming and going of messages I might have missed out if the backup had been dealt with. I realize that it cannot be a priority during this phase of testing and refining the essential stuff, but if this has to be taken on, someone here may find some time to addres it. Raf
|
Volume Assembly
10
I'm located in Silicon Valley (Mountain View, CA) surrounded by idle electronic design and assembly resources. A number of us would love to get a viable ventilator built and donated where needed quickly. Please let us know how we can help. Regards, Phil Marcoux BSEE UF '70
|
Loop Timer
4
The Arduino millis() millisecond timer runs uninterrupted and loops around after about 50 days. This can be used to time between events such as loop completion, or loop being delayed. This may be helpful...or not. Arv _._
|