[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: OT - non-contact digital current loop sniffer



eThinking out loud ...

It's the classic problem of recovering a signal with a varying, data
dependent mean DC level from an AC coupled source.

I'm not too familiar with current transformers but essentially I think
what you need is something that effectively produces a high step up
turns ratio where the primary is represented by one or more turns of
your signal wire and the secondary is a much larger number of turns on
something like a ferrite core.

I think you then want a low impedance load on the secondary to
maximise the time constant. Ideally a transimpedance (I to V)
amplifier which will have a very low input impedance and give a
voltage output. The trick is to get the time constant of the secondary
inductance divided by the load resistance much longer than the maximum
effective period of the low frequency variation represented by the
runs of continuous 1's or 0's.

Very poorly explained but the attached LTspice sim might help
illustrate what I'm babbling about. I've included the netlist so you
should be able to run it in Gnucap or ngspice with a bit of editing to
sort out the .step directive syntax.

Otherwise you may have to start looking at DC restoration or even
PLL's to recover any embedded clock.

A Hall effect sensor would certainly preserve the DC level but may
simply transfer the problems into offset and positional setup drifts.

Cheers,

         Andy.

signality.co.uk




On 14 July 2011 13:51, David C. Kerber
<dkerber@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
> Yes, we have access to a single wire carrying the signal current (I remember enough of my 27-year old EE degree to catch that).
>
> But I had my doubts about a current transformer, because of the chance of having several bits at the same level, either high or low current, not giving any signal; ie a dc current for a short period, causing the signal from the CT to go to 0.  ISTM that this case would require some rather extensive signal processing, but I could easily be wrong about that; that's why I was thinking of a hall-effect transducer, which would detect dc signals.
>
> Am I worrying about non-issues here?
>
> Dave
>
>
>
>> -----Original Message-----
>> From: geda-user-bounces@xxxxxxxxxxxxxx
>> [mailto:geda-user-bounces@xxxxxxxxxxxxxx] On Behalf Of Andy Fierman
>> Sent: Thursday, July 14, 2011 3:49 AM
>> To: gEDA user mailing list
>> Subject: Re: gEDA-user: OT - non-contact digital current loop sniffer
>>
>> As long as you have access to a single wire and not the return path!
>>
>> :)
>>
>>          Andy.
>>
>> signality.co.uk
>>
>>
>>
>>
>> On 13 July 2011 22:48, Stephen Ecob
>> <silicon.on.inspiration@xxxxxxxxx> wrote:
>> > On Thu, Jul 14, 2011 at 1:18 AM, David C. Kerber
>> > <dkerber@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
>> >> Hi, electronics gurus -
>> >>
>> >> We have an application where we need to passively monitor
>> a digital current loop (no data sending by us), with a data
>> rate of 9600 baud.  We already have solutions for tapping
>> into the circuit, but in some of our customers' cases the
>> circuits don't have enough drive capability to add another
>> load to it.  So we're looking for a non-loading, and
>> preferably non-contact solution, such as a inductive pickup
>> or hall-effect pickup, that hopefully wouldn't require us to
>> break into the circuit.
>> >>
>> >> Does anybody know of such an animal?  If not, it's also
>> possible that we might contract to have one designed, but
>> that's not decided for sure yet.  It's a fairly electrically
>> noise environment, but not extreme, and the sensor itself
>> would likely be installed inside an already-existing box on
>> the wall.  The circuit runs at 45mA for the high signal, and
>> the low is <2mA.
>> >
>> > Is the current flowing through a length of accessible wire at some
>> > point, or is it only accessible in a PCB trace ?
>> > If it flows through a length of wire then running it
>> through a current
>> > transformer could work well.
>> >
>> >
>> > _______________________________________________
>> > geda-user mailing list
>> > geda-user@xxxxxxxxxxxxxx
>> > http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>> >
>>
>>
>> _______________________________________________
>> geda-user mailing list
>> geda-user@xxxxxxxxxxxxxx
>> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>>
>
>
> _______________________________________________
> geda-user mailing list
> geda-user@xxxxxxxxxxxxxx
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>
Version 4
SHEET 1 1096 680
WIRE 768 -80 768 -112
WIRE -448 -32 -480 -32
WIRE -256 -32 -288 -32
WIRE -48 -32 -80 -32
WIRE -480 0 -480 -32
WIRE 544 32 352 32
WIRE 768 32 768 0
WIRE 768 32 656 32
WIRE 832 32 768 32
WIRE 1056 32 832 32
WIRE 240 64 160 64
WIRE -288 80 -288 -32
WIRE 544 80 544 32
WIRE 656 80 656 32
WIRE 832 80 832 32
WIRE 160 128 160 64
WIRE 352 128 352 32
WIRE -80 144 -80 -32
WIRE -480 288 -480 80
WIRE -288 288 -288 160
WIRE -288 288 -480 288
WIRE -80 288 -80 224
WIRE -80 288 -288 288
WIRE 160 288 160 208
WIRE 160 288 -80 288
WIRE 352 288 352 208
WIRE 352 288 160 288
WIRE 544 288 544 160
WIRE 544 288 352 288
WIRE 656 288 656 160
WIRE 704 288 656 288
WIRE 832 288 832 160
WIRE 832 288 704 288
WIRE 1056 288 832 288
WIRE 704 320 704 288
WIRE -480 336 -480 288
WIRE 704 432 704 400
FLAG -480 336 0
FLAG 704 432 0
FLAG 768 -112 0
FLAG 1056 32 a
FLAG 1056 288 b
FLAG -448 -32 sig1
FLAG -256 -32 sig2
FLAG 240 64 dat
FLAG -48 -32 sig3
SYMBOL ind2 528 64 R0
SYMATTR InstName L1
SYMATTR Value 1u
SYMATTR Type ind
SYMBOL ind2 640 64 R0
SYMATTR InstName L2
SYMATTR Value 10m
SYMATTR Type ind
SYMBOL bi 352 208 M180
WINDOW 0 24 88 Left 0
WINDOW 3 24 0 Left 0
SYMATTR InstName B1
SYMATTR Value I=20m*(0.5-V(dat))*(1-exp(-time/100u))
SYMBOL voltage -480 -16 M0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value PULSE(0 1 0 1n 1n {0.5/9600-1n} {1/9600})
SYMBOL res 816 64 R0
SYMATTR InstName R1
SYMATTR Value {Rload}
SYMBOL res 688 304 R0
SYMATTR InstName R2
SYMATTR Value 1G
SYMBOL res 784 16 R180
WINDOW 0 36 76 Left 0
WINDOW 3 36 40 Left 0
SYMATTR InstName R3
SYMATTR Value 1G
SYMBOL voltage -288 64 M0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value PULSE(0 1 0 1n 1n {8/9600-1n} {16/9600})
SYMBOL bv 160 112 R0
SYMATTR InstName B2
SYMATTR Value V=V(sig1)*V(sig2)^V(sig3)
SYMBOL voltage -80 128 M0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value PULSE(1 0 27u 1n 1n {32/9600-100u} {64/9600})
TEXT 528 -16 Left 0 !K L1 L2 0.1
TEXT -272 -200 Left 0 !.tran 10m
TEXT -72 -200 Left 0 !.step param Rload list 1 10

Attachment: current_transformer_01.plt
Description: Binary data

Attachment: current_transformer_01.net
Description: Binary data


_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user