Jetty's Wifi Web Based Laminar Jet Project
5 posters
Page 1 of 2
Page 1 of 2 • 1, 2
Jetty's Wifi Web Based Laminar Jet Project
Here's a detailed description of my web based project. I've learnt a lot from everyone else on this forum, so in the spirit of sharing, I'm providing back a detailed description of methods I ended up using and reasons why including electronics schematics and program code.
In my design I haven't always gone for the cheapest solution, I've used parts that are relatively obtainable or provide better functionality or quicker design. The whole design is very modular, so you can take parts of this and use in your own projects and replicate if you need multiple jets. I'm ultimately using it for 2 jets, but it can easily work for 1 - 9 or even more with one micro controller controlling everything
Anything that has been created by myself as described here is licensed under Creative Commons license - Attribution-NonCommerical-ShareAlike, otherwise the source is listed.
Disclaimers: Please note, I use mains electrical power in this project and make attempts to minimize risk. High voltage and water do not mix and can kill, make sure you know what you're doing before playing with the stuff. Follow your local electrical codes and always use a GFCI , GFI or RCD. Also, High Powered LED's can damage your vision LED Safety and if fed too much current / voltage can explode violently. Finally don't blame me if you hurt yourself.
Specifications:
- Fully Automated
- 10 inch diameter nozzle
- Stepper Motor Cutter (Unipolar) with lower power enable
- Thumper using the Cutter Stepper Motor
- Stream degrading using the Cutter Stepper Motor Vibration
- Optional 3V Pager Motor based Stream Degrading or Thumper
- Optically Isolated Remote Solid State Pump Switch
- Solid State Wind Sensor (no moving parts)
- Water Tank Level Sensors (using Pressure sensors)
- BlinkM MaxM controlled lighting schemes / light effects
- Configurable Constant Current RGB LED Controller (0 - 1000mA)
- LED Buck driver (no need for large heat sinks)
- LED mounted on Nozzle using perspex rod (no need for remote optic fiber)
- IP67 (water resistant) rated power supplies
- Auto shutdown (temperature, water level, wind)
- Temperature Monitoring (Outside, Electronics, Steppers, LEDs) using 1wire bus
- Arduino Microcontroller (Mega 2560)
- Web Based Control over Wifi
- Wifi (Open, WEP, WPA, WPA2) AdHoc or Infrastructure
In my design I haven't always gone for the cheapest solution, I've used parts that are relatively obtainable or provide better functionality or quicker design. The whole design is very modular, so you can take parts of this and use in your own projects and replicate if you need multiple jets. I'm ultimately using it for 2 jets, but it can easily work for 1 - 9 or even more with one micro controller controlling everything
Anything that has been created by myself as described here is licensed under Creative Commons license - Attribution-NonCommerical-ShareAlike, otherwise the source is listed.
Disclaimers: Please note, I use mains electrical power in this project and make attempts to minimize risk. High voltage and water do not mix and can kill, make sure you know what you're doing before playing with the stuff. Follow your local electrical codes and always use a GFCI , GFI or RCD. Also, High Powered LED's can damage your vision LED Safety and if fed too much current / voltage can explode violently. Finally don't blame me if you hurt yourself.
Specifications:
- Fully Automated
- 10 inch diameter nozzle
- Stepper Motor Cutter (Unipolar) with lower power enable
- Thumper using the Cutter Stepper Motor
- Stream degrading using the Cutter Stepper Motor Vibration
- Optional 3V Pager Motor based Stream Degrading or Thumper
- Optically Isolated Remote Solid State Pump Switch
- Solid State Wind Sensor (no moving parts)
- Water Tank Level Sensors (using Pressure sensors)
- BlinkM MaxM controlled lighting schemes / light effects
- Configurable Constant Current RGB LED Controller (0 - 1000mA)
- LED Buck driver (no need for large heat sinks)
- LED mounted on Nozzle using perspex rod (no need for remote optic fiber)
- IP67 (water resistant) rated power supplies
- Auto shutdown (temperature, water level, wind)
- Temperature Monitoring (Outside, Electronics, Steppers, LEDs) using 1wire bus
- Arduino Microcontroller (Mega 2560)
- Web Based Control over Wifi
- Wifi (Open, WEP, WPA, WPA2) AdHoc or Infrastructure
Last edited by jetty on Mon Sep 26, 2011 10:49 pm; edited 1 time in total
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: Jetty's Wifi Web Based Laminar Jet Project
Here are some screenshots using Safari (the web browser on the iPad). 2nd image shows half of the available lighting sequences available on the BlinkM MaxM. 3rd image shows the initial set of available programs (scenes) for day and night.
The page surround color takes on the current color of the LEDs.
(Click on photo to see it in full)
The page surround color takes on the current color of the LEDs.
(Click on photo to see it in full)
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: Jetty's Wifi Web Based Laminar Jet Project
Here's a video (layout, day and night). Not installed yet, and need to build the 2nd nozzle, but up and running. The video demonstrates various features of the design. The portion at night demos using the stepper motor cutter to degrade the stream (can be used instead of additives) and using the stepper motor cutter against a built in hard stop in the cutter mechanism to produce "flashes" in the stream at night.
Please forgive the poor video quality at night, the video camera isn't too great and the laminar jet is hard to auto focus on.
Please forgive the poor video quality at night, the video camera isn't too great and the laminar jet is hard to auto focus on.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
0-1000mA Per Channel Buck Puck LED Driver
I created this design which has the following features:
- PWM Driving
- No Large (or any) heatsinks
- Low Temperature and Low Power Wastage
- Support for a large range of LEDs currents and forward voltages (upto 1A per channel)
- Support for multiple LEDs on a channel
- Easy to program (no requirement to handle color blending or PWM etc.)
- RGB control capable
- RGB Preset Color Scripts
- Support for multiple channels without additional interface requirements
Control is based on the BlinkM_MaxM. It's an PWM RGB led driver controlled by I2C. You can put up to 127 BlinkM_MaxM's on one bus which means 127 laminar RGB nozzles all controlled with only 2 data lines from 1 micro controller !
The BlinkM_MaxM comes with a low powered LED daughter board. I kept this, so I could program the electronics when not connected to the nozzle LED, but still see what colors were being displayed. The daughter board is optional in this design.
Further information on the BlinkM_MaxM can be found here:
BinkM MaxM
Because the BlinkM_MaxM can't power high powered LEDs, I use a LUXDRIVE BuckPuck
(3021-D-E-1000) which will drive up to 1A.
BuckPucks are like a switched mode power supply that can drive a constant current without wasting power as heat when dropping the voltage. You can also make one, but for $13, a lower component count and no hassle, $13 is a very reasonable price to pay:
Luxdrive 3021 BuckPuck
The signal from the BlinkM_MaxM is first inverted (Q1), because the BlinkM_MaxM drives the daughter board led's Common Anode, and most high powered LED's are Common Cathode. Because of the potential for leakage holding the daughter board LEDs weakly on when they should be off, D1 was added.
R6 is a multiple turn trimmer that forms a variable resistor (0-5K). Be careful you don't blow up your LEDs by applying too much power before you adjust, make sure that when mounted, the resistance is 0K. 0K = 0% power, 5K = 100% Power to your LED. Make sure that clockwise turning increases resistance, then increased power is clockwise turning.
JP1 is a test point. Ordinarily this can be jumpered, but when you are setting up the current through the LED, jumper with the 0.1Ohm 1% Tolerance 2 Watt Resistor. The voltage across this resistor in millivolts X 10, will be equal to the output current in mA.
The circuit needs to be replicated per channel. Pay close attention to power requirements and amperage. For 2 nozzles, I used 2 x 24V DC supplies (1 per RGB LED) and 1x12V Power supply shared between the BlinkM MaxM's and the stepper motors.
The I2C bus needs a pull-up resistor on each of the 2 bus lines. You only need one for all the channels, locate these at the micro-controller.
Parts List:
Per Channel:
1 - Luxdrive BuckPuck 3021-D-E-1000
1 - Jumper
1 - 2N3904
1 - 2N4403
1 - 5K Multi-turn Trimmer Pot
1 - 1N4148
1 - 27K Resistor
1 - 1K Resistor
1 - 10K Resistor
2 - 5K Resistor
Also Required
1 - BlinkM_MaxM (1 per set of RGB channels)
2 - 2.2K Resistor
1 - 0.1Ohm 1% Tolerance 2Watt Resistor
Power Supplies
High Powered LEDs
I've used 2 types of LEDs with this design, 350mA and 700mA per channel (40W):
40W Led
Since replaced with this:
Replacement 40W Led
and
350mA RGB Led
The LED's themselves will run hot, it's important not to nuke em, so use an adequate heatsink on the LED. The 40W LED I'm using is rated at 125C, and maxes out at 98C with heatsink when testing inside with no air flow, and 70C when being used installed above a tank of water and open air (with all channels on).
The system design also includes a temperature sensor inside the LED heat sink (not depicted in this design), but is part of the system temperature monitoring to avoid over heating.
- PWM Driving
- No Large (or any) heatsinks
- Low Temperature and Low Power Wastage
- Support for a large range of LEDs currents and forward voltages (upto 1A per channel)
- Support for multiple LEDs on a channel
- Easy to program (no requirement to handle color blending or PWM etc.)
- RGB control capable
- RGB Preset Color Scripts
- Support for multiple channels without additional interface requirements
Control is based on the BlinkM_MaxM. It's an PWM RGB led driver controlled by I2C. You can put up to 127 BlinkM_MaxM's on one bus which means 127 laminar RGB nozzles all controlled with only 2 data lines from 1 micro controller !
The BlinkM_MaxM comes with a low powered LED daughter board. I kept this, so I could program the electronics when not connected to the nozzle LED, but still see what colors were being displayed. The daughter board is optional in this design.
Further information on the BlinkM_MaxM can be found here:
BinkM MaxM
Because the BlinkM_MaxM can't power high powered LEDs, I use a LUXDRIVE BuckPuck
(3021-D-E-1000) which will drive up to 1A.
BuckPucks are like a switched mode power supply that can drive a constant current without wasting power as heat when dropping the voltage. You can also make one, but for $13, a lower component count and no hassle, $13 is a very reasonable price to pay:
Luxdrive 3021 BuckPuck
The signal from the BlinkM_MaxM is first inverted (Q1), because the BlinkM_MaxM drives the daughter board led's Common Anode, and most high powered LED's are Common Cathode. Because of the potential for leakage holding the daughter board LEDs weakly on when they should be off, D1 was added.
R6 is a multiple turn trimmer that forms a variable resistor (0-5K). Be careful you don't blow up your LEDs by applying too much power before you adjust, make sure that when mounted, the resistance is 0K. 0K = 0% power, 5K = 100% Power to your LED. Make sure that clockwise turning increases resistance, then increased power is clockwise turning.
JP1 is a test point. Ordinarily this can be jumpered, but when you are setting up the current through the LED, jumper with the 0.1Ohm 1% Tolerance 2 Watt Resistor. The voltage across this resistor in millivolts X 10, will be equal to the output current in mA.
The circuit needs to be replicated per channel. Pay close attention to power requirements and amperage. For 2 nozzles, I used 2 x 24V DC supplies (1 per RGB LED) and 1x12V Power supply shared between the BlinkM MaxM's and the stepper motors.
The I2C bus needs a pull-up resistor on each of the 2 bus lines. You only need one for all the channels, locate these at the micro-controller.
Parts List:
Per Channel:
1 - Luxdrive BuckPuck 3021-D-E-1000
1 - Jumper
1 - 2N3904
1 - 2N4403
1 - 5K Multi-turn Trimmer Pot
1 - 1N4148
1 - 27K Resistor
1 - 1K Resistor
1 - 10K Resistor
2 - 5K Resistor
Also Required
1 - BlinkM_MaxM (1 per set of RGB channels)
2 - 2.2K Resistor
1 - 0.1Ohm 1% Tolerance 2Watt Resistor
Power Supplies
High Powered LEDs
I've used 2 types of LEDs with this design, 350mA and 700mA per channel (40W):
40W Led
Since replaced with this:
Replacement 40W Led
and
350mA RGB Led
The LED's themselves will run hot, it's important not to nuke em, so use an adequate heatsink on the LED. The 40W LED I'm using is rated at 125C, and maxes out at 98C with heatsink when testing inside with no air flow, and 70C when being used installed above a tank of water and open air (with all channels on).
The system design also includes a temperature sensor inside the LED heat sink (not depicted in this design), but is part of the system temperature monitoring to avoid over heating.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: 0-1000mA Per Channel Buck Puck LED Driver
Frontside of Controller (bare):
Frontside of Controller with BuckPucks and BlinkM MaxM's:
Backside of Controller:
Controller with electronics in box: (2 BlinkM MaxM's on right, LED on left):
Led Heat Sink (350mA per channel):
Led Heat Sink assembled (350mA per channel):
Version 2, 40W LED:
Led Heat Sink (700mA per channel LED and Temperature Sensor). Coated with copious amounts of heat transfer compound prior to assembly:
Frontside of Controller with BuckPucks and BlinkM MaxM's:
Backside of Controller:
Controller with electronics in box: (2 BlinkM MaxM's on right, LED on left):
Led Heat Sink (350mA per channel):
Led Heat Sink assembled (350mA per channel):
Version 2, 40W LED:
Led Heat Sink (700mA per channel LED and Temperature Sensor). Coated with copious amounts of heat transfer compound prior to assembly:
Last edited by jetty on Mon Sep 26, 2011 10:50 pm; edited 1 time in total
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: 0-1000mA Per Channel Buck Puck LED Driver
Video of driver in action. Using a polystyrene cup to diffuse / blend the light from the 3 channels (350mA).
Note the 350ma LED can likely damage your vision if looked at directly, with a 40W 700mA LED you will definitely damage your vision. The Blue channel in particular can be the most damaging.
LED Safety
Note the 350ma LED can likely damage your vision if looked at directly, with a 40W 700mA LED you will definitely damage your vision. The Blue channel in particular can be the most damaging.
LED Safety
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
LED Heat Sink Design
Here's the LED Heat Sink Design. These pictures show it with the 350mA LED, I've since changed this to the 40W LED and temperature sensor (D18S20 - mounted flat side against the inside of the heat sink), it completely fills the space. Used heat sink compound to join the 2 halves together. 2 grub screws on the top plate screw the heatsink on the 1/2 inch copper tube of the light guide (information on this later on). Used heat sink compound on the back of the LED, and the led is attached to the heat sink with 2 cap screws with a plastic washer on, so that screws can't short anything.
Be careful not to get heatsink compound on the lens of the LED (I used IsoPropanol and a Q-Tip / Ear Bud to remove when I did). Also I added clear caulking around the electrical contacts (again avoiding the lens) and around the rim between the top plate and bottom cylinder to stop any moisture getting in from outside and to avoid damage in the unlikely event of leakage from the light pipe. Also caulked around where the cable enters. In final installation, cable is mounted pointing towards the ground.
Be careful not to get heatsink compound on the lens of the LED (I used IsoPropanol and a Q-Tip / Ear Bud to remove when I did). Also I added clear caulking around the electrical contacts (again avoiding the lens) and around the rim between the top plate and bottom cylinder to stop any moisture getting in from outside and to avoid damage in the unlikely event of leakage from the light pipe. Also caulked around where the cable enters. In final installation, cable is mounted pointing towards the ground.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: LED Heat Sink Design
Heatsink Design.
Disclaimer: I use Cat5e cable and connectors for power to the LED. Cat 5e uses 24 AWG wire which is rated for 3.5A as chassis wiring and 0.577A for
power transmission. I push this to 0.7A per conductor in my design (I figure the cable has plenty of air around it, the LEDs are PWM and not every color is on all the time for any length of time), but I probably wouldn't push it more than 0.7A. Also the thinner the conductor, the more the resistance and the less power to the LEDs.
If you wanted to do things correctly, then fatter conductors or doubling up conductors would be the way to go. Also, if you're going to use
Cat 5e for your wiring like I have, it goes without saying that you do not want to plug it accidentally into the wrong socket on your design, or a regular ethernet port connected to a computer by mistake.
Disclaimer: I use Cat5e cable and connectors for power to the LED. Cat 5e uses 24 AWG wire which is rated for 3.5A as chassis wiring and 0.577A for
power transmission. I push this to 0.7A per conductor in my design (I figure the cable has plenty of air around it, the LEDs are PWM and not every color is on all the time for any length of time), but I probably wouldn't push it more than 0.7A. Also the thinner the conductor, the more the resistance and the less power to the LEDs.
If you wanted to do things correctly, then fatter conductors or doubling up conductors would be the way to go. Also, if you're going to use
Cat 5e for your wiring like I have, it goes without saying that you do not want to plug it accidentally into the wrong socket on your design, or a regular ethernet port connected to a computer by mistake.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Light Pipe
Instead of using PMMA fiber to get the light to the nozzle (I couldn't easily and quickly obtain it, and it was expensive), I decided to go with a 1/2 inch acrylic / perspex rod as a light guide with the LED mounted on the bottom of the nozzle. This has the benefit of less light lost due to reduced length, but this is probably offset slightly by it not being PMMA.
1/2 inch acrylic rod is readily available in most medium sized cities. To cut the rod, I used a hack saw and then sanded with various grits to get a reasonable (but not perfect) surface (about 5 mins of sanding in total). Then I "Flame" polished it by using a butane torch passed quickly and lightly over the surface. The trick is to not heat it enough to bubble, or set it alight. I did this over a sink for safety reasons. This produces a highly polished surface.
To make it into a light pipe, I figured that "repair" techniques for fiber (Corning Fiber Repair Technique) would work for creating a light guide.
I wrapped Scotch 3M 130C tape (non sticky side) against the rod in a concentric fashion, taking care to stretch the tape well, overlapping, but not double overlapping. Tape has to be stretched so it will fit in the 1/2 inch copper pipe. Then the whole rod was wrapped using Scotch 3M Super 33+ Electrical Tape in the opposite direction. It's important to make a proper seal so that water can't ingress.
The light guide is then placed in a slightly shorter (by about 1 inch) 1/2 inch copper pipe. The reason it fits inside is because a 1/2 inch copper pipe is no longer 1/2 inch. The reason is that when they were first made, the outside tube was thicker, so to get 1/2 inch inside diameter, the outside diameter was large. Over the years they've improved the forming technique to use a thinner wall, but the outside diameter had to remain the same to fit the pipe fittings, so a 1/2 inch copper pipe is now bigger than 1/2 inch on the inside.
The copper pipe and light guide are aligned at the LED end. At the laminar stream end, the light guide protrudes past the copper pipe by 1 inch, this junction needs to be sealed, which I did with 130C (sticky side against the pipe) and Super 33+, so that water can't get in between the light guide and copper pipe.
To create a waterproof mounting to the base plate was an exercise in plumbing frustration at the local home depot. The solution I ended up was chopping off a Nut from a faucet connection hose, removing the rubber insert and boring it to fit the 1/2 inch pipe. I purchased a faucet extension tube (screw thread both ends) that would fit over the 1/2 inch pipe and a couple of nuts. 2 - ORings to seal against the base plate, and an ORing to fit under the nut (see pictures).
The tube height is fully adjustable with this setup.
1/2 inch acrylic rod is readily available in most medium sized cities. To cut the rod, I used a hack saw and then sanded with various grits to get a reasonable (but not perfect) surface (about 5 mins of sanding in total). Then I "Flame" polished it by using a butane torch passed quickly and lightly over the surface. The trick is to not heat it enough to bubble, or set it alight. I did this over a sink for safety reasons. This produces a highly polished surface.
To make it into a light pipe, I figured that "repair" techniques for fiber (Corning Fiber Repair Technique) would work for creating a light guide.
I wrapped Scotch 3M 130C tape (non sticky side) against the rod in a concentric fashion, taking care to stretch the tape well, overlapping, but not double overlapping. Tape has to be stretched so it will fit in the 1/2 inch copper pipe. Then the whole rod was wrapped using Scotch 3M Super 33+ Electrical Tape in the opposite direction. It's important to make a proper seal so that water can't ingress.
The light guide is then placed in a slightly shorter (by about 1 inch) 1/2 inch copper pipe. The reason it fits inside is because a 1/2 inch copper pipe is no longer 1/2 inch. The reason is that when they were first made, the outside tube was thicker, so to get 1/2 inch inside diameter, the outside diameter was large. Over the years they've improved the forming technique to use a thinner wall, but the outside diameter had to remain the same to fit the pipe fittings, so a 1/2 inch copper pipe is now bigger than 1/2 inch on the inside.
The copper pipe and light guide are aligned at the LED end. At the laminar stream end, the light guide protrudes past the copper pipe by 1 inch, this junction needs to be sealed, which I did with 130C (sticky side against the pipe) and Super 33+, so that water can't get in between the light guide and copper pipe.
To create a waterproof mounting to the base plate was an exercise in plumbing frustration at the local home depot. The solution I ended up was chopping off a Nut from a faucet connection hose, removing the rubber insert and boring it to fit the 1/2 inch pipe. I purchased a faucet extension tube (screw thread both ends) that would fit over the 1/2 inch pipe and a couple of nuts. 2 - ORings to seal against the base plate, and an ORing to fit under the nut (see pictures).
The tube height is fully adjustable with this setup.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: Light Pipe
Flame polishing the acrylic rod:
Winding 130C tape (sticky side towards camera):
Winding Super 33+ electrical tape:
Cutting off the nut from the faucet flexible hose pipe:
Nut cut off:
Boring out the nut to fit the 1/2 inch pipe:
Mounting hardware (base plate goes between the 2 ORings):
Something white plus flashlight placed under the light guide when placed under the light
guide helps with aligning the light guide with the nozzle hole during nozzle assembly:
Light guide alignment centered (you can see the flashlight in the center):
Led mounted to light guide. Note that I've wrapped the joint between pipe and heatsink with 130C (sticky side against pipe) and Super 33+ to form a water tight seal to stop condensation or rain getting in:
Winding 130C tape (sticky side towards camera):
Winding Super 33+ electrical tape:
Cutting off the nut from the faucet flexible hose pipe:
Nut cut off:
Boring out the nut to fit the 1/2 inch pipe:
Mounting hardware (base plate goes between the 2 ORings):
Something white plus flashlight placed under the light guide when placed under the light
guide helps with aligning the light guide with the nozzle hole during nozzle assembly:
Light guide alignment centered (you can see the flashlight in the center):
Led mounted to light guide. Note that I've wrapped the joint between pipe and heatsink with 130C (sticky side against pipe) and Super 33+ to form a water tight seal to stop condensation or rain getting in:
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: Jetty's Wifi Web Based Laminar Jet Project
Many thanks for all the great information. Some of us struggle to get a good cut and uncut to work. Are you prepared to share you design with us? It seems to work great. Well done!
JohnJarvis- Nozzle Newbie
- Posts : 24
Join date : 2009-04-17
Re: Jetty's Wifi Web Based Laminar Jet Project
Hi John. Thanks. I wouldn't call my cut perfect, but it took a few iterations to get to the level it is now. There's no secrets, the thread will grow and everything will be added, including electronics and arduino code in processing (basically nearly identical to C).
The order I add stuff to this thread will seem somewhat not in order (and lacking on the nozzle / cutter side), the reason for this is I had reasonable confidence in my electronics / programming ability, so took many pictures along the way as I only needed 1 of them, and it was somewhat easier to document along the way.
However the nozzle was my first nozzle of a final 2, and as was going to go through a few design iterations in the prototype, I didn't document as much, planning to document on the 2nd nozzle. Now it's assembled, a lot's hidden and it's somewhat inconvenient to disassemble it to take a photo.
So that said, I'll take a couple of external pictures, make some hand drawings and provide details of the various design aspects, i.e. enough that you can reproduce yourself. Final dimensions and minor details I'll provide as I copy the 1st nozzle and build the 2nd (over the next few weeks, before winter sets in). I'll go out and grab some pictures.
The order I add stuff to this thread will seem somewhat not in order (and lacking on the nozzle / cutter side), the reason for this is I had reasonable confidence in my electronics / programming ability, so took many pictures along the way as I only needed 1 of them, and it was somewhat easier to document along the way.
However the nozzle was my first nozzle of a final 2, and as was going to go through a few design iterations in the prototype, I didn't document as much, planning to document on the 2nd nozzle. Now it's assembled, a lot's hidden and it's somewhat inconvenient to disassemble it to take a photo.
So that said, I'll take a couple of external pictures, make some hand drawings and provide details of the various design aspects, i.e. enough that you can reproduce yourself. Final dimensions and minor details I'll provide as I copy the 1st nozzle and build the 2nd (over the next few weeks, before winter sets in). I'll go out and grab some pictures.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Cutter Design
You've seen the quality of the cut in the video, however it's not quite the whole story, there's a significant improvement to it which isn't shown in the video, because I need to finish the installation to save me having to manually hold stuff. The watering can is meant to be put over the jet (there's a hole in the bottom). Because the output of the can is very close to the diameter of the jet, it contains the spray of the cut / uncut and a bit of the nose. I.E. imperfections in the cut spread out more the further from the nozzle it is, so the watering can contains it. You could also achieve this in your design without the can by having a short plastic tube after the output.
It also has the side effect of looking cool as the jet will look like it's being fired from the can. There are so many issues with cuts/uncuts in general that everybody is having, I don't believe perfection is attainable for a few reasons. Droopy nose seems to be due to air resistance as the front of the jet as it punches through the air. Tail breakup and front breakup tend to be due to a not infinitely fast cut and vibration caused by the cutting process (the faster it is, generally the more vibration it produces). Sporadic drops outside of the stream tend to be flung off the cutter blade. Also splash back into the nozzle area can contaminate the stream.
Therefore, here's what I've done to try to minimize these issues while keeping it mechanically simple:
- To minimize vibration keep the mass of the cutter low to reduce inertia (I've used Aluminum and kept it short)
- To reduce vibration, used Wellnuts to mount the stepper to the top plate (the stepper has a lot of mass)
- To reduce vibration transfer from the top plate to the nozzle body, used 130C 3m Scotch (it's rubber like) between the
surfaces
- To reduce splash back, used scrubbing pad like material (floor polisher pads from home depot): See This Thread
- To reduce contamination of the stream, made a conical insert to my quick change nozzle:
Quick Change Nozzle
- To reduce fling from the cutter blade, sanded the blade edge to be razor sharp
- To get the fastest cut, used stepper motor acceleration and a bit of overshoot
Things I have tried along the way without success. Cutter blade shape, tried a semicircular cutout to match the size of the stream versus a straight edge (both produced the same results). Tried matching the blade speed to the speed of the stream so that the cut is straight through (as detailed here): Designing The Perfect Cutter (which flung off lots of drips, but looked pretty cool and not too practical, but in theory at least, should have produced the perfect cut). It was a similar idea to how they cut hot rolling hot steel.
Improvements in the design I settled on that I can see are a faster stepper motor and maybe teflon (or something water doesn't stick to) for the blade to reduce fling.
Regarding the stepper motor, to obtain the fastest cut you need to drive the stepper motor at it's fastest speed, however there's a lot of inertia to overcome, and the stepper motor likely doesn't have enough torque to overcome this and instantly move to the highest speed, i.e. the stepper will slip or likely just make a grinding noise and not move at all. So to obtain the fastest speed, you need to accelerate and decelerate when cutting / uncutting (this will also reduce vibration somewhat too). Because of acceleration, you want to overshoot on the cut, i.e. don't stop dead center, because you'll be stopping at the end of the deceleration period, i.e. when the blade is moving at it's slowest. So the blade has to be fairly long to allow you some overshoot (you start from this same position on the uncut).
I've incorporated 2 metal stops (heavy bolts attached to the top plate). They have 2 purposes, the first is to act to "Register" the zero position on the stepper motor. Normally this is done by a hall effect or optical switch, but stepper motors can't be damaged when stalled (unlikely an ordinary motor). So basically after switch on, you slam the cutter against the stop (I do a 180 degree rotation slowly), you now have your zero position, move by an offset to your center (the cut position), it's calibrated.
The other advantage of the stop is that if you slam against the stop whilst the jet is moving, it produces enough vibration to disturb the stream, i.e. you can produce flashes of light in your LED lit stream at night, for free without requiring a separate thumper unit. The only downside is that it's somewhat noisy as the perspex cover acts like a drum. You have to re-zero afterwards , but that's only a few milliseconds, and you're generally not cutting at night anyway.
Another thing you can do is degrade the stream. For example, many put additives in the stream at night because if the stream is too good, light won't escape it. If you move to a position away from the cutting position, and vibrate (you can either move between 2 positions, or drive the stepper motor so fast it doesn't move), then this degrades the stream enough that light can escape from the sides without additives. Use additives too and the effect is even brighter.
Description of the above images. The stepper motor is screwed onto a flat plat, with a hole in the center for the stepper spindle. Stepper motor has a DS18S20 Temperature sensor attached. That plate (with the stepper motor on the outside) is attached using 4 well nuts to the clear perspex sheet so that the spindle protrudes through the sheet. An ORing is placed either side of the perplex sheet on the spindle where it goes through the sheet. It's just resting against the sheet (not inside the hole) this is to stop water from the splash exiting into the stepper motor assembly (they will die it they get wet for long enough).
The stepper motor is then enclosed to waterproof (I used hot glue to attach the waterproof housing, doubling up as sealant).
On the inside, the cutting blade (use straight edges not the curved one you see) is just a thin sheet of Aluminium which is super glued to an aluminum rod. The blade is sharpened on the cut edges by sanding. (if you could see the blade from the other side it would look flat). The rod connects to the stepper motor ( I created a cylinder with a hole in for the rod ) that has 4 grub screws in it, this allows for some adjustment of the cutting blade angle and distance from the stepper motor to the nozzle. However, don't bother with different blade angles, tried that too and there was no advantage.
The Quick Change Nozzle mentioned earlier has a conical section added to the top, this is similar to the conical section you can see on this side of the perspex.
The insides are lined with the scrubbing pad material, with a cut out at the bottom. There are 3 holes in the surround at the bottom that are 1/2 inch diameter to allow the cut water to drain back into the tank. The surround is just a small length of tube, the same size as the nozzle. The reason for 3 holes is to allow the water to drain, as it's "disorganized", you need more than one hole to vacate a 1/2inch laminar flow. My first attempt had the scrub pad material covering these holes, this didn't work so I made the cutout around the holes. The reason it didn't work was because the scrub pad material didn't allow the water to drain fast enough, so the cutter filled up until the nozzle was immersed, which made a pretty cool mess everywhere :-)
The purpose of the scrub pad material is to stop cut water being reflected back into the nozzle area.
The stepper motor is 12V 0.4A UniPolar: RB-Soy-03
I drive it @12V, using a trick to drive a 4 wire stepper motor with 2 wires (details on this soon). The driver also contains a disable pin for all steppers motors. Stepper motors tend to run hot, as do the drivers (these ones routinely max out at 60C), so the disable pin reduces heat when it's not being used. Provided your cutting hardware is light enough, this stepper motor holds it's position when power is removed.
That's it and should be enough to replicate. If you get stuck, shout and I should have the actual measurements and pictures of all the components up here in a few weeks.
It also has the side effect of looking cool as the jet will look like it's being fired from the can. There are so many issues with cuts/uncuts in general that everybody is having, I don't believe perfection is attainable for a few reasons. Droopy nose seems to be due to air resistance as the front of the jet as it punches through the air. Tail breakup and front breakup tend to be due to a not infinitely fast cut and vibration caused by the cutting process (the faster it is, generally the more vibration it produces). Sporadic drops outside of the stream tend to be flung off the cutter blade. Also splash back into the nozzle area can contaminate the stream.
Therefore, here's what I've done to try to minimize these issues while keeping it mechanically simple:
- To minimize vibration keep the mass of the cutter low to reduce inertia (I've used Aluminum and kept it short)
- To reduce vibration, used Wellnuts to mount the stepper to the top plate (the stepper has a lot of mass)
- To reduce vibration transfer from the top plate to the nozzle body, used 130C 3m Scotch (it's rubber like) between the
surfaces
- To reduce splash back, used scrubbing pad like material (floor polisher pads from home depot): See This Thread
- To reduce contamination of the stream, made a conical insert to my quick change nozzle:
Quick Change Nozzle
- To reduce fling from the cutter blade, sanded the blade edge to be razor sharp
- To get the fastest cut, used stepper motor acceleration and a bit of overshoot
Things I have tried along the way without success. Cutter blade shape, tried a semicircular cutout to match the size of the stream versus a straight edge (both produced the same results). Tried matching the blade speed to the speed of the stream so that the cut is straight through (as detailed here): Designing The Perfect Cutter (which flung off lots of drips, but looked pretty cool and not too practical, but in theory at least, should have produced the perfect cut). It was a similar idea to how they cut hot rolling hot steel.
Improvements in the design I settled on that I can see are a faster stepper motor and maybe teflon (or something water doesn't stick to) for the blade to reduce fling.
Regarding the stepper motor, to obtain the fastest cut you need to drive the stepper motor at it's fastest speed, however there's a lot of inertia to overcome, and the stepper motor likely doesn't have enough torque to overcome this and instantly move to the highest speed, i.e. the stepper will slip or likely just make a grinding noise and not move at all. So to obtain the fastest speed, you need to accelerate and decelerate when cutting / uncutting (this will also reduce vibration somewhat too). Because of acceleration, you want to overshoot on the cut, i.e. don't stop dead center, because you'll be stopping at the end of the deceleration period, i.e. when the blade is moving at it's slowest. So the blade has to be fairly long to allow you some overshoot (you start from this same position on the uncut).
I've incorporated 2 metal stops (heavy bolts attached to the top plate). They have 2 purposes, the first is to act to "Register" the zero position on the stepper motor. Normally this is done by a hall effect or optical switch, but stepper motors can't be damaged when stalled (unlikely an ordinary motor). So basically after switch on, you slam the cutter against the stop (I do a 180 degree rotation slowly), you now have your zero position, move by an offset to your center (the cut position), it's calibrated.
The other advantage of the stop is that if you slam against the stop whilst the jet is moving, it produces enough vibration to disturb the stream, i.e. you can produce flashes of light in your LED lit stream at night, for free without requiring a separate thumper unit. The only downside is that it's somewhat noisy as the perspex cover acts like a drum. You have to re-zero afterwards , but that's only a few milliseconds, and you're generally not cutting at night anyway.
Another thing you can do is degrade the stream. For example, many put additives in the stream at night because if the stream is too good, light won't escape it. If you move to a position away from the cutting position, and vibrate (you can either move between 2 positions, or drive the stepper motor so fast it doesn't move), then this degrades the stream enough that light can escape from the sides without additives. Use additives too and the effect is even brighter.
Description of the above images. The stepper motor is screwed onto a flat plat, with a hole in the center for the stepper spindle. Stepper motor has a DS18S20 Temperature sensor attached. That plate (with the stepper motor on the outside) is attached using 4 well nuts to the clear perspex sheet so that the spindle protrudes through the sheet. An ORing is placed either side of the perplex sheet on the spindle where it goes through the sheet. It's just resting against the sheet (not inside the hole) this is to stop water from the splash exiting into the stepper motor assembly (they will die it they get wet for long enough).
The stepper motor is then enclosed to waterproof (I used hot glue to attach the waterproof housing, doubling up as sealant).
On the inside, the cutting blade (use straight edges not the curved one you see) is just a thin sheet of Aluminium which is super glued to an aluminum rod. The blade is sharpened on the cut edges by sanding. (if you could see the blade from the other side it would look flat). The rod connects to the stepper motor ( I created a cylinder with a hole in for the rod ) that has 4 grub screws in it, this allows for some adjustment of the cutting blade angle and distance from the stepper motor to the nozzle. However, don't bother with different blade angles, tried that too and there was no advantage.
The Quick Change Nozzle mentioned earlier has a conical section added to the top, this is similar to the conical section you can see on this side of the perspex.
The insides are lined with the scrubbing pad material, with a cut out at the bottom. There are 3 holes in the surround at the bottom that are 1/2 inch diameter to allow the cut water to drain back into the tank. The surround is just a small length of tube, the same size as the nozzle. The reason for 3 holes is to allow the water to drain, as it's "disorganized", you need more than one hole to vacate a 1/2inch laminar flow. My first attempt had the scrub pad material covering these holes, this didn't work so I made the cutout around the holes. The reason it didn't work was because the scrub pad material didn't allow the water to drain fast enough, so the cutter filled up until the nozzle was immersed, which made a pretty cool mess everywhere :-)
The purpose of the scrub pad material is to stop cut water being reflected back into the nozzle area.
The stepper motor is 12V 0.4A UniPolar: RB-Soy-03
I drive it @12V, using a trick to drive a 4 wire stepper motor with 2 wires (details on this soon). The driver also contains a disable pin for all steppers motors. Stepper motors tend to run hot, as do the drivers (these ones routinely max out at 60C), so the disable pin reduces heat when it's not being used. Provided your cutting hardware is light enough, this stepper motor holds it's position when power is removed.
That's it and should be enough to replicate. If you get stuck, shout and I should have the actual measurements and pictures of all the components up here in a few weeks.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Re: Cutter Design
Found some more photos of the cutter parts:
This shows the conical inserts to the quick change nozzle to reduce contamination of the stream on the cut.
The one on the right is the nozzle insert. The one on the left I use on clear top plate of the cutter after the stream has been cut, ideally this was designed to be on the underside of the top plate, not on the top side as you see it in the picture of the cutter.
This is the stepper mounting plate. The center hole is for the spindle, the 4 smaller screw holes are for M3 mounting screws for the stepper, the outer holes mount to the top plate of the cutter using well nuts. In an original prototype, the mounting was different, so the outside holes can be reduced in diameter to fit the bolt you're using, as the wellnuts are mounted through the clear top plate:
This was a cutter arm design I experimented with to produce an "Angled Cut" (the idea being to cut at the speed of the moving water), however it didn't produce any gain. The design is now flat instead of angled, I'm just providing this so you can get an idea of dimensions and what the arm looks like. It's Aluminimum:
This shows the conical inserts to the quick change nozzle to reduce contamination of the stream on the cut.
The one on the right is the nozzle insert. The one on the left I use on clear top plate of the cutter after the stream has been cut, ideally this was designed to be on the underside of the top plate, not on the top side as you see it in the picture of the cutter.
This is the stepper mounting plate. The center hole is for the spindle, the 4 smaller screw holes are for M3 mounting screws for the stepper, the outer holes mount to the top plate of the cutter using well nuts. In an original prototype, the mounting was different, so the outside holes can be reduced in diameter to fit the bolt you're using, as the wellnuts are mounted through the clear top plate:
This was a cutter arm design I experimented with to produce an "Angled Cut" (the idea being to cut at the speed of the moving water), however it didn't produce any gain. The design is now flat instead of angled, I'm just providing this so you can get an idea of dimensions and what the arm looks like. It's Aluminimum:
Last edited by jetty on Wed Sep 28, 2011 10:06 am; edited 1 time in total
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
2 Wire Stepper Motor Driver With Disable
This is a Unipolar stepper motor driver that uses 2 wires for control (instead of the usual 4). Because with stepper motors, 2 lines are always inverted with respect to the other 2 lines, it's possible to use 2 control lines and 2 inverters. This circuit uses a darlington array to drive the stepper and to provide the inverters. Because in this arrangement, 2 lines are always being held at 12V, then both coils are always being powered (as is the case with any stepper when a position is being held).
However, normally with 4 line driving, you can switch all 4 lines off (the stepper isn't holding), but you're saving power / heat. With 2 line driving this wouldn't work, so, I've created a disable pin circuit. Hold this pin high and the steppers are enabled. To disable, hold low, and hold control pins low.
Normally on hold, the steppers will reach 60C and the drivers around the same, although this is fine, there is excess heat being generated, everything will last longer if you disable the drivers and steppers when not cutting. Provided the cutting mechanism is light enough, the stepper holds even without a holding current being applied.
Credit for 2-Wire Control of UniPolar steppers goes to Sebastian Gassner, and this web page: http://www.tigoe.net/pcomp/code/circuits/motors/stepper-motors
Circuit displayed is for 1 stepper, if you need to control more than one stepper, then increase the fuse (Max Coil Current x # Coils x # Steppers), one fuse can be shared between all the steppers. Also, the 2N3904 transistor and the 4.7K resistor can be shared between multiple steppers so you have one disable pin for multiple steppers, or you can not share if you wish to have an individual disable pin for each stepper.
The temperature sensor (DS18B20) is one of a number of temperature sensors located on a 1-Wire bus using parasitic power. This requires 2 connections, 0V and Data. There is a 4.7K Resistor located at the Arduino that is a pull-up resistor from the Data line to the 5V line, only one is required per bus. The data line is located at Pin 5 on the arduino.
I managed to get 2 stepper motor drivers on to one arduino prototype shield.
Parts List:
Per Stepper:
1 - SY42STH38-0406A Stepper Unipolar
1 - ULN2803A Darlington Array
1 - DS18B20 1-Wire Temp Sensor
4 - 1K Resistor
1 - 1N4007 Diode
Disable Circuit:
1 - 4.7K Resistor
1 - 2N3904 Transistor
Other:
1 - 0.8Amp Fuse and holder (1 stepper, increase for additional steppers)
Schematic (click for full schematic):
Video of it on prototype board:
2 Stepper drivers mounted on Arduino Proto Shield. (copious amounts of hot glue used for strain relief :-) ):
The backside of the board:
However, normally with 4 line driving, you can switch all 4 lines off (the stepper isn't holding), but you're saving power / heat. With 2 line driving this wouldn't work, so, I've created a disable pin circuit. Hold this pin high and the steppers are enabled. To disable, hold low, and hold control pins low.
Normally on hold, the steppers will reach 60C and the drivers around the same, although this is fine, there is excess heat being generated, everything will last longer if you disable the drivers and steppers when not cutting. Provided the cutting mechanism is light enough, the stepper holds even without a holding current being applied.
Credit for 2-Wire Control of UniPolar steppers goes to Sebastian Gassner, and this web page: http://www.tigoe.net/pcomp/code/circuits/motors/stepper-motors
Circuit displayed is for 1 stepper, if you need to control more than one stepper, then increase the fuse (Max Coil Current x # Coils x # Steppers), one fuse can be shared between all the steppers. Also, the 2N3904 transistor and the 4.7K resistor can be shared between multiple steppers so you have one disable pin for multiple steppers, or you can not share if you wish to have an individual disable pin for each stepper.
The temperature sensor (DS18B20) is one of a number of temperature sensors located on a 1-Wire bus using parasitic power. This requires 2 connections, 0V and Data. There is a 4.7K Resistor located at the Arduino that is a pull-up resistor from the Data line to the 5V line, only one is required per bus. The data line is located at Pin 5 on the arduino.
I managed to get 2 stepper motor drivers on to one arduino prototype shield.
Parts List:
Per Stepper:
1 - SY42STH38-0406A Stepper Unipolar
1 - ULN2803A Darlington Array
1 - DS18B20 1-Wire Temp Sensor
4 - 1K Resistor
1 - 1N4007 Diode
Disable Circuit:
1 - 4.7K Resistor
1 - 2N3904 Transistor
Other:
1 - 0.8Amp Fuse and holder (1 stepper, increase for additional steppers)
Schematic (click for full schematic):
Video of it on prototype board:
2 Stepper drivers mounted on Arduino Proto Shield. (copious amounts of hot glue used for strain relief :-) ):
The backside of the board:
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Opto isolated remote pump switch (for MicroController)
Here's my opto isolated remote pump switch. It can be operated by the Arduino on a regular digital pin @5V without any additional components.
The reason for opto-isolation is for safety reasons. This circuit could be designed with relays (it's cheaper), but I decided to go with an Solid State Relay (SSR) for safety reasons and contact longevity (there are no contacts).
SSR's switch when the current crosses zero, where as a regular relay crosses at any time, so you can get full current and a huge spark which eats away at the contacts causing failure over time. You could create a zero crossing circuit with a regular relay too if you can figure out the delay to switch on the contacts and it was repeatable.
I.E. This is the cadillac of mains switches, but you could do it cheaper than I've done it here.
Disclaimer: This involves mains power, make sure you know what you're doing, don't blame me if you kill yourself :-) Also, make sure you get live / neutral the correct way around, particularly as many pumps don't have an earth. Also, check your electrical codes, this may not be up to your local electrical code standards.
Parts List:
1 x NTE RS3-1D10-51 SSR (10 Amp, DC Controlled) http://nteinc.com/relay_web/pdf/RS3.pdf (110VAC or 240VAC)
1 x Waterproof electrical box
2 x Waterproofing cable gromits
1 x Insulating, fire resistant piece of electrical card
330 Ohm Resistor
Additional Heatsink (earthed) - Optional
I'm running this controlling 2 pumps (4A in total).
Assembly: It's very important to keep the mains power side and DC side separate from each other. Connections can become disconnected, and you don't want mains power on the DC side for obvious reasons (doubly important as you're using water). For this reason, you will see in the 2nd picture that I've used a bent piece of electrical insulation card to completely cover the SSR. The DC side is hidden under this card. The 330 Ohm Resistor goes on the + DC Line (Screw terminal 3 on the SSR) (you don't want to blow the LED in the Opto Isolator).
Regarding the heatsink, feeding 4 Amps through it didn't change the temperature of the built in heat sink on the base of the SSR, so I didn't couple it to any kind of heat sink. However I did earth (mains power earth - DO NOT tie to the DC 0V) the inbuilt heat sink. If you're planning on running more than 4A through it, you will want to check the temperature of the built in heat sink and see if you need to add an additional heat sink (it's an enclosed box, so temperature could get high).
The rest is obvious, if it isn't obvious to you, then ask a professional to make it for you.
** IMPORTANT: Label the socket 10Amp Max Total, Laminar Jet Pumps Only ** If you think there's a chance others will plug different things into this socket by mistake, you may want to provide a lock over it or secure it with other means.
Showing layout (SSR in the bottom of box):
Showing final assembly (note curved electrical insulating card in place):
Completed:
The reason for opto-isolation is for safety reasons. This circuit could be designed with relays (it's cheaper), but I decided to go with an Solid State Relay (SSR) for safety reasons and contact longevity (there are no contacts).
SSR's switch when the current crosses zero, where as a regular relay crosses at any time, so you can get full current and a huge spark which eats away at the contacts causing failure over time. You could create a zero crossing circuit with a regular relay too if you can figure out the delay to switch on the contacts and it was repeatable.
I.E. This is the cadillac of mains switches, but you could do it cheaper than I've done it here.
Disclaimer: This involves mains power, make sure you know what you're doing, don't blame me if you kill yourself :-) Also, make sure you get live / neutral the correct way around, particularly as many pumps don't have an earth. Also, check your electrical codes, this may not be up to your local electrical code standards.
Parts List:
1 x NTE RS3-1D10-51 SSR (10 Amp, DC Controlled) http://nteinc.com/relay_web/pdf/RS3.pdf (110VAC or 240VAC)
1 x Waterproof electrical box
2 x Waterproofing cable gromits
1 x Insulating, fire resistant piece of electrical card
330 Ohm Resistor
Additional Heatsink (earthed) - Optional
I'm running this controlling 2 pumps (4A in total).
Assembly: It's very important to keep the mains power side and DC side separate from each other. Connections can become disconnected, and you don't want mains power on the DC side for obvious reasons (doubly important as you're using water). For this reason, you will see in the 2nd picture that I've used a bent piece of electrical insulation card to completely cover the SSR. The DC side is hidden under this card. The 330 Ohm Resistor goes on the + DC Line (Screw terminal 3 on the SSR) (you don't want to blow the LED in the Opto Isolator).
Regarding the heatsink, feeding 4 Amps through it didn't change the temperature of the built in heat sink on the base of the SSR, so I didn't couple it to any kind of heat sink. However I did earth (mains power earth - DO NOT tie to the DC 0V) the inbuilt heat sink. If you're planning on running more than 4A through it, you will want to check the temperature of the built in heat sink and see if you need to add an additional heat sink (it's an enclosed box, so temperature could get high).
The rest is obvious, if it isn't obvious to you, then ask a professional to make it for you.
** IMPORTANT: Label the socket 10Amp Max Total, Laminar Jet Pumps Only ** If you think there's a chance others will plug different things into this socket by mistake, you may want to provide a lock over it or secure it with other means.
Showing layout (SSR in the bottom of box):
Showing final assembly (note curved electrical insulating card in place):
Completed:
Last edited by jetty on Thu Sep 29, 2011 2:32 pm; edited 1 time in total
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Cutter info.
Many thanks Jetty. Will need some time to plough through all of that. But what shape of cutter do you use? Or is it just a flat, sharp blade type?
JohnJarvis- Nozzle Newbie
- Posts : 24
Join date : 2009-04-17
Re: Jetty's Wifi Web Based Laminar Jet Project
Flat, about 1 inch square, thin / light as possible, but won't bend under water pressure. Take a look at the right angled one, basically same but completely flat. Just sharpen the cutting edges.
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Solid State Wind Speed Sensor
For the wind speed sensor, I wanted a design with that was small (so as not too visible) and with no moving parts (in the extreme cold we get here, most things will break over time).
The design heats 2 diodes, one is exposed to the wind and the other is kept protected from the wind. Diodes change their forward voltage according to their temperature in linear fashion (actually you can use them as a cheap temperature sensor when you calibrate them). This design uses this feature, by equally heating both didoes with a relatively high current and measuring the voltage in the center between them.
As the wind speed gets higher, the one exposed to the wind is cooled by the wind, producing a voltage difference at the measuring point. This difference is amplified by an instrumentation amp chip (good quality, low noise) and then fed to the Arduino on Analog Pin 2 for A-D conversion.
Output is non-linear with wind speed, but that doesn't matter as the goal is not get a perfectly accurate measurement, we just want to auto shutdown the jet at a certain windspeed.
Credit for the original design / concept goes to MTM Scientific: http://www.mtmscientific.com/anem.html
I've taken this design and changed a few things. Dropped the Panel Meter and 100K resistor. Increased the 6 Ohm 5W to 33 Ohm 5W to use less current, this makes it less sensitive, but uses significantly less current and the sensitivity isn't that important for our needs. Also replaced the 5V power supply with a slightly different design. The schematic on the website mentions the INA122 and the parts list, the INA126. I ordered both and tried both. The INA126 performed much better, use that.
The sensor is very sensitive to the regulation of the 5V supply voltage. For that reason I didn't use the Arduino on board 5V regulator and maintained the separate regulator for the wind sensor.
When calibrating, set the variable resistor for a reading of 200 (out of 1024) on the A-D input on the Arduino (1V on output). Do this after the sensor has warmed up for 15 mins. The design uses approximately 100mA.
Although the wind sensor works well whilst testing, I haven't had time to write code yet to measure the speed and determine a cut off and we now have laws against driving down the highway calibrating whilst sticking a wind sensor out of the window. I have suspicions that the output is somewhat temperature dependent from the initial testing I did.
So I'm calculating the standard deviation of 20 data points (taken 15 secs apart over the last 5 mins) to get an idea of variability of the wind instead as wind forms gusts and generally it's more gusty the higher the speed is. My plans to calibrate are is to plot the Max, Standard Deviation, Average and Temperature, and readings from my regular roof top weather station in a spreadsheet and figure out the relationship, then figure out what speed the laminar jet is deflected at, and calibrate the wind sensor to shutdown at that minus a little bit. I'll update this thread when I figure that part out. But in the meantime, don't let that detract from you experimenting with it, as the readings I've been getting on my arduino fluctuate more as the wind speed gets higher.
Parts List:
1 - LM7805CT
1 - Heatsink (for LM7850CT)
1 - 6.8uF Capacitor
1 - 10K Trimmer Resistor
1 - 20K Resistor
1 - 1.2K Resistor
1 - 33 Ohm 5 Watt Resistor
2 - 1N4148
1 - INA126PA-ND
Schematic (click to see full):
Diode sensors, the diode on the right is the one exposed to the wind:
Sensor package:
Sensor package + cap:
Electronics (these are housed in a separate case to avoid heating of the sensor due to the 33Ohm resistor):
Completed (electronics on left, sensor on right):
Mounted on Laminar Jet (top left):
The design heats 2 diodes, one is exposed to the wind and the other is kept protected from the wind. Diodes change their forward voltage according to their temperature in linear fashion (actually you can use them as a cheap temperature sensor when you calibrate them). This design uses this feature, by equally heating both didoes with a relatively high current and measuring the voltage in the center between them.
As the wind speed gets higher, the one exposed to the wind is cooled by the wind, producing a voltage difference at the measuring point. This difference is amplified by an instrumentation amp chip (good quality, low noise) and then fed to the Arduino on Analog Pin 2 for A-D conversion.
Output is non-linear with wind speed, but that doesn't matter as the goal is not get a perfectly accurate measurement, we just want to auto shutdown the jet at a certain windspeed.
Credit for the original design / concept goes to MTM Scientific: http://www.mtmscientific.com/anem.html
I've taken this design and changed a few things. Dropped the Panel Meter and 100K resistor. Increased the 6 Ohm 5W to 33 Ohm 5W to use less current, this makes it less sensitive, but uses significantly less current and the sensitivity isn't that important for our needs. Also replaced the 5V power supply with a slightly different design. The schematic on the website mentions the INA122 and the parts list, the INA126. I ordered both and tried both. The INA126 performed much better, use that.
The sensor is very sensitive to the regulation of the 5V supply voltage. For that reason I didn't use the Arduino on board 5V regulator and maintained the separate regulator for the wind sensor.
When calibrating, set the variable resistor for a reading of 200 (out of 1024) on the A-D input on the Arduino (1V on output). Do this after the sensor has warmed up for 15 mins. The design uses approximately 100mA.
Although the wind sensor works well whilst testing, I haven't had time to write code yet to measure the speed and determine a cut off and we now have laws against driving down the highway calibrating whilst sticking a wind sensor out of the window. I have suspicions that the output is somewhat temperature dependent from the initial testing I did.
So I'm calculating the standard deviation of 20 data points (taken 15 secs apart over the last 5 mins) to get an idea of variability of the wind instead as wind forms gusts and generally it's more gusty the higher the speed is. My plans to calibrate are is to plot the Max, Standard Deviation, Average and Temperature, and readings from my regular roof top weather station in a spreadsheet and figure out the relationship, then figure out what speed the laminar jet is deflected at, and calibrate the wind sensor to shutdown at that minus a little bit. I'll update this thread when I figure that part out. But in the meantime, don't let that detract from you experimenting with it, as the readings I've been getting on my arduino fluctuate more as the wind speed gets higher.
Parts List:
1 - LM7805CT
1 - Heatsink (for LM7850CT)
1 - 6.8uF Capacitor
1 - 10K Trimmer Resistor
1 - 20K Resistor
1 - 1.2K Resistor
1 - 33 Ohm 5 Watt Resistor
2 - 1N4148
1 - INA126PA-ND
Schematic (click to see full):
Diode sensors, the diode on the right is the one exposed to the wind:
Sensor package:
Sensor package + cap:
Electronics (these are housed in a separate case to avoid heating of the sensor due to the 33Ohm resistor):
Completed (electronics on left, sensor on right):
Mounted on Laminar Jet (top left):
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Thumper Unit
My final design dumped the thumpers, but before I did that, I created this circuit that uses pager type vibration motors attached to the top plate to degrade the laminar stream.
The following is a low power thumper unit for 2 nozzles. Digital high switches on. Total current usage is 110mA with both motors on. Adjust the variable resistor for a 3.3V output at the regulator output before connecting the motors, then adjust again after connecting the motors.
Everything was built on a Arduino Proto Shield.
Parts List:
1 - LM317T
1 - Heatsink (for LM317T)
2 - 330 Ohm Resistor
1 - 1K Trimmer Resistor
1 - 2N3904
1 - 1N4148
2 - Vibration Motors (Source)
Schematic (click for full):
The following is a low power thumper unit for 2 nozzles. Digital high switches on. Total current usage is 110mA with both motors on. Adjust the variable resistor for a 3.3V output at the regulator output before connecting the motors, then adjust again after connecting the motors.
Everything was built on a Arduino Proto Shield.
Parts List:
1 - LM317T
1 - Heatsink (for LM317T)
2 - 330 Ohm Resistor
1 - 1K Trimmer Resistor
1 - 2N3904
1 - 1N4148
2 - Vibration Motors (Source)
Schematic (click for full):
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Temperature Sensors
I use various temperature sensors in this project. Here's information on how they are wired.
I monitor the outside, electronics, stepper motors and led heat sinks (total 6 sensors).
I use the DS18B20 1-Wire Temperature Sensor. The reason for this is because I can put all the temperature sensors on 1 bus, they are individually addressable, and I only have to use one pin on the Arduino to read all the temperature sensors.
Using the parasitic power mode of the temperature sensors, you can get away with just 2 wires to the sensor, GND and Data.
I have the sensors in a star topology (see this warning: http://www.maxim-ic.com/app-notes/index.mvp/id/148 ). It's not recommended, but mainly works (occasionally I get a misread (Value: -127.00) on a temp sensor and have to reread). If you want complete reliability, then make sure it looks like one long bus (but you'll need wires back from the sensors) or use a 1-Wire hub.
The temperature sensors have pin 1(GND) and pin 3(VDD) connected together at the sensor to enable parasitic mode, so you have 2 connections to the sensor pins 1,3 (GND) and pin 2 (Data). There is one pull-up 4.7K resistor at the Arduino that is connected between the pin I'm using for 1 Wire Bus (Pin 5) and 5V.
Outside temperature sensor:
I monitor the outside, electronics, stepper motors and led heat sinks (total 6 sensors).
I use the DS18B20 1-Wire Temperature Sensor. The reason for this is because I can put all the temperature sensors on 1 bus, they are individually addressable, and I only have to use one pin on the Arduino to read all the temperature sensors.
Using the parasitic power mode of the temperature sensors, you can get away with just 2 wires to the sensor, GND and Data.
I have the sensors in a star topology (see this warning: http://www.maxim-ic.com/app-notes/index.mvp/id/148 ). It's not recommended, but mainly works (occasionally I get a misread (Value: -127.00) on a temp sensor and have to reread). If you want complete reliability, then make sure it looks like one long bus (but you'll need wires back from the sensors) or use a 1-Wire hub.
The temperature sensors have pin 1(GND) and pin 3(VDD) connected together at the sensor to enable parasitic mode, so you have 2 connections to the sensor pins 1,3 (GND) and pin 2 (Data). There is one pull-up 4.7K resistor at the Arduino that is connected between the pin I'm using for 1 Wire Bus (Pin 5) and 5V.
Outside temperature sensor:
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Water Level Sensor
Tank monitoring is crucial to avoid damaging your pumps from running dry. I wanted a tank monitor that measured water level (0 - 100%) rather than a binary level (ok, not okay) and something that provided repeatable values.
The best solution I found was to use a pressure sensor. The pressure sensor is mounted at the bottom of the tank, and as the tank level rises, the pressure increases.
I have 2 tanks, and they are connected, so you would think only 1 water level sensor is needed as water is self leveling, however I decided to go with 2 sensors, one in each tank as I don't have a lot of water in the tanks and...
As 1 nozzle is firing into the other tank, there will be an imbalance of water because it's doesn't level out immediately.
Mounting is relatively easy, I went to the local radio control hobby store and purchased fuel tubing, and a fuel connector with a screw thread on the end. Screwed the fuel connector into a PVC plumbing screw cap which is connected to the bottom of the tank. The electronics need to be at the level of bottom of the tank.
Be careful with the MPX2010DP to wire it up correctly. It's important to use the correct port (the other port should be left open to the air, i.e. don't put it in an air tight container). In the following photos, Pin 1 = Black, 2 = Green, 3 = Red and 4 = Blue.
The project is detailed here: http://www.practicalarduino.com/projects/water-tank-depth-sensor
However what I didn't realize initially until I started to calibrate it and set it up, that it's from a book, and the book contains all the information you need about calibration etc. The book can be purchased:
http://www.amazon.com/Practical-Arduino-Projects-Hardware-Technology/dp/1430224770
It's a good book and also contains a project to pickup from a wireless weather station (which could be useful if you have one and want to read the wind sensor for your jet and want skip having to build one).
Circuit (pressure sensor on top):
Layout (ignore "Clunk" on end of green tube, use a short tube with no clunk):
Electronics in housing:
Assembled (ignore "Clunk" on end of green tube, use a short tube with no clunk):
The best solution I found was to use a pressure sensor. The pressure sensor is mounted at the bottom of the tank, and as the tank level rises, the pressure increases.
I have 2 tanks, and they are connected, so you would think only 1 water level sensor is needed as water is self leveling, however I decided to go with 2 sensors, one in each tank as I don't have a lot of water in the tanks and...
As 1 nozzle is firing into the other tank, there will be an imbalance of water because it's doesn't level out immediately.
Mounting is relatively easy, I went to the local radio control hobby store and purchased fuel tubing, and a fuel connector with a screw thread on the end. Screwed the fuel connector into a PVC plumbing screw cap which is connected to the bottom of the tank. The electronics need to be at the level of bottom of the tank.
Be careful with the MPX2010DP to wire it up correctly. It's important to use the correct port (the other port should be left open to the air, i.e. don't put it in an air tight container). In the following photos, Pin 1 = Black, 2 = Green, 3 = Red and 4 = Blue.
The project is detailed here: http://www.practicalarduino.com/projects/water-tank-depth-sensor
However what I didn't realize initially until I started to calibrate it and set it up, that it's from a book, and the book contains all the information you need about calibration etc. The book can be purchased:
http://www.amazon.com/Practical-Arduino-Projects-Hardware-Technology/dp/1430224770
It's a good book and also contains a project to pickup from a wireless weather station (which could be useful if you have one and want to read the wind sensor for your jet and want skip having to build one).
Circuit (pressure sensor on top):
Layout (ignore "Clunk" on end of green tube, use a short tube with no clunk):
Electronics in housing:
Assembled (ignore "Clunk" on end of green tube, use a short tube with no clunk):
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Design Notes
I managed to squeeze the following circuitry onto 1 Arduino Proto Shield board, Thumper, Water Pump Control, Wind Sensor, I2C for BlinkM MaxM, 1-Wire Temperature, Water Level Sensor and 1 DS18B20 for the electronics temperature sensor.
The following is for 2 Nozzles, 2 Cutters and 2 Water Level Sensors:
Pin usage on the Arduino Mega 2560 with Linksprite Cupperhead Wifi Shield:
//Pins in use
//D0 Adruino Serial
//D1 Arduino Serial
//D2 CUPPERHEAD WiShield INT0
//D3 Stepper 1
//D4 Stepper 1
//D5 OneWire Bus (Temp Sensors)
//D6 Stepper 2
//D7 Stepper 2
//D8 Pumps
//D9 CUPPERHEAD WiShield successful wireless connection LED
//D10 CUPPERHEAD WiShield Slave Select (SS) Jumpered to D53
//D11 CUPPERHEAD WiShield Master Out, Slave In (MOSI) Jumpered to D51
//D12 CUPPERHEAD WiShield Master In, Slave Out (MISO) Jumpered to D50
//D13 CUPPERHEAD WiShield Clock (SCK) Jumpered to D52
//D48 Stepper Enable
//D50 2560 MEGA - CUPPERHEAD WiShield Master In, Slave Out (MISO) Jumpered to D12
//D51 2560 MEGA - CUPPERHEAD WiShield Master Out, Slave In (MOSI) Jumpered to D11
//D52 2560 MEGA - CUPPERHEAD WiShield Clock (SCK) Jumpered to D13
//D53 2560 MEGA - CUPPERHEAD WiShield Slave Select (SS) Jumpered to D10
//A0 Thumper
//A1 Windspeed
//A2 Water Level 2
//A3 Water Level 1
//A4 BlinkM I2C
//A5 BlinkM I2C
Cupperhead is set to use INT0 (pin2).
Sampling analog sensors can result in incorrect values if the sensors are high impedance as the Arduino has one A-D which is switched between all Analog inputs, so the voltage on the input can take a time to reach the correct value. For this reason, Wind and Water Level Sensors are sampled every 5 seconds, so 1 Wind and 2 Water Sensors will only be sampled every 15 seconds.
The following is for 2 Nozzles, 2 Cutters and 2 Water Level Sensors:
Pin usage on the Arduino Mega 2560 with Linksprite Cupperhead Wifi Shield:
//Pins in use
//D0 Adruino Serial
//D1 Arduino Serial
//D2 CUPPERHEAD WiShield INT0
//D3 Stepper 1
//D4 Stepper 1
//D5 OneWire Bus (Temp Sensors)
//D6 Stepper 2
//D7 Stepper 2
//D8 Pumps
//D9 CUPPERHEAD WiShield successful wireless connection LED
//D10 CUPPERHEAD WiShield Slave Select (SS) Jumpered to D53
//D11 CUPPERHEAD WiShield Master Out, Slave In (MOSI) Jumpered to D51
//D12 CUPPERHEAD WiShield Master In, Slave Out (MISO) Jumpered to D50
//D13 CUPPERHEAD WiShield Clock (SCK) Jumpered to D52
//D48 Stepper Enable
//D50 2560 MEGA - CUPPERHEAD WiShield Master In, Slave Out (MISO) Jumpered to D12
//D51 2560 MEGA - CUPPERHEAD WiShield Master Out, Slave In (MOSI) Jumpered to D11
//D52 2560 MEGA - CUPPERHEAD WiShield Clock (SCK) Jumpered to D13
//D53 2560 MEGA - CUPPERHEAD WiShield Slave Select (SS) Jumpered to D10
//A0 Thumper
//A1 Windspeed
//A2 Water Level 2
//A3 Water Level 1
//A4 BlinkM I2C
//A5 BlinkM I2C
Cupperhead is set to use INT0 (pin2).
Sampling analog sensors can result in incorrect values if the sensors are high impedance as the Arduino has one A-D which is switched between all Analog inputs, so the voltage on the input can take a time to reach the correct value. For this reason, Wind and Water Level Sensors are sampled every 5 seconds, so 1 Wind and 2 Water Sensors will only be sampled every 15 seconds.
Last edited by jetty on Fri Sep 30, 2011 11:57 am; edited 1 time in total
jetty- Nozzle Novice
- Posts : 60
Join date : 2011-05-07
Location : Toronto, ON, Canada
Page 1 of 2 • 1, 2
Similar topics
» Liteglow`s laminar project
» Magic_Nozzle's Laminar Project
» Mr Webb's Laminar Project.
» Another laminar project - picture album
» Ike's Prototype Project - My first laminar nozzle
» Magic_Nozzle's Laminar Project
» Mr Webb's Laminar Project.
» Another laminar project - picture album
» Ike's Prototype Project - My first laminar nozzle
Page 1 of 2
Permissions in this forum:
You cannot reply to topics in this forum