There are a couple things a soundcard could come in handy for electricians. Dual channel oscilloscope and RCL meter/
The first circuit shows you a design for oscilloscope:
That circuit gives an impedance <500K on CH1 and CH2. R1 and R2 adjust the voltage range. R3 and R4 is for current limiting resistors for the pots and switching diodes. All diodes clip the voltage to a safe level for the soundcard. You can test the circuit by applying a voltage and see if it knocks it down to hundreds of millivolts. One direction of turning should increase the output while the other decreases. And don’t forget to check both polarities!
The RCL meter is simpler and easier. Although the software is shareware its worth a try. I talk to the daqarta team and they said after the trial expires the RCL meter won’t work. You must make resistor R1 removable, so that it can be calibrated.
Here's a calculator that will give you actual RMS or Peak-To-Peak voltage from the uncalibrated voltage.
Uncalibrated Voltages(Separated by commas):
Actual Voltages(Must be in the same order as the uncalibrated ones):
Voltage to be measured:
Voltage Output:
In this blog post I will go over steps of testing a battery. This method is not just for golf cart batteries, it works with most batteries(although the resistance might be different) that give a good wattage without going over the wattage rating of the resistor. Another thing I should tell you is don’t forget to unhook the resistor when you are not using it. This is so that the battery does not get drained too much. You may be thinking don’t batteries voltage goes really low if the battery is bad. That is true, but there is a possible chance that the equivalent series resistance goes up and the voltage stays the same.
To figure out the maximum voltage for a a resistor use the following equation,where Vmax is the maximum voltage R is resistance and P is resistor power ratting
$$v_{max}=\sqrt{PR}$$
So for a 10 ohm 100W resistor,for the heating element tap into a section of the nichrome wire and measure it until you get a good small resistance for what is reasonable.
$$\sqrt{10*100}=\sqrt{1000}=31.623V$$
Since our battery is 24V it will work since it is less than 31V. But don’t stop there is 10 ohms small enough to give out a few amps without going over the amp-hour capacity. You can figure that out with ohms law equation. Where I is current, V is battery voltage and R is resistance:
$$I=\frac{V}{R}=\frac{24}{10}=2.4A$$
If we put two 10 ohm resistors in parallel you will get 4.8A and so on… Just don’t use too many where the current draws too much. I decided to get four of them. This gives a 2.5 ohm load which draws 9.6A, this is so that the current doesn’t overload the meter that I have. This will save you money(if you get a heating element. This is because the resistor has to be 100 watts and at all electronics it cost 5 dollars per resistor. Another option is to get a cheap heating element. The heating element is a better option because you can tap into the resistance needed and higher power. To get the correct resistance from a heater element divide the length of nichrome wire by the following equation:
Where Vrated is the original voltage rating(240v is typical dryer voltage) for the heater element,vbattery is the battery voltage and L is the length divider so with 24 volts you must not go below the original length divided by 10. So for element of 20 feet the minimum length is 2 feet,and so on…
Testing the battery
When I say measure I mean MEASURE it! Do not use what the specs say because your meter will probably be a little off. Do it for every time you hookup this circuit.
Step 1 Measure the resistor and do ohm’s law to figure out the maximum current it will draw. It must not go really over the amp hour rating of the battery
Step 2 Hook up the circuit to the battery and measure it voltage it should not drop below the 80% of the battery voltage for a maximum of 15 seconds.
Step 3. If it hardly dropped it’s good other wise it is bad, you can take your load test each battery one at a time
You can use the calculator below to calculate the lowest safest length of wire.
Originally rated voltage:V
Battery Voltage:V
Total length of nichrome wire:ft Use default for the one I used.
Lowest Length: ft
Here’s a simple LED tester that allows you to test LEDs, see how bright they are and let’s you see the forward voltage drop used to figure out the current limiting resistor. We use a 100mA LM317 current regulator. By doing this you can see how the LED reacts to different currents. In this circuit it uses a 6 position switch to choose the current(between 5mA to 30mA). D1 is the LED under test, M1 is a voltmeter measuring the forward voltage across it. R1-R6 are the resistors used to choose the current. No power switch is needed even if powered by a 9V battery, when the LED is hooked up no current flows. R7 shunts the regulator when the switch becomes open during changing current so that the current does not go sky high. It might be cheaper to buy 21 resistors and use them in parallel as need.
The output current is defined by the following equation using Ohm’s Law, where I is current and R is resistance:
In this blog I will show you how to build holiday lights. This idea came from Penny who wanted to get green lights and come to find out they are not in store.You can take LEDs and wire them in parallel with a current limiting resistor for each one. Or to speed up soldering just get the ones with built-in resistors. It will make them look more professionally made. See the circuit below:
To use the standard ones just put a resistor in series defined by this equation
$$R=\frac{V_{in}-V_{f}}{0.001I_{f}}$$
R is the resistance in ohms, Vin is the supply voltage in volts, Vf is the voltage drop defined in the LED datasheet and If is the current defined in the LED datasheet. If you don’t know model of your LED or can’t find a datasheet use a 1k. It wont be the brightest but good enough.
You can also flash them by an Arduino, computer, 555 timer, etc…
Just remember that the output current sometimes might not be enough or the load could be too much, so you probably need a Transistor Switch circuit
You can get 20ft of wire for $2.60, 45x 12V LEDs for $20(you can get them cheaper without the built-in resistors) and a 12.5V power supply for $3.50 at allelectronics cost including shipping $34.10
To determine the total current draw we can use this equation, where Itotal is total current in milliamps, n is the number of LEDs and If is the LED current defined in the datasheet.
$$I_{total}=0.001I_{f}n$$
And for wattage:
$$P=0.001I_{f}nV_{in}$$
Where P is power in watts. If is LED current in milliamps, n is the number of LEDs and Vin is supply voltage.
In this blog post I will show you how to build a x1 probe and a x10 probe. You will need resistors, a pen(prefer one with the tip can come off),6ft or less of TV coax, paper clip,one alligator clip, 1 Meg impedance oscilloscope and a f jack to BNC adapter. You will want to get the lowest wattage resistors. This is so that it can be easier to put the resistors inside of the pen. The resistor closest to the tip is should be 5 Meg, and the one that connects to center and ground is 1.25 Meg. When connected to the 1 Meg oscilloscope it makes a divide by 10. And that is how this times ten probe works! The times one is the simplest, you just hook tip and ground directly to the oscilloscope. Also you want the lowest amount of wire exposed. In the picture of the oscilloscope shows 10.11vdc being measured on 1v/div. It definitely reads approximately 1v. You might be asking why use F-jack coax? Here’s what it says on Wikipedia about it:
The F connector is an inexpensive, gendered, threaded, compression connector for radio frequency signals. It has good 75 Ω impedance match for frequencies well over 1 GHz[2] and has usable bandwidth up to several GHz.
Making the x10 probe
Cut one end of the cord, make sure the piece you are using is 6 foot or less
Strip the coax back far enough that the cord can fit threw the pen, and some for the ground clip. Strip half a inch of the insulator off for access to the center pin.
Here comes the hard part, soldering the resistors. Solder the 150k resistor to the braid. Make sure not to melt the insulator separating the center pin from ground. Make sure to make connections short to prevent interference.
Next solder the 1.1Meg resistor to the 150k resistor from step 3 to the center pin. Again make sure to use short connections as possible.
Solder the next 2 150k resistors in series with a 4.7Meg at the end.
next solder the 4.7meg to the paper clip, Bend the paperclip all the way back before soldering.
Carefully push the probe into the pen. Clip off excess paperclip. And that’s it!
Making the x1
Cut 6 foot or less of the coax.
Strip the coax back enough for the pen fit on the cord. Strip an inch on the center insulator.
Push the cord threw the pen and cut off excess wire from the tip and your done!
Testing the x10 probe
You will need a multimeter and a power source (isolated power supply, battery,etc)
First measure the resistance between ground and center, you should get 1.25 Meg. Not close to zero or open.
Next measure from the ground clip and the probe tip, you should get 6.25 Meg. This is because the top resistor is in series with the bottom one and there resistance adds up.
Now if your meter is 1 Meg impedance then you can connect your probe up to a power source and measure it to see if it equals it divided by 10. If not then measure it on the oscilloscope. Make sure that if it’s DC your coupling is not AC as it blocks DC.
Also it might be possible to make a x10 resistor probe for 10 Meg impedance just change the resistor that connects to the tip to 50 Meg and and the one between it and ground to 12.5 Meg. I had to adjust the VAR knob on the scope to calibrate it to the correct measurement
A Ethernet tap allows you to monitor Ethernet communications going through the tap. The circuit uses no power and that is why its called passive. Can be made by cutting Ethernet cords and/or soldering or crimping. This method will make the maximum Ethernet speed 100Mbps, even if its a gigabit Ethernet. Also you could use 2 Ethernet adapters for reading both send and receive lines.
What you will need
2x Ethernet cords(CAT5,CAT6 or CAT5E)
1 pair of scissors or wire strippers
Optional 2x ceramic capacitors(use in case of power over Ethernet)
1 pair of pliers( for crimping end caps, if your going to use wiring nuts or solder this is not needed)
Step 1. finding Receive Pair
In order for this circuit to work you must know which wires are the receive pair and ones that are transmit. Patch cords have one of the following color code below.
If green is closest to pin 1 then receive pair are the orange otherwise it’s green. Also crossover and rollover cords don’t have the same wires connected on both sides. After that you must decide which cable can be use as the monitoring cords. It will use wire 3 and 6
Step 2. Building The Circuit
Connect wire pairs as shown.
Device A and Device B are the connection to monitor. And Monitor A and Monitor B are the cords that are used for monitoring the connection. Monitoring Cords uses Pin 3 and 6. And Device cords use Pin 1, 2, 3 and 6. Also make sure to use Promiscuous Mode in SmartSniff. If your device uses Power Over Ethernet, just connect one ceramic capacitor on the blue pair and one on the brown pair. Make sure the capacitors are only on the Device side of the cord and not the monitoring.
Step 3. Testing The Ethernet Tap
You will need 2 computers and one Ethernet Router to test this cord. Plug one Device cord up to a router and the other device end to a computer. Hook one of the monitoring cords up to a different computer. Open SmartSniff and select the Ethernet Adapter with the cord connected to it and select WinPCap and Promiscuous Mode. Next on the computer we are spying on ping the router and see if it shows up in SmartSniff(Its protocol will be under ICMP).
It uses 3/4 Op Amps from the LM324 chip. I tested the circuit from learningaboutcelectronics.com and it works in multisim. S1 and R8 controls the frequency. R6 controls the amplitude of the sawtooth voltage. When you change the frequency the output voltage changes as well, so having a non-inverting amplifer helps. XFG1 and XSC1 are testing tools and only needed for testing. Another thing to save money I put some of capacitors in series to lower capacitance. Also there is two 10k resistors in parallel to make 5k so you could use 4.7k-5.1k or ones from your minimum order of 10k. I decided to use a Darlington Power transistor because of its high gain. When changing one pot, you may need to change the other one. NOTE I ONLY SIMULATED IT IN MULTISIM, I WILL BUY THE PARTS SOON AND TRY IT IN REAL LIFE.
Scopes are expensive and hard to find locally. Here we are going to build one out of a CRT TV. THIS METHOD ONLY WORKS WITH CRT TV, NOT PLASMA, FLAT SCREEN OR LCD TV. The circuit only uses the TV Deflection coils to create a magnetic field to attract the electron beam that the gun shots. The cord you will have to cut has 4 wires + and – Horizontal and vertical coils. You will need a complementary pair of power bipolar junction transistors such as a TIP31C and TIP32C. Now here comes the hard part, being able to display a perfect wave form. You will need a triangle/sawtooth wave signal to display it correctly. There are a few ways you can do this. You can use the TV audio amplifier and a DVD ot CD with triangle/sawtooth waves on it(the problem you may come accross is distortion. Another option is to drive the H Coil with a function generator, buffered of course. You could use the TV horizontal sweep generator but then you can change the frequency.
Here’s the list of parts you need
2x NPN Power Transistors like TIP31C
2x PNP Power transistors likeTIP32C
2x RCA Female connectors with NC Switch
2x RCA Female connectors
2x Mylar capacitors(2.2uF)
2x1K resistor
1x 12VDC 2A Power supply
4x 40 ohm 5 watt resistors
4x SPDT switches
1x Pref board
2x pots 100k or higher
2x SPST Switches
24vac or less power transformer(foe a test signal)
Once I get all of the parts I will make a YouTube video.
Finding The Coils
The coils are connected to a 4-pin gray connector. Mine had red,blue,yellow and orange wires. Just cut the wires use an ohm meter to find a coil connect one coil back up to the TV and you should get a line as shown below. For example if I have a line going up and down then I have the vertical coil connected, and the 2 unhooked are horizontal.
In this blog post I will show you an easy project that can charge Li-on batteries that have the built-in protection circuit. All you need is a 1A or higher rectifier diode, 1 amp linear adjustable voltage regulator(such as LM317), 240 and 680 ohm resistor(any wattage) and a 100 ohm trimmer(For adjusting the charging voltage).
This tool allows you to uninstall programs as well as see when they were installed. It lets you search through the apps. It can remove files left over by the program. It can clean clean the uninstall registry key.
program qinstall;
{$apptype console}
{$RESOURCE QINSTALL-32.RES}
uses
SysUtils,filectrl,
windows,shellapi,
Classes;
const KiloBytes=1.0;
MegaBytes=1024*kilobytes;
GigaBytes=1024*megabytes;
ERROR_REGOPENKEY='RegOpenKey: %s';
prompt_yesno='Type yes or no: ';
filesize_fmt='#,##0.000';
reg_installdir='InstallLocation';
error_regdeletekey='RegDeleteKey: %s';
error_regqueryvalueex='RegQueryValueEx: %s';
var uninstallkey:hkey;
appcount:dword;
ftUninstall:filetime;
Command_Switch:String;
stinfo:systemtime;
err:longint;
function FormatLanguage(lpLang:pchar):string;
var langs:tstringlist;
begin
langs:=tstringlist.Create;
langs.CommaText:=stringreplace(lpLang,';',',',[rfReplaceall]);
result:=langs[0];
langs.Free;
end;
function GetLanguageID(lang:word):string;
var hklangs:hkey;
rs:dword;
langsz:array[0..4]of char;
language:array[0..128]of char;
begin
rs:=129;
regopenkey(hkey_classes_root,'MIME\Database\Rfc1766',hklangs);
regqueryvalueex(hklangs,Strpcopy(langsz,inttohex(lang,4)),nil,nil,@language,@rs);
regclosekey(hklangs);result:=formatlanguage(language);
end;
function FormatRegValue(const RegName:string;data:array of byte;
DataType:dword):String;
var x,y:extended;
lpdw:pdword;
lpStr:pchar;
metric:char;
begin
lpdw:=@data[0];
lpstr:=@data[0];
result:=regname+':';
if lowercase(regname)='estimatedsize'then begin x:=lpdw^;metric:='K';y:=x;
if x>=megabytes then begin y:=x/megabytes;metric:='M';end;
if x>=gigabytes then begin y:=x/gigabytes;metric:='G';end;
result:=result+formatfloat(filesize_fmt,y)+#32+Metric+'B';
end else if lowercase(regname)='language'then result:=result+GetLanguageID(lpdw^)
else case datatype of
reg_sz,reg_expand_sz:result:=regname+':'+strpas(lpstr);
reg_dword:result:=regname+':'+inttostr(lpdw^);
end;
end;
procedure listsoftware;
var i,j:integer;
st:systemtime;
hkapp:hkey;
ftinstalled:filetime;
progname,vname:array[0..max_path]of char;
value:array[0..2048]of byte;
vcount,typ,rs,ns:dword;
begin
for i:=0to appcount-1do
begin
regenumkey(uninstallkey,i,progname,max_path);
if(pos(lowercase(paramstr(2)),lowercase(progname))>0)or(paramcount=1)then begin
writeln('AppName:',progname);
regopenkey(uninstallkey,progname,hkapp);
regqueryinfokey(hkapp,nil,nil,nil,nil,nil,nil,@vcount,nil,nil,nil,@ftinstalled);
filetimetosystemtime(ftinstalled,st);
writeln('Program installed: ',datetimetostr(systemtimetodatetime(st)));
for j:=0to vcount-1 do begin ns:=max_path;rs:=2048;regenumvalue(hkapp,j,vname,ns,
nil,@typ,@value,@rs);writeln(formatregvalue(vname,value,typ));end;
regclosekey(hkapp);writeln;
end;
end;
end;
procedure uninstallinfo;
begin
writeln('Last Install/Uninstall: ',datetimetostr(systemtimetodatetime(stinfo)));
writeln('There are ',formatfloat('#,###',appcount),' programs installed');
end;
function execString(commandline:pchar):longint;
var urlexec:shellexecuteinfo;
confirm:string;
label badconfirm,skipconfirm;
begin
result:=0;
if lowercase(paramstr(4))='/yes'then confirm:='yes';
if confirm='yes' then goto skipconfirm;
badconfirm:write(prompt_yesno);
readln(confirm);
if(confirm<>'yes')and(confirm<>'no')then goto badconfirm;
if confirm='no'then exit;
skipconfirm:
result:=winexec(commandline,sw_show);
if result<32 then begin zeromemory(@urlexec,sizeof(urlexec));urlexec.cbSize:=
sizeof(urlexec);urlexec.fMask:=see_mask_nocloseprocess or see_mask_flag_no_ui;
result:=33;urlexec.lpFile:=commandline;urlexec.nShow:=sw_show;
if not shellexecuteex(@urlexec)then begin result:=urlexec.hInstApp;exit;end;
waitforsingleobject(urlexec.hprocess,infinite);closehandle(urlexec.hProcess);
end;
end;
function removetree(const Dir:string):longint;
var comspec,params:array[0..max_path+15]of char;
shellexec:shellexecuteinfo;
begin
getenvironmentvariable('ComSpec',comspec,max_path+15);
zeromemory(@shellexec,sizeof(shellexec));
shellexec.cbsize:=sizeof(shellexec);
shellexec.lpfile:=comspec;
shellexec.lpparameters:=strplcopy(params,'/C RD /S /Q "'+dir+'"',max_path+15);
shellexec.fMask:=see_mask_nocloseprocess or see_mask_no_console or
SEE_MASK_FLAG_NO_UI;
shellexec.nShow:=sw_show;
result:=33;
if not shellexecuteex(@shellexec)then begin result:=shellexec.hInstApp;exit;end;
waitforsingleobject(shellexec.hprocess,infinite);
closehandle(shellexec.hProcess);
end;
procedure RemoveFiles;
var confirm:string;
installdir,progname:array[0..max_path]of char;
rs:dword;
hkapp:hkey;
err:longint;
label badconfirm1,skipwarning;
begin
if paramcount<2 then raise exception.Create('Need more parameters');
err:=regopenkey(uninstallkey,strplcopy(progname,paramstr(2),max_path),hkapp);
if err<>error_success then raise exception.CreateFmt(Error_regopenkey,[
syserrormessage(err)]);
rs:=max_path+1;
err:=regqueryvalueex(hkapp,reg_installdir,nil,nil,@installdir,@rs);
if err<>error_success then raise exception.CreateFmt(ERROR_REGQUERYVALUEEX,[
syserrormessage(err)]);
if uppercase(paramstr(3))='/YES'then confirm:='yes';
if confirm='yes'then goto skipwarning;
writeln('Warning you are about to delete everything in "',installdir,'" continue?');
badconfirm1:
write(prompt_yesno);readln(confirm);confirm:=lowercase(confirm);
skipwarning:
case confirm[1] of
'y':begin removetree(installdir);regclosekey(hkapp);err:=regdeletekey(
uninstallkey,progname);if err<>error_success then writeln(error_regdeletekey,
syserrormessage(err));exit;end;
'n':writeln('Deletion canceled');
end;
regclosekey(hkapp);
end;
procedure cleanregistry;
var szPath,progname:array[0..max_path]of char;
hkapp:hkey;
rs:dword;
i:integer;
err:longint;
begin
for I:=0to appcount-1do begin regenumkey(uninstallkey,i,progname,max_path);
strcopy(szpath,'');rs:=max_path+1;regopenkey(uninstallkey,progname,hkapp);
regqueryvalueex(hkapp,reg_installdir,nil,nil,@szpath,@rs);regclosekey(hkapp);
if(strlen(szPath)>0)and(not directoryexists(szpath))then begin err:=regdeletekey(
uninstallkey,progname);if err<>error_success then writeln('Found:',progname,' - ',
syserrormessage(err));
end;
end;
end;
procedure searchexec;
var hkapp:hkey;
progname,cmdline1,cmdline2,szName:array[0..max_path]of char;
typ,err,rs:dword;
i:integer;
begin
if paramcount<3then raise Exception.Create('Need search_text and method strings');
strpcopy(szName,paramstr(2));
for i:=0to appcount-1do begin regenumkey(uninstallkey,i,progname,max_path);
if pos(lowercase(paramstr(3)),lowercase(progname))>0then begin writeln('Found:',
progname);
err:=regopenkey(uninstallkey,progname,hkapp);
if err<>error_success then raise exception.CreateFmt(error_regopenkey,[
syserrormessage(err)]);
rs:=max_path+1;
err:=regqueryvalueex(hkapp,szname,nil,@typ,@cmdline1,@rs);
if err<>error_success then begin regclosekey(hkapp);raise exception.CreateFmt(
error_regqueryvalueex,[syserrormessage(err)]);end;
case typ of
reg_sz:strcopy(cmdline2,cmdline1);
reg_expand_sz:expandenvironmentstrings(cmdline1,cmdline2,max_path);
else raise
exception.CreateFmt('The value "%s" is not a REG_SZ or REG_EXPAND_SZ value',[
paramstr(2)]);
end;//case end
err:=execstring(cmdline2);
if(err<33)and(err>0)then writeln('ExecError:',syserrormessage(err));
regclosekey(hkapp);
end;
end;
end;
begin
if paramcount=0then begin
writeln('Usage: ',extractfilename(paramstr(0)),' [/LIST "seach_text"] [/EXEC "method" "search_text" [/YES]] [/REM "appname" [/YES]] [/CLEAN] [/INFO]');
writeln('Parameters:');
writeln('/LIST Lists software that is installed on here. The next parameter is the optional search text.');
writeln('/EXEC Executes a string found in the app that matches ["search_text"]');
writeln('method string can be QuietUninstallString,UninstallString,URLInfoAbout,HelpLink,URLUpdateInfo, or Readme');
writeln('/CLEAN Removes any uninstaller registry information left over by an uninstalled program.');
writeln('/INFO Shows last install/uninstall information');
writeln('/REM Remove the directory of files left over. This should be used only when the program fails to uninstall. To uninstall a program use /EXEC command switch with "UninstallString" as the method');
writeln('/YES Automatically use yes option on prompts');
write('Press enter to return...');readln;exitprocess(0);
end;
try
err:=regopenkey(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',uninstallkey);
if err<>error_success then raise exception.CreateFmt(error_regopenkey,[
syserrormessage(err)]);
err:=regqueryinfokey(uninstallkey,nil,nil,nil,@appcount,nil,nil,nil,nil,nil,nil,
@ftuninstall);filetimetosystemtime(ftuninstall,stinfo);
if err<>error_success then raise exception.CreateFmt('RegQueryInfoKey: %s',[
syserrormessage(err)]);
command_switch:=uppercase(paramstr(1));
if '/LIST'=command_switch then listsoftware else
if '/INFO'=command_switch then uninstallinfo else
if '/EXEC'=command_switch then searchexec else
if '/REM'=command_switch then removefiles else
if '/CLEAN'=command_switch then cleanregistry else
writeln('Unknown command "',paramstr(1),'"');
except on e:exception do writeln(e.message);end;
regclosekey(uninstallkey);
end.
All programs are virus free. Some antivirus software might say its "suspicious" or a "Potentionaly Unwanted Program". Some of them rate them on what there code looks like no matter if theres a definition in the virus database. If any of them are detected any Antivirus I will zip the software with the password "justin" j is lowercase
delphijustin Industries is an Autism Supported Business