Simple Universal PIC Programmer

This simple programmer will accept any device that's supported by software (eg, IC-Prog 1.05 by Bonny Gijzen at www.ic-prog.com). The circuit is based in part on the ISP header described in the SILICON CHIP "PIC Testbed" project but also features an external programming voltage supply for laptops and for other situations where the voltage present on the RS232 port is insufficient. This is done using 3-terminal regulators REG1 & REG2. The PIC to be programmed can be mounted on a protoboard. This makes complex socket wiring to support multiple devices unnecessary. 16F84A, 12C509, 16C765 and other devices have all been used successfully with this device.

Circuit diagram:

Author: Luke Weston
Copyright: Silicon Chip

LCD Module in 4-bit Mode

In many projects use is made of alphanumeric LCDs that are driven internally by Hitachi’s industry-standard HD44780 controller. These displays can be driven either in 4-bit or 8-bit mode. In the first case only the high nibble (D4 to D7) of the display’s data bus is used. The four unused connections still deserve some closer attention. The data lines can be used as either inputs or outputs for the display. It is well known that an unloaded output is fine, but that a floating high-impedance input can cause problems. So what should you do with the four unused data lines when the display is used in 4-bit mode? This question arose when a circuit was submitted to us where D0-D3 where tied directly to GND (the same applies if it was to +5 V) to stop the problem of floating inputs.

The LCD module was driven directly by a microcontroller, which was on a development board for testing various programs and I/O functions. There was a switch present for turning off the enable of the display when it wasn’t being used, but this could be forgotten during some experiments. When the R/Wline of the display is permanently tied to GND (data only goes from the microcontroller to the display) then the remaining lines can safely be connected to the supply (+ve or GND). In this application however, the R/Wline was also controlled by the microcontroller. When the display is initialised correctly then nothing much should go wrong. The data sheet for the HD44780 is not very clear as to what happens with the low nibble during initialisation.



LCD Module in 4-bit Mode Circuit Diagram

After the power-on reset the display will always be in 8-bit mode. A simple experiment (see the accompanying circuit) reveals that it is safer to use pull-down resistors to GND for the four low data lines. The data lines of the display are configured as outputs in this circuit (R/Wis high) and the ‘enable’ is toggled (which can still happen, even though it is not the intention to communicate with the display). Note that in practice the RS line will also be driven by an I/O pin, and in our circuit the R/W line as well. All data lines become high and it’s not certain if (and if so, for how long) the display can survive with four shorted data lines. The moral of the story is: in 4-bit mode you should always tie D0-D3 via resistors to ground or positive.
Author: L. Lemmens
Copyright: Elektor Electronics

Intelligent Presence Simulator

However effective a domestic alarm system may be, it’s invariably better if it never goes off, and the best way to ensure this is to make potential burglars think the premises are occupied. Indeed, unless you own old masters or objects of great value likely to attract ‘professional’ burglars, it has to be acknowledged that the majority of burglaries are committed by ‘petty’ thieves who are going to be looking more than anything else for simplicity and will prefer to break into homes whose occupants are away.

Rather than simply not going on holiday – which is also one solution to the problem (!) – we’re going to suggest building this intelligent presence simulator which ought to put potential burglars off, even if your home is subjected to close scrutiny. Like all its counterparts, the proposed circuit turns one or more lights on and off when the ambient light falls, but while many devices are content to generate fixed timings, this one works using randomly variable durations.

Circuit diagram:

Intelligent Presence Simulator Circuit Diagram

So while other devices are very soon caught out simply by daily observation (often from a car) because of their too-perfect regularity, this one is much more credible due to the fact that its operating times are irregular. The circuit is very simple, as we have employed a microcontroller – a ‘little’ 12C508 from Microchip, which is more than adequate for such an application. It is mains powered and uses rudimentary voltage regulation by a zener diode.

A relay is used to control the light(s); though this is less elegant than a triac solution, it does avoid any interference from the mains reaching the microcontroller, for example, during thunderstorms. We mustn’t forget this project needs to work very reliably during our absence, whatever happens. The ambient light level is measured by a conventional LDR (light dependent resistor), and the lighting switching threshold is adjustable via P1 to suit the characteristics and positioning of the LDR.

Note that input GP4 of the PIC12C508 is not analogue, but its logic switching threshold is very suitable for this kind of use. The LED connected to GP1 indicates the circuit’s operating mode, selected by grounding or not of GP2 or GP3 via override switch S1. So there are three possible states: permanently off, permanently on, and automatic mode, which is the one normally used. Given the software programmed into the 12C508 (‘firmware’) and the need to generate very long delays so as to arrive at lighting times or an hour or more, it has been necessary to make the MCU operate at a vastly reduced clock frequency.

PCB Layout:

PCB Layout Of Intelligent Presence Simulator

In that case, a crystal-controlled clock is no longer suitable, so the R-C network R5/C3 is used instead. For sure, such a clock source is less stable than a crystal, but then in an application like this, that may well be what we’re after as a degree of randomness is a design target instead of a disadvantage. Our suggested PCB shown here takes all the components for this project except of course for S1, S2, and the LDR, which will need to be positioned on the front panel of the case in order to sense the ambient light intensity.

The PCB has been designed for a Finder relay capable of switching 10 A, which ought to prove adequate for lighting your home, unless you live in a replica of the Palace of Versailles. The program to be loaded into the 12C508 is available for free download from the Elektor website as file number 080231-11.zip or from the author’s own website: www.tavernier-c.com. On completion of the solder work the circuit should work immediately and can be checked by switching to manual mode.

The relay should be released in the ‘off’ position and energized in the ‘on’ position. Then all that remains is to adjust the day/night threshold by adjusting potentiometer P1. To do this, you can either use a lot of patience, or else use a voltmeter – digital or analogue, but the latter will need to be electronic so as to be high impedance – connected between GP4 and ground. When the light level below which you want the lighting to be allowed to come on is reached, adjust P1 to read approximately 1.4 V on the voltmeter.

If this value cannot be achieved, owing to the characteristics of your LDR, reduce or increase R8 if necessary to achieve it (LDRs are known to have rather wide production tolerances). Equipped with this inexpensive accessory, your home of course hasn’t become an impregnable fortress, but at least it ought to appear less attractive to burglars than houses that are plunged into darkness for long periods of time, especially in the middle of summer. (www.tavernier-c.com)

COMPONENTS LIST
Resistors
R1 = 1k 500mW
R2 = 4k7
R3 = 560R
R4,R6 = 10k
R5 = 7k5
R 7 = LDR
R8 = 470k to 1 M
P1 = 470k potentiometer
Capacitors
C1 = 470µF 25V
C2 = 10µF 25V
C3 = 1nF5
C4 = 10nF
Semiconductors
D1,D2 = 1N4004
D3 = diode zener 4V7 400 mW
LED1 = LED, red
D4 = 1N4148
T1 = BC547
IC1 = PIC12C508, programmed, see Downloads
Miscellaneous
RE1 = relay, 10A contact
S1 = 1-pole 3-way rotary switch
F1 = fuse 100 mA
TR1 = Mains transformer 2x9 V, 1.2 -3 VA
4 PCB terminal blocks, 5 mm lead pitch
5 solder pins

Downloads:

The PCB layout can be downloaded free from our website www.elektor.com; file # 080231-1.
The source code and .hex files for this project are available free on www.elektor.com; file # 080231-11.zip.

Contrast Control for LCDs

The adjustment control for the contrast of an LC-Display is typically a 10-k potentiometer. This works fine, provided that the power supply voltage is constant. If this is not the case (for example, with a battery power supply) then the potentiometer has to be repeatedly adjusted. Very awkward, in other words. The circuit described here offers a solution for this problem. The aforementioned potentiometer is intended to maintain a constant current from the contrast connection (usually pin 3 or Vo) to ground.

A popular green display with 2x16 characters ‘supplies’ about 200 µA. At a power supply voltage of 5 V there is also an additional current of 500 µA in the potentiometer itself. Not very energy efficient either. Now there is an IC, the LM334, which, with the aid of one resistor, can be made into a constant current source. The circuit presented here ensures that there is a current of 200 µA to ground, independent of the power supply voltage. By substituting a 2.2-k? potentiometer for R1, the current can be adjusted as desired.

Circuit diagram:The value of R1 can be calculated as follows: R1 = 227x10-6 x T / I. Where T is the temperature in Kelvin and I is the current in ampères. In our case this results in:
R1 = 227x10-6 x 293 /
(200x10-6)
R1 = 333R
Note that the current supplied by the LM334 depends on the temperature. This is also true for the current from the display, but it is not strictly necessary to have a linear relationship between these two. Temperature variations of up to 10° will not be a problem however. This circuit results in a power saving of over 25% with an LCD that itself draws a current of 1.2 mA. In a battery powered application this is definitely worth the effort! In addition, the contrast does not need to be adjusted as the battery voltage reduces. When used with LCDs with new technologies such as OLED and PLED it is advisable to carefully test the circuit first to determine if it can be used to adjust the brightness.

Circuit diagram:
Contrast Controller Circuit Diagram For LCDs

The value of R1 can be calculated as follows: R1 = 227x10-6 x T / I. Where T is the temperature in Kelvin and I is the current in ampères. In our case this results in:
  • R1 = 227x10-6 x 293 /
  • (200x10-6)
  • R1 = 333R
Note:
  • The current supplied by the LM334 depends on the temperature. This is also true for the current from the display, but it is not strictly necessary to have a linear relationship between these two. Temperature variations of up to 10° will not be a problem however. This circuit results in a power saving of over 25% with an LCD that itself draws a current of 1.2 mA. In a battery powered application this is definitely worth the effort! In addition, the contrast does not need to be adjusted as the battery voltage reduces. When used with LCDs with new technologies such as OLED and PLED it is advisable to carefully test the circuit first to determine if it can be used to adjust the brightness.
Author: Heino Peters
Copyright: Elektor Electronics

PIC Controlled Relay Driver

This circuit is a relay driver that is based on a PIC16F84A microcontroller. The board includes four relays so this lets us to control four distinct electrical devices. The controlled device may be a heater, a lamp, a computer or a motor. To use this board in the industrial area, the supply part is designed more attentively. To minimize the effects of the ac line noises, a 1:1 line filter transformer is used.

The components are listed below.
1 x PIC16F84A Microcontroller
1 x 220V/12V 3.6VA (or 3.2VA) PCB Type Transformer (EI 38/13.6)
1 x Line Filter (2x10mH 1:1 Transformer)
4 x 12V Relay (SPDT Type)
4 x BC141 NPN Transistor
5 x 2 Terminal PCB Terminal Block
4 x 1N4007 Diode
1 x 250V Varistor (20mm Diameter)
1 x PCB Fuse Holder
1 x 400mA Fuse
2 x 100nF/630V Unpolarized Capacitor
1 x 220uF/25V Electrolytic Capacitor
1 x 47uF/16V Electrolytic Capacitor
1 x 10uF/16V Electrolytic Capacitor
2 x 330nF/63V Unpolarized Capacitor
1 x 100nF/63V Unpolarized Capacitor
1 x 4MHz Crystal Oscillator
2 x 22pF Capacitor
1 x 18 Pin 2 Way IC Socket
4 x 820 Ohm 1/4W Resistor
1 x 1K 1/4W Resistor
1 x 4.7K 1/4W Resistor
1 x 7805 Voltage Regulator (TO220)
1 x 7812 Voltage Regulator (TO220)
1 x 1A Bridge Diode

The transformer is a 220V to 12V, 50Hz and 3.6VA PCB type transformer. The model seen in the photo is HRDiemen E3814056. Since it is encapsulated, the transformer is isolated from the external effects. A 250V 400mA glass fuse is used to protect the circuit from damage due to excessive current. A high power device which is connected to the same line may form unwanted high amplitude signals while turning on and off. To bypass this signal effects, a variable resistor (varistor) which has a 20mm diameter is paralelly connected to the input.

Another protective component on the AC line is the line filter. It minimizes the noise of the line too. The connection type determines the common or differential mode filtering. The last components in the filtering part are the unpolarized 100nF 630V capacitors. When the frequency increases, the capacitive reactance (Xc) of the capacitor decreases so it has a important role in reducing the high frequency noise effects. To increase the performance, one is connected to the input and the other one is connected to the output of the filtering part.


After the filtering part, a 1A bridge diode is connected to make a full wave rectification. A 2200 uF capacitor then stabilizes the rectified signal. The PIC controller schematic is given in the project file. It contains PIC16F84A microcontroller, NPN transistors, and SPDT type relays. When a relay is energised, it draws about 40mA. As it is seen on the schematic, the relays are connected to the RB0-RB3 pins of the PIC via BC141 transistors. When the transistor gets cut off, a reverse EMF may occur and the transistor may be defected.

To overcome this unwanted situation, 1N4007 diodes are connected between the supply and the transistor collectors. There are a few number of resistors in the circuit. They are all radially mounted. Example C and HEX code files are included in the project file. It energizes the next relay after every five seconds.

Click here to download the schematics, PCB layouts and the code files