<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>VIDISONIC</title>
	<atom:link href="http://vidisonic.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vidisonic.com</link>
	<description>Hardware &#38; Software Design Resources</description>
	<pubDate>Thu, 14 Aug 2008 22:39:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Loudspeaker Fuse Placement for Audio Amplifier to Preserve A Good Bass Response</title>
		<link>http://vidisonic.com/2008/08/06/loudspeaker-fuse-placement-for-audio-amplifier-to-preserve-a-good-bass-response/</link>
		<comments>http://vidisonic.com/2008/08/06/loudspeaker-fuse-placement-for-audio-amplifier-to-preserve-a-good-bass-response/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 09:51:41 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://vidisonic.com/?p=40</guid>
		<description><![CDATA[To protect the loud speaker from destructive signal, the most simple way is by placing a fast blown fuse between speaker and the amplifier output. This common solution is depicted in the figure 1 (a).

Figure 1. Fuse Placement to Preserve Good Bass Response
The fuse in the circuit has a significant resistance to generate heat, because [...]]]></description>
			<content:encoded><![CDATA[<p>To protect the loud speaker from destructive signal, the most simple way is by placing a fast blown fuse between speaker and the amplifier output. This common solution is depicted in the figure 1 (a).</p>
<p><a href="http://vidisonic.com/wp-content/uploads/2008/08/speaker_fuse.gif"><img class="aligncenter size-full wp-image-41" title="speaker_fuse" src="http://vidisonic.com/wp-content/uploads/2008/08/speaker_fuse.gif" alt="" width="410" height="352" /></a></p>
<p style="text-align: center;"><strong>Figure 1. Fuse Placement to Preserve Good Bass Response</strong></p>
<p style="text-align: justify;">The fuse in the circuit has a significant resistance to generate heat, because without this the fuse couldn&#8217;t melt. The resistance affect the amplifier response in reacting to the speaker inductive load, but the worst is that this resistance varies with the temperature caused by the dynamic signal current. This resistance variation affect the linearity of the amplifier&#8217;s bass response. This situation can be solved by placing the fuse inside the amplifier&#8217;s feedback loop. Using this method, any nonlinear effect introduced by the fuse will be compensated by the amplifier via feedback mechanism. The resistor R3 is chosen to be much smaller compared to R2 but much higher compared speaker&#8217;s impedance. A value of 220? is suitable for most cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/08/06/loudspeaker-fuse-placement-for-audio-amplifier-to-preserve-a-good-bass-response/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Anti Burglar Alarm, A Half Lie is Much More Dangerous Than 100% Lie</title>
		<link>http://vidisonic.com/2008/08/05/anti-burglar-alarm-a-half-lie-is-much-dangerous-than-100-lie/</link>
		<comments>http://vidisonic.com/2008/08/05/anti-burglar-alarm-a-half-lie-is-much-dangerous-than-100-lie/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 15:52:16 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://vidisonic.com/?p=37</guid>
		<description><![CDATA[The idea that a half lie is much more dangerous than 100% lie is implemented in this design. Rather than showing off that our car is 100% protected by a sophisticated alarm and protection system, this anti burglar protection circuit prefer to lie that the car is not protected by any electronic alarm or any [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">The idea that a half lie is much more dangerous than 100% lie is implemented in this design. Rather than showing off that our car is 100% protected by a sophisticated alarm and protection system, this anti burglar protection circuit prefer to lie that the car is not protected by any electronic alarm or any protection system. The circuit presented here is based on unusual method to protect car theft. Need not a long time to wait after the machine is started, some troubles will arise. Restarting the machine will produce a same trouble, even worst.</p>
<p style="text-align: center;"><a href="http://vidisonic.com/wp-content/uploads/2008/08/anti_burglar.gif"><img class="size-full wp-image-39 aligncenter" style="vertical-align: middle;" title="anti_burglar" src="http://vidisonic.com/wp-content/uploads/2008/08/anti_burglar.gif" alt="" /></a></p>
<p style="text-align: justify;">The circuit is very simple. A 555 timer provide a time delay about five seconds. A normally-closed relay is connected between ignition switch and  the ignition coil. S1 switch that is used to activate this protection system should be placed in a hidden area. When the ignition switch is turned on to start the machine, the current will flow normally to the ignition system via the relay and the machine will start to work. After a time delay set by the 555 timer ( the time delay can be varied by selecting different value for R1 and C1) , the relay will be open, and the ignition coil will be disconnected, the machine will show something wrong by stop working. You&#8217;ll guess that the burglar will try for two or three more try before giving up.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/08/05/anti-burglar-alarm-a-half-lie-is-much-dangerous-than-100-lie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avoid Access Violation Error from OpenDialog (TOpenDialog) / SaveDialog (TSaveDialog)</title>
		<link>http://vidisonic.com/2008/07/24/avoid-access-violation-error-from-opendialogtopendialogsavedialogtsavedialog/</link>
		<comments>http://vidisonic.com/2008/07/24/avoid-access-violation-error-from-opendialogtopendialogsavedialogtsavedialog/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 10:53:25 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://vidisonic.com/?p=36</guid>
		<description><![CDATA[Whe I use OpenDialog (TOpenDialog), SaveDialog (TSaveDialog), OpenPictureDialog (TOpenPictureDialog), or SavePictureDialog (TSavePictureDialog), on Delphi 7 or Turbo Delphi Explorer running on Windows Xp Sp2, I always get access violation error (run time error) after I open the dialog box for second time. At first time the application run, it&#8217;s OK to open and browse the [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Whe I use OpenDialog (TOpenDialog), SaveDialog (TSaveDialog), OpenPictureDialog (TOpenPictureDialog), or SavePictureDialog (TSavePictureDialog), on Delphi 7 or Turbo Delphi Explorer running on Windows Xp Sp2, I always get access violation error (run time error) after I open the dialog box for second time. At first time the application run, it&#8217;s OK to open and browse the file using the dialog but when I try to browse a  file for second time, I always get this error: &#8220;First chance exception at 0&#215;77E538B2 . Exception class EAccessViolation with message &#8216;Access violation at address 00408F02 in module &#8216;myapp.exe&#8217;. Read of address 00000000&#8242;. Process myapp.exe (0xDD8)&#8221; or simply &#8220;access violation of 0&#215;77461340: read of address 0&#215;00000014 process stopped&#8221;.</p>
<p style="text-align: justify;">After hours of searching the internet, I finally find the solution: Add ActiveX in the <strong>uses </strong>part of <strong>implementation </strong>section of the main form (the form that run first). And add edit the end of that unit to include <strong>initialization </strong>and <strong>finalization</strong>. The original code of the main form will look like below:</p>
<p style="text-align: justify;"><strong>uses </strong>Unit1, Unit2,&#8230;..;<br />
{$R *.dfm}<br />
&#8230;. {your codes}</p>
<p style="text-align: justify;">&#8230;. {your codes}</p>
<p style="text-align: justify;">&#8230;. {your codes}</p>
<p style="text-align: justify;"><strong>end.</strong></p>
<p style="text-align: justify;">Add the ActiveX in<strong> uses </strong>and <strong>Initialization-finalization </strong>before the<strong> end. </strong>as shown below:</p>
<p style="text-align: justify;"><strong>uses </strong>ActiveX<strong>, </strong>Unit1, Unit2,&#8230;..;<br />
{$R *.dfm}<br />
&#8230;. {your codes}</p>
<p style="text-align: justify;">&#8230;. {your codes}</p>
<p style="text-align: justify;">&#8230;. {your codes}</p>
<p><strong>initialization<br />
</strong>OleInitialize(<strong>nil</strong>);<strong><br />
finalization<br />
</strong>OleUninitialize<strong><br />
end.</strong></p>
<p>This trick can also be applied to Delphi 4,5,6 (TOpenPictDialog/TSavePictDialog), I hope this helps. Happy coding for everyone!</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/07/24/avoid-access-violation-error-from-opendialogtopendialogsavedialogtsavedialog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Current Limiting Circuit</title>
		<link>http://vidisonic.com/2008/07/10/current-limiting-circuit/</link>
		<comments>http://vidisonic.com/2008/07/10/current-limiting-circuit/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 16:47:06 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[Circuit Analyzed]]></category>

		<guid isPermaLink="false">http://vidisonic.com/?p=33</guid>
		<description><![CDATA[Introduction
Current limiting circuit often misinterpreted  with current/circuit breaker. Unlike a fuse that break a circuit connection, a current limiter only limit the current at a predetermined level. Current limiting circuit can be as simple as a single resistor, but here I present an active current limiting circuit. With a resistor (a passive current limiter) [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Introduction</strong></p>
<p style="text-align: justify;">Current limiting circuit often misinterpreted  with current/circuit breaker. Unlike a fuse that break a circuit connection, a current limiter only limit the current at a predetermined level. Current limiting circuit can be as simple as a single resistor, but here I present an active current limiting circuit. With a resistor (a passive current limiter)  the voltage drop is varied depending on the consumed current by the load. The higher the current is drawn by the load, the higher the voltage drop on that resistor. In many cases, this is not preferable.</p>
<p style="text-align: justify;">In this active circuit, the current limiting circuit try not to drop the voltage if the current drawn by the load is below the allowable range. With this mechanism, in normal condition, the limiter circuit try not to dissipate the power, so almost all power is delivered to the load. If the load try to draw more than allowed, the current limiting circuit will now act as resistor, controlling it&#8217;s resistant value to limit the current to a predetermined level.</p>
<p style="text-align: justify;"><a href="http://vidisonic.com/wp-content/uploads/2008/07/current_limiting_using_bjt1.gif"><img class="aligncenter size-full wp-image-35" title="current_limiting_using_bjt1" src="http://vidisonic.com/wp-content/uploads/2008/07/current_limiting_using_bjt1.gif" alt="Current Limiting Circuit" width="269" height="291" /></a></p>
<p style="text-align: center;"><strong>Figure 1. Current Limiting Circuit</strong></p>
<p style="text-align: justify;">Without the current limiter, the voltage source in Figure 1 should be directly connected to R load. R load here usually something that draw variable current (equivalent to a variable resistor), can be a battery to be charged or an amplifier circuit for examples.</p>
<p style="text-align: justify;"><strong>How Current Limiter Works</strong></p>
<p style="text-align: justify;">Look at the Figure 1, output voltage at Q1 emitter act as a voltage follower, means that the voltage will follow its base voltage. Because the R sense  value is chosen to be a low resistance, the voltage will be appear at load as a full voltage delivered from voltage source. Actually there is a little voltage drop caused by Q1 Vbe (base-emitter voltage) and the resistor R sense, but this voltage drop can be neglected. If the load now draw more current, at some level, the voltage drop across R sense will reach the level at a point where the transistor Q2 begin to conduct, and the current will flow from its collector to its emitter, decreasing the base voltage of Q2. Because now the Q1 base voltage decrease, the voltage output of the Q2 emitter will also decrease as it works as a voltage follower circuit. When this output voltage decrease, the current to the load will also decrease. After this point of allowed maximum current, the more the load try to draw more current (by lowering its internal resistance equivalence), the lower the output will be delivered to maintain a constant current.</p>
<p style="text-align: justify;"><strong>How to Design, How to Choose the Component Values for This Current Limiting Circuit</strong></p>
<ol>
<li>Specify the maximum current to be limited <em>Imax</em> (for example 2 Amps)</li>
<li>Specify the voltage source needed by the load <em>Vs </em>(for example 12 volts)</li>
<li>Choose a transistor that can handle the <em>Imax</em> and <em>Vs</em> (for example X-type transistor with Vce max=40V, Ic max=4A, Hfe at <em>Imax</em> 2A =30).</li>
<li>Compute the  Q1 base current <em>Ib</em> at maximum load current, approximate with <em>Imax</em>/Q<em>Hfe </em>(for example 2A/30=66.67 mA.</li>
<li style="text-align: justify;">Compute the R bias value. If the voltage drop across R bias is assigned as <em>Vb</em>, the Rbias=<em>Vb</em>/<em>Ib</em>. Here we find something that isn&#8217;t clear yet. The voltage drop <em>Vb</em> is something we have to choose. <em>Vb </em>is the voltage drop across R bias at the maximum allowed current <em>Imax</em>. <em>Vb </em>will determine the total voltage drop caused by the current limiter circuit at the limiting point. At the limiting point (just before the limiting is triggered), the total voltage drop caused by the current limiter will approximate the <em>Vbe</em>+<em>Vb</em> +<em>Vsense</em>. The limiter gives almost only Vbe drop if the current drawn by the load is very small. Ideally, the <em>Vbe </em>is chosen as low as possible, but it means that the Q2 could possibly need to handle a very high current in case a short circuit happens (R load = 0). Lets try to choose 1 Volt for the example of <em>Vb</em>, then Rbias = <em>Vb/Ib = </em>15 ohm.</li>
<li style="text-align: justify;">Find the lowest possible of load resistance (when the current limiting circuit works to limit the current as the hardest effort).  It is actually a complicated task, but we can simplify the problem by assuming a sort circuit might be happen, so our design is really safe and the calculation will be simple. For the safety of Q2, choose Q2 that can handle current of <em>Vs</em>/Rbias Ampere (12/15=0.8 A in our example).</li>
<li style="text-align: justify;">Choose R sense, as (Q2 Vbe)/<em>Imax</em> ,  Q2  Vbe is the minimum voltage drop of base-emitter Q2, a voltage level that needed by Q2 collector-emitter to begin conducting. (For example 0.65V/2A = 0.325ohm).</li>
<li style="text-align: justify;">The voltage drop caused by this current limiting circuit will be Q1 Vbe at very low load current consumption, and approximate <em>Vbe</em>+<em>Vb</em>+<em>Q2Vbe</em> just before the current reach the limiting point.</li>
</ol>
<p style="text-align: justify;">Thats what I can write about current limiter circuit, and I use many approximations and assumptions in presenting design guide. If you find something wrong with my design method then please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/07/10/current-limiting-circuit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AC Line Powered Pilot Light Circuit Schematic</title>
		<link>http://vidisonic.com/2008/06/24/ac-line-powered-pilot-light-circuit-schematic/</link>
		<comments>http://vidisonic.com/2008/06/24/ac-line-powered-pilot-light-circuit-schematic/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 04:11:38 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://vidisonic.com/?p=28</guid>
		<description><![CDATA[The Circuit Schematic

On circuit analyzed today, we will analyze AC Line Powered Pilot Light circuit designed by David Johnson. Using the circuit, you don&#8217;t need a transformer to power a standard LED. As always, David Johnson makes his design simple and smart, but he doesn&#8217;t talk much about his design. Let&#8217;s discuss his design, the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The Circuit Schematic</strong></p>
<p><a href="http://vidisonic.com/wp-content/uploads/2008/06/pilot-light.gif"><img class="aligncenter size-full wp-image-29" title="pilot-light" src="http://vidisonic.com/wp-content/uploads/2008/06/pilot-light.gif" alt="" width="440" height="262" /></a></p>
<p style="text-align: justify;">On circuit analyzed today, we will analyze AC <a href="http://www.discovercircuits.com/DJ-Circuits/aclinepilotled1.htm" target="_blank">Line Powered Pilot Light</a> circuit designed by David Johnson. Using the circuit, you don&#8217;t need a transformer to power a standard LED. As always, David Johnson makes his design simple and smart, but he doesn&#8217;t talk much about his design. Let&#8217;s discuss his design, the formula behind the design.</p>
<p style="text-align: justify;"><strong>Main Components Functions</strong></p>
<p style="text-align: justify;">The capacitor act as a current limiter, equal to resistor in many LED design. Yes you can replace the cap by a resistor, but the current limiter will dissipate power and that&#8217;s not good. Using capacitor, you can limit the current without wasting the power.</p>
<p style="text-align: justify;">The bridge diode function is for rectification, so the current will flow through the LED on both positive and negative cycles of the main voltage source. Without this bridge diode, the current won&#8217;t flow in both direction, and even won&#8217;t flow at all because the current limiter is a capacitor that block a DC current. You can use only a resistor and a LED in series to make a pilot light powered directly to line voltage, but you will see a rapid blinking light because the the LED will light only on the half cycle of the power supply.</p>
<p style="text-align: justify;"><strong>How to Choose The Component Values</strong></p>
<p style="text-align: justify;">To choose the appropriate values for each components, you have understand how it works: the formula (sorry for those who don&#8217;t agree with the proposition that understanding the formula means understanding how the circuit works and vice versa).</p>
<p style="text-align: justify;">The whole circuit can be modeled as a series of resistance/reactance. The formula of the capacitor&#8217;s reactance is <a href="http://vidisonic.com/wp-content/uploads/2008/06/capacitor-reactance-formula.png"><img class="aligncenter size-medium wp-image-30" title="capacitor-reactance-formula" src="http://vidisonic.com/wp-content/uploads/2008/06/capacitor-reactance-formula.png" alt="" width="194" height="45" /></a></p>
<p style="text-align: justify;">For 0.22uF, at 50Hz line frequency, the reactance will be -14469i ohm. That&#8217;s a complex number, and must treated with complex calculation. The current will be the source voltage divided by the total reactance of the capacitor, diode, and the LED.  By assuming that the resistances of the LED and the bridge diode are much lower than the capacitor&#8217;s reactance, the current will approximate 110/14469A = 7.6 mA. Because the voltage source is normally stated in RMS (root mean square) value, the peak current will approximate sqr(2) 7.6 mA = 10.8 mA.  Standard LED normally rated for 15-20 mA maximum current (mostly depends on its color), running the LED for 10.8 peak current is wise to keep the LED running for its specified life time.</p>
<p style="text-align: justify;"><strong>Design Guide for Modification: Multiple Series LEDs</strong></p>
<p style="text-align: justify;">The circuit can be modified to make much brighter light by high power LED circuit as shown below:</p>
<p style="text-align: justify;"><a href="http://vidisonic.com/wp-content/uploads/2008/06/pilot-light-modification1.gif"><img class="aligncenter size-full wp-image-32" title="pilot-light-modification1" src="http://vidisonic.com/wp-content/uploads/2008/06/pilot-light-modification1.gif" alt="" width="244" height="304" /></a></p>
<p style="text-align: justify;">Design Step:</p>
<ol>
<li>Look at the LED&#8217;s data sheet, find voltage versus current graph. Choose a point where it will be used for the circuit, for example 2.6 Volt-18 mA (Vd-Id)</li>
<li>Find the total LED voltage by multiplying the Led&#8217;s operating voltage (Vd) with the total number of series LED (all LED are from the same type).</li>
<li>Find the voltage drop of the bridge diode (look at the current versus voltage at the point Id), if you can&#8217;t find its data then you can just simply measure it with a multimeter (the value would be slightly different because it use the meter&#8217;s operating forward current, but it&#8217;s OK).</li>
<li>Find the total voltage drop by the bridge diode and the LEDs by adding up 2-3.</li>
<li>Find the voltage that must be dropped by the capacitor Vc, Vc= Vs-(Vdtotal).</li>
<li>Find the capacitor&#8217;s reactance Xc, Xc=Vc/Id</li>
<li>Find the capacitor&#8217;s value C=1/(2.Pi.F.Xc)</li>
</ol>
<p style="text-align: justify;">In the step 5, try to use RMS value for Vs (110/220), then check if the 1.41*Id doesn&#8217;t exceed the maximum pulsed current, if it exceeded then use peak value of Vs at step 5.  Any comments will be appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/24/ac-line-powered-pilot-light-circuit-schematic/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Noise Addition To Improve Measurement Precision</title>
		<link>http://vidisonic.com/2008/06/13/using-noise-addition-to-improve-measurement-precision/</link>
		<comments>http://vidisonic.com/2008/06/13/using-noise-addition-to-improve-measurement-precision/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 08:41:01 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://vidisonic.com/2008/06/13/using-noise-addition-to-improve-measurement-precision/</guid>
		<description><![CDATA[What do you think when you read the title of this post? Normally, in any measurement, noise addition to the signal acquired from a measuring transducer is the source of imprecision, then how can I say that we can also use a noise to improve the measurement precision? Yes, we can ad a noise to [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">What do you think when you read the title of this post? Normally, in any measurement, noise addition to the signal acquired from a measuring transducer is the source of imprecision, then how can I say that we can also use a noise to improve the measurement precision? Yes, we can ad a noise to the acquired measurement signal to improve its precision.</p>
<p align="justify">Have you ever made repetitive measurement to obtain a measured value?  You take the measurements for many times and then compute the averages of them. Usually, such multiple measurement to get more confident result is applied when a measurement is not precisely reproducible, so you&#8217;ll get confuse deciding whether you have to choose the value from the first or the second measurement.  Just make multiple measurement and average it.  If you get a same result from multiple measurement because you have a good enough instrument then it waste your time to repeat your measurement.</p>
<p align="justify">In analog-to-digital converter (ADC) , the precision of the reading depends on the bit resolution of the ADC design. Oversampling technique has been a common method to obtain higher resolution by averaging multiple reading. In the absence of noise, multiple reading will result in same values, making it useless to average them. The solution is by adding some noise to the signal that need to be measured by the ADC. Example of practical implementation of this technique, triangular dithering,  is presented by Dave Van Ess in his article: <span class="head"><a title="Triangular Dithering" href="http://electronicdesign.com/Articles/ArticleID/19135/19135.html" target="_blank">Squeeze 10-Bit Performance From An 8-Bit ADC</a> published in <a title="Electronic Design Magazine" href="http://electronicdesign.com" target="_blank">Electronic Design Magazine</a>. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/13/using-noise-addition-to-improve-measurement-precision/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Generating Triangle Wave Using Two Square Wave Oscillator</title>
		<link>http://vidisonic.com/2008/06/13/generating-triangle-wave-oscillator-using-two-square-wave-oscillator/</link>
		<comments>http://vidisonic.com/2008/06/13/generating-triangle-wave-oscillator-using-two-square-wave-oscillator/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 07:33:22 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[oscillator]]></category>

		<category><![CDATA[schematic]]></category>

		<category><![CDATA[square wave]]></category>

		<category><![CDATA[triangle wave]]></category>

		<guid isPermaLink="false">http://vidisonic.com/2008/06/13/generating-triangle-wave-oscillator-using-two-square-wave-oscillator/</guid>
		<description><![CDATA[Triangle wave oscillator normally designed with a constant current source/sink to charge and discharge a capacitor. Reading an article on how to get 10 bit reading precision on 8 bit ADC on electronic design magazine today, I got something interesting on how to build a triangle wave oscillator: using two XOR-ed square wave oscillator. The [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Triangle wave oscillator normally designed with a constant current source/sink to charge and discharge a capacitor. Reading an article on how to get 10 bit reading precision on 8 bit ADC on <a title="Electronic Design" href="http://electronicdesign.com/Articles/ArticleID/19135/19135.html" target="_blank">electronic design</a> magazine today, I got something interesting on how to build a triangle wave oscillator: using two XOR-ed square wave oscillator. The picture below describe the concept:</p>
<p><a title="Generating triangle wave from two square oscillators." href="http://vidisonic.com/wp-content/uploads/2008/06/triangle-wave-from-two-square-oscillators.GIF"><img src="http://vidisonic.com/wp-content/uploads/2008/06/triangle-wave-from-two-square-oscillators.GIF" alt="Generating triangle wave from two square oscillators." /></a></p>
<p align="justify">
<p align="justify">Using this method, you can get a triangle wave oscillator with few logic gates plus some capacitors and resistors for square wave oscillators and simple RC-filters.</p>
<p><em>Source: <a title="Electronic Design Magazine - Ideas For Design" href="http://electronicdesign.com/Articles/ArticleID/19135/19135.html" target="_blank">Electronic Design Magazine</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/13/generating-triangle-wave-oscillator-using-two-square-wave-oscillator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Condenser Microphone</title>
		<link>http://vidisonic.com/2008/06/06/condenser-microphone/</link>
		<comments>http://vidisonic.com/2008/06/06/condenser-microphone/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 16:03:19 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[accoustics]]></category>

		<category><![CDATA[audio]]></category>

		<category><![CDATA[circuit]]></category>

		<category><![CDATA[electronic component]]></category>

		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://vidisonic.com/2008/06/06/condenser-microphone/</guid>
		<description><![CDATA[Condenser microphone is a sound pick-up transducer. The mechanism is based on the characteristic of a capacitor. A capacitor is constructed by two conductor plates separated by a dielectric material (isolator). Air is a common dielectric used in condenser microphone. One plate  will be stationary and the other plate will be vibrated by the [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Condenser microphone is a sound pick-up transducer. The mechanism is based on the characteristic of a capacitor. A capacitor is constructed by two conductor plates separated by a dielectric material (isolator). Air is a common dielectric used in condenser microphone. One plate  will be stationary and the other plate will be vibrated by the  received sound wave. Because a capacitor is always keep its charge (Q=C.V)  to be constant constant, then the vibration will variate the capacitance (C) since it depends on the distance between the two plates. As the result, the voltage (V) will vary according to the vibration pattern to keep the charge (Q) constant.</p>
<p align="justify"><a title="Condenser Microphone" href="http://vidisonic.com/wp-content/uploads/2008/06/microphone.jpg"><img src="http://vidisonic.com/wp-content/uploads/2008/06/microphone.jpg" alt="Condenser Microphone" /></a></p>
<p align="justify">Before a condenser microphone can be used, it should be charged by applying a voltage on its  electrodes. Theoretically, after  the plates are charged, the microphone  will operate although the voltage supply has been removed, but practically it&#8217;s not. First because the microphone has a current leakage (between two plates), and the second, is that the load connected to the microphone output (the pre-amplifier) draw current from it. You need a bias current via a resistor an a voltage source to keep the microphone working.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/06/condenser-microphone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Artificial Neural Network Shell: A Case Study of Object Oriented Concept in Old Style Structured Programming Practice</title>
		<link>http://vidisonic.com/2008/06/06/artificial-neural-network-shell-a-study-case-of-object-oriented-concept-in-the-structured-old-style-programming/</link>
		<comments>http://vidisonic.com/2008/06/06/artificial-neural-network-shell-a-study-case-of-object-oriented-concept-in-the-structured-old-style-programming/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 03:30:07 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[c++]]></category>

		<category><![CDATA[object oriented programming]]></category>

		<category><![CDATA[oop]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[programming style]]></category>

		<category><![CDATA[structured]]></category>

		<category><![CDATA[tips]]></category>

		<category><![CDATA[tricks]]></category>

		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://vidisonic.com/2008/06/06/artificial-neural-network-shell-a-study-case-of-object-oriented-concept-in-the-structured-old-style-programming/</guid>
		<description><![CDATA[
Background
People who familiar with structured programming style and not yet with object oriented programming (OOP) style often think that OOP is useless for them, because almost everything done with OOP can be done with old-structured style.  In my opinion, they insist to use their old style programming is not caused solely by not understanding [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">
<p align="justify"><strong>Background</strong><br />
People who familiar with structured programming style and not yet with object oriented programming (OOP) style often think that OOP is useless for them, because almost everything done with OOP can be done with old-structured style.  In my opinion, they insist to use their old style programming is not caused solely by not understanding OOP concept and practice, but also because they are not familiar with advanced programming with their own structured style.</p>
<p align="justify"><strong>The Case<br />
</strong>If they have long experience in structured programming, I believe that they should have implemented the concept of OOP, although they don&#8217;t realize it. Let&#8217;s study a case when we have to implement a complex software using traditional structured style: a back-propagation neural network shell.</p>
<p align="justify">Let&#8217;s define the requirement of the shell:</p>
<ol>
<li>The number of layer is configurable</li>
<li>The number of neuron on each layer is configurable</li>
<li>The activation function on each layer is configurable</li>
<li>The learning rate of the network is configurable</li>
<li>The whole system can be arranged from many neural network subsystem, which each subsystem has the properties defined in requirement 1, 2, 3, and 4 independently configurable.</li>
</ol>
<p align="justify">When we look at the requirement no. 1-4, you can implement the coding the source code in structured style easily. Think about no. 5 requirement, now you&#8217;ll realize that the work will be much complicated.</p>
<p align="justify"><strong>Implementation Using Functions and Structure</strong><br />
The modular requirement of the software force you to think about object concept in your mind, because each module can be viewed as one class with different property values. Let&#8217;s go to code in structured style: use functions and structures.</p>
<p align="justify">Lets make a function called CreateANN:</p>
<p><code><span style="font-size: small;">CreateANN(ANN_STRUCT* ann_object, int number_of_layers, int* size_each_layers) </span></code></p>
<p align="justify">A structur ANN_STRUCT is needed to manage the variables used in the network, and the function CreateANN initialize all variables in the ANN_STRUCT instance. The function CreateANN is similar to constructor in the OOP concept.</p>
<p align="justify">After initialization, you can create many functions to operate the neural network. Look at some functions examples you can create:</p>
<ul>
<li><code><span style="font-size: small;">TrainTheNeural Network(ANN_STRUCT* ann_object, double* input_pattern, double* output_pattern,  double minimum_error, int max_number_of_iteration)</span></code></li>
<li><code><span style="font-size: small;">GetNeuralOutput(ANN_STRUCT* ann_object, double* input, double* output)</span></code></li>
<li><code><span style="font-size: small;">SaveTheWeightToFile(ANN_STRUCT* ann_object, char* file_name)</span></code></li>
</ul>
<p align="justify"><span style="color: #000000;">You can see that these functions are similar to class&#8217;s method/function members in OOP concept. Using functions and structure, now you can build a modular artificial neural network by cascading the networks, feeding one network&#8217;s output to other network&#8217;s input. Let&#8217;s stop talking about neural network because this article is not intended to show you how to code a neural network, only just to show that the old structured programming style practice, when facing a complicated task, should have been common to implement something close to OOP concept. </span></p>
<p align="justify"><strong>Conclusion</strong><br />
Studying the case of a complex software design, we can see that the concept of object oriented programming can be found on traditional style practice. I hope everyone can now understand and take the benefit of object oriented programming style. Use the OOP technology, and now you&#8217;ll be more productive and your life would be easier.   (<strong>Hamuro</strong>)</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/06/artificial-neural-network-shell-a-study-case-of-object-oriented-concept-in-the-structured-old-style-programming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction</title>
		<link>http://vidisonic.com/2008/06/06/introduction/</link>
		<comments>http://vidisonic.com/2008/06/06/introduction/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 02:02:32 +0000</pubDate>
		<dc:creator>Hamuro</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://vidisonic.com/2008/06/06/introduction/</guid>
		<description><![CDATA[Vidisonic is my space to share my experience in designing hardware and software solutions. Choosing to work as a hardware and software designer freelancer since 2003 is a hard decision, but I enjoy taking the risk and the benefit. I&#8217;ve been learning a lot about building and designing of electronic circuits since 1992, when I [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Vidisonic is my space to share my experience in designing hardware and software solutions. Choosing to work as a hardware and software designer freelancer since 2003 is a hard decision, but I enjoy taking the risk and the benefit. I&#8217;ve been learning a lot about building and designing of electronic circuits since 1992, when I was in elementary school. Since I got C++ programming class in my college, I started to love the programming world. I hope I can find some friends with similar interest coming here, to my cyberhome, Vidisonic.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://vidisonic.com/2008/06/06/introduction/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
