| 
						 An analogue signal is similar to a sine 
						wave and is generally less than 5v (5,000mV) in 
						amplitude. Low-level signals are generally expressed in 
						mV, to make them instantly recognisable and easy to talk 
						about.  
						
						  
						Fig: 1shows an analogue signal. It may 
						be as low as a few millivolts or hundreds of millivolts. 
						In general this type of signal will be too small to be 
						detected by a microcontroller. A micro needs a signal 
						greater than about 3,500mV so that the waveform appears 
						on the input line as a HIGH, during the peak of its 
						excursion. It should be as high as 5,000mV as possible 
						for reliable detection of the signal. The instruction to 
						"read" the HIGH is: 
						BTFSS 06,3 ;       
						Test input line GP3 
						This instruction tests line GP3 and if 
						the bit is HIGH (the line is SET - the line sees a HIGH) 
						the micro will skip the next line in the program and 
						execute the line that follows in the program. 
						The shape of the waveform does not 
						matter. It can consist of large excursions and small 
						excursions as shown in fig: 2. 
						
						  
						Only the large excursion(s) will be 
						detected by the micro as the others may be too small to 
						be detected. To increase the analogue signal to as high 
						as 5,000mV as possible, an amplifier is needed, as shown 
						in fig: 3.  
						
						  
						The amplifier maybe one or two stages, 
						depending on the amplitude of the original signal. 
						Each stage of an amplifier will increase 
						the size of the signal about 70 times. If you are very 
						lucky, you may get an amplification of 100x (100 times). 
						Thus a 5mV signal with one stage of amplification will 
						produce a 350mV signal. This is not sufficient to be 
						detected by the micro. Another stage will easily produce 
						a full 5,000mV signal and the micro will detect its 
						presence. 
						The second stage only needs to amplify 
						the signal about 10 to 12 times to be sufficient for the 
						micro, and the added gain provided by the stage simply 
						drives the waveform into "bottoming" and "cut-off" as 
						shown in fig: 4.  
						
						  
						This means the waveform will be 
						"clipped" at the top and bottom and converted to a 
						fairly "square-ish" shape. Normally this would be called 
						distortion but in digital terms we don't worry about it 
						being distorted and simply use it for its "triggering" 
						properties. 
						Suppose you have a waveform that is 
						higher than 5mV (say 30 - 50mV) and want to know if it 
						will trigger the micro after a single stage of 
						amplification.  
						Connect the circuit in Fig: 5 to the 
						micro and connect a LED with 470R resistor in series, to 
						pin GP0. 
						Burn the following routine into a 
						PSEUDO'508 and the LED will illuminate when the waveform 
						is detected as a HIGH.  
						Program for a Pseudo'508: 
						BSF 03,5 ;Select Page1 
						MOVLW 08 ;GP3 input 
						TRIS 06 ;Load TRIS  
						BCF 03,5 ;Select Pag0 
						Test1 BTFSS 06,3 ;Test input line 
						GOTO Test2 
						BSF 06,0 
						GOTO Test1 
						Test2 BCF 06.0 
						GOTO Test1 
						There is only one problem with the 
						circuit in Fig: 5.  
						
						  
						At the end of a whistle or speech, the 
						LED may be illuminated or extinguished. It all depends 
						on the last cycle of the waveform. The circuit sits with 
						the output approx mid-rail and the micro does not know 
						if this is a high or low, and takes the reading by the 
						direction of the last cycle. 
						Some of the inputs of the micro are 
						Schmitt Triggered. This means a HIGH has to be 85% to 
						100% of rail voltage for it to be seen as a HIGH and 
						between 20% and 0% to be seen as a LOW.  
						The non-Schmitt Trigger inputs see a LOW 
						as 20% to 0% and a HIGH as above 2v for 5.5v operation.  
						If the last cycle went from zero to 
						mid-rail the micro will see the waveform as a low on 
						Schmitt Trigger inputs and a HIGH on the other inputs. 
						If the cycle came from a high to about mid-rail, the 
						waveform  
						will be seen as a high. This problem can be overcome via 
						a few instructions in the program, by looking at the 
						input and if it is not changing, it is ignored. Suppose 
						the circuit only just activates the micro with a loud 
						whistle. To improve the sensitivity of the input another 
						stage will be needed. 
						
						  
						This can be a DIGITAL STAGE as shown in 
						fig: 6 or an analogue stage as shown in fig: 7.  
						
						  
						A digital stage simply means the biasing 
						resistor is left off the base of the second transistor 
						so the transistor turns on fully when a signal greater 
						than 650mV is detected and is fully turned off at other 
						times. This stage is ideal for the micro as only two 
						voltage levels are delivered. Either 0v or rail voltage 
						(5v).The other advantage is the stage does not take any 
						quiescent (idle) current.  
						This stage is only suitable if you are 
						sure you have plenty of "over-voltage" to drive the 
						transistor into saturation. By this we mean you must 
						have at least 1v (1,000mV) drive signal so you can be 
						sure the transistor will turn on (saturate). 
						The fast rise and fall times means you 
						have a "clean" period of time during a HIGH or LOW for 
						counting operations. A micro determines the frequency of 
						an incoming signal by counting the length of time for 
						the HIGH or LOW (between a rise and fall) and coming to 
						a decision as determined by the program. If the lengths 
						of the HIGHs and LOWs are very regular the micro can 
						come to an accurate decision very quickly. This is very 
						important if you are detecting a particular frequency 
						out of a possibly range of frequencies as the program 
						will compare the incoming frequency with a table value 
						and it may keep sampling until an exact match is 
						produced.  
						Fig 7. Shows two analogue stages with 
						"over-drive." The circuit produces a signal that is 
						larger than necessary for the micro, and when the input 
						waveform is very low, the output will still be 
						sufficient to  
						trigger the micro. 
						This circuit is more sensitive than fig: 
						6 and should be used if you want to pick up faint 
						whispers and turn on equipment (such as a tape 
						recorder). It should also be used for magnetic pick-ups 
						(such as a  
						metal detector, nail finder or pipe locator) as this 
						type of pick up has a very low output (can be as low as 
						1 to 5mv). 
						THE PIEZO DIAPHRAGM  
						Piezo transducers such as piezo 
						diaphragms can also be used as microphones. They produce 
						a very "tinny" sound (like talking into a tin) but this 
						is not important in our case. The output is about the 
						same as an electret microphone (about 10 to 30mV for low 
						level speech and up to 50mV for loud speech). 
						Some diaphragms are very sensitive while 
						others are very insensitive. You can check the 
						sensitivity with a CRO, by simply whistling and viewing 
						the waveform.  
						Diaphragms that operate on low voltages, 
						such as those in a music card seem to very sensitive. 
						The only other way to determine a 
						sensitive piezo diaphragm is to connect it to a music 
						chip. The output it produces reflects its sensitivity as 
						a microphone.  
						The piezo diaphragm has an advantage 
						over an electret microphone. It does not need a power 
						source.  
						
						  
						The diagram of fig: 8 shows how to 
						connect it to a transistor amplifier. Using the program 
						above, whistle into the diaphragm and determine if a 
						single stage is sufficient. If not, a second stage, 
						exactly like the microphone stage can be added.  
						
						  
						Fig 9 shows a simpler circuit to 
						interface a piezo diaphragm to the input of a micro. The 
						first transistor is held in "bottoming" and the second 
						in "cut-off." This offers the lowest current consumption 
						and produces the greatest output. The second transistor 
						is "turned-off" because the first transistor is "ON" and 
						the voltage across its collector-emitter terminals is 
						about 0.35v and this is below the turn-on voltage of 
						0.65v for the base of the second transistor. The first 
						transistor is fully turned on but the turn-on current is 
						very low and this allows the maximum waveform to be 
						produced by the piezo for a given sound intensity. In 
						other words the circuit puts the lightest load on the 
						piezo.  
						When no-signal is present, the output of 
						the circuit is HIGH.  
						A signal from the piezo produces a 
						full-rail waveform to exactly match the waveform from 
						the piezo.  
						By monitoring the output of the circuit 
						you will be able to detect the instant the waveform 
						produces a LOW. Instructions that loops until a low is 
						detected are shown below: 
						Loop1 NOP 
						BTFSC 06,0 ;Test GP0 for a LOW 
						GOTO Loop1 
						The only problem with loop1 is it holds 
						up the micro from doing any other operations.  
						The solution is to "poll" the input line 
						by producing a program that "looks" at the input on a 
						regular basis and if a low is detected, a "bit" is 
						placed in a flag register. The Main routine constantly 
						looks at the flag register and when the bit is SET, it 
						carries out an operation and cancels the flag.  
						MAGNETIC PICKUP  
						A 10mH choke (with both wires coming out 
						the same end so the magnet can pass as close as possible 
						to the core) can be used as a magnetic pick-up to detect 
						rotating shafts etc. The circuit in fig: 10 will connect 
						it to a micro.  
						Attach a strong magnet to a rotating 
						shaft and have the magnetic sensor close to the magnet 
						as possible without touching. The amplitude of the 
						waveform produced by the coil (choke) will depend on the 
						strength of the magnet, the distance between the magnet 
						and coil, the speed of the rotating shaft and the number 
						of turns on the coil.  
						
						  
						Fig: 10 "AC" couples the coil to the 
						amplifying circuit so that the biasing of the first 
						transistor can be determined by the value of the 
						base-bias resistor. The coil cannot be connected 
						directly to the transistor as the low impedance 
						(resistance) of the coil will upset the bias on the 
						base.  
						If the coil is directly connected to the 
						base, the voltage across the coil will be only a few 
						millivolts and the coil will have to produce 600mV or 
						greater to turn on the transistor.  
						With our arrangement, 100mV or less will 
						turn off the transistor (a 100mV waveform will turn the 
						transistor ON more during the "positive half" of the 
						waveform and turn it off during the other half of the 
						waveform).  
						Any coil of wire of any size will be 
						suitable and to make it an effective collector of 
						magnetic flux it should have a magnetic core such as a 
						ferrite.  
						Simply rotate the shaft at half the 
						required RPM and if the circuit detects the magnet, the 
						coil is suitable. No other impedance-matching or 
						resistance measurements are necessary.  
						The output of the circuit is exactly the 
						same as for the piezo diaphragm except the frequency 
						will be considerably less.  
						THE LDR  
						The cheapest light sensor is the LDR. It 
						has a resistance of about 100 ohms in bright light and 
						more than 1M in darkness.  
						It can be connected to a transistor 
						amplifier as shown in fig: 11.  
						
						  
						The pot alters the sensitivity of the 
						LDR so that the output changes at the desired light 
						intensity. This circuit is only suitable for large 
						changes in intensity. If you need to detect a very 
						slight change in illumination you need a very sensitive 
						detector.  
						PHOTO DARLINGTON TRANSISTOR  
						A more sensitive device is a photo-darlington 
						transistor, such as the MEL-12. A further stage of 
						amplification and a pot will adjust the sensitivity 
						level. This is shown in fig: 12.  
						
						  
						VOLTAGE LEVELS  
						Some waveforms change very slowly. They 
						may take a day or so to rise and fall. The are 
						classified as VOLTAGE LEVELS and can be produced by 
						thermocouples (a thermocouple PRODUCES a voltage due to 
						the heating of two different metals in contact with each 
						other). Other devices DELIVER a voltage by being 
						supplied with a voltage and the resistance of the device 
						causes a certain voltage to appear across it. You can 
						call it a VOLTAGE-DIVIDER principle. Devices that 
						deliver a voltage include the thermistor, diode (and 
						transistor) and strain gauge. This is very important as 
						it determines how the device is connected to either an 
						amplifier or the input of the micro.  
						THE FREQUENCY OF A SIGNAL  
						Once you have a waveform that triggers 
						the micro (use the test program given at the beginning 
						of this article to make sure it is being detected by the 
						micro) you can get the program to simply detect its 
						presence or determine the frequency.  
						The frequency can be determined in two 
						ways: 
						1. Counting the number of HIGHs and LOWs 
						in one second.  
						2. Counting the time taken for a 
						HIGH-to-LOW transition - one half cycle.  
						Method 1 is a very slow way to obtain a 
						frequency in cycles per second.  
						A micro works so fast that it can 
						determine things in a fraction of a second.  
						Method 2 is much faster but it can be 
						very inaccurate as the half-cycle is multiplied-up to 
						get the value in Hertz. To reduce the inaccuracy you can 
						count 10 cycles or 100 cycles and perform a 
						multiplication. A higher cycle-count reduces the 
						inaccuracy.  
						The following steps are required to 
						produce the value of a frequency (in Hertz). Refer to 
						fig: 13 for the definition of a HIGH and LOW. 
						The input is looped until a HIGH is 
						detected.  
						The program then goes to a short delay.  
						The micro comes out of the delay and 
						increments a "count" file.  
						The program looks at the input for a 
						LOW. If a LOW is not detected the program goes to step 
						B.  
						When a LOW is detected the program has a 
						value in the "count" file - this is half a cycle.  
						By adding-up the number of instructions 
						carried out during the "count" increment, the program 
						can work out the frequency of the waveform. 
						Sometimes a frequency in cycles per 
						second is not required. You may want to compare a 
						frequency with a value in a table. This is called TONE 
						DETECTION.  
						TONE DETECTION  
						- also called Tone decoding  
						The frequency of an incoming tone can be 
						detected and "flagged" when it is exactly the correct 
						tone. This is handy for detecting DTMF tones on the 
						phone line. In this way DTMF tones can be used for 
						turning on equipment (such as lighting, heating, alarms 
						etc). The accuracy of the tone can be set by the 
						program. It is best to allow a margin of error so you 
						can guarantee the tone will be recognised.  
						For best detection, the incoming tone should be "good 
						quality" i.e full amplitude and free from noise, so the 
						determination can be speedy. Fig: 13 shows a typical 
						waveform.  
						
						  
						 |