- #1
petterg
- 162
- 7
Hi guys,
It's been 15 years since I played with radios, and I've basically forgotten everything.
Do you think I'm on the right track with this problem? Do you have any suggestions for the circuit needed for the generator and/or receiving filter described in the last two paragraphs?
Or maybe you have a totally different idea of how to solve the problem?
(Hop I manage to express this in English in a way you'll understand.)
I'm trying to design a circuit (for use in a robot) that can detect if a wire carrying an AC-current is to the left or right of the detecting circuit. Luckily we operate in a limited 3D environment that can be considered as a 2D environment. (The cable is on the ground, the sensor in the robot will be placed a tiny bit above the ground. The robot is moving around on the ground, the XY-plane.)
However, as the robot has motors there will be some magnetic disturbance involved.
Assume that our 2D world is a XY-plane and the wire is placed along the Y-axis. And we know the current passing through the wire. Then we can detect the strength of the electromagnetic field with the known frequency from the wire and approximate the distance (x1) from the circuit to the wire. So we get that abs(Xr)=x1
(Xr is the position of the robot i X-direction. Xr=0 means the robot is on the cable.)
Now the problem: How can we know if Xr=x1 or Xr=-x1 ?
First thought for solution: Move in one direction, see if the signal get stronger or weaker. (Calculate new x1).
Why it doesn't work: The approximation of x1 has an error of up to 40% off, because of various disturbance. For the application x1 is good enough, if we just could figure if it's positive or negative. It will require to much moving in order to get a delta x1 with an acceptable level of certainty.
Second thought for solution: When the robot is above the wire, keep track of which direction it moves.
Why it doesn't work: It works 99% of the time. We need some method that works 100%, or combine this with another 99% method. The most obvious fail is when the robot is powered on at a random position.
Third though for solution: use a compass and add a DC component to the wire. The compass would align with the wire.
Why it doesn't work: Even though this would work even when the compass is 89 degrees off, the disturbance can be enough to make it go 180 degrees off. (And we want to adopt this navigation to also detect Y-position from a wire along the X-axis. It wouldn't work at all with two crossing wires.)
Forth though for solution: (This is probably the way to go, if just can figure how to do it.)
Make use of vertical magnetic field direction around the wire. When current flows through the wire, magnetic field will point up on one side, down on the other. With a vertical coil in the detector circuit the direction of current in the coil will tell which way the field around the wire goes, hence we know which side of the wire the detector is.
Issue to solve: The current in the wire has to be AC. Hence it (and the magnetic field, and the current in the detector coil) is changing direction all the time. We need some way for the detector to know which way the current in the wire flows. I'm thinking the easiest way to do this would be to "stretch" the sin-wave in the wire so that the current is negative for about twice the time of it's positive time. Then the detector can detect if the current in the coil is negative for longer than it's positive it's position has positive value of x - or the other way around.
(If a sin-wave use time t for a full wave it's positive for t/2 and negative for t/2. This modified wave I try to make/detect is positive for t/3 and negative for 2t/3.)
Now the challenge 1: How to design a generator for such a wave signal?
Adding a DC component will probably not work. I think the amplitude in both positive and negative direction should be equal. Hence there will be need for a change of frequency every 1/2 wave length.
challenge 2
The receiver circuit will connect to a arduino board. I'm thinking the circuit may provide two signalwires: a highpin (high level when positive current above a certain level in the coil) and a lowpin (high level when negative current above a certain level in the coil). If both are low the level of current is to low. Then the arduino can be programmed check which of the pins that are high for the longest period and conclude on positive or negative x1. But the receiver circuit still needs a filter, quite narrow bandpass to filter the frequency/frequencies from the sender to filter out most other electric/magnetic noise.
It's been 15 years since I played with radios, and I've basically forgotten everything.
Do you think I'm on the right track with this problem? Do you have any suggestions for the circuit needed for the generator and/or receiving filter described in the last two paragraphs?
Or maybe you have a totally different idea of how to solve the problem?
(Hop I manage to express this in English in a way you'll understand.)
I'm trying to design a circuit (for use in a robot) that can detect if a wire carrying an AC-current is to the left or right of the detecting circuit. Luckily we operate in a limited 3D environment that can be considered as a 2D environment. (The cable is on the ground, the sensor in the robot will be placed a tiny bit above the ground. The robot is moving around on the ground, the XY-plane.)
However, as the robot has motors there will be some magnetic disturbance involved.
Assume that our 2D world is a XY-plane and the wire is placed along the Y-axis. And we know the current passing through the wire. Then we can detect the strength of the electromagnetic field with the known frequency from the wire and approximate the distance (x1) from the circuit to the wire. So we get that abs(Xr)=x1
(Xr is the position of the robot i X-direction. Xr=0 means the robot is on the cable.)
Now the problem: How can we know if Xr=x1 or Xr=-x1 ?
First thought for solution: Move in one direction, see if the signal get stronger or weaker. (Calculate new x1).
Why it doesn't work: The approximation of x1 has an error of up to 40% off, because of various disturbance. For the application x1 is good enough, if we just could figure if it's positive or negative. It will require to much moving in order to get a delta x1 with an acceptable level of certainty.
Second thought for solution: When the robot is above the wire, keep track of which direction it moves.
Why it doesn't work: It works 99% of the time. We need some method that works 100%, or combine this with another 99% method. The most obvious fail is when the robot is powered on at a random position.
Third though for solution: use a compass and add a DC component to the wire. The compass would align with the wire.
Why it doesn't work: Even though this would work even when the compass is 89 degrees off, the disturbance can be enough to make it go 180 degrees off. (And we want to adopt this navigation to also detect Y-position from a wire along the X-axis. It wouldn't work at all with two crossing wires.)
Forth though for solution: (This is probably the way to go, if just can figure how to do it.)
Make use of vertical magnetic field direction around the wire. When current flows through the wire, magnetic field will point up on one side, down on the other. With a vertical coil in the detector circuit the direction of current in the coil will tell which way the field around the wire goes, hence we know which side of the wire the detector is.
Issue to solve: The current in the wire has to be AC. Hence it (and the magnetic field, and the current in the detector coil) is changing direction all the time. We need some way for the detector to know which way the current in the wire flows. I'm thinking the easiest way to do this would be to "stretch" the sin-wave in the wire so that the current is negative for about twice the time of it's positive time. Then the detector can detect if the current in the coil is negative for longer than it's positive it's position has positive value of x - or the other way around.
(If a sin-wave use time t for a full wave it's positive for t/2 and negative for t/2. This modified wave I try to make/detect is positive for t/3 and negative for 2t/3.)
Now the challenge 1: How to design a generator for such a wave signal?
Adding a DC component will probably not work. I think the amplitude in both positive and negative direction should be equal. Hence there will be need for a change of frequency every 1/2 wave length.
challenge 2
The receiver circuit will connect to a arduino board. I'm thinking the circuit may provide two signalwires: a highpin (high level when positive current above a certain level in the coil) and a lowpin (high level when negative current above a certain level in the coil). If both are low the level of current is to low. Then the arduino can be programmed check which of the pins that are high for the longest period and conclude on positive or negative x1. But the receiver circuit still needs a filter, quite narrow bandpass to filter the frequency/frequencies from the sender to filter out most other electric/magnetic noise.