My self-made 3D-printable designs, mainly in OpenSCAD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CapAdapter.scad 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // Soda bottle cap Co2 dispensing adapter
  2. // Made in July 2017 by xythobuz@xythobuz.de
  3. // Licensed under CC-BY-SA-NC
  4. // Necks & Caps for DIY projects
  5. // Xavan June 2016
  6. // https://www.thingiverse.com/thing:1654620
  7. // Minimum Radius: ~15mm
  8. // License: CC-BY
  9. include <NecksCaps.scad>;
  10. // cap-type specific
  11. diameter = 30.4;
  12. wall_height = 1.5;
  13. // Universal Hose Coupler & Funnel Maker
  14. // Mooncactus January 2013
  15. // https://www.thingiverse.com/thing:44850
  16. // License: CC-BY-SA
  17. include <HoseAdapter.scad>;
  18. channel_diameter = 4;
  19. wall_size = 4;
  20. pipe_diameter = 4;
  21. pipe_wall_size = 2.2;
  22. pipe_height = 20;
  23. hose_offset = 6.5;
  24. thread_diameter = 5;
  25. thread_pitch = 0.8;
  26. thread_height = 15;
  27. thread2_diameter = 5;
  28. thread2_pitch = 0.8;
  29. thread2_height = 10;
  30. oring_height = 2.2;
  31. oring_dia_add = 4.2;
  32. // OpenSCAD Threads
  33. // http://dkprojects.net/openscad-threads/
  34. //include <threads.scad>;
  35. // threads are not really useful in these sizes...
  36. module metric_thread(dia, pitch, height, internal) {
  37. cylinder(d = dia - pitch, h = height);
  38. }
  39. module cap() {
  40. rotate([180, 0, 0])
  41. //38mm3start (); // diameter: 42, radius: 21
  42. 28PCO1810 (); // diameter: 30.43, radius: 15.215
  43. //28PCO1881 (); // diameter: 30.4, radius: 15.2
  44. cylinder(d = diameter, h = channel_diameter + (2 * wall_size));
  45. }
  46. module adapter() {
  47. difference() {
  48. cap();
  49. // gas input hole
  50. translate([-diameter / 2 - 1, 0, (channel_diameter / 2) + wall_size])
  51. rotate([0, 90, 0])
  52. cylinder(d = channel_diameter, h = diameter / 2 - wall_size + 1);
  53. // liquid output hole
  54. translate([wall_size, 0, (channel_diameter / 2) + wall_size])
  55. rotate([0, 90, 0])
  56. cylinder(d = channel_diameter, h = diameter / 2 - wall_size + 1);
  57. // gas input outlet
  58. translate([-wall_size, 0, wall_size + channel_diameter - 20])
  59. cylinder(d = channel_diameter, h = 20);
  60. // liquid output inlet
  61. translate([wall_size, 0, wall_size + channel_diameter - 20])
  62. cylinder(d = channel_diameter, h = 20);
  63. // gas input thread
  64. translate([-diameter / 2 - 1, 0, (channel_diameter / 2) + wall_size])
  65. rotate([0, 90, 0]) {
  66. metric_thread(thread2_diameter, thread2_pitch, thread2_height + 1, internal = true);
  67. cylinder(d = thread2_diameter + oring_dia_add, h = oring_height + 1);
  68. }
  69. // liquid output thread
  70. translate([diameter / 2 - thread2_height, 0, (channel_diameter / 2) + wall_size])
  71. rotate([0, 90, 0]) {
  72. metric_thread(thread2_diameter, thread2_pitch, thread2_height + 1, internal = true);
  73. translate([0, 0, thread2_height - oring_height])
  74. cylinder(d = thread2_diameter + oring_dia_add, h = oring_height + 1);
  75. }
  76. }
  77. // liquit output inlet
  78. translate([wall_size, 0, -pipe_height - wall_height])
  79. difference() {
  80. cylinder(d = pipe_diameter + (2 * pipe_wall_size), h = pipe_height);
  81. translate([0, 0, -1])
  82. cylinder(d = pipe_diameter, h = pipe_height + 2);
  83. translate([0, 0, -1])
  84. metric_thread(thread_diameter, thread_pitch, thread_height + 1, internal = true);
  85. }
  86. /*
  87. // inlet hose adapter
  88. translate([-diameter - hose_offset, 0, 6])
  89. rotate([0, 90, 0])
  90. tube_adapter();
  91. // outlet hose adapter
  92. translate([diameter + hose_offset, 0, 6])
  93. rotate([0, -90, 0])
  94. tube_adapter();
  95. */
  96. }
  97. translate([0, 0, channel_diameter + (2 * wall_size)])
  98. rotate([180, 0, 0])
  99. adapter();