DIY air ioniser with wide voltage range

From bigclivedotcom.

You do NOT need a 3D printer to make this project. You can use a standard project case.

If you do choose to make a 3D printed case, then the three scripts are included below in this description. They can be copied and pasted individually into OpenSCAD to create customised STL files to suit your exact needs. The base and top have some variables that can be adjusted if desired.

OpenSCAD is an amazing piece of free software that lets you describe 3D models with text. It’s often described as "The programmers CAD". The main advantage here is that it allows the use of variables and logic, so a small script can achieve great things.

I printed my unit in two shades of marble PLA. I’m not sure if black pigments have carbon as a colouring agent. If they do it might be worth avoiding them, as electrostatic charge does weird things on even high resistance surfaces.

This project does involve working with mains voltage circuitry, and should only be attempted by those experienced in that area. You build this unit entirely at your own risk.

You can find the ioniser modules on sites like AliExpress. The common name is PK-A22F.
There is a dedicated video about that module showing the internal circuitry.
It takes an AC supply of 100-240V and puts out an extremely high voltage at low current to a carbon fibre tuft. When a high negative voltage is applied to very sharp points (the tuft) it imparts an electrostatic charge into the air.

I do not recommend using low voltage modules with plug-in DC power supplies, as ionisers create a very high voltage difference with respect to ground, and it can cause arcing between the high and low voltage sides of a power supply. The 12V modules should be fine in off-grid homes with a general 12V system referenced to the chassis.

To test your ioniser, you should feel a slight draught from the carbon fibre tuft. It can also be heard if pointed directly at your ear. If the ioniser is placed on a white sheet of paper and left for a week or so, there should be a visible outline of it on the paper if it collects fine dust.

Here are the openscad scripts. Be careful to keep the "=" and ";" on either side of variables when changing them. The comments next to the variables have suggested values in brackets.

The text below here is the script for the base. You can adjust the size of the module box within reason.

//Cone shaped ioniser base
boxx=28; //widest side of ion module (28)
boxy=15; //shortest side of ion module (15)
base=1.6; //thickness of base plate (1.6)
$fn=100;
difference(){
union(){
//base
cylinder(h=base,d=60);
//lip
cylinder(h=2+base,d=56.4);
}
//central recess
translate([0,0,base])
cylinder(h=3,d=53.2);
//cable entrance
translate([-2.5,-30,base])
cube([5,6,7]);
//cone pillar recesses
translate([-25.5,0,base])
cylinder(h=3,d=8);
translate([25.5,0,base])
cylinder(h=3,d=8);
//cone screw holes
translate([-25.5,0,-1])
cylinder(h=base+2,d=3);
translate([25.5,0,-1])
cylinder(h=base+2,d=3);
}
difference(){
//ion module block
translate([-(boxx+2.4)/2,-2,base])
cube([boxx+2.4,boxy+2.4,6]);
//ion module recess
translate([-boxx/2,-.8,base])
cube([boxx,boxy,7]);
}
difference(){
//cable grip
translate([0,-12,base])
cylinder(h=6,d=22);
translate([0,-12,base])
cylinder(h=7,d=18);
//cable entrance
translate([-5,-23,base])
cube([10,6,7]);
}
difference(){
//Cable grip central pillar
translate([0,-12,base])
cylinder(h=6,d=8);
//cable grip screw hole
translate([0,-12,base])
cylinder(h=7,d=2.5);
}

The text below here is the script for the main conical case. It has a few variables for the height of the cylindrical section and cone, plus a hole size option for the emitter.

//Cone shaped ioniser top
base=15; //base vertical section height (15)
cone=100; //base cone height (100)
hole=2.5; //diameter of emitter hole (2.5)
$fn=100;
difference(){
union(){
//base
cylinder(h=base,d=60);
//cone
translate([0,0,base])
cylinder(h=cone,d1=60,d2=hole+3.2);
//top emitter mount
translate([0,0,base+cone])
cylinder(h=4,d=hole+3.2);
}
//base recess
translate([0,0,-1])
cylinder(h=base+1,d=56.8);
//cone recess
translate([0,0,base])
cylinder(h=cone,d1=56.8,d2=hole);
//top emitter hole
translate([0,0,base+cone-1])
cylinder(h=6,d=hole);
//cable entrance
translate([-2.5,-30,0])
cube([5,6,2.5]);
//cable entry arch
translate([0,-26,3])
rotate([90,0,0])
cylinder(h=6,d=5);
//x-ray cube
//translate([-50,-50,-1])
//cube([100,50,150]);
}
difference(){
union(){
//cone pillar recesses
translate([-25.5,0,0])
cylinder(h=10,d=6.8);
translate([25.5,0,0])
cylinder(h=10,d=6.8);
}
//cone screw holes
translate([-25.5,0,-1])
cylinder(h=12,d=2.5);
translate([25.5,0,-1])
cylinder(h=12,d=2.5);
}

The text below here is the very short script to create a custom washer to stop the cable from popping out of the restraint.

//ion cone cable restraint washer
$fn=100;
difference(){
//main disk
cylinder(h=2,d=18);
//centre hole
translate([0,0,-1])
cylinder(h=4,d=3);
}