📜 ⬆️ ⬇️

Homemade smoke machine

To demonstrate the steampunk cosplay, a smoke machine was needed (well, what kind of steampunk without smoke?), But it did not appear at the scene. Without thinking twice, I decided to make my own small smoke machine, with thermal control, remote control (ESP-12E controller was used) and battery-powered. For the basis I took the already described dummy with temperature measurement, but slightly complicated the scheme for improving the characteristics.



The most difficult element turned out to be the manufacture of the helix and the system of feeding the mixture of glycerin with propylene glycol. After a couple of experiments, I stopped at a six-helix spiral with a diameter of about 12 mm, wound from a "pigtail", twisted of 7 titanium cores with a diameter of 0.29. In general, it would be better to take a thicker wire and do without the "pigtail", but there was a limited choice of materials at hand. The resulting coil has a resistance of about half ohm, which gives a theoretical power for 12 volts at 240 watts (in fact, the heating power will be less, due to the need to keep the temperature at around 210-230 degrees).

The wire of the spiral after twisting into a pigtail and winding (it is necessary to shake on a tube of a smaller diameter, since titanium is very elastic) is better washed and calcined (feeding 12 volts from the battery to red heat, in order to eliminate trapped organic impurities (grease from fingers and the like).
')
In general, there was an idea to make a heater in the form of a copper tube filled with machine oil with a spiral inside, which would guarantee almost complete heating uniformity and would make a much more powerful heater, but the necessary materials were not at hand.

It was necessary to tinker with the supply of fluid, since it must be, on the one hand, continuous and uniform, and on the other, not too abundant. There was a water pump on hand that did not have a feed adjustment, so I stopped at the following design - a perforated silicone tube with a diameter of 5mm (about a dozen holes of a 1.2mm drill), wound with cotton, on top of which the helix is ​​located. Since the pump drives much more fluid than it flows through the cotton wool - the end of the tube goes to the same tank, from where the pump takes the compound. The reservoir itself is a non-spill inkjet printed on the printer, which is located under the spiral itself and, among other things, collects drops of liquid that flow from it.

It must be said that a loose fit of the helix to the wool (or even just too long leads on the helix that are not in contact with the liquid) leads to uneven heating, which causes a burning smell and may even result in a fire. Because of this, it is impossible to make too large or long spiral, limiting power. Therefore, the technique was the same - a rectangle of cotton wool is wound on top of the leaky part of the tube (in stores for vapers, it is sold in this form), then the resulting cotton cylinder with the tube inside is screwed into a helix as if by thread.

He took a 12-volt turbine as a fan, which hobbyking somehow sold for mere pennies. The pump - Chinese water (due to the fact that it was designed for 6 volts, I had to add another dc-dc converter to the LM2596), connected in parallel with the fan. The machine is powered by a 3S Li-Pol battery 2.6 Amp-hour rated 40C.

Scheme:

image

Control code fragment (rather rough adjustment, I didn’t want to mess around with the PID controller and its setting), we call the pulse_heat_coil () function with the necessary interval for heating (recommended in 10-20 milliseconds). For more precise adjustment, you need at least a second ADC (for simultaneous measurement of battery voltage) and a separate controller from wifi (as in the modes I described for vamping on stm32 and arduino mini pro). It is better to turn on the fan with a pump a few seconds before the heater and turn it off a dozen seconds after, in order to avoid unpleasant incidents.

// Measure coil resistance (and put it into coil_input) #define TEST_RESISTOR 25 #define HALF_PULSE_RANGE 1.6 #define STOP_PULSE_RANGE 1.7 float coil_input_zero = 0.001; float coil_input_zero, batt_input, coil_resist; void measure_coil() { // Measure battery voltage (only possible when heater on) if (digitalRead(HEATER) == HIGH) batt_input = analogRead(A0); // Turn off heater analogWrite(HEATER, 0); digitalWrite(HEATER, LOW); delayMicroseconds(10); digitalWrite(TESTPIN, HIGH); delayMicroseconds(10); coil_input = analogRead(A0); digitalWrite(TESTPIN, LOW); delayMicroseconds(10); if (coil_input_zero == 0.001) coil_input_zero = coil_input; coil_resist = TEST_RESISTOR * ((float) coil_input / (float) batt_input - 1); } // void measure_coil() // Make coil heating pulse with thermocontrol void pulse_heat_coil(int pulse_delay) { float curr = (float) coil_input / (float) coil_input_zero; if ((coil_input < 1023) && (curr < STOP_PULSE_RANGE)) { if (curr > HALF_PULSE_RANGE) analogWrite(HEATER, PWMRANGE / 2); else analogWrite(HEATER, PWMRANGE-1); delay(pulse_delay - 1); } else { analogWrite(HEATER, 0); digitalWrite(HEATER, LOW); delay(pulse_delay - 1); } delayMicroseconds(50); measure_coil(); } // void pulse_heat_coil(int pulse_delay) 

Source: https://habr.com/ru/post/399387/


All Articles