Design / Simple chips / Straight channel maker

Straight Channel Maker

straight_channel

rectangular channel runs in your browser SCAD · STL · JSON

Design a small channel for liquid to flow through, then download a file you can 3D print. As you change its size, the tool shows how the liquid will flow. It runs on your own machine and sends nothing anywhere.

Nothing made with this tool has been printed or tested.

Technical details

Enter a straight rectangular channel in printer pixels and layers, read its hydraulic resistance, pressure drop and flow rate as you type, and download the geometry as parametric OpenSCAD, a watertight STL, or a JSON parameter record. Everything runs client-side — nothing is uploaded, and there is no server to go down.

Plan — looking down

Long section — on the channel centreline

1 · Printer

Asked first, because every dimension below is entered in this printer's pixels and layers. A pixel is the smallest step the printer can draw in X or Y: on the BYU printer, one pixel of its projected image (DLP); on the Phrozen Sonic Mighty 12K, one pixel of the LCD screen that masks its UV light. A layer is one Z step of the stage.

The Phrozen 12K has non-square pixels: 19 µm in X, 24 µm in Y. This tool models one isotropic pitch, so the machine is offered as two presets — pick the axis you want to check a feature against. Either preset matches the printer's pixel along that axis only. The .scad and the .stl give lengths in millimetres (the .json in micrometres), and the printer rounds them to its own pixels: worst case half a pixel, ±9.5 µm in X and ±12 µm in Y. Layer-height dimensions are unaffected.

µm

µm

2 · Channel

Entered on the printer grid. The µm box beside each field is editable — type a real-world number and it snaps to the nearest whole pixel or layer, and tells you what it snapped to. Off-grid dimensions are never silently accepted.

ch

One channel. Raise this for a parallel array like the 16-channel commercial chips.

≡ µm

≡ µm

≡ µm

≡ µm

3 · Surrounding solid

Wall thickness is applied on each side in Y. With capped ends it also becomes the end-cap thickness in X. The block's outer size is derived from these — the channel can never be taller than its own interior.

≡ µm

≡ µm

≡ µm

4 · Ports

How fluid gets in and out. Roof ports, the default, cap both ends with a wall and cut a shaft, round or square, up through the roof. Each port sits at the very end of its channel, so no channel runs on past it into a dead end that liquid cannot flush out of. Where the channel is wider than its port, a tapered end closes the channel's side walls in to the port at 60°, so no square corner is left beside it for liquid to sit in. Tubing can go into a socket cut down into the chip, into a raised socket standing on the top face, or over a slip-on post. Open ends instead leave the channel running clean out of both X end faces.

A round port's diameter is a whole number of pixels. The printer can only draw whole pixels, so it prints a round port as a stair-stepped circle, not a smooth one.

≡ µm

Channel end:

No tube port has been printed or tested. Whether tubing grips and seals depends on the printer and the resin, and nobody has measured it. You may need to make the socket a little wider or narrower. The wall around each socket is only as thick as the chip's side wall, 155.8 µm with the current settings, and pushing a tube in may crack a wall that thin.

No raised socket has been printed or tested. Whether tubing grips and seals depends on the printer and the resin, and nobody has measured it. The boss is a tall, thin feature: levering the tubing sideways can snap it off.

A raised socket is a round boss standing on the top face over the port, with a socket down its middle sized to the tubing's outside diameter. The socket's floor is the chip's top face: the tubing stops on the shoulder there, and the round port, sized above, carries on below it into the channel. The chip keeps its whole roof, and the grip comes from the boss's height. The starting tubing, 1/16 in, is a starting point, not a tested choice.

A tube port is a socket cut down from the top face, sized to the tubing's outside diameter. The round port, sized above, carries on from the socket's floor down into the channel, narrower, so the tube sits against the step between them.

µm

≡ µm

The starting depth, 100 layers, is a starting point, not a tested figure. The roof must be at least one layer deeper than the socket.

≡ µm

The starting depth, 150 layers, is a starting point, not a tested value.

≡ µm

The starting wall, 40 px, is a starting point, not a tested value. It must be at least the chip's side wall.

No slip-on post has been printed or tested. How well a post grips depends on the tubing: its material, its wall and how far it stretches. The post is a tall, thin feature: levering the tubing sideways can snap it off. It is a smooth post, not a barb: a retaining ridge would print as an overhang on the way up.

A slip-on post stands on the top face over the port, a little wider than the tubing's inside so soft tubing grips it, with a short cone at the tip to start the tubing on. Its bore carries the liquid from the port up through the post, as wide as the post's wall allows.

µm inside µm outside

The starting tubing, 1/32 × 3/32 in, is a starting point, not a tested choice. Measure your own: nominal sizes vary.

%

The starting 15% is a starting point, not a tested value: how far tubing can stretch and still grip depends on the tubing.

≡ µm

The starting height, 200 layers, is a starting point, not a tested value.

≡ µm

The starting wall, 30 px, is a starting point, not a tested value. It must be at least the chip's side wall; the bore is as wide as it allows.

5 · Flow conditions

Enter one of flow rate or pressure drop; the other is computed from the rectangular-duct resistance below.

How accurate the resistance, pressure drop and flow rate are. The channel's hydraulic resistance comes from a standard one-term formula for a rectangular channel. While the channel’s height is at most half its width (or its width at most half its height), it is within 0.2% of the exact solution. It drifts as the cross-section approaches square: for a square channel the resistance and pressure drop shown are 14% too high, and a flow worked out from a pressure is 12% too low. Checked against the exact series solution in Bruus, Theoretical Microfluidics, Oxford University Press, 2008.

µL/min

mPa·s

Water at 20 °C = 1.002 mPa·s. Editable.

Geometry

Laminar estimate

Checks

    Download

    • SCAD channel.scad
    • STL channel.stl
    • JSON channel.json

    The downloads are off until the maker has started: it makes the files here, in your browser. If this line stays, the maker has not started (JavaScript may be off or blocked, or its script failed) and no file can be made.

    STL is binary, millimetre units, Z up, origin at the block's minimum corner.

    The flow model, and where it is valid

    The pressure/flow relationship is the rectangular-duct Hagen–Poiseuille approximation given in the h.r.3.3 PDK's own component documentation for this part (pdk/docs/Rectangular Channel.docx, “Component model”), which in turn cites Bruus:

    R_hyd = 12 · η · l / ( w · h³ · (1 − 0.63 · h / w) )    Q = ΔP / R_hyd

    Validity condition: h ≤ w. The series approximation the 0.63 term comes from is written for a duct whose height is the shorter side. If you enter a channel taller than it is wide the tool still reports a number, but it computes it on the same duct with the two cross-section dimensions exchanged and says so in the readout — and that geometry separately fails the PDK's documented h < w rule.

    Where the ends are tapered, each taper is counted slice by slice with the same formula. With roof ports, each port's hole through the roof is counted too, as a duct of the port's shape: a round port as a round tube of the same area, R = 8 · η · L / (π · r⁴), and a square port by the exact series for a square duct, R = 12 · η · L / (0.4217 · a⁴). That part is approximate: the holes are short, and entrance effects are not modelled. Where the ports carry slip-on posts, each post's bore is counted as a round tube as well.

    Everything the calculator prints is a laminar estimate for a straight channel, not a guarantee. It assumes fully developed, steady, incompressible, single-phase Newtonian flow, rigid walls, no entrance or exit losses, no surface-tension effects, and perfectly rectangular cross-section. A real printed channel has none of those exactly. Reynolds number is reported so you can see when the laminar assumption itself is in question; water density is taken as 998.2 kg/m³ at 20 °C.

    What is checked, and what is not

    The blocking checks are geometric self-consistency only — whether the solid you described can exist as a printable body. The single process rule that is checked, h < w, is checked because it is written down in the PDK component document for the rectangular channel. It is the only one.

    On the BYU grid, the block is also compared with the image BYU publishes for the OS1, 2560 × 1600 pixels (19.5 × 12.2 mm, BYU’s rounded figure; the OS1’s Specs page, read 2026-09-30), either way round. The comparison is in pixels: on this grid a pixel of the block is a pixel of the image, so 2560 pixels fit and 2561 do not, whatever a pixel’s exact size. A block bigger than that both ways is flagged and never refused: the files stay on. Each figure is BYU’s published figure for the OS1: see Hardware and process. On any other grid no build area is compared.

    There are obvious further questions — the smallest channel this printer can actually resolve, whether a one-pixel wall survives handling, whether uncured resin will drain from a long enclosed channel. This tool does not answer them and does not guess. The OpenMFDA design kit's documentation gives no limit for any of them, so inventing a threshold here would be worse than leaving it visibly unchecked. Those items are listed in the Checks panel as not checked.

    Nothing produced by this page has been printed or fluidically tested. It is geometry and arithmetic.

    Grid discipline

    Every dimension is stored as a whole number of pixels or layers, because that is what the printer can actually address. The µm boxes are a convenience: type 250 µm at a 7.6 µm pitch and the tool takes 33 px (250.8 µm) and tells you it did. Two consequences worth knowing: a port whose width has the opposite parity to the channel's sits half a pixel off centre, and the tool moves it to the nearest whole pixel rather than emitting an off-grid coordinate; and the block's outer height is always floor + channel + roof, so it cannot disagree with its own contents.