This page serves as a directory of all my posts and downloads related to my Arduino based Ultrasonic Anemometer.
First Attempt with an ArduinoUno and two separate boards
- Part 1: https://soldernerd.com/2014/11/14/arduino-ultrasonic-anemometer-part-1-getting-started/
- Part 2: https://soldernerd.com/2014/11/15/arduino-ultrasonic-anemometer-part-2-digital-circuit/
- Part 3: https://soldernerd.com/2014/11/16/arduino-ultrasonic-anemometer-part-3-analog-circuit/
- Part 4: https://soldernerd.com/2014/11/16/arduino-ultrasonic-anemometer-part-4-testing-the-analog-board/
- Part 5: https://soldernerd.com/2014/11/18/arduino-ultrasonic-anemometer-part-5-testing-the-digital-board/
- Part 6: https://soldernerd.com/2014/11/19/arduino-ultrasonic-anemometer-part-6-mechanical-design/
- Part 7: https://soldernerd.com/2014/11/21/arduino-ultrasonic-anemometer-part-7-basic-software/
- Part 8: https://soldernerd.com/2014/11/23/arduino-ultrasonic-anemometer-part-8-more-software/
Ultrasonic Anemometer Shield for ArduinoUno
- Part 9: https://soldernerd.com/2014/11/25/arduino-ultrasonic-anemometer-part-9-a-new-hardware/
- Part 10: https://soldernerd.com/2014/11/28/arduino-ultrasonic-anemometer-part-10-arduino-shield-ready/
- Part 11: https://soldernerd.com/2014/11/30/arduino-ultrasonic-anemometer-part-11-testing-the-new-hardware/
- Part 12: https://soldernerd.com/2014/12/04/arduino-ultrasonic-anemometer-part-12-working-on-an-arduino-library/
- Part 13: https://soldernerd.com/2015/01/01/arduino-ultrasonic-anemometer-part-13-arduino-library-finally-ready/
- Part 14: https://soldernerd.com/2015/02/17/arduino-ultrasionic-anemometer-part-14-wind-tunnel-testing/
Trying out new ideas
- Part 15: https://soldernerd.com/2016/03/22/ultrasonic-anemometer-part-15-a-new-attempt/
- Part 16: https://soldernerd.com/2016/03/31/ultrasonic-anemometer-part-16-testing-the-new-driver-circuit/
- Part 17: https://soldernerd.com/2016/04/07/ultrasonic-anemometer-part-17-lasercut-mechanical-design/
- Part 18: https://soldernerd.com/2016/04/19/ultrasonic-anemometer-part-18-analog-signal-processing/
- Part 19: https://soldernerd.com/2016/04/26/ultrasonic-anemometer-part-19-testing-the-analog-circuit/
Standalone Ultrasonic Anemometer with an on-board PIC32
- Part 20: https://soldernerd.com/2016/05/11/ultrasonic-anemometer-part-20-standalone-anemometer-design/
- Part 21: https://soldernerd.com/2016/05/14/ultrasonic-anemometer-part-21-standalone-anemometer-hardware/
- Part 22: https://soldernerd.com/2016/05/29/ultrasonic-anemometer-part-22-usb-up-and-running/
- Part 23: https://soldernerd.com/2016/06/07/ultrasonic-anemometer-part-23-first-successful-measurements/
- Part 24: https://soldernerd.com/2016/06/27/ultrasonic-anemometer-part-24-new-microcontroller-and-software-controlled-gain/
- Part 25: https://soldernerd.com/2016/08/11/ultrasonic-anemometer-part-25-i2c-interfacing-and-more/
Revised Version on a professionally made PCB
- Part 26: Ultrasonic Anemometer Part 26: Rev B Board ordered
- Part 27: https://soldernerd.com/2016/09/03/ultrasonic-anemometer-part-27-ready-to-take-pre-orders/
- Part 28: https://soldernerd.com/2016/09/07/ultrasonic-anemometer-part-28-new-hardware-tested/
- Part 29: https://soldernerd.com/2016/12/24/ultrasonic-anemometer-part-29-transducer-comparison/
- Part 30: https://soldernerd.com/2017/02/06/ultrasonic-anemometer-part-30-downsized-hardware/
Downloads:
- All Eagle files for download as a .zip file: AnemometerEagle
- Arduino Sketch: Anemometer_Uno_01
- Anemometer Arduino Shield PDFs and Eagle files as a .zip: AnemometerShield_REV1
- Anemometer Library v1.0: AnemometerLibrary_10
- Anemometer Arduino Shield PDFs and Eagle files Rev2 as a .zip: AnemometerShield_REV2
- Eagle files and PDFs for the driver circuit of my new attempt: AnamometerDriver_RevA
- OpenSCAD CAD model as well as PDFs and Adobe Illustrator files for the lasercut mechanical design: AnemometerOpenSCAD
- Analog signal processing. Eagle files as well as PDFs: AnemometerAnalog
- Standalone anemometer. Eagle files as well as PDFs: StandaloneAnemometer_RevA
- Standalone anemometer: USB and basic send/receive working: StandaloneAnemometer_01_20160528
- Measuring time-of-flight, calculating wind speed. zip file includes sample data logs: StandaloneAnemometer_01_20160606
- Upgrade to PIC32MX250, controlling digipot over I2C: StandaloneAnemometer_01_20160625
- Standalone Anemometer interfacing to an Arduino Uno via I2C: StandaloneAnemometer_01_20160710_I2CExternal
- Code for the Arduino Uno with the LCD: I2C_Master_LCD
- Eagle files and PDFs of schematic and board for the standalone anemometer Rev B: standaloneanemometer_revb
- The Gerber files for the standalone anemometer Rev B as ordered from dirtypcbs.com: dirtypcb_StandaloneAnemometer_RevB_ordered
- Bill of materials (BOM) for the standalone anemometer Rev B: StandaloneAnemometer_RevB_BOM
GitHub
Now the source code for the Ultrasonic Anemometer is available on GitHub: github.com/soldernerd/UltrasonicAnemometer
And the board and schematics: github.com/soldernerd/UltrasonicAnemometerHardware
And the OpenSCAD design for the lasercut structure: github.com/soldernerd/AnemometerLasercut
Wow, great progress. An effort in league with carl47’s project. You should consider selling a kit.
Hi Jesse
Thank you for the flowers. I’ve had several people asking for a kit and I might well do that. But I want to do some more testing to be sure the design works reliably under various conditions…
regards
lukas
I’d totally buy one!
Did you arrive to sell kits? I would be interested
Hi Stefano
I used to sell kits but I no longer do, I stopped around 2 years ago, sorry
Lukas
This is very exciting, thank you again! I haven’t found the part numbers for the 40 kHz transducers … can you tell me which section it is in?
Thanks!
Hi Paul
I’m not sure if I’ve ever mentioned the precise transducer model. But I’ve just checked my Farnell order: the transducers I’m using are Multicomp MCUSD16A40S12RO, Farnell number 2362677. They cost around USD 5 in small quantities.
regards
lukas
hi Lukas,
i was wondeing if you have a list of the components you used for the proyect
Thanks
Hi Carlos. Yes, there definitely is as part of the Eagle file. In Eagle, File -> Export -> BOM gets you the bill of materials. And Eagle can be downloaded for free for non-commercial use.
Thank you
It is one of the most complete works i´ve seen of this kind, really appreciate this!
Ganz ausgezeichnete Arbeit! I hope you continue to delve further into the sensor side of things and discover the reason for the unsuspected small phase shift your described. This is something I’d definitely like to build myself. Do you think it is more responsive to light winds that would a traditional rotational wind cup design? I was hoping to capture very light breezes accurately as well as wind speeds of 5 MPH or more.
If you ever decide to offer circuit boards for sale, I certainly would appreciate being notified !
Thank you so much for sharing your efforts with such depth. It is very much appreciated.
Hi Doug
Thank you for your very encouraging comment. And yes, development will be continued and the open issues will be solved. I’ve just shipped two kits to Argentina where a reader of this blog has access to a proper wind tunel at his university. And I’m full of ideas on how this project can be improved. And once it’s running properly I’d love to sell it as a kit which would give me access to user feedback to improve it further.
Even as it is now it works very well with low wind speeds. The problem so far has been higher wind speeds…
Thanks again for your feedback and stay tuned.
Lukas
I wonder if you’ve given any consideration to the fact that this method of determining wind speed is subject to barometric pressure and temperature changes? Is there a way to compensate in the circuitry and program for such variations?
Doug
PS looking forward to a kit. 🙂
Hi Doug
Yes, the influence of temperature on the speed of sound is taken care of. The shield includes a quite accurate temperature sensor and voltage reference to measure the temperature. This temperature is then used to correct for the influence on speed of sound.
Barometric pressure and humidity both have a very minor (compared to temperature) influence on speed of sound and therefore wind measurements. They are not corrected for at the moment.
Dear Lukas,
just reading up on two-dimensional anemometric wind speed and direction I found your blog plus the notes and software from Carl.
Besides your two models, there is another model built by Hardy Lau in Germany. Obviously he has been doing extensive wind tunnel tests in the lab and provides some insight on the compensation he needed. For me the setup looks a lot like yours and Carls, maybe you want to contact him.
http://www.technik.dhbw-ravensburg.de/~lau/ultrasonic-anemometer.html
I wonder if it may makes a difference to use three transducers in a triangular setup as some of the commercial vendors do ?
Kind regards,
Stefan
Hi,
First of all GREAT WORK!
But I have a question regarding som components. On the schematics for the arduino shield you have three restistors marked OPT (R15, R21 and R34). What kind of resistors is this?
Hi Martin.
Thanks for your comment. The OPT stands for optional. When drawing the schematic I thought I might want to put a resistor there (e.g. for some positive feedback around a comparator to add some more hysteris). But I don’t think I ended up using any of them so you can just leave them away.
cheers lukas
Thank you, I also found 2 “TBD” capasitators (To-Be-Determined” (C8,C13). Any values on them?
I thought I looked at everything but I could not find an area that described the construction of the transmitters/receptors in the four NESW nodes of your annenometer.
Hi Ray
Are you referring to the way the transducers are kept in place physically? I don’t think i wrote much about it, true. There’s not much special about it: as I see this version as a prototype I didn’t spend too much time to find a perfect solution. I’m using plastic pipes that are made to hold electrical wires. They are cheap and readily available in 16mm diameter which means the transducers fit snuggly without having to attach them at all.
Cheers lukas
Ok I finished building a copy of your board and tested it with my waterproof transducers. I was expecting what happened but tried anyway. The received signal is almost non existant unless I put the receiver almost in contact wuth the transmitter. This is probably due to the waterproof nature of the transducers. So I can do two things :
1) Step up the amplitude of the transmitter signal. I will test that with my signal generator ( can go up to 30 Vp-p). The arduino accepts up to 15 V, so let’s see if this changes something. I will need a good driver circuit. But I fear that the 15 Volts will damage the 74HC4052 (because the transmitted signal goes to the transmitter and also to this IC) . Not sure how I can go about it.
2) Add amplification. I could raise the gain of the two stages or I can put more stages wich is not that encouraging because two stages already occupy quite some space on the pcb. I hope raising the gain will be enough (just have to change the LC tanks) but I’m affraid it won’t.
Advice ?
Internet references all say that waterproof sensors need voltage swing up to the specified value in the datasheets (140-160 Vp-p) in order to work. So sure, the way to go for this seems to ber a buck converter or a transformer + clamp diodes to protect the rest of the circuit from the high voltage.
Carl used a waterproof sensor and he didn’t mention anything about that. Reading his schematics, he doesn’t even use the 8V rail to drive the sensor ( the 8V is for the amplifier circuit), just the 5V rail like us. And I don’t see any inductor on his vero board so it seems he didn’t modified the voltage. So unless he reverted back to open-type sensors like the ones you use lfaessler, I don’t understand why his device works.
Outside, I can’t imagine an open-type sensor would work in the long run. Dust and high moisture level will inevitably make it fail.
If waterproof = high voltage, it also means security and EMI issues…this is not pleasing :/
Hi Antiath
Thank you very much for your comment. Just a very short note for now. I’d try changing the amplification. This should be easy by just changing the gain-limiting resistors (R7 and R12 on the schematic) to a lower value like 100 ohms. this should do quite something to the amplification. if you end up at 0 ohms and still don’t have enough gain you can increase the capacitor values of C5 and C10 to maybe 1 micro (instead of 100nano). With the LC tank properly tuned this should give you plenty of amplification.
Thanks again for trying this design and let me know how it goes.
Lukas
Ok, I finally had the time to investigate this problem. So I first tried replacing R7 and R12 by potentiometers. First lower R7 to maximum gain. Not enough. So I lower R12 and I quickly reach a saturation point, the gain won’t increase any further even tough R12 wasn’t at the lowest possible value. Frustrated, I just solder two 0 Ohms resistors to see wath happens.
So I finally see some signal. Progress !
First observation :
With a 5 V square wave input in the transceiver and a 20 cm distance between the cells, I get 150 mVp-p of noise and 600 mVp-p of Signal ( so 6 dB). With 15 V square wave, I get 8 dB.
Second observation:
an annoying DC offset of 2.46 V ( mean of the amplified signal) . The coupling capacitor isn’t enough to filter out the DC component.
So the gain is still not high enough, but I also get a dc offset. And addtionnaly, R7 and R12 don’t work as expected ( I used ceramic cap so it shouldn’t be the ESR of the bypass caps).
I didn’t try changing the LC tanks as I don’t have the parts to do that.
Ok correcting myself a little :
I managed to remove th weird DC component. I was seeing it on the ZCD, just after the 100 nF coupling cap. I checked on the ENV, after the same cap and the dc part was gone…Seems like a faulty capacitor to me. I replaced the culprit and resolved the problem.
One less issue to worry about.
Ok I tried replacing the capacitors C5 and C10 like you suggested ( to 1 µF).
Now it is VERY sensitive 😀 Maybe even too much but now I can make the analog part work. It’s a bit crazy right now, picking up all kind noise but it should be managable and I will try tempering that by radjusting the limiting resistors.
Thanks for the suggestions 🙂
A question now : I’m a little familiar with emitter degeneration but I’ve never used an amplifier where there is also a capacitor involved in the emitter part ( only the purely resistive type like this https://en.wikipedia.org/wiki/Common_emitter) . I tought it was just some decoupling capacitor but apparently, there’s more than that. So what’s it doing here exactly ?
Hi,
Is that a working design right now? If it is yes, what is the range of the wind speed?
Hi Daryl
Thanks for your comment. Well, it works kind of but I was never happy enough with it to really deploy it. So you’re very welcome to use it but depending on your requirements you might be disapointed.
But I’m currently working on a totally revised version, both software and hardware wise. I have the first part of it sitting here on my desk and it look promising…
Good Morning! First of all, I would congratulate you for the project done , very complete!
I have a question for the anemometer. I could use ultrasonic sensors as bringing the HC- SR04, unsoldering the sensors?
Or necessarily I have to be the MCUSD16A40S12RO?
Regards!
May be it is my ageing eyes but sections 18 and 19 in the Index appear to be identical.
Is there a section 18?
Hi J Hughes
Thanks for pointing this out to me. Yes, there is a section 18 and it’s now correctly linked above.
Regards
Lukas
First of all congratulations to the first real measurement, what an amazing path, great job!
We are in a remote location where our stuff (like windsocks) gets shot at! Instead of attention grabbing mechanical units, we were considering ultrasonics, but they are waaay too expensive. We would be really interested in building some of yours, which designs you kindly made accessible. We could give you remote access to our sensors so you could check them out in our very different conditions. You mentioned you might consider a kit, yes please, please count us in. Would you consider smaller bouncing units, where the path is folded? Or just three sensors? Those would be much more weatherproof. What about Raspberry Pi 3, which is extremely powerful and can be had for $30? Please keep up the excellent work! Thank you!
Hi Jimmy
I’m already working on a slightly revised board that I will get manufactured professionally. So I hope to soon be in a position to sell some of these, be it as a kit or fully assembled. It’s good to know that some people like you are interested in using these in a real-world application.
For now I’ll stick to the 4-transducer non-folded design since that’s probably the easiest design to handle. About the RPi 3: For the actual measurements I need a bit more control over the hardware than a fully featured OS is going to allow me. So I’ll continue with the on-board PIC32. But you can, of course, interface it to a Raspberry Pi 3.
How would you like to Interface to it? Probably not USB since you’ve mentioned that these things are deployed in remote locations…
Thank you for your reply! We do have Pis right at those mechanical weather stations right now, so any interface would be ok. If that PIC32 allows it, and you have a spare opamp, an analog output is always good. Also serial (w NMEA0183 protocol) and/or USB. Serial/USB might have the benefit to maybe change settings down the line.
In case you kindly offer a kit, the mechanics could be anything, so why not use a folded/reflective designlike this, only 64mm:
http://www.lcjcapteurs.com/product/cv7-v-ultrasonic-wind-sensor/?lang=en
What IC was the wiring error to that you mentioned in your latest post? Pin 5 of the digipot?
Yes, precisely. pin 5 of the digipot (IC10) needs to be connected to the 1.65V between R22 and R23 instead of GND.
Hi Lukas,
I am working with some African Universities in a NORAD-funded research project called WIMEA-ICT designing affordable and robust weather stations to be deployed in Eastern Africa to capture data for the academic communities. We have had a first generation prototype up and running in Bergen since early 2015 (http://wimea-ict.gfi.uib.no/) and are in the process of deploying the 2nd generation in Kampala. Dar es Salaam and Juba. We are planing for a 3rd generation kit design that will deployed by student teams in some 70-100 locations over the next few years.
We are very interested in getting away from moving parts to increase robustness and would be extremely happy to evaluate your design in tough environments. So, please add us to the queue for kits!
One of our biggest challenges is power consumption. Each station consists of a local wireless sensor network with at least one node each at 10m measuring wind and insolation, 2m measuring air T and RH, ground level measuring rain, soil temp and moisture, and a sink node measuring atmospheric pressure connected to a gateway with some sort of Internet access. The nodes wake up once a minute, do their measurements and go back to sleep. If we have power enough, we use a raspberry pi with a sink node as an always awake gateway, If we do not have power enough, we use a more power-lean gateway with less functionality and do radio duty cycling.
Did you measure the power consumption of your design and what do you think about the feasibility of duty cycling?
Best wishes
Bjorn
Hi Bjorn
Thanks for your very interesting and comprehensive comment. I would of course be delighted to see my design used in your research project and will be more than happy to supply you with a kit as soon as it’s ready.
About power consumption: So far I haven’t taken any steps to reduce power consumption yet.The design as I have it running now consumes 44mA @ 12V but most (almost all) of it is used by the PIC which runs at only 3.3 volts. So the real power consumption is something like 150mW. I’m sure that could be lowered significantly in software by using the various power saving features of the pic. I guess the pic could spend plenty of time in sleep mode even when taking continous measurements.
What precisely do you mean by duty cycling? Turning the unit on and off once a minute is definitely feasable. How much power consumption would be ok for your application?
Regards
Lukas
Hi Lukas,
Thanks for a quick and very positive answer!
Any rough time plan for producing kits?
Do you have a component list so that we can start buying components? We are using gEDA rather than Eagle but I guess we can learn new things 🙂
Your power consumption is a bit on the high side but it is nce to hear that you see ways to reduce it.
By duty cycling I mean roughly what you already guessed, powering on and off. There is a little more to it. You need to know how long to wait for the sensor signal to stabilize, how long time it takes to get a sample and to have some sort of synchronization procedure in the sensor network so that the sending node and the sink node are awake at the same time, unless you have an always awake sink node.
Most of our nodes need a bit less than 20 microamps while in deep sleep and about 20 milliamps during the duty cycle.
We sample once a minute and the sampling cycle is about a second for most sensors. So on the average about 350 micro amps.
The sensor node can count pulses, e.g. from the anemometer, even while sleeping, so we transmit the number of pulses that have arrived during the last minute. We started out using an anemometer with a hall element providing the pulses but, to reduce power consumption, we changed to a Reed relay that does not need any power feed.
The wind vane needs a feed but unlike the case with the anemometer, it can be switched on only during the duty cycle.
Can you think of any similar possibility to average wind direction/speed during sleep periods using your sensor?
Hi Bjorn
I was on holiday, hence the late reply. For a component list it’s easiest if you open the eagle files and export the BOM. It’s difficult to commit to a timeline with projects like these but I’ve started working on the revised board that I will get etched. I guess it’ll take another 2 months or so until I have the bords back from the board house and can start shipping them.
Anyway, be aware that while the hardware works fine from what I’ve seen so far there is a lot of work still to be done in software. I hope that shipping kits will help getting some more people involved with software development and testing.
regards
lukas
Hi Lucas,
Nice work! I want buy the kit. Must do it be pre-ordered?
Regards,
Ruvia
Hi Ruvia
Thanks for your interest in a kit. I will have more information on that in around 3 weeks. I’ll let you know.
lukas
As a retired eddy covariance research scientist previously involved (since the 1970’s) in developing and deploying Energy and CO2 eddy flux measuring instruments for the UK Natural Environment Research Council, I am very much interested in your project. I’m so electronic expert so most of what you have done goes above my head – but I see applications. In particular I’m looking to use a quadcopter drone to investigate energy fluxes in the near-surface boundary layer of the atmosphere, both vertically and horizontally over different terrain. Your 2-dimensional sonic anemometer carried as a payload beneath a quadcopter combined with a fine-wire thermocouple would provide me with the data to use a method I wrote about in 1991 (see Lloyd et al., 1991. Estimates of sensible heat flux from observations of temperature flucuations. Boundary-Layer Meteorology 57: 311-322). Having said all that – I need to now get down to really reading through what you have done. As I said, I’m no electronic expert but I have assembled many PCB designs – so if you do commercialise the PCB board – I will be in the market. Finally – thank you for your effort, competence and diligence in getting this project to this point.
Hi Lukas,
Yes, summer has been slow. I will start getting acquainted with agle, your hardware design and BOM while waiting for the boards…
Best wishes
Bjorn
Hi Bjorn
Finally, the boards are not too far around the corner. But I’ll share some information on that in a regular post.
cheers
lukas
Great! Should I do something more than I already have to order?
Hi Lukas!
I am part of the team that made the custom firmware (http://pljusak.com/nik) for cheap wi-fi routers so that they can read the measurement from meteo stations, and send them to WeatherUnderground and pljusak.com. Pljusak.com is a free crowd-sourcing web page meteorology enthusiasts can share their data. We are also active in sharing the data and helping other similar pages, such as WeatherUnderground, Blitzortung, Flightradar24, …
However, there is rather poor choice of meteo stations that are both cheap, well supported and available. Therefore, we have started building our own meteo station(s), and your project looks like a nice fit for our needs. Our developers are willing to share their work as Open Source if you choose so.
Would you be so kind and accept our pre-order for one kit with transducers?
With regards,
Nikola
Hi Lukas, Soldering of the two boards I got is well underway and I am trying to print your OpenSCAD design. I assume you refer to the https://github.com/SolidCode/MCAD library but when I try to render I get the message
Saved backup file: /home/bjorn/.local/share/OpenSCAD/backups/Anemometer_02-backup-DsjG1297.scad
Module cache size: 2 modules
Compiling design (CSG Tree generation)…
Rendering Polygon Mesh using CGAL…
WARNING: No top level geometry to render
Is the actual design not included or am I stupid?
hi bjorn
i’m not familiar with that github repo. I use the OpenSCAD version downloadable from http://www.openscad.org.
let me know if the design still doesn t compile…
Ah, OK, I found that MCAD repo in /usr/share/openscad/libraries/MCAD/screw.scad, thanks,
However, the result is exactly the same. It seems as if there are only supporting modules in the the you specified in the downloads list: https://soldernerd.com/wp-content/uploads/2014/11/AnemometerOpenSCAD.zip
This is what I get when trying to compile:
Saved backup file: /home/bjorn/.local/share/OpenSCAD/backups/Anemometer_02-backup-DsjG1297.scad
Compiling design (CSG Tree generation)…
Rendering Polygon Mesh using CGAL…
WARNING: No top level geometry to render.
Hi Lukas,
I’m following your project, really good stuff. I’m involved in air speed and other air data measurements. I collaborate also to basicairdata.eu. I read through your posts and I think that we can lend a hand. Just let me know.
Thank you for sharing!
Erik
Hi!
We are currently building a 3-component Ultrasonic anemometer. And are using your work as a guide .
We had a few questions regarding the digital circuit:
– How does 74HC368 actually work? It’s an inverter so it just generates an out of phase Pwm signal. Why do we need this signal?
– Where exactly have you placed the multiplexer and the decoder is not clear from your writings. Could you shed some light on that.
Hi AparnaJ
The 74HC368 is really just an inverting buffer. By driving the transducers with the original singal on one leg and the inverted signal on the other leg doubles the signal amplitude from 5V to plus/minus 5V. That’s the reason for using it. My current design uses a 12V supply and a mosfet driver to drive the transducers. It’s simpler and more powerful – the better solution over all.
Lukas
Hello Lukas,
Thanks for sharing all the details about your ultrasonic anemometer. I’ve learnt a lot of things reading your blog. I’m a sailor and a software engineer with little knowledge in electronic. I’m using an old mechanical anemometer (3 cups) onboard my sail boat. I’m willing to change it but nowadays this kind of equipements are very expensive (around $800) and with proprietary interfaces to be used by an autonomous boat steering system.
Like you I was first interested to make it using Arduino to make a prototype but it seems not being energy savy nor being able to sustain the requirements I have :
– Very Light (< 100 g) (up in the mast lighter is better)
– Small Form factor (10 cm width, <5cm height)
– Energy autonomous (solar panel +battery) or consumption < 50 mA (I've 100 A onboard but need to minimize the consumption for the steering system)
– Up to 10 hertz update rate for wind speed and wind direction
– At least 1 degree accuracy with a magnetic compass (boats have rotating mast and require external sensors to measure this offset and it is a PITA to calibrate and no need to compensate installation errors)
– at least 0.1 m/s accuracy on winds from 0 m/s up to 60 m/s
– Tilt/Yaw/Roll compensation of wind induced by the boat/mast moving (http://kingtidesailing.blogspot.fr/2015/10/correcting-nmea-0183-wind-for-vessel.html?m=1)
– NMEA output (RS422) to send data to the steering system or wirelessly if running on solar energy (it's a PITA to have to disconnect the system when dismating the boat)
I'm willing to experiment this with the current design rev b of the autonomous version of your anemometer (without all the bell and whistle I'm looking for) and I wanted to know if the PCB that could be seen on dirtypcb in the shared section was up to date or if any correction was required after receiving the PCB? BTW is the BOM also up to date with your latest work comparison on ultrasonic transducers ?
sincerely,
Jean-Baptiste
Dear Lukas,
Thanks for sharing all the details about your ultrasonic anemometer. I’ve learnt a lot of things reading your blog. I’m a Japanese sailor and a hardware engineer with little knowledge in software.
I have a question for your Arduino Ultrasonic Anemometer’s circuit. Have you ever made a Ultrasonic Anemometer using PIC16 series? I tried to make that last year, but I didn’t complete it yet. The reason why I’d like to make with PIC16 series is that I have a prototyping experience with that. If you have making a Ultrasonic Anemometer with PIC16 series, please share your schematic PDF and PIC16 series’s source code.
a.ri.ga.to(Japanese regards)
Mondo Saito
Hi Mondo
Thanks for your interest in my project. No, I haven’t designed any charger based on a PIC16 and I have no plans for doing so. However, the PIC18 series is very similar and most code can easily be re-used when upgrading from a PIC16 to PIC18. If you’ve programmed PIC16s before you’ll immediately feel at home with any PIC18.
cheers
lukas
Thank you for your reply!
I’m trying to use ATMEL SAML21 series. And I’m struggling with making receive circuit design.
I have one more question about your anemometer. How much is your anemometer’s resolution in wind speed and direction?
a.ri.ga.to
Mondo Saito
PS: One more question. What kind of Ultrasonic Transducer are you using?
Hi Mondo
There are two, a regular one and a waterproof one. See here for details: https://soldernerd.com/2016/12/24/ultrasonic-anemometer-part-29-transducer-comparison/
Lukas
Hi Mondo
I’m not familiar with the SAM21 series so I can’t give you much guidance here. Concerning the resolution: Native resolution is 1/48MHz = 21 nano seconds. With a sensor distance of 0.2 meters that is about 0.035 millimeters per second. So resolution is almost unlimited. Precision is a completely different story, of course, and depends much on the software.
I’m chasing your trial and error, and feel many difficulties making Ultrasonic anemometer. What drives you to make it?
Hi,
I was wondering why you used two rails to power the HC4052 multiplexers. You did that to get lower switch resistance?
Istvan
You need the negative supply if you want to pass negative voltages through the multiplexer. A couple of 10th of a volt are fine without (up to a diode drop) but the gate voltage I pass through one of the multiplexers is plus/minus 3.3 volts so I absolutely need the negative supply at least on that mux.
Hi Lukas,
I used your design files and BOM to order parts and build boards – just got them assembled last night! I’m having a problem where when I apply 12V, the power supply immediately hits the current limit of 1A. I also tried applying 3.3V to that rail directly, and it steadily climbs until the limit is hit as well.
Any suggestions on what could cause this behavior?
One difference is that I’m in the US, so I tried to make a 1-for-1 swap to components I could get through Digikey. I can share the Digikey BOM, if that would help.
Thanks! Dan
Hi Lukas,
I have built up a few of the boards using your files and BOM, and I’m seeing some weird behavior. When I apply 12V, the board immediately begins drawing the max current I have my supply set to, about 1A. Same thing happens when I power the 3.3V rail, it slowly ramps up to full current.
Any suggestions on how to remedy this?
Thanks!
Dan
Hi Lukas,
Just a heads up on what I’ve been doing with this project.
A little summary : . Apart from the micro choice (using a Teensy 3.6 in my case, so it’s a Freescale 32 bit micro), the design is very close to yours. I use different mosfet drivers and a lm324 to generate 12 V enable signals for those mosfet drivers. The main design difference is the multiplexer part where I use 3 4052 instead of just one. One 4052 for two transducers and then we combine everything in the third 4052. This makes it more easy to manage crosstalk .
This design has been finished for quite a while now and is pretty stable.
The signal treatment has been much more difficult than I anticipated. There is tremendous amount of jitter when measuring the phase of the packet. It’s caused but the system not being able to accuratly measure the maximum amplitude ( after the convolution ). So it sweeps back and forth between pulses around the true maximum. But, this is actually managable. The jitter is always a integer number of 25 ms ( a wavelength) so it is possible to detect and substract it. I just have to hope a wind gust will never be speedy enough to make a brutal 25ms or more phase shift between two adc measurements.
There are more issues I had to take care of in firmware but I’m finally getting stable wind speed measurements. I don’t have access to a wind tunnel but a simple house fan and a 15 euros Uni-t anemometer confirmed the measurements to be at least realistic around 10-20 km/h. I will need to figure out a way to test the device for higher speeds.
It took a while but I’m getting there 🙂
Hello, it is very nice project!
I tried about years ago to build sonic anemo (based od Raspberry and 2x ultrasonic range meters (very cheap parts)…) . It works, but limitation is it just work only with basic transducers (that which have no metal or plastic housing), if i use some waterproof it didnt work….
Please it’s possible to buy or order complete soldered PCB? I have from my last experiments complete anemometer construction (from copper tubes)… I hope maybe finish the goal to measure wind by ultrasonic (outdoor, indoor i get it)…
It could be perfect for my HD webcam at airfield – http://www.hyvris.cz
sincerely
Petr Ludera
Czech republic
Hello Lukas,
Thank you for your blog describing your attempt to construct an USA.
The signals of your Transducers, although open types, are awful.
(Besides, closed types prove substantially worse signal).
In any case, with these signals and a simple amplidute envelope detection, it is impossible to build an anemometer which could meassure wind speed at real wind. Believe me!
sincerely
Hi Hardy
Thanks for your comment. I’m quite familiar with your website, at the time I read through it and got some good ideas from your site. What kind of transducers would you suggest then?
lukas
Why do you change values of the PWM and why 25200 and 2000??
I don’t have the code in front of me but by setting these values you decide when the next timer interrupt will occur. That timer runs at the full clock speed of (I think) 64MHz. Where exactly in the code did you find those values? Can you give me the file and (approximate) line number so I know where to look? It’s difficult to comment on code one wrote 2 years ago…
I see that you are still responding to questions about the anemometer but I have not seen an update regarding orders for kits since you wrote “I’ll start taking pre-orders now” in 2016. As you clearly have other projects that are going forward, I suggest an update or clarification in the body of the overview page.
Are software improvements still on the TBD list?
Would you be open to having other people (not me) sell kits?
Is the original dream of putting it all on an Arduino shield impractical?
Hi Derek
Yes, I still answer questions but have largely moved on to other projects. That ready to take pre-orders post wasn’t the last one in that series but almost. At some point I realized that this project needs someone more knowledgable about digital signal processing than I am. The hardware works as intended, the firmware is relatively cleanly written and works pretty much as it should. But the very core of it is DSP and I only have a rather superficial knowledge of the topic.
Once in a long while, someone asks for a kit and I still have 3 or so and will sell them as long as stocks last. The project is published under Creative Commons Attribution-ShareAlike 4.0 International (hardware) and GNU GPLv3 (software). So there’s nothing wrong with anyone else selling these kits within the limits of these licenses.
Arduino, in my eyes, is the wrong platform for this project. It can make good use of some serious computational power so I have moved to a PIC32. If you want to interface it from an Arduino, you still can via its I2C or SPI interfaces.
Regards
Lukas
Lukas – can you summarize the limitations of the current kits in stock? Based on your feedback I, and may be others, may be interest in purchasing your existing kits.
Hi Michael
Thanks for your interest in the kit. Unfortunately they’re sold out. Regarding the limitations: The kit worked hardware-wise as intended but the software needs more work from someone experienced with DSP software. As it is now it works but is relatively unstable because it sometimes gets the absolute phase wrong.
Regards
Lukas
Lukas – Any chance you can put together and sell me 7 kits? I’m willing to get the software working either by myself or by a third-party. If so what’s the cost per unit?
In any event great work.
-Mike
Congratulation for your activity !
I would like to implement the ultrasonic anemometer for my radio ham station and so I would like to know something more about the results of the Arduino based unit. I did try in the past using picf18452 @ 40 Mhz clock but I had some noise at the aml out signal when there is a wind turbolence. Is this problem seen by you ? If yes , how did you solved it ?
Thanks for helping. Regards,
Ambro
Hi Ambrogio
Thanks for your question. It’s been a looong time since I worked on the arduino based anemometer. From what I recall, the envelope detector was somewhat noisy while the zero-crossing detector worked well. It worked as a prototype but I never got it to the point where I would consider it a deployable, finished product.
Lukas
Hi Lukas, thanks for your amazing work.
Even been really interested in by one of your boards to test it, my problem is to be in Brazil, so the 99 dollar board became almost 300 dollars when all the customs are clear, so I’m thinking on build a prototype on my own.
I have some questions regarding the schematic, one is the voltage to the sensor, have you made any tests to verify it working on 3.3 V as well? Because I imagine (and read you commenting) that the higher voltage generates a better response from the sensor, so it’s justify the usage of 12V power supply.
My second question is regarding the usage of the ADC on the Pic. Are you using the adc to measure the amplitude of the signal to adjust the digital potentiometer? So, can I use other microcontroller (also because of the availability here in brazil) like the stm32f103 ( its a very good and also fast 3.3 V microcontroller)?
Many thanks
Hi Lucas
Sorry for the late reply. The sensors can operate on 3.3 volts but the signal amplitude is very small then. I wouldn’t want to run them on anything lower than 12volts, the signal is still not that large then… And yes, you can definitely use any similar microcontroller such as the stm32 series, you’ll just have to adapt or re-write the code.
cheers
lukas
haiii, a great project that helping me.
i have a project to build ultrasonic anemometer, can i get ur documnet or jurnal.
i want to make it became my reference.
Hi Alfin
Thanks for your comment. All the information I have is on this blog and all the code and files are on github.com/soldernerd
cheers
lukas
Hi.
I’m looking at the possibility to build a custom PCB based on your design. But I dont really understand the design. It is Arduino-based but there is still a PIC MCU on board?
Regards
Tobias
No, the arduino version does not have a PIC. the arduino does it all…
I know this may seem strange but… Have you considered putting a Honeywell HMC5883L (or something similar) on the Motherboard. I know most people using are in a fixed location but if you added the ability to know where north is it would not have to be worried about in the physical mounting. For me I am interested as a marine device aboard a moving boat and would need to measure direct as an offset from a compass or GPS.
Nice idea if you are to deploy such a device on a boat or the like. This is not something I never thought about to be honest…
Hi Guys, I am really inpressed what are You doing, from the miniturization point of View why not to use dsp based transduser driver/sensor solution from TI ~29 $? I want to try and will give You feedback soon
@Konrad – did that work?
I’m planning to convert from a PIC to an ESP32 (for various reasons, but mainly Wifi/LoRa support) and dual-core capabilities (1 core for measurement, 1 for calculations/communications)
Hi, I know this is an old project but was wondering if there is a community/any active development going on anywhere? I’ve ordered some boards (so may have some available at cost if anyone’s interested) while I’m OK at building the hardware and programming the PIC/writing some Arduino code I’m not so great on the more advanced side of writing/modifying the PIC firmware. Also I read through all the project pages and unless I missed it didn’t see anything about how to derive direction from the speed values, I assume that’s vector maths of some sort? But again currently a bit out of my comfort zone.
Dear Lucas,
Can You provide pick and place file for Your anenometer revB design? I want to fabricate one at PCB manufacturing and assembly company.
Hi Konrad,
Sorry, I only have the Eagle files that are on Github. Maybe you can generate the pic and place file out of Eagle?
Lukas