Skip to main content
HardwareX logoLink to HardwareX
. 2021 Sep 25;10:e00234. doi: 10.1016/j.ohx.2021.e00234

Physiologic-range three/two-way valve for respiratory circuits

Lui Holder-Pearson 1, Theodore Lerios 1, J Geoffrey Chase 1
PMCID: PMC9123468  PMID: 35607685

Graphical abstract

graphic file with name ga1.jpg

Keywords: Respiratory device, Two-way valve, Flow control

Abstract

A 3D-printed three/two-way valve compatible with respiratory circuits is presented. It is actuated by a servo motor (HXT12K), which is able to be controlled by any PWM-capable micro controller. The valve sufficiently isolates respiratory circuits to deliver fully customisable mechanical ventilation breathing cycles, with differences in driving and end-expiratory pressures of up to 30cmH2O successfully demonstrated. It is suitable for multiplexing ventilators for in-series breathing, or providing separate ventilation to each individual lung in a single patient. Each switching valve costs approximately $16USD, $10 of which is the servo motor which can be reused, allowing subsequent devices for only $6USD of 3D printing and common engineering components. The valve has proven reliable for at least 50,000 state changes over at least one month.


Specifications table:

Hardware name ACTIV Valve

Subject area
  • Mechanical Engineering

  • Biomedical Engineering

  • Medical valve

Hardware type
  • Clinical Tool

  • Flow diverter

  • Ventilator or CPAP applicable

Open source license Creative Commons Attribution-ShareAlike 4.0
Cost of hardware $16USD initially, $6USD if reusing servo
Source file repository https://doi.org/10.17605/osf.io/ktxuh

1. Hardware in context

In the COVID-19 pandemic, there were numerous projects targeting the potential or realised need for more mechanical ventilators [1], [2], [3], [4]. Where several open-source mechanical ventilator designs were being developed, most of these either were basic and did not allow for the monitoring and customisation with which clinicians are familiar with, and/or required expensive or inaccessible components. Another area investigated was the feasibility of ventilating multiple patients from a single ventilator [5], [6]. A joint statement from the Society of Critical Care Medicine, American Association for Respiratory Care, American Society of Anesthesiologists, Anesthesia Patient Safety Foundation, American Association of Critical-Care Nurses, and American College of Chest Physicians stated “sharing mechanical ventilators should not be attempted because it cannot be done safely with current equipment[7]. A large number of reasons were given supporting this viewpoint, most of which addressed the lack of ability to monitor each patient, and to provide individualised care. 1

The chief assumption made discussing treating multiple patients using a single mechanical ventilator was the principle of ventilating two or more patients in parallel: Connecting multiple patients using basic ‘Y’ valves, increasing the allowable or target volumes, and possibly use restrictive valves to allow relative customisation. The problems can be circumvented using a series ventilation approach as shown in Fig. 1: Connect two patients using actuated valves, detect inspiration, and divert every second breath to a different patient [8], [9]. This philosophy successfully mitigates the issues raised in the joint statement [7], [8], [9], and is realised as the Actuated, Closed-loop, Time-series Inspiratory Valve (ACTIV) ventilation system. A series of 3D-printed Venturi-tubes are used to detect pressures and flows [10] within the system, and an Arduino-based controller is used to change the state of the valve presented in this document between the two states as shown in Fig. 2, delivering ventilatory effort to first one patient, and then the other. The resultant in-series ventilation effectively sees the inspiratory connection of the ventilator connected to one patient, and then the other after a breath has been delivered to the first patient. An example of a demonstration with two mechanical lungs using this device can be seen at:  https://www.youtube.com/watch?v=j-HhQD3qVdA.

Fig. 1.

Fig. 1

In-series ventilation set-up with two patients connected to a single ventilator, as per the ACTIV system. A) An active switching valve, as that presented in this paper, B) One-way and variable pressure drop valves, such as the PANDAPeep valves, C) HEPA filters, D) Passive Y connectors, and E) Pressure and flow sensors. A comprehensive instruction set can be found at https://gitlab.com/luihp/activvent.

Fig. 2.

Fig. 2

Depictions of the valve in the two operating positions.

This valve operates in physiological ranges, and natively allows external connection to medical devices, such as CPAP or mechanical ventilators. There are very few commercially-available valves able to connect to respiratory circuits without the need for complex adapters or extensive customisation. Outside of those designed for use within mechanical ventilators, there are few valves suitable directly for clinical applications or trials, none of which enable ventilation multiplexing.

2. Hardware description

The valve switches an inlet (from the ventilator) two either one of two outlets (to patients), using a basic wedge (‘pie’) which alternately occludes each outlet passage. The wedge has extrusions which press against o-rings, sealing one of the output respiratory circuit outlets. This wedge is rotated from one position to the other using a servo motor, connected via a basic linkage, using 3D-printed bars. The valve is therefore able to be controlled by any device capable of powering and controlling a servo motor, such as an Arduino or a Raspberry Pi. An exploded view is shown in Fig. 3.

Fig. 3.

Fig. 3

Partial exploded view of the valve. For a colour key see Table 1.

The connectors of the valve conform to ISO 5356-1:2015 [11]. There is a combined 15 mm socket/22 mm cone (15F/22 M) input, and 22 mm socket output connectors. Adapters are provided for interfacing with less common connectors.

The 3D-printed parts of the system can be sterilised with hydrogen peroxide, meaning the device can be reused between patients without deformation [12]. However, given the system excluding the servo is reasonably inexpensive, it is recommended the valve is not used across multiple patients, if used in a clinical setting to avoid cross-contamination risk.

The valve is able to be used for flows and pressures within common medical respiratory ranges. It is shown in Fig. 3, and is:

  • A 3/2-way valve

  • Mostly 3D-printable

  • Compatible with common respiratory circuits

  • Sterilisable/Cheap if reusing the motor

3. Design files

Design filename File type License Location of the fileRelative to base directory

outer.FCStd FreeCAD CC BY-SA 4.0 physical/
inner.FCStd FreeCAD CC BY-SA 4.0 physical/
nut.FCStd FreeCAD CC BY-SA 4.0 physical/
sleeve.FCStd FreeCAD CC BY-SA 4.0 physical/
shaft.FCStd FreeCAD CC BY-SA 4.0 physical/
pie.FCStd FreeCAD CC BY-SA 4.0 physical/
bar-shaft.FCStd FreeCAD CC BY-SA 4.0 physical/
bar-span.FCStd FreeCAD CC BY-SA 4.0 physical/
bar-motor.FCStd FreeCAD CC BY-SA 4.0 physical/

[all of above].stl 3D-printable CC BY-SA 4.0 physical/renders

basicServ.ino Arduino CC BY-SA 4.0 software/basicServ

The design files in full are available at https://doi.org/10.17605/osf.io/ktxuh. The file locations specified here are relative to the base of this project.

3.1. FreeCAD

Physical design was done in FreeCAD [13]. The geometry has been shown to work in both PLA and PET-G with a adequate sealing and operation, but for other materials or print orientations the valve should be comprehensively tested prior to use.

3.2. Software

There is minimal software included as only the hardware of the valve is presented here. An Arduino script which allows for determination of the servo limits of travel — basicServ.ino — is included only. For an example application with more complex software, see the complete ACTIV ventilation system ( https://gitlab.com/luihp/activVent).

4. Bill of materials

See Table 1.

Table 1.

Bill of materials, with all values in USD. Complete bill of materials with sources and more specific costing et cetera available at https://doi.org/10.17605/osf.io/ktxuh.

Part Qty Total Cost Pro rata Notes
3D-printed parts: $24.99 1 kg spool

Rendered colour: Mass (g):
outer 1 Pink 58.66
inner 1 Blue 52.05
sleeve 1 Brown 3.21
shaft 1 Red 1.11
pie 1 Green 10.45
nut 1 Orange 1.61
barServo 1 Yellow 4.91
barLink 1 Cyan 1.65
barShaft 1 Dark blue 1.78
Total Mass:
All printed parts: $3.37 135.43



HX12K servo 1 $10.21 $10.21 11kg·cm torque
180° range
300°·S-1 speed
Servo arm 1 Supplied with above



O-Rings:

22 × 2 2 $0.68 $0.14 Pressed into wedges in inner
18 × 2 1 $0.60 $0.60 Sleeve
6 × 2 1 $1.68 $0.04 On shaft
41 × 2 1 $1.06 $0.11 Between inner and outer



Hardware:

M3 × 40 mm 2 $1.47 $0.30 Joining inner and outer
M3 × 16 mm 5 $2.03 $0.21 Attaching servo (4)
Joining barServo & barLink (1)
M3 × 10 mm 2 $0.82 $0.18 Joining barShaft & barLink(1)
Servo shaft connection (1)
Standard M3 nuts 6 $0.47 $0.12
Standard M3 washer 20 $0.55 $0.22
M3 lock washer 7 $0.90 $0.63 All non-rotating connections
M3 nylock nut 2 $0.87 $0.07 For bolts which connect bars



Total: $46.33 $16.27

5. Build instructions

5.1. Printing

For the most part, the printing is self explanatory in terms of orientation. While minimising support is important, maintaining circular airway connectors was prioritised. Therefore, any part which attaches to another part and/or ventilator tubing should be printed in an orientation the preserves the circularity of the connector: i.e. the axis of the cylinder(s) is parallel to the vertical axis of the printer. Specific details are provided in Table 2, and an example printbed can be seen in Fig. 4. Note that the infill of the shaft, and at least part of the pie is required to be higher that usual for strength. Printing for development was done using the PRUSA MINI, PRUSA MK3S and PRUSA MK3 (PRUSA, Poland), using both PLA on a smooth spring steel print bed, and PET-G on a textured print bed. Printing was done with a layer height of 0.070.20mm, with no observable change in performance.

Table 2.

Printing details for the parts required for the active valve.

Part Orientation Support Notes
Outer Connector up Y Support everywhere for servo mount.
Inner Connectors down Y Should only have support on bed.
Sleeve Large flat surface on bed. N
Pie Additional shaft down Y At least the cylinder of the shaft should have a medium infill (50%) to reinforce the teeth that the shaft part contact. The orientation does result in quite a small area of the actual part on the print bed; only the circle of the shaft, and the support material.
Shaft Axis up N Should be printed with high (80%) infill.
Nut Hex on bed. N
BarServo Flat surface on bed N
BarLink Flat surface on bed N
BarShaft Flat surface on bed N

Fig. 4.

Fig. 4

Example print bed showing orientation and support materials in green.

5.2. Assembly

In addition to the 3D-printed parts, a small number of o-rings and some M3 nuts and bolts are required for assembly. This assembly assumes that all of the support material have been removed, and if required the surface in contact with the support material smoothed. Furthermore, depending on first layer height, there may be a slight brim around the very base of the part, which is particularly pertinent for inner and outer parts. A video showing the assembly can be seen at  https://www.youtube.com/watch?v=cK5hVcv7b8M, and there are detailed pictures within Appendix A.

  • 1.
    Fitting o-rings:
    • (a)
      On sleeve: fit the 18x2mm o-ring over the sleeve and ensure it is bedded in the groove at the bottom of the thread.
    • (b)
      On shaft: pull the 6 × 2 mm o-ring over the shaft, and fit it in the groove. If using tools to stretch it onto the shaft (it is quite difficult otherwise), ensure to not damage the o-ring with the tool. A flat-headed screw driver works quite well for this.
    • (c)
      On the valve inner part:
      • Fit the large (41 × 2 mm) o-ring over the entire outside.
      • Fit the 22 × 2 mm o-rings into the valve sealing surfaces. This is best done by sitting the o-ring on top of the groove in which it will be seated, and then pressing on two opposite points, and then the two points between the first two points (i.e. 0° and 180°, and then 90° and 270°). The o-ring should then be pressed fully all the way in, either by running something around the circumference, or by firmly pressing the associated face of the pie wedge into the o-ring.
  • 2.
    Outer assembly:
    • (a)
      Insert the sleeve from the inside upwards through the circular hole in the outer. While this hole has been stretched slightly to allow for asymmetry in the printing process, it may require slight trimming of the edge closest to the 22 mm male connector to allow the sleeve to fit. Only do this after a reasonable amount of effort - it is best that it is difficult to fit than to be trimmed as this provides the best sealing surface.
    • (b)
      Fasten the nut onto the sleeve to finger tight. If tools are used with a large moment, there is risk of causing damage that is not evident from external inspection. After proper tightening, the bottom of the sleeve should be about flush with the extrusion on the inside of the outer.
    • (c)
      Insert the pie into the outer. For orientation purpose, it is easiest to do this such that the pie is as close to halfway between the two limits of travel (i.e. the middle of the curved section of the pie should be visible through the 22 mmM/15 mmF connection). The cylindrical extrusion points down, away from the sleeve, and is caught but an extrusion on the inside of the outer part.
    • (d)
      Insert the shaft. Ensure that the smaller, hexagonal shaft is inserted into the pie. In terms of rotational alignment, it is best that the bar which connects to the shaft is approximately opposite to the pie. i.e. when the pie is halfway between the two switching positions, the barShaft should be orthogonal to the edge of the outer, as shown by the dark-blue bar in Fig. 5. This is made easier if the barShaft is already fitted on to the shaft.
      With the shaft inserted, the pie should move freely: if not there may be residual support material at the top of the inside of the outer.
    • (e)
      Attach the servo motor to outer. This is done with 4x M3x16mm bolts, and it is recommended to use lock washers and standard nuts. The servo is pressed up to the plate from underneath.
  • 3.
    Insert the inner into the outer.
    • (a)
      This can be a bit of a hard fit it there is extra material from the first layer on the outer. Running a blade lightly along the edge of the outer will remove the excessive material allowing easier insertion.
    • (b)
      Insert two bolts (M3x40mm) through the aligned holes on the sides/wings, and fasten the two together quite tight. These will be tight enough such that the wings will flex/bend inwards towards each other.
  • 4.
    Assemble drive mechanism.
    • (a)
      If able, instruct the servo motor to go to the middle of its range of motion.
    • (b)
      Connect the bars: barShaft to barLink with a M3 × 10 mm bolt, and barLink to barShaft with a M3 × 16 mm bolt. The configuration is dependant on exactly the orientation of the pie and the shaft, but testing has shown fourth hole on the servo bar, the middle hole of the link bar, and the third hole of the shaft bar. Further detail is shown in Fig. 14 in Appendix A.
    • (c)
      When inserting bolts to join the bars, pass them from bottom to top and fasten with a nylock nut. This orientation will provide the best clearance when operating, and the nylock nut will resist being worked loose with during motion. 14b.
    • (d)
      The servo bar should simply fit over the servo horn, and then be screwed down. An M3x10mm bolt should be used to fasten the barServo and the servo arm to the shaft of the servo motor. For orientation and range purposes, the horn may need to be refitted; to do this move this to one of its limits, and then orientate the horn such that it will provide the full range of motion necessary for the valve to operate. One way to do this is to rotate the servo by hand in the direction of moving the horn away from the rest of the valve until you reach the limit of the servo. The horn can now be removed, and replaced on the servo such that it points directly away from the shaft.

Fig. 5.

Fig. 5

View from above showing the recommended orientation of the for insertion of the shaft. The recommended hole alignment and orientation of the link, span, and servo bars is also demonstrated. See Table 1 for colour key.

Fig. 14.

Fig. 14

Best orientation and layout of the bars for assembly as per Section 5.2 4)b. The servo should be in the middle of its possible range prior to completing this. First press the servo horn into and the barServo onto the servo motor in approximately this orientation, then fasten with a M3x10mm bolt into the servo shaft. Then, with washers and nylock nuts, connect the barLink to both barShaft and barServo as per the green lines. BarLink and barShaft (dark blue), are connected with an M3x10mm bolt, but barLink and barServo (yellow) are attached with an M3x16mm bolt, due to the thickness of barServo. Ensure the correct alignment of holes as indicated. It may be necessary to remove barShaft in order to insert the bolt from the underneat.

6. Operation instructions

The operation of the valve is relatively straight forward. The limits of travel will need to be determined prior to proper use. This can done simply through trial and error, determining the point of the duty cycle limits at which the pie properly seals against the inner part to form an adequate seal. The pinout for the servo motors is:

Orange: PWM
Red: +5 V
Brown: GND

The operation of the valve is very easy, simply provide the signal to rotate the wedge to one limit, and then to the other at the desired time. For an example application see the ACTIV ventilator system  https://gitlab.com/luihp/activvent.

Safety concerns to watch for:

  • In testing the device, if the shaft has been printed with a less than 50% infill has snapped. It is crucial to avoid the possibility of this, because the failure is not visible without disassembling the device. It is recommended to print the shaft with at least 80% infill.

  • While cross contamination is very unlikely if used with standard respiratory circuits due to the high deadspace, it is advised to use HEPA filters or equivalent/better, as well as one-way valves2 on both of the output circuits. This filters should be changed as often as specified by the manufacturer.

  • The valve should only be used upstream of potential contamination, or if downstream in the respiratory circuit it should either be used once and disposed/sterilised, and/or be protected by HEPA filters.

  • While the valve has withstood rigorous testing, it is possible that failure of the device will not be evident externally, for example if the shaft snaps. It is therefore recommended that pressure and/or flow sensors are used to monitor both output respiratory circuits, such as the ACTIV flow and pressure sensor [10], to ensure continued correct operation of the device.

  • Ensure, if available, the use of leak alarms with any connected respiratory devices.

7. Validation and characterization

The primary test system has successfully been used for approximately 72 h of testing, switching at least once every five seconds. The system has been proven reliable for over 50,000 state changes without any reliability issues. While the shelf life of the device has not been explicitly tested, the limiting consideration is the heat and humidity related degradation of the o-rings. Provided use mitigates potential contamination, the device has been shown to capable of intermittent use of at least a month. Usage beyond this should involve regular testing of the device to ensure continued operation.

The device:

  • Has a deadspace of: 40mL

  • Has a switching time of: 0.5s

  • Is reliable for at least 50,000 switches

7.1. Validation

The device was validated as part of the ACTIV ventilation system3 ,4. Complete datasets are available at https://doi.org/10.17605/osf.io/ktxuh.

The ACTIV ventilation system is a system in which connects to a mechanical ventilator, and diverts every second breath to a different respiratory circuit, allowing a single ventilator to provide respiration to two patients. The system consists of this valve, passive one-way and pressure drop valves5, some sensors [10], and an Arduino-based controller. The data presented in Fig. 6, Fig. 7, Fig. 8 is extracted from the ACTIV system validated against an Evita V500 (Dräger, Germany). These data show:

  • 1.

    The valve is able to be actuated within 0.5s.

  • 2.

    There is no detectable flow through the closed valve (1L·min-1 with ΔP34cmH2O).

  • 3.

    There is minimal increase in pressure in the closed respiratory circuit (0.2cmH2O over 2s).

Fig. 6.

Fig. 6

Demonstration of the ability of the valve operation with identical respiratory loads. Data from each of the outlets (blue and orange) are shown against data from the Evita V500 (Dräger, Germany) (green), clipped 0L·min-1. The artefact after each inspiration is associated with physical movement within the respiratory circuits; the actuation of the valve, and also one-way vales oscillating.

Fig. 7.

Fig. 7

Section of data more closely demonstrating the critical sealing characteristics: there is no increase in pressure in the orange path while a breath is being delivered to the blue path, and similarly there is no detectable flow through the closed outlet of the valve.

Fig. 8.

Fig. 8

Example of the closed characteristics with substantially differing ventilation parameters; the orange circuit has approximately 12cmH2O greater PEEP, and 20cmH2O extra driving pressure. The fluctuations in pressure and flow in the blue circuit are caused by oscillating pressure-drop valves within the circuit.

Funding

This work was funded by a grant from the New Zealand Government through the Ministry of Business, Innovation, and Employment.

Human and animal rights

No human or animal studies were conducted in the design of this work.

Declaration of Competing Interest

The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

2

While there is a one-way valve design included, they are not a particularly robust design, and should only be used if there is absolutely no other choice.

Appendix A. Additional building instructions

See Fig. 9, Fig. 10, Fig. 11, Fig. 12, Fig. 13, Fig. 14.

Fig. 9.

Fig. 9

Depiction of the insertion of the sleeve into the outer, and the nut to fasten, as per Section 5.2 2)a.

Fig. 10.

Fig. 10

The best orientation of the pie inside the outer as per Section 5.2 2)c, for best assembly of the shaft and drive mechanism. Note the orientation of the sleeve to mate with the inside of the outer.

Fig. 11.

Fig. 11

Depiction of the insertion of the shaft into the pie for easiest orientation of the drive mechanism, as per Section 5.2 2)d.

Fig. 12.

Fig. 12

Attachment of the servo motor to the outer, as per Section 5.2 2)e. Dotted lines indicate the location of the 4x M3×16 mm bolts with lock washers. The bolts from above give greater clearance for the rest of the drive mechanism, but can be difficult to handle the nuts on the other side.

Fig. 13.

Fig. 13

Joining of the inner and the outer as per Section 5.2 3), and the location of the M3 × 40 mm bolts for 5.2)(b), with lock washers and standard nuts.

References

  • 1.O. Garmendia, M.A. Rodríguez-Lazaro, J. Otero, P. Phan, A. Stoyanova, A.T. Dinh-Xuan, D. Gozal, D. Navajas, J.M. Montserrat, R. Farré, Low-cost, easy-to-build noninvasive pressure support ventilator for under-resourced regions: open source hardware description, performance and feasibility testing, Eur. Respiratory J. 55(6). [DOI] [PMC free article] [PubMed]
  • 2.B.K. Lai, J.L. Erian, S.H. Pew, M.S. Eckmann, Emergency open-source three-dimensional printable ventilator circuit splitter and flow regulator during the covid-19 pandemic, Anesthesiology. [DOI] [PMC free article] [PubMed]
  • 3.A. Petsiuk, N.G. Tanikella, S. Dertinger, A. Pringle, S. Oberloier, J. Pearce, Reprapable automated open source bag valve mask-based ventilator. [DOI] [PMC free article] [PubMed]
  • 4.L. Acho, A.N. Vargas, G. Pujol-Vázquez, Low-cost, open-source mechanical ventilator with pulmonary monitoring for covid-19 patients, in: Actuators, vol. 9, Multidisciplinary Digital Publishing Institute, 2020, p. 84.
  • 5.Plummer A.R., du Bois J.L., Flynn J.M., Roesner J., Lee S.M., Magee P., Thornton M., Padkin A., Gill H.S. A simple method to estimate flow restriction for dual ventilation of dissimilar patients: the bathrc model. PloS One. 2020;15(11) doi: 10.1371/journal.pone.0242123. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 6.Solís-Lemus J.A., Costar E., Doorly D., Kerrigan E.C., Kennedy C.H., Tait F., Niederer S., Vincent P.E., Williams S.E. A simulated single ventilator/dual patient ventilation strategy for acute respiratory distress syndrome during the covid-19 pandemic. Royal Soc. Open Sci. 2020;7(8) doi: 10.1098/rsos.200585. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 7.SCCM, AARC, ASA, APSF, AACN, and CHEST, Joint Statement on Multiple Patients Per Ventilator, American Society of Anesthesiologists. https://www.asahq.org/about-asa/newsroom/news-releases/2020/03/joint-statement-on-multiple-patients-per-ventilator.
  • 8.Chase J.G., Chiew Y.S., Lambermont B., Morimont P., Shaw G.M., Desaive T. Safe doubling of ventilator capacity: a last resort proposal for last resorts. Crit. Care. 2020;24:1–4. doi: 10.1186/s13054-020-02945-z. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 9.Chase J.G., Chiew Y.-S., Lambermont B., Morimont P., Shaw G.M., Desaive T. In-parallel ventilator sharing during an acute shortage: too much risk for a wider uptake. Am. J. Respiratory Crit. Care Med. 2020;202(9):1316–1317. doi: 10.1164/rccm.202006-2420LE. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 10.L. Holder-Pearson, J. Chase, Physiologic-range flow and pressure sensor for respiratory systems (2021). doi:10.17605/osf.io/bre5f. [DOI] [PMC free article] [PubMed]
  • 11.Anaesthetic and respiratory equipment Conical connectors Part 1: Cones and sockets, Standard, International Organization for Standardization, Geneva, CH (2015).
  • 12.O. Oth, C. Dauchot, M. Orellana, R. Glineur, How to Sterilize 3D Printed Objects for Surgical Use? An evaluation of the volumetric deformation of 3D-printed genioplasty guide in PLA and PETG after sterilization by low-temperature hydrogen peroxide gas plasma, Open Dentistry J. 13(1).
  • 13.J. Riegel, W. Mayer, Y. van Havre, Freecad (2016).

Articles from HardwareX are provided here courtesy of Elsevier

RESOURCES