Fully replicable and automated retention measurement setup for characterization of bio-adhesion

The retention model by Rao and Buri is often used to characterize microparticles and other drug delivery systems for their bio-adhesive properties. Currently, these experiments are performed on customized setups, reducing reproducibility of results obtained in different labs. As a solution, we propose a fully replicable retention model, which can be constructed by parts mostly made by 3D printing and laser cutting as well as a limited amount of other easy to source and commercially available parts. In addition of being fully replicable, the setup features integration of a climate-controlled chamber, a peristaltic pump and an autosampler, thereby enabling fully automated but customized control of the experiments. Using the presented retention model setup and an automated experimental sequence, the setup has been proven capable of investigating mucoadhesion of differently shaped parti-cles to porcine intestinal tissue. 2019


a b s t r a c t
The retention model by Rao and Buri is often used to characterize microparticles and other drug delivery systems for their bio-adhesive properties. Currently, these experiments are performed on customized setups, reducing reproducibility of results obtained in different labs. As a solution, we propose a fully replicable retention model, which can be constructed by parts mostly made by 3D printing and laser cutting as well as a limited amount of other easy to source and commercially available parts. In addition of being fully replicable, the setup features integration of a climate-controlled chamber, a peristaltic pump and an autosampler, thereby enabling fully automated but customized control of the experiments. Using the presented retention model setup and an automated experimental sequence, the setup has been proven capable of investigating mucoadhesion of differently shaped particles to porcine intestinal tissue.

Hardware in context
The retention model, also referred to as ex-vivo flow model or flow-through method, was first introduced by Rao and Buri in 1989 and was developed as a method to assay the bio-adhesion of polymers and microparticles to rat gastro-intestinal tissue [1]. Since then it has proven to be a very versatile method, which is commonly used to investigate the mucoadhesive properties of various drug delivery formulations and therefore is regarded to be one of the main methods to measure mucoadhesion [2]. In this regard, the method has been applied to determine the mucoadhesiveness of e.g. thiomer microparticles to porcine intestinal tissue, metformin hydrochloride/chitosan microparticles to porcine buccal mucosal tissue or microfabricated janus devices to porcine intestinal tissue [3][4][5]. The precise control of experimental conditions, such as temperature, humidity, content of simulated biological fluids as well as the flow rate is considered to be very important as the lack of it can negatively affect reproducibility of the experiments [2].
The simplicity and versatility of the core elements of the experimental setup in general, a pump connected through a tube to a tissue holder, which holds a biological sample tissue at a specific angle, motivates researchers to construct their own customized setup. On the one hand, the construction of home-made setups provides a lot of flexibility and design freedom to researchers, but on the other hand it leads to a lack of reproducibility as well as comparability in the scientific community as there is no common standard with regards to the way setups are built and the experiments are performed. Furthermore, information about how these setups are constructed and/or used is often missing so that a replication of the same setup used for a published work is not possible. The commonly used experimental setups also exhibit various degrees of complexity. In contrast to the simplest system consisting of a pump, a tubing and a tissue holder, the system can get more sophisticated when temperature and humidity control of the ambient climate are included. Consequently, reproducing such a system can become more difficult.
The emergence of affordable 3D printing and other rapid prototyping techniques (e.g. laser cutting) has triggered the open sharing of design files for customized lab equipment, also called open labware [6,7]. The principle of open labware is that, by freely accessing the design files, it can be for example 3D printed and therefore easily replicated everywhere where there is a 3D printer available (e.g. in Universities or public maker spaces). Based on this approach, different types of lab equipment with different degrees of complexity have been developed and instructions for their replication are available in the literature. Among those are standard laboratory equipment and appliances, such as a sample rotator mixer/shaker and optical fixtures, but also rather advanced laboratory tools such as a microsyringe autosampler and a Raspberry Pi/Arduino-based fluorescence microscope with modular features for e.g. optogenetic analysis [8][9][10][11].Through the use of 3D printable components and widely available low-cost accessories, customized open labware can drastically decrease cost and at the same time yield a very high return on investment for the global scientific community [6,12].
In this paper, we propose and share designs for an open labware-based retention model setup that aims at balancing reproducibility with customizability and flexibility by being modular and upgradable. The setup can be fully and easily replicated by the use of 3D printed and laser-cut parts as well as commonly available commercial components. As a free and open available development platform, the setup could in the future offer a standard for retention model experiments that researchers could refer to.

Hardware description
The retention model setup ( Fig. 1) was designed to fulfill certain requirements. Above all, it was considered important that 3D printing and laser cutting can be used to fabricate most of the parts, therefore making the replication process as simple as possible. All other parts that are needed should be cheap and easy to source. For this reason and to integrate several required functionalities in one control loop, we chose the Arduino Mega 2560 (microcontroller)/ RAMPS 1.4 (Arduino shield) combination, which is frequently used for the control of RepRap 3D printers. The RAMPS 1.4 shield possesses all required circuits and connectors to use it in combination with the Arduino for the control of temperature, humidity, pump flow and autosampler rotation. The simple control of temperature and humidity is accomplished with the use of relays, a ceramic infrared heat lamp, an ultrasonic mist fogger and three fans and two DHT22 temperature and humidity sensors. The basic design of the system is kept in a modular way by arranging all components on a breadboard-style base plate, therefore allowing further customization and upgradability. The integration of a peristaltic pump as well as a rotary autosampler adds versatility and precision to the setup as it enables the execution of customized and fully automated program sequences.
In summary, the presented retention model setup can offer: & Improved repeatability of flow retention experiments (e.g. through climate-controlled environment and automation) & Improved reproducibility of flow retention experiments (when different researchers use the same setup) & Expanded functional range (by integration of peristaltic pump, auto-sampler and automation with Arduino microcontroller e.g. fully automated customized programs for experiments)

Design files summary
All design files listed in this section are available for download from the Mendeley data repository. Most of the components were designed specifically for this project using SolidWorks 2015 (Dassault Systèmes SolidWorks Corporation, USA) software, however in some cases resources from other projects were used to obtain needed components. An online tool was used to generate the climate chamber box design with outside dimensions of 291 Â 296.5 Â 400 mm, a material thickness of 5 mm, finger slots with a tab length of 25 mm and a laser-cut kerf of 0.1 mm, which then was modified according to the need of this project [13]. lock_new-lever.SLDPRT was designed as a modification to an online available lock design to fit the specifications given by the climate chamber design presented in this work [14]. parametric_butt_hinge_3.5.2.scad OpenSCAD library was used to generate a hinge design [15]. Getriebe.scad OpenSCAD library was used to generate gear designs needed for the autosampler [16]. pump_housing.SLDPRT was designed as a modification to an open source precise peristaltic pump [17]. humidifier_2.0.SLDPRT and humidifier_fan.SLDPRT are a modified redesign of a desktop humidifier [18].

3D printing files
All 3D printing files are available in the STL file format for download from the linked Mendeley data repository. The table gives an overview of all files that have to be 3D printed in order to complete the project. Furthermore, the table gives information about how many replicates of the components are required, how they look and in which orientation they should be 3D printed (images were generated with 3D printing slicing software). For this project, usually all parts were 3D printed with a 0.4 mm nozzle, a layer height of 0.2 mm and 20% infill from PETG filament (2 spools of 1 kg each are sufficient). In some cases, the use of support material was necessary. The support material can be seen in the images as stacks of green lines. As the object humidifier_2.0 is supposed to contain water during the application, it should be printed with a higher infill density and increased amount of shells. In case water would still be leaking from the object, the authors recommend sealing the reservoir by impregnation with silicone or epoxy resin. lock_hole-screw.stl, lock_big-nut.stl, lock_key.stl and lock_small-nut. stl were obtained from an open lock design and renamed [14]. pump_case_bottom.stl, pump_case_top_120.stl, bearing_mount_ top.stl and bearing_mount_bottom_01.stl were obtained from an open source peristaltic pump design [17]. 40mm_Fan_grill_ final.stl was likewise obtained from external source as a publicly distributed design [19]. All other STL files were exported from design files listed in 3.1. thumbnut.stl requires the insertion of an M3 nut during the 3D printing procedure.

Laser cutting files
To complete the construction of the presented retention model setup, it is necessary to cut out several designs from sheets of polymer. All designs are available as DXF files for download from the Mendeley data repository. The DXF files were created using SolidWorks 2015 (Dassault Systèmes SolidWorks Corporation, USA) and CorelDRAW X7 (Corel Corporation, Canada) software. In this work, all designs were designed to fit in the A3 paper format and were cut from acrylic using a CO 2 laser cutter (Epilog Mini 18). The designs baseplate1_labeled.dxf and baseplate2.dxf were cut from 6 mm acrylic, while all other designs except for woodplate_ssr.dxf were cut from 5 mm acrylic. woodplate_ssr.dxf was cut from 3 mm high density fiber board.
Due to the limited chemical resistance of acrylic, the authors recommend to not use solvents (e.g. ethanol) for cleaning of these boards. All sheets can also be cut from different materials and also by using different cutting methods (such as CNC routing).

Software
An Arduino Mega 2560 microcontroller is used to control the feedback loop for the climate control as well as to control an autosampler and a peristaltic pump in combination with an Arduino Pro Mini. A rotary encoder and LCD display serve as a feedback and input interface to control the operation of the microcontrollers. The used Arduino sketches are available for download as ino files from the Mendeley data repository. In order to integrate the function of the DHT22 temperature and humidity sensor as well as an I2C LCD display, external libraries were employed. Adafruit_Unified_Sensor and DHT-sensor-library-master were obtained from Adafruit and Newliquidcrystal_1.3.5 was obtained from an open source [20][21][22] In addition to the 3D printed and laser-cut components of the system, some parts must be obtained from external sources. The table gives an overview of which and how many items need to be purchased. While all listed components should be easy to source, the pricing of those can vary a lot. The displayed costs in the table are calculated based on the parts we have obtained or on the prices we could find at the given sources at time of publication.

Build instructions
This section thoroughly describes the assembly of the presented retention model setup. As the initial assembly by the authors was carried out in an iterative approach with repeated interruptions for documentation purposes, a precise time estimate cannot be given at this point. However, based on initial experiences and under the circumstance that all required parts (including 3D printed and laser-cut parts) are available, an assembly duration of 2-3 h in total may be expected.

Assembly of baseplate
To begin the construction of the retention model setup, we recommend starting with the assembly of the baseplate. To make the assembly process easier, numberings are included in the file baseplate1_labeled.dxf, which can be engraved into the sheet using the raster engraving function of the laser cutter. The single steps of the procedure are laid out in Fig. 2. 1. Insert one M6 nut into the 5 feet (foot.stl) each (Fig. 2a). 2. Stack baseplate1 (baseplate1_labeled.dxf) onto baseplate2 (baseplate2.dxf). Insert two M6 Â 20 hex head cap screws from the top into slots B and D of baseplate1 and fasten them to the M6 nuts in two feet at the bottom of baseplate 2 ( Fig. 2b; green highlights). 3. Insert two M6 Â 25 hex head cap screws into each of two of the climate chamber corners (outside_corner.stl and out-side_corner_mirrored.stl) and then through baseplate1 in slots A and C ( Fig. 2b; purple highlights). Then fasten the bolts to the M6 nuts placed in two more feet. Now, the two baseplates should be attached to one another in the four corners A, B, C and D. 4. Insert two M6 Â 15 hex head cap screws into the two left outside corners (outside_corner_regular.stl and outside_cor ner_regular_mirrored.stl) and fasten them to two M6 nuts placed on the bottom side of slots 14 and 184, so that the corners are directed inwards ( Fig. 2b; black highlights).
5. Attach the two handles (handle.stl) to the baseplate by fastening them with 4 M6 Â 14 hex head cap screws and 4 M6 nuts in slots 52 and 120 as well as 68 and 136 ( Fig. 2b; blue highlights). 6. Next, attach the first aluminum rod holder (rod_holder.stl) to the baseplate by using an M6 Â 25 hex head cap screw.
Insert the screw into the holder and into slot 61 and fasten in from the bottom with the last foot in which an M6 nut was placed in step 1. Then attach the other rod holder to slot 74 using an M6 Â 20 hex head cap screw and an M6 nut ( Fig. 2b; red highlights). 7. Attach the two beaker holders (beaker_fix.stl) to the baseplate in slots 124 and 129 with the use of two M6 Â 10 hex head cap screws and two M6 nuts ( Fig. 2b; yellow highlights). Viewed from the top, the assembly should now look as in Fig. 2b and viewed from the bottom, it should look like in Fig. 2c. 8. Insert two 12 Â 300 mm aluminum rods in the two rod holders (Fig. 2d). 9. Insert the ultrasonic mist fogger into the humidifier base (humidifier_2.0.stl) and lead the cable through the hole in the side as depicted (Fig. 2e). 10. Use two M6 Â 15 hex head cap screws and two M6 nuts to attach the humidifier base to the baseplate in slots 11 and 47 (Fig. 2f).

Assembly of climate chamber
After cutting the box components (box_back.dxf, box_doorside + electronics_cover.dxf, box_front.dxf, box_side.dxf, box_top + SSR_cover.dxf and door + frame.dxf) for the climate chamber from sheets of polymer, prepare them for assembly by cutting the threads into the relevant holes as shown in Fig. 3.
The climate chamber box is designed to be assembled with press-fits by using the finger joints at the edge of the single components. Fig. 4 gives an overview about how the box has to be assembled. If the cutting parameters of the laser cutter are suitable for the tolerance specified in the designs, the assembled box should stably hold together only due to the press-fit.
To complete the assembly of the climate chamber box, follow the next steps: 1. Once the press-fit assembly of the box is completed (Fig. 5a), insert the box in between the box corners on top of the baseplate with the door cut-out of the box facing towards the direction of baseplate slots C and D. Then fasten the box to the box corners by using sixteen M3 Â 10 hex head cap screws (Fig. 5b). 2. For increased rigidity, attach the four top corners (corner_top.stl) to the upper corners of the box with twelve M3 Â 10 hex head cap screws (Fig. 5c). 3. Attach the laser-cut door frame to the door side of the box with sixteen M4 Â 10 button head screws as shown in the picture (Fig. 5d). 4. Mount the female leaves of the two door hinges to the door frame with six M3 Â 10 hex head cap screws (Fig. 5e). Then mount the male counterparts to the laser-cut door with six M3 Â 6 hex head cap screws (Fig. 5f). 5. To attach the door lock to the door of the box, insert the component lock_hole-screw (lock_hole-screw.stl) into the remaining hole of the door from the side of the attached hinges and fasten it with the component lock_big-nut (lock_big-nut.stl) from the other side (Fig. 5g). 6. Assemble the lock with the missing components as shown in Fig. 5h. 7. Attach the door to the box by connecting the male and female leaves of the hinges with the use of two M3 Â 25 hex head cap screws (Fig. 5i).

Assembly of peristaltic pump
To assemble the peristaltic pump, follow the next steps, which are illustrated in Fig. 6: 1. Insert an M3 nut into the nut trap of the bottom part of the roller pump head (bearing_mount_bottom_01.stl) (Fig. 6a). Then push three 4 Â 14 mm straight pins into the cavities as shown (Fig. 6b). 2. Insert an M3 Â 10 grub screw from the side and screw it into the M3 nut (Fig. 6c). 3. Mount three HK 0408 needle bearings on the straight pins (Fig. 6d). 4. Attach the top part of the roller pump head (bearing_mount_top.stl) to the bottom part using three M3 Â 20 hex head cap screws (Fig. 6e). 5. Mount the Nema17 stepper motor to the housing (pump_housing.stl) by inserting four M3 Â 10 hex head cap screws into the component pump_case_bottom (pump_case_bottom.stl) and fastening them through the holes in the housing into the threads of the stepper motor (Fig. 6f). The small hole in pump_case_bottom has to face upwards. 6. Mount the roller pump head onto the shaft of the stepper motor and fasten it by inserting the correct Allen key through the hole in the top of the component pump_case_bottom (Fig. 6g). 7. Insert two M3 Â 25 hex head cap screws into the back of the component pump_case_top (pump_case_top_120.stl) and mount it onto pump_case_bottom. Then insert two M3 Â 20 hex head cap screws into the remaining holes in the front (Fig. 6h). 8. After the assembly of the peristaltic pump has been finalized, attach the housing of the pump to the baseplate in the slots 16 and 50 with the use of two M6 Â 15 hex head cap screws and two M6 nuts. The roller pump head faces outward from the baseplate assembly (Fig. 6i).

Assembly of heat lamp housing
To assemble the housing for the ceramic infrared heat lamp, refer to Fig. 7 and follow these steps: 1. Cover the entire inner surface of the lamp housing (lamp_case.stl) with aluminum tape (Fig. 7a). 2. Install the ceramic power socket into the lamp housing (Fig. 7b). 3. Mount the lamp housing on top of the climate chamber with the use of six M6 Â 12 hex head cap screws (Fig. 7c).

Assembly of display controller
The assembly of the display controller is illustrated in Fig. 8. 1. Push the shaft of the rotary encoder from the inside of the controller housing (controller_housing.stl) through the hole in the side and fasten it with the supplied nut. Then press-fit the knob for the shaft (controller_knob.stl) onto the shaft (Fig. 8a). Note that it is required that the rotary encoder possesses a 10kO pull-up resistor in the highlighted location. 2. Insert the I2C LCD into the cavity of the controller housing and fasten it with four M3 Â 16 hex head cap screws and four M3 nuts. To not damage the printed circuit board (PCB), insert some plastic spacers. You can 3D print the plastic washers from the supplied design (plastic_washers.stl). Connect the cables to the rotary encoder and the LCD and feed them through the hole in the back. You can tie the cables together with a zip tie for strain relief (Fig. 8b). The completed housing should look like depicted in Fig. 8c. 3. Finally, attach the display controller to the climate chamber with the use of four M3 Â 8 hex head cap screws (Fig. 8d).

Lamp assembly
Three IKEA ledberg LED spots serve as a light source for the retention model setup. The assembly of the lamp is depicted in Fig. 9. Follow these steps to complete the assembly: 1. Insert the three LED spots in the lamp housing (ikea_led_housing.stl) and feed the cables through the channels at the sides of the cavities (Fig. 9a). You can use the supplied adhesive to hold the spots in the housing. 2. The LED spots are usually distributed in a pack of four, however for this purpose only three are required. The four LED spots are connected to power with a small PCB hub (Fig. 9b). You can shorten the cables, de-solder the fourth LED spot and re-solder the rest of them. Finally, you can use one of the supplied adhesives to glue the hub on top of the climate chamber (Fig. 9c).

Mounting sensors
The climate control (temperature and humidity) in the climate chamber uses input signals of two DHT22 temperature and humidity sensors. Each of them is placed differently in the chamber. While one of them measures the ambient temperature and humidity in the chamber, the other one measures local temperature and humidity at the slide holder, next to the slide where the tissue is placed. The instructions to mount the sensors are illustrated in Fig. 10 and are summarized in the next steps: 1. Insert an M6 nut and an M6 Â 12 hex head cap screw into the slide holder (Fig. 10a). 2. Mount the local sensor (T/H sensor 1) to the sensor holder on the slide holder with an M3 Â 8 hex head cap screw (Fig. 10b).  3. Mount the ambient sensor (T/H sensor 2) from the inside to the front of the climate chamber with an M3 Â 8 hex head cap screw and mount the slide holder onto the aluminum rod, which is closer to the back of the climate chamber (Fig. 10c).

Installation of fans and cable routing
Temperature and humidity in the climate chamber are regulated, among others, with the use of three 12 V DC fans. One fan acts as a venting fan that blows air from the outside into the chamber. A second fan acts as an exhaust fan, dragging air out of the chamber. The last fan is placed on the humidifier to distribute the steam, which is generated by the ultrasonic mist fogger. Refer to Fig. 11 for the installation of these fans.  1. The venting fan is mounted along with a fan grill (40mm_Fan_grill_final.stl) to the front of the climate chamber by using 4 M3 Â 30 hex head cap screws (Fig. 11a). Note that the direction of air flow should be towards the climate chamber. If the fan blades are too close to the fan grill, you can use the 3D printed plastic washers (plastic_washers.stl) to increase the spacing. 2. The exhaust fan is as well mounted together with a fan grill but attached to the back of the climate chamber (Fig. 11b).
Here, the direction of airflow should be away from the chamber.  3. You can route the cables of the venting fan and the two humidity sensors through the baseplate to the back of the climate chamber as it is depicted (Fig. 11c). At this point, you can also already pre-install the cable for the motor of the autosampler. 4. Place a mesh (humidifier_mesh.stl) that hinders water splashes to hit the fan of the humidifier (humidifier_2.0.stl) into the humidifier cavity that holds the ultrasonic mist fogger (Fig. 11d). 5. Install the humidifier fan (40 Â 10 mm) in a ''sandwich" with two fan grills to the cap of the humidifier (humidifier_fan.stl) by using four M3 Â 30 hex head cap screws (Fig. 11e) and then stack the cap onto the humidifier base (Fig. 11f).

Autosampler assembly
For the facilitation of automated experiments and thereby increased reproducibility, the presented retention model setup features a fully 3D printed rotational autosampler. Execute the assembly of the autosampler as described (Fig. 12).
1. Start the assembly by attaching the motor mount (geardrive_motormount.stl) to the planetary gear drive (planetary_gear_drive.stl) with one screw connection by using one M3 Â 6 countersunk screw as highlighted (Fig. 12a). 2. Insert the Nema17 stepper motor into the cavity of the motor mount and fasten it with four M3 Â 6 countersunk screws (Fig. 12b). As the motor mount is attached to the planetary gear drive with only one screw, you can rotate the planetary gear drive to obtain access to all screws. 3. Insert an M3 nut into the nut trap of the small herringbone gear (herringbone_gear.stl) (Fig. 12c).  4. Install the small herringbone gear onto the shaft of the stepper motor with one M3 Â 10 hex head cap screw as highlighted (Fig. 12d). 5. Fix the motor mount to the planetary gear drive with three more M3 Â 10 hex head cap screws (Fig. 12e). 6. Insert an M6 nut and M6 Â 10 hex head cap screw into the motor mount as highlighted (Fig. 12f). 7. Finalize the assembly by attaching the cover (gear_drive_cover.stl), the shim (planetary_gear_drive_shim.stl) and the ring gear (ring_gear.stl) to the planetary gear drive and each other with four M3 Â 25 countersunk screws as shown in the picture (Fig. 12g). Also, insert two M3 Â 8 grub screws into the cover of the geardrive. 8. Mount the assembled autosampler on the aluminum rod in the front of the climate chamber (Fig. 12h). 9. Mount a suitable sample holder onto the autosampler (in this case mesh_holder.stl and small_mesh.stl; several holder designs can be found in the Mendeley data repository) and secure it with 3D printed thumb nuts (thumbnut.stl) (Fig. 12i). When 3D printing the thumbnuts, stop the print at the height of the end of the nut trap and insert an M3 nut, then continue the 3D print.

Assembly and wiring of solid-state relay
As the ceramic heat lamp for temperature-control needs to be connected to the power line with high voltage and to the Arduino through a solid-state relay, the solid-state relay is placed separated from all other components for safety reasons. Always refer to a professional to make sure that the connections are correct and safe. Additionally, a fuse is installed to prevent electrical accidents. To install and wire the solid state relay, refer to Figs. 13 and 14, respectively.   1. Splice out one wire of the cable from the ceramic heat lamp power socket and connect it to the inline fuse holder and the load connectors of the solid-state relay (Fig. 13a). Also, prepare two wires for the input signal of the relay. Finally, insert a 3A cartridge fuse into the fuse holder. 2. Insert the laser-cut wooden plate (woodplate_ssr.dxf) into the housing (ssr_housing.stl), so that the holes in the plate are aligned with the holes in the housing (Fig. 13b). 3. Attach the solid-state relay to the housing by fastening it with two M4 Â 8 hex head cap screws trough the wooden plate to the housing (Fig. 13c). Feed the cable of the heat lamp power socket through the slot at the side and the wires for the input signal through the hole in the bottom. Place the fuse holder next to the relay and use zip ties for strain relief. 4. Finally, close the housing with an acrylic cover (from box_top + SSR_cover.dxf) by fastening it with three M3 Â 10 hex head cap screws and apply the warning sign (warning_sign.stl) with adhesive tape (Fig. 13d). You can print the warning sign with different colors to increase visibility.

Assembly of electronics and wiring
The installation and wiring of all electronic components inside the electronics housing (electronics_housing.stl) is illustrated in Figs. 15-17.   1. Place the two required relay boards on the pins in the electronics housing (there are two expansion slots). Also, place the Arduino Mega 2560 and the DC/DC boost converter and fasten all components down with nine M3 Â 8 hex head cap screws in the highlighted positions (Fig. 15a). Furthermore, insert two M6 Â 20 hex head cap screws in the bottom of the housing. 2. Solder two short wires for the Arduino Pro Mini to the RAMPS1.4 shield and stack it onto the Arduino afterwards (Figs. 15b, 16). 3. Fasten the electronics housing to the baseplate of the retention model setup with two M6 nuts in slots 83 and 151 and route the wires into the housing as depicted (Fig. 15c). You can insert zip ties in special slots in the housing (highlighted) to tie the wires together. Feed the input signal wires from the solid-state relay through the hole in the top of the electronics housing and attach the with two M6 Â 10 hex head cap screws. 4. Connect all wires and an Arduino Pro Mini (upload sketch mini_pump_control.ino beforehand) to the RAMPS1.4 shield according to the wiring schemes in Figs. 16 and 17 (Fig. 15d). Connect and mount a power toggle switch as well (Fig. 15e). 5. Finally, attach the last fan with fan grill to the acrylic cover (from box_doorside + electronics_cover.dxf) with four M3 Â 30 hex head cap screws and flow direction towards the acrylic. Feed the fan wires through the hole in the acrylic and connect the fan (Fig. 16, Fan4). Then screw the cover to the housing with use of four M3 Â 10 hex head cap screws.

Insertion of tubing and final setup
To finalize the construction of the retention model setup, insert a peristaltic pump/lab silicone tubing with an inner diameter of 4 mm and a wall thickness of 1.6 mm into the peristaltic pump and attach the ends to the slide (tissue holder) and a beaker (Fig. 18). The 3D printable mesh (mesh.stl) possesses a hole with which the tube can be held in place.
A fully constructed retention model setup is depicted in Fig. 19.

Structure of Arduino sketch for control with Mega 2560
In this section, the structure of the code for the Arduino Mega 2560 microcontroller (main.ino) is explained. At each iteration of the ''main loop" the microcontroller handles 3 tasks:

Menu navigation:
If an input from the user is detected (encoder rotated or clicked) the values of the ''menu state variables" are modified and menu items are displayed accordingly. By navigating the menu as described in section 6.2, the user can manually enable/disable each of the functionalities of the system and configure all the parameters of the experiment.

Climate-control:
The control of temperature and humidity is disabled by default and the display shows ''Temp/Hum control off". If enabled (manually through menu navigation or within the automated program), the value of the temperature from the slide sensor (T) and the value of the humidity from the ambient sensor (H) are read and compared to the setpoints giving DT = T À target_T and DH = H À target_H, respectively. Then the ambient control devices are actuated depending on the values DT and DH: o if DH < 0, the humidifier is turned ON by setting the digital signal driving the relay to high o if DH < 0, the humidifier fan is turned ON and its speed is controlled by a PWM (pulse width modulation) signal with a duty cycle proportional to DH If the automated program function is enabled, a single instruction of the automated program is executed (a more detailed description of the automated program is proposed in Section 6.3).

Structure of LCD/rotary encoder controller menu
The menu is structured in four layers, identified by different colors in Fig. 20: Home ? layer1 ? layer2 ? parameters. By default, the LCD displays one of two possible home pages, depending on whether the ambient control is disabled (''temp hum control OFF") or enabled (displaying temperature and humidity values).
By clicking the push-button of the rotary encoder, the user enters the menu navigation mode: the first row of the LCD displays the current section of the menu while the second row displays the subsections/items of that section. By rotating the button, the users can scroll through the items and by clicking the push-button the user selects the displayed item and enters the corresponding subsection.
The current state of the menu navigation is uniquely identified by a pair of variables: P and C (Fig. 20). In the last layer of subsections (green blocks) the first row of the LCD displays the name of the parameter and the second row displays the current value of the selected parameter: the user can scroll through the possible values of the parameter by rotating the button and as the push-button is clicked the selected value of the parameter is stored and the menu moves back to the previous subsection.
Special cases: Sel func ? temp/hum control ? enable: by clicking the push-button while the ''enable" item in the ''temp/hum control" section is displayed, the ambient control will be enabled if it was previously disabled and disabled if it was previously enabled. Sel func ? pump ? start/stop: by clicking the push-button while the ''start/stop" item in the ''pump" section is displayed, the pump will be turned ON if it was previously OFF and turned OFF if it was previously ON. Sel func ? autosampler ? next sample: by clicking the push-button while the ''next sample" item in the ''autosampler" section is displayed, the autosampler will move to the next sample right away. Sel func ? autosampler ? manual pos ? X: by rotating the knob while in the position parameter of the ''manual pos" item of the ''autosampler" section, the autosampler will move according to the rotation of the button to fine-tune the position of the autosampler. The user can exit the manual positioning mode by clicking the push-button at any point and the menu will return to the autosampler section. Sel func ? prog start/stop: by clicking the push-button while the ''prog start/stop" item of the ''sel func" section is displayed, the automated program algorithm will start if it was previously disabled or it will stop if it was running.
By clicking on the ''Home" item, present in any section and subsection, the user will exit the menu navigation and the LCD will display the home page.

Instructions for generation of customized automated program sequences
In order to build a custom designed automated program, the user must modify the ''my_program ()" function that can be found at the very end of the Arduino code (main.ino). The ''my_program" function is a case structure in which each case corresponds to one step of the desired sequence of operations. Each step (case) must contain only one instruction from the provided instruction set (Fig. 21). The default instruction must always be the ''stop_program ()" function.
set_pump (rpm, direction, enable) controls the peristaltic pump. The function accepts values of byte-type (0-255). For the ''enable" parameter, 0 corresponds to stop while any other positive integer corresponds to start. For the ''direction" parameter, 0 corresponds to clockwise while any other positive integer corresponds to counterclockwise (the actual direction of the flow depends on the tube placement). The value of the ''rpm" parameter controls the actual speed of the pump in RPM (revolutions per minute).
next_sample (N_of_samples, direction) controls the stepper motor of the autosampler. The function accepts values of ''integer" type. For the ''direction" parameter, 0 corresponds to clockwise while any other positive integer corresponds to counterclockwise. The autosampler rotates 1/N_of_samples of a full rotation.
set_temp_hum (target_T, target_H, enable) stores the setpoints for T and H and enables/disables the climate-control. The function accepts values of integer-type. For the ''enable" parameter, 0 corresponds to stop, while any other positive integer corresponds to start.
reach_target_temp_hum () causes the sequence to stall until both temperature and humidity reach the setpoints within a range of ± 2°C for T and ± 3% for H.
wait_milliseconds (x) causes the sequence to stall for Â milliseconds before moving to the next instruction (ongoing active operations such as ambient control or pump rotation will keep being active). The function accepts values of unsigned_longtype.
instruction_loop (instr_number, number_of_cycles) is used to perform loops of several instructions. The program will jump back to the instruction indicated by ''instr_number" for a number of times specified by ''number_of_cycles". stop_program () is the ''default" instruction, meaning that it is performed any time at the end of the program routine. This function disables the automated program and restores all values to default.  The Arduino Pro Mini has the only task to control the stepper motor of the peristaltic pump. It reads speed, direction and state values sent by the Arduino Mega 2560 from the serial bus and generates the digital signal for direction as well as the square wave signal required to control the stepper motor. This additional external microcontroller is required to provide accurate speed control of the pump, independently from the other functions which are handled by the main microcontroller (Arduino Mega 2560) to avoid critical timing issues. The code for the Arduino Pro Mini (mini_pump_control.ino) must be uploaded before connecting it to the circuit as it will not be accessible from the outside.

Cost analysis
The cost analysis for this project estimates a total cost of 494 USD for a complete retention model setup. As pricing of the various components can be heterogeneous depending on the source, the total cost is expected to vary depending on where the parts are purchased. However, we estimate that the cost is more likely to be reduced as in some cases parts were purchased that were more expensive than necessary. When looking at the cost analysis overview in the The described retention model setup represents a highly customized solution and no commercial alternatives are available yet. Consequently, a cost comparison with commercial solutions is not possible. However, when comparing the cost of individual elements of the setup, such as the peristaltic pump or the temperature and humidity-controlled chamber, with their commercial counterparts, the presented solutions outcompete the latter by far. A comparable commercially available peristaltic pump (120S/DV, Watson-Marlow Danmark A/S, Denmark) that was purchased at a price of 1080 USD is more than twice as expensive as the entire retention model setup and does not offer the possibility of integration with an Arduino microcontroller. Similarly, a commercially available temperature and humidity-controlled chamber for laboratory purposes with approximately twice the volume (HCP 50, Memmert GmbH + Co. KG, Germany) could be found at a price of 7499 USD, thus being >15 times more expensive than the entire retention model setup [23]. These examples illustrate that besides being a customized solution with targeted functionality, the proposed retention model setup can drastically reduce laboratory expenses.

Validation and characterization
The functionality of the constructed retention model setup was tested. In this regard, we investigated the climate control over time, the performance of the peristaltic pump and the automation of the system.

Performance of climate control feedback loop
The capability of the climate control feedback loop using a ceramic heat lamp, an ultrasonic mist fogger, three fans, two DHT22 sensors and an Arduino Mega 2560 was tested by measuring temperature and relative humidity over time (Fig. 22). As experimentally relevant target values, we chose a temperature of 37°C and a relative humidity of 90%. The results show that the humidity fluctuates right below the target value in a much faster frequency than temperature fluctuates around the target value. Furthermore, the target humidity can be reached much faster than the target temperature, which is reached after approximately 10 min. All in all, the control feedback loop shows a very robust behavior which can also be observed when the door of the chamber was opened for a specific amount of time. While the temperature stays unaffected after these short interruptions, the humidity decreases as an extreme down to 50% relative humidity but reaches the target value again within one minute after the event. The temperature exhibits a fluctuation in a range of 5.3°C with an average of 37.9°C and a standard deviation of ±1.5°C. The fluctuation of relative humidity takes place in a range of 12% with an average of 88% and a standard deviation of ±2%.

Peristaltic pump calibration
The peristaltic pump was adapted from a previously posted project in which it was characterized in detail [24]. As the pump was introduced to a modified setting and modified control, a calibration curve was determined (Fig. 23). Within the examined RPM-range, the pump exhibits a precise linear relationship to the flowrate.

Demonstration of retention experiment using automated program sequence and autosampler
To demonstrate the extended capabilities by means of automation of the presented retention model setup, a demonstration experiment with two differently shaped 3D printed specimens was performed (Fig. 24). A piece of untreated porcine intestinal tissue was placed on the tissue holder as soon as the climate control reached the target values of 37°C and 90% relative humidity. Then the tissue was flushed with Dulbeccos' phosphate buffered saline for 5 min at 50 RPM to remove loose pieces of mucus. The 3D printed cones and cylinders ( Fig. 24a and b) had a diameter of 1 mm and were placed simultaneously and randomly in a number of 25 each onto the intestine and left for incubation for 10 min (Fig. 24c). With expiration of the incubation time, a customized program as visualized in Table 1 was started.
As indicated, the program started the pump at 10 RPM, then rotated the autosampler to the next sample (small filter mesh; Fig. 24d) four times after two minutes of flow each. Then the flow was increased consecutively three times to 30, 40 and 50 RPM in order to increase stress conditions. After the program stopped, the cone and cylinder samples in the fractions of the autosampler as well as the samples remaining on the tissue were counted. Plotting the results of the replicated experiments as relative amount of samples left on the tissue (relative retention) against the number of autosampler fractions (Fig. 24e) shows that in all replicates there is a tendency of the cones to exhibit slightly higher retention than the cylinders. This could be caused by the fact that the cones encounter less drag force than the cylinders and also as they might penetrate Table 1 Example instruction loop used for retention experiment in Fig. 24. Climate control is set to a temperature of 37°C and a relative humidity of 90%. After a waiting time of 5 s, the flow of the pump is started at a flowrate of 10 RPM. After 2 min, the sample in the autosampler is changed. The latter procedure is repeated 4 times, then the flowrate is increased. The flow rate is increased 4 times in total until the program stops.
into the mucus layer more easily due to their sharp tip. Since the experiment was fully automated, the number of autosampler fraction correlates with time as well as with flowrate.
In summary, the demonstration and validation of the instrument shows: Stable control of temperature and humidity over time o Fluctuation of temperature in range of 5.3°C over time (mean of 37.9°C; standard deviation of ±1.5°C over time) o Fluctuation of relative humidity in range of $12% over time (mean of 88%; standard deviation of ± 2% over time) Precise peristaltic pump calibration with linear correlation of RPM to flowrate ml/min in a physiologically relevant range of flowrate Capability to run fully automated mucoadhesion assays using an autosampler and a customized controller program

Potential modifications
Potential modifications of the system include a more precise control of the slide angle. Increased repeatability of the angle will possibly lead to increased repeatability of the experiments. As the RAMPS 1.4 Arduino shield has three more slots for stepper motor drivers, a motor could be used to precisely control the angle of the slide.
Further, the design of the peristaltic pump could be altered in order to more easily fit tubes of different diameters and thereby achieve different ranges of flowrates.
Another desirable modification would be the optimization of 3D printed parts to reduce the amount of required screws and to adapt the parts to the use of the same size and type of screws as they contribute a substantial fraction of the cost of the setup.

Declaration of Competing Interest
None.