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