![]()
Where would we be without our infrared remote controls? Stuck back in the dinosaur era, that's where. IR remote controls are now built into lots of appliances, ranging from TV sets and VCRs to audio equipment, robots and lights. This relatively simple design makes it easy for you to add infrared remote control to your latest project or to existing equipment. What's more, it can control up to 10 different functions, which should be more than enough for most applications (usually, you'll only need one or two channels). Each output uses an open-collector transistor and this can be used to switch a relay or even to directly switch other 12V equipment. The outputs can also be used to drive LEDs via current limiting resistors or to drive optocouplers (eg, to provide isolation from high-voltage circuitry). Heavy current items such as motors and light bulbs will have to be driven by relays. We've made the job easy for you by including diagrams that show all the various options - see Figs.5(a)-5(d).
Commercial remoteAs already indicated, the 10-channel remote receiver is operated using a commercial handheld remote which can also be used to control your TV, VCR or satellite receiver. Using a commercial IR transmitter vastly simplifies the construction and you also get a professional looking controller as well. Operation is simple - just press one of the 0-9 buttons on the transmitter to control the 0-9 outputs on the receiver. A momentary output stays on for as long as its transmitter button is held down, while a toggle output alternates between ON and OFF on each subsequent press of the button. An acknowledge LED flashes whenever an IR signal is being received, while 10 more LEDs are used to indicate the status of the outputs. There, we told you it was simple to operate! All the parts for the circuit are mounted on a small PC board and this can either be housed in a separate plastic box or built right into existing equipment. The operational range is up to about 12 metres. Circuit detailsAs shown, it's based on a preprogrammed PIC16F84 microcontroller (IC1). What? - you don't like microcontrollers? Awwww - c'mon; it's a beautiful microcontroller and it greatly simplifies the circuit design because all the hard work is done by the software that's programmed into the device. You don't have to worry about any of this, of course, because you just buy the preprogrammed device and "plug" it in - just like any other IC. Apart from the PIC, there's just one other IC, a 3-terminal regulator (REG1), 10-transistors (Q1-Q10), 11 diodes, a crystal and a few resistors and capacitors. Let's see how it all works. IC2 is an infrared receiver which amplifies, filters and demodulates the code supplied by the transmitter. The top trace in Fig.3 shows the modulated signal from the hand-held transmitter, while the lower trace is the demodulated signal at the output of IC2. The modulation is at about 36kHz and represents a high level (low levels are represented by no modulation). Note that the output of IC2 is inverted compared to the transmitted code. The remote control coding that we are using is called the "Philips RC5" code. It comprises 14-bits of information, including two start bits, a toggle bit, five address bits and six command bits. The two start bits are transmitted first (makes sense, doesn't it?), followed by the toggle bit. This toggle bit changes each time the same button is pressed on the transmitter. If the button is simply held down, the transmission repeats at 113.778ms intervals and the toggle bit remains either high or low. The state of the toggle bit allows the receiver to distinguish between whether a button is being held down continuously or has been pressed more than once. The address bits are for selecting the type of equipment to be used. For example, address 0 (00000) is for a TV set. Address 1 (00001) is for TV2 or a second TV set. The two addresses we are using are for Satellite 1 and 2 at addresses 8 (01000) and 10 (01010). The last six bits are the commands and we are using buttons 0, 1, 2, 3, 4, 5, 6, 7, 8 & 9, which have codes 0 (000000), 1 (000001), 2 (000010), 3 (000011), 4 (000100), 5 (000101), 6 (001100), 7 (000111), 8 (001000) and 9 (001001). These codes are transmitted in "bi-phase" format, where a low is a high level falling to a low, while a high is a low rising to a high. IC1 (the PIC microcontroller) is used to decode the demodulated signal from IC2. It does everything from the remote control decoding to driving the outputs. It also does away with the need for a specialised IC and can be programmed to operate with existing commercial remote controls. In operation, IC1 monitors its pin 2 input for a remote control signal. When a signal arrives, it detects the start bits and then monitors the demodulated signal at regular intervals to provide the code sequence. The timing is controlled by dividing down the signal from a 4MHz crystal (X1) to obtain 1.8ms intervals - this is the spacing between each bit in the remote control sequence. The decoded signal appears at pin 1 of IC1 and is used to drive the Acknowledge LED (LED11) via a 220Ω resistor. IC1 can be forced to display its remote control status by connecting pin 1 to the 5V supply (TP2) via a 220Ω test resistor at power up. This will set pins 18 & 17 to provide a tracer signal and a stop and start level for the code respectively. The tracer shows when the code level is monitored for each of the 14 bits in the code. When in this mode, the 0 and 1 outputs are prevented from operating normally. Normal operation is restored by switching off the supply for a few seconds, removing the 220W test resistor and reapplying power. The accompanying oscilloscope traces show the remote control operation. Fig.2 shows the modulating waveform - this operates at about 36kHz and is the frequency at which the infrared transmitting LED is switched on and off. The presence of 36kHz modulation gives a high signal level, whereas no modulation represents a low signal. Fig.3 shows the remote control signals. The top waveform (channel 1) is the signal applied to the infrared detector (IC2) before demodulation. This is a modulated waveform with the 36kHz signal appearing when the signal goes high. The next waveform down (channel 2) shows the output of IC2 after the 36kHz signal has been removed. Note that this signal is actually inverted compared to the top waveform. The tracer (pin 18 of IC1) is the channel 3 signal and this indicates when the level at IC2's output (pin 1) is monitored by IC1. The resulting decoded output (which is the satellite-1 code for transmit button 4) is shown in channel 4 (ie, the bottom waveform). This decoded signal is made available at TP1 and, as discussed above, drives the Acknowledge LED. Fig.4 shows a similar set of traces. However, in this case, the top waveform (channel 1) shows the stop/start signal on pin 17 of IC1. The bottom three waveforms (channels 2-4) are the same as in Fig.3. The decoded signal is compared with those stored in IC1's memory - ie, the 0-9 button codes for satellite 1 (sat1) or satellite 2 (sat2). The voltage level at pin 3 determines whether a comparison is made against the sat1 or sat2 codes - sat1 codes are used if pin 3 is high, while sat2 codes are used if pin 3 is low. When the transmitted code matches a satellite code in memory, the respective output of IC1 goes high. For example, if we press button 0 on the transmitter, pin 18 of IC1 will go high if the output is set for momentary operation. Alternatively, it will change from a low to a high or from a high to a low if set for toggle operation. A momentary output will go low as soon as the button is released. By contrast, a toggle output will remain in its new state (high or low) until the button is pressed again.
Remote trickeryOne problem with using the commercial IR transmitter is that the codes are not actually generated by the internal circuitry. Instead, they are stored replicas of the codes programmed into the original equipment remote controls that come with TVs and VCRs, etc. These codes are stored in a memory that allows each code sequence to be continuously replayed over a few seconds. When the end of the memory is reached, the sequence in memory is started over again. Because it would be rare for a code sequence to finish exactly at the end of the memory and start again at the beginning (and with the correct timing between them), there is often a disjointed flow of code. This presents a problem because it is recognised by the receiver as a different code. We circumvented that problem by monitoring the toggle bit in the remote control sequence. Remember that this toggle bit only changes state if the button is released and then pressed again. If the button is held down continuously, this bit will not change except at the "end of memory" discontinuity. So, by programming the PIC to ignore very brief code changes (as indicated by very brief changes to the toggle bit), we can easily "filter" out this discontinuity. As a result, the remote control receiver only responds to genuine inputs to the transmitter. This means that the outputs remain in the correct state if a button on the transmitter is held down. By the way, the user is entirely unaware of this filtering and there is no detectable delay. Press a button on the remote transmitter and the receiver responds "instantly". Momentary or toggle operation is set using a programming resistor on each output (R1-R10). Each resistor can be connected to either the +5V rail for a toggle output or to 0V for momentary operation. When power is first applied to the circuit, pins 18, 17, 13, 12, 11, 10, 9, 8, 7 & 6 of IC1 are all set as inputs. The microcontroller then checks the voltages applied to these inputs, as set by R1-R10. If a resistor is connected to the 0V rail, its corresponding input will be read as low for momentary operation. Conversely, if the resistor is connected to the +5V supply rail, the voltage at the input will be about 2.69V. That's because the current flows through the 1.8kΩ resistor, a LED (LED1-LED10) and the associated 390Ω and 300Ω resistors. The voltage across the LED will be about 1.8V, so the resulting current will be (5 - 1.8)/(390Ω + 300Ω +1.8kΩ) or 1.285mA. This means that 2.31V appears across the 1.8kΩ resistor and so the input will be at 5 - 2.31 = 2.69V with respect to the 0V rail. Since a high voltage level only needs to be 2.4V or more, the input will be detected as a high and this selects the toggle mode. Note that although the current through the 1.8kΩ resistor is sufficient to light the LED, there is insufficient voltage across the 300Ω resistor (about 0.39V) to turn the output transistor on. This prevents the output from momentarily switching on any external devices during power up. Following power up, the inputs are turned into outputs and drive output transistors Q1-Q10 via LEDs1-10 and 390Ω base resistors. The current through the LEDs is about 6.4mA and each transistor can deliver about 120mA of current. This is sufficient for driving LEDs and 12V relays with more than 100Ω coil resistance. Note that LEDs1-10 light when ever their respective output transistors are switched on via the remote control. This means that the LEDs on the momentary outputs will light only while their transmitter buttons are pressed, while the LEDs on the toggle outputs will toggle on or off. Diodes D1-D10 are necessary to protect the output transistors. They quench the inductive spike voltages that can be generated by relay switching. Power for the circuit is derived from a 12VDC plugpack. Diode D11 protects against reverse polarity connection and the 1000μF capacitor filters the supply. The +12V rail is then used to supply any output loads for transistors Q1-Q10. The +12V rail is also fed to 3-terminal regulator REG1 to derive a +5V supply. This rail is filtered using a 10μF electrolytic capacitor and supplies IC1 & IC2. Note that IC2 is decoupled from the +5V rail via a 100Ω resistor and 10μF capacitor to filter out any noise on the supply.
Building itA PC board coded 15102021 and measuring 88 x 130mm accommodates all the parts. Fig.6 shows the assembly details. Before installing any parts, carefully inspect the PC board for shorts or breaks in the copper tracks. Check also that the hole sizes are large enough for the components, especially for the screw terminals. Begin the assembly by installing the wire link near LED4 but don't install link LK1. Next, install the resistors in the locations shown. The 1.8kΩ resistors set the outputs to toggle or momentary operation, depending on how they are installed. For toggle operation, connect the resistor lead to the "T" hole. Alternatively, for momentary operation, connect the resistor to the "M" hole. Table 1 shows the resistor colour codes but it's also a good idea to check them using a digital multimeter - some of the colours can be quite difficult to recognise. The diodes can go in next, making sure they are all oriented correctly. This done, install a socket for IC1 with pin 1 located as shown on Fig.6. Similarly, take care to ensure that the electrolytics are oriented correctly when installing the capacitors. Once these are in, install transistors Q1-Q10, followed by the screw terminal blocks (wire entry side facing outwards). Regulator REG1 is mounted flat against the PC board, along with a small heatsink - see Fig.6. You will need to bend the regulator's leads through 90° so that they pass through their respective holes in the PC board. This done, the regulator and its heatsink are fastened to the board using a 6mm-long M3 screw and nut and the leads are then soldered. The next step is to install crystal X1, the DC socket and two PC stakes at the TP1 and TP2 positions. That done, you can complete the board assembly by installing the LEDs (LEDs1-11) and IC2 (the infrared receiver). The LEDs can either be installed on the top of the PC board or on the underside (ie, the copper side), depending on how the assembly is going to be mounted. For the prototype, we installed the LEDs on the copper side - this allowed the completed assembly to be mounted on the lid of a standard plastic case, with the LEDs protruding through the front panel. Similarly, IC2 is also mounted on the copper side of the board. Its leads are then bent through 90° so that the receiving lens aligns with a hole in the front panel next to the Acknowledge LED. Make sure that the LEDs are correctly oriented when installing them on the PC board. They should be installed with their tops about 14mm above the board surface, while IC2 should be mounted with its lens bezel about 13mm above the board surface. There's an easy way to mount the LEDs and that's to cut a strip of cardboard exactly 6mm wide, then use this as a "spacer" between the LED and the board. The accompanying photo shows the idea.
Drilling the front panelFig.7 shows the front panel artwork - this can be used as a template for drilling the front panel. You will need to drill 11 holes for the LEDs, plus four more to mount the board. In addition, you will have to make a 6 x 6mm cutout for the infrared receiver (IC2) - you can do this by drilling a hole and then filing it to shape. A hole is also required in the side of the box, to allow access to the DC socket. Once the holes have been drilled, the PC board can be mounted on four 10mm-long tapped spacers and secured using countersunk machine screws through the lid and cheesehead machine screws through the PC board. TestingBefore testing, you have to set the infrared transmitter to code 424. To do this, first press both the SET and SAT switches together - the transmit LED should light. Now enter 424 by pressing the 4, 2 and 4 buttons. The transmit LED will now go out and the remote control codes are now set correctly for the receiver. Now apply power and check that there is 5V between pins 5 & 4 of IC1's socket. If this is correct, disconnect the power, install IC1 and apply power again. Now press each of the number buttons on the remote control in turn. The receiver should now light the LED associated with the button pressed (ie, if 0 is pressed, LED0 should light). The behaviour of each LED indicates whether its corresponding output has been wired for momentary or toggle operation. If you wish, you can now check the operation of the optional second code by installing link LK1. The transmitter will now have to be programmed to code 425 instead of code 424. Note also that the transmitter can be programmed with the code number placed in any of the SAT, VCR or TV options. This means that if you build two receivers, they can both be controlled using the same transmitter. All you have to do is set code 424 for (say) the SAT button and code 425 for the VCR button - in the latter case, you press SET and VCR simultaneously and then press 425. Note that the second remote receiver must have LK1 installed, while the first receiver should have LK1 omitted. To control the first receiver, you simply press SAT and then one of the 0-9 number buttons. To control the second receiver, press VCR and then one of the 0-9 buttons.
Output controlAs mentioned earlier, Fig.5 shows how to connect the outputs to perform various functions. Fig.5(a) shows how to drive a LED; Fig5(b) shows how the LED in an optocoupler can be driven, with the transistor output providing an isolated switch; Fig.5(c) shows how to drive a relay; and Fig.5(d) shows how to drive a motor via two relays, to provide for forward and reverse control (note: you must use two outputs from the receiver for this, one driving RLY1 and the other driving RLY2). The NO and NC contact designations refer to whether they are normally open (NO) or normally closed (NC) when the relay coil is not energised. The common terminal (or wiper) is referred to as "C". Power for the motor can be from the 12V supply if they are 12V motors. Lower voltage motors will require a separate supply. Power supplyPower for the unit comes from a 12VDC plugpack. This must be rated to cater for the loads that will be connected to the 12V supply rail, so you need to add up the likely current drawn by the loads. Typically, you will require a 500mA 12V plugpack when there are no small motors connected and a 12V 1A type when a motor is connected or if all 10 outputs are driving relays.
Share this Article:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|