I have read the arducopter manual and also reviewed some of the earlier forum posts and initially moved my sonar sensor (recommended Maxbotix) 3" away from the main electronics but still see too much noise for the sonar to work in Alt Hold properly, So I did some more research and think the following may be of interest to the group. I certainly hope it allows me to keep the sonar closer to the centre of my copter rather than out on an extended arm and nearer to the motors and props.
I found a simple solution from Maxbotix, that should eliminate the effects of excessive supply noise which can impact the Sonar sensor operation. Placing a 100 Ohm resistor in series with the V+ line along with a 100uF Electrolytic capacitor (6.3V +/- 20% tolerance) to ground, you create an effective filter for the sensor. This ensures that almost any noise introduced onto the line is captured and only clean stable power is supplied to the sensor. See the photo schematic below:
This combined with perhaps a shielded cable as described here may eliminate the need to place the sensor out on a long plastic arm as I have seen mentioned in another forum post and in the Arducopter manual.
The only concern I have is extending the ground plane to the sensor board and whether this may introduce other issues. For example, normally the signal receiving end ground plane would be tied to earth, But in the arducopter this is not possible being a flying platform.
Anyone care to discuss / comment the possible side effects of a floating ground between the APM and sensor acting as an antenna of some sorts if both ends are connected? In other words would connecting the signal wire shield to the GND on both the APM and Sonar (As described in the Maxbotics article) be ok? Note the postive, negative and Analogue signal would be inside the shield.
I plan to do some experimenting over the next few days and report back my findings.
One other quick question. How many people run with sensor filters enabled on the IMU shield (3 in total)? What are the cons if you use the filters? e.g some sensitivity loss in the detector / sensor?
I would assume the AC program looks at signals from the IMU as well as the sonar to determine height. I know it does with the magnetometer. While testing spin the magnetometer and/or the IMU seperately and watch the heading output.
The same could be, or should be, done with the sonar.
Or, instead of a moving average filter, just simply throw out any values that are not plausible upon a comparison between dH/dT and the Z axis accelerometer. The aircraft can't plummet without something showing up on the accelerometer.
It looks like there's a few I2C SRF's out there already: http://www.acroname.com/robotics/parts/R287-SRF02.html
This should help minimize the noise on the signal when it's getting transferred from the sensor to the APM... provided that the EMI isn't large enough to throw off the I2C signals.
As an after thought, one of my professors here at the college keeps mentioning the usage of differential circuitry to transmit and recieve the lines. The concept is, since the EMI is common to both transmission lines, a simple unity buffer could be used to filter out the EMI.
The unity buffer would then essentially be an analog op-amp with both inputs connected to both transmission lines. In your case, you might be able to plug the cable shielding into one input (I'm thinking the - side) and your analog line into the other (the + side).
Also... why not shield the motor leads as they are likely the cause of the noise. Even passive shielding would help I think... Wrap the booms with tin foil and give her a try.. :)
It works for my head anyway.. :)
Yeah, but you still need somewhere to ground the shielding, otherwise it might just make matters worse (see how a Yagi array works)
I've got a couple of these (SRF02 sonar) on my work bench right now and have just finished a software library to integrate them into the arducopter code for testing.
Just need some more time (& less work)
Nice! My parts budget ran out already, so I've got to wait before I can get my hands on one. I've been eyeing the old SRF04 to see if I might be able to hack into it at all...
And yeah, ( more_time & less_work ) = more_fun;
Sheesh, I'm beggining to talk in code now...
Those spikes are noise - and are not good.
If you have spikes like that while flying in Alt Hold or Loiter you will find your quad dropping like a stone to compensate for the apparent sudden rise in altitude caused by the noise.
Interesting - your noise spikes go up in value while most others I've seen are downward spikes.
yeah, thats what happened before i shorted my sonar cable, shielded and put a ferrite.....it was a lot worst than now!
But you're right....i almost crashed because of these noises....i bought this little spikes wouldn't be a real problem (like i said, it was worst).
I'll try this filter with caps next weekend.
I don't do 'copters but it looks like while some people have solved many of the problems, a few of you still need some fresh ideas, and I have gotten some mil equipment past "noise" issues in years and decades past. You've got to get your head around a couple of different ideas. Electrical noise, magnetic noise, and mechanical noise.
1. Electrical noise. Putting a filter on the sonar power supply will keep power line noise from going into the sonar. But if it isn't power line noise, it does you no good. In fact, that 100 Ohm resistor is scary. Remember that when the sonar sends a pulse, it will draw a pretty big current. If that 100uF cap can not supply all the current needed then there will be a pretty big voltage drop on the power sonar's power line. That can adversely affect readings. You probably want a pretty big cap near the sonar, but a small, low ESR cap *right* near the sonar might be a good idea too. And as little R in series as you can get away with. A scope will help you track this and decide if you need it. (Cap type & size.) Come to think of it, it may not even be noise coming in the power line, it might just be voltage drop during transmission. Someone might try the cap alone, without any series R.
2. Magnetic noise. Y'all are running big and varying current through your ESC's. This creates big and varying magnetic fields. An electrical shield will do *nothing* against a magnetic field. Since you can't get rid of the magnetic field, you need to play it's own game. (This is what twisted pair is for.) With every twist of the wires, the induced voltage is the opposite of the voltage induced in the prior turn. The smaller (physical size, not strength) and closer the magnetic field, the more turns per inch (TPI) you need in your wires to cancel. So, make sure that the power and signal wires to the sonar make 2 or 3 turns per inch (or more) from the Ardu out to the sonar. Evenly spaced. Also, do your best to run those wires perpendicular to any high current wires. Do not run the sonar wires parallel to motor power wires, for example out an arm.
3. Mechanical noise. The piezo element in the sonar will generate voltage when shaken, just as if a sonar pulse is received. You can reduce sonar vibration not just by putting foam or absorbent material around it, but also by adding mass to it. Just like a an electrical filter -- for example the proposed one for the power supply -- has both R & C (or L and C) components, you put R (foam) between the shaker and your sensor, and you add storage (mass) out with the sensor. If you can double the mass of the sonar device you will have halved the frequency which it can be shaken at. Stick a couple ounces of lead on the back of the sonar...
The data output can be filtered -- I'm sure that it is in software -- to greatly reduce spikes that are sharper than any realistic acceleration of the airframe might cause. A single spike is not a worry. A series of spikes represents a different value.
Crap, I forgot to mention the twist thing.. well played sir, well played..
Have not even begun to solder mine together yet, but if i encounter the noise issues, I will use twist and software filters I think..
I actually saw a "How its Made" where they were making Cat5 cable and I never realized that each pair has a different twist per inch to prevent noise..