Logo Projects

To translate this page, please see the google toolbox in the footer.

Ducting Forecast












DX Info Centre
By: William Hepburn

Solar Terrestrial
Activity Report



N3KL Solar Activity Monitor

Solar X-rays:

Geomagnetic Field:


Solar-Terrestrial Data









Clima Mundial


Novo País


Cocos (Keeling) Islands

Last Visited July 2, 2023

Últimos 20 visitantes:

Flag Counter

Note: I am not fluent in English, so that this text it was translated with my few knowledge of the English language, and using an electronic translator, don't wait a perfect text, but I believe that this can be understood perfectly.

tab Converting Willem Programmer PCB3b to PCB4.5

>>> Versão em Português aqui. <<<

Avalie esta página:


   If you does not know this programmer and my envolvement with it, the small history. The original project made by Willem Kloosterhuis and its site can be seen here: http://http://www.willem.org/

   Later, a more compact version (the PCB3b) and diverse adapters for other devices, had been created by Gitti Ieo, and can be seen here: http://http://se-ed.net/mpu51/eprom/eprom.html

   All later versions of software for windows, had been made by Gitti Ieo, and ultimate version is 0.97ja

   Then, I started contact with Gitti Ieo, around May/2002, where I sent some suggestions for software and found some bugs. From this date, Gitti included me as beta-test of new versions of the program, and lot of ideas had been sent (as well as bugs) and some effectively had been used. I received versions beta from Gitti until August/2004, how much you receive finishes it version beta, in the case 0.97jc3, which did not work correctly. Before this date I did not have more news of Gitti and any news of updates of software.

    Almost one year then, I came to discover an improved version of the mounted willem and sale in this site: http://www.sivava.com and which didn't go my surprise when seeing that the software was the same, they put with several updates, and with two great details: It was not more available(*) to the I public and it was not more compatible with the version PCB3b board, and only compatible with the new versions (the current version is PCB4.5C).

   For me it was a deception, after contributing with development of the software, even if very a little, to see this new direction that the thing took. It is mainly part of the text that this in the own site of the sivava:

"( NEW!!! The PCB4.5C design by an engineer who developed (Original Version : (Willem EPROM Programmer PCB3B Standard and Universal)) and developed software 0.98D2 / (Now!! Download Free 0.97ja) /0.97j / 0.97i+ / (0.98i more Copy Software version) / 0.97i / 0.97h / 0.97g )"

   Summarizing, own Gitti was involved in the updates. And anything of the available current versions for download, only the old and already known. They put, researching in google, I ended up finding at a Russian forum, a copy of the up-to-date software, in the case the version 0.98D2.

   To the you test it logically it didn't work in the old PCB3b, I already eat alerted. Then starting from my "mission", summarized to do reverse engineering through the software for to lift which were the modifications and to turn compatible the old PCB3b, with the new software.

   Well, then we are going the modification properly said. Before I will include two modifications done by min, that seek improvements in programmer, which I recommend the everybody do before even of update the board to version PCB4.5

   Four improvements will be described, being:

  Improving converter DC-DC.

   The "heel of Aquiles" of this version of willem is DC-DC converter, that generates the different voltages to Vpp (12.5, 15, 21 and 25V). The main item that cause a series of problems is the coil, which must have mass to not saturate with the drain demanded for eprom in the programming. The biggest problem is in the programming old eproms , which demands much current in the Vpp.

   The maximum current supplied by the converter in my original board was of only 35mA approximately, what he is little for some eproms.

   To obtain coil of 100uH that it has supported a current up to 100mA without saturating is something complicated, therefore the majority them coil, and XRF found in the commerce has nucleus very small e saturates quickly with currents of this order. Solution?

    Make a new coil, using a toroid core. The place to find an ideal nucleus is the box of scraps. Seeking I found toroid cores in old mother-board of PC and in battery charger for cellular phone, for vehicular use. Besides in these last ones, also found the MC34063 or the JRC2360D that it is  direct equivalent, done made by Japan Radio Co. LTD. Below see a board of these battery charger.

   The coil can be used directly, it is enough remove and to place in the board. In the case of re-taking use core from PC Board, the coil should have been re-wound. See the same core in an old board "PC-chips SiS530":

   This is the dimensions of the core for who wants to seek a similar one in another board:

  Height: 5mm
  Internal diameter: 8mm
  External diameter: 13mm
  Color of core: I yellow with a white border.

     Remove original coil, and wind 55 turns of 24AWG enamel wire distributed uniform on the core.

   Other modifications that seek a better performance in the DC-DC converter:


Transistor Q4, original: BC557, change to BC327 or BC328.
Resistor R9, original 2K2, change to 1K2.
Resistor R17, original: 0.5, change to 0.33Ω In case doesn't find, do use my solution, 3 resistor of 1Ω in parallel, what will give us exactly 0.33Ω.
Capacitor C2, original: 220pF, change tor 1nF, it seeks to lower chopper frequency.
Diode D3, original: 1N4148, change to BYV26, BYV95C or other any schottky diode.

   The voltage regulator, 7805 more heat a little more than the normal, is convenient to place a small heatsink. It is finally, use a GOOD power supply, I am using one from an old scanner, of 12V x 1200mA.

   With these modifications, the current supplied by the DC-DC converter, up-to 100mA. The block of schematic below were made the modifications, the components in blue are they mentioned above.

   It is the section of the board where all components, except the resistor R9, that is between the 74HC04 and the ZIF socket. The resistor R17, was in below of coil.

  Protecting PIC against mistakes in the adjustment of Vpp.

   The poor of the pics are the largest ones you slay in case you change the Vpp for 21 or 25V and forget to come back the jumps for the position of 12.5V.

   Myself already made twice this mistake and burning two PIC16F877A.

   The solution for that is simple, it is enough to add a resistor in series with the line of Vpp, that is going to the ICS connector  and for 18 pins socket. And a zener diode to limit the tension in a safe value.

   If you already made here this modification, it is necessary to move wire for the other extremity where was the jump, because I marry I thwart in this point the modification it will be tied up to protected Vpp of 12V of pics and not more to direct Vpp after the modification. In the illustration I already placed the resistor (in blue) that will be added in the place of the jump.

   The modification in the board is quite simple, it is not necessary to cut any track, it is enough to remove two jumps and to proceed the modification. In the photo below show the position of the jumps, and notice that already installed the resistor 560R in the place of one of jumps, the other jump is empty.

   Inside of ellipse 1, a jump was removed and ellipse 2, the jump was removed and installed the resistor of 560R x 1/8W in its place. Now it lacks only a small bridge on the side under the board and to install the  zener diode, 13V x 1W, according to the photo below.

   The yellow rectangle indicates the socket of 18 pins. The wire that passes on the socket of 18 pins is the bridge that should be added. Already take advantage of and place the resistor of 1K that this in the pin 10 of the socket, linked to GND. This resistor ground the pin Low Voltage Program, of the PIC16F628. The diode zener this with its anode attached to the pins 1 and 2 of the socket of 24Cxx. With this this modification this completes.

  Correcting the pull-up of pins SELIN and AUTO.

   In the original project it was lacking the pull-up in the pins Select In and Auto. Although this mistake has already been alerted by Gitti and also in the forum of Willem, I solved you place it here. See in the outline this correction. It is not a critical correction, but it is advisable to make.

   And see the local to place the resistors in the board. They are tied up to the pin 16 of own U2 IC.

   Don't look at for the wire-up confusion and IC in the song right bottom. They are part of the last modification.

  Improve to work on LPT port from Notebooks.

   It can seem strange, but several notebooks has differences in the parallel port, they use lower of pull-up, to provide a port with larger imunit to noises and faster.

   Only that this causes problems and to badly operation.

   This owes to the fact of CI's series CD40xx they support a drain of smaller current. The tip is to substitute the buffers CD4503 and 4069 for 74HC367 and 74HC14, that support a very larger drain.

   My programmer didn't work correctly in my notebook, a IBM ThinkPad 600. After the change of the buffers it now work perfectly.

  Conversion to PCB4.5 or when the hell breaks loose :)

   When I intended to discover as converting the old PCB3b to work with the new software, my first providence went make a small giga, to facilitate the debug & test, this way it is much faster to verify changes of the signals in the socket ZIF.

   Willeprom uses a cascade of 3 shift double registers (CD4015) and it carries the 24 bits that it composes addresses bus, just as in the illustration below.

   That is places one bit per time in data pin of the first 4015 and it is going pulse clock line, it makes this operation 24 times until carrying the whole bus (obs. in the case of a smaller bus, as of a 27C512, for example he carries only the necessary bits, to know, 16 bits), but what matters it is that he carries a bit per time.

   When beginning the debug, using the hardware test with my leds giga, I noted that the software carried the bits from A0 to A7, correctly they put above of A7, it didn't carry anything and eventually appeared "junk" in the in the addresses above A7.

   A careful observation, allowed to note that when only carrying the bit A0, when selecting the bit A0 for the first time, it was carried correctly, they put when give-selecting, the bit A0 turned off, they put the bit A8 on, and when selecting the bit A0 again, the bit A8 turned off and on bit A0 and A16...

   Thinking a little, it is enough to note that 8 bits are only being carried, accompany below:

When carrying the bit A0 in 1, corresponds to send 00000001 for the shift register.
When carrying the bit A0 in 0, corresponds to send 00000000 for the shitf register.

    Now remember that the data are loaded serial, soon the first 8 loaded bits, they should be moved upward, soon the stack in the shift-register is being: 0000000010000000, what corresponds exactly to light the bit A8!

   Now, carrying the bit A0 again in 1 a new sequence 00000001 will be a correspondent, soon the 16 bits that are already in the shift-register should be moved above, soon the sequence in the shift register is being: 000000001000000000000001, what will correspond exactly to set the bits A0 and A16!!!

   Therefore it is ended that the bus is parted in smaller blocks. Analyzing the schematic of programmer, and the sequences above, it is easy to deduce that the bus went divide in three segments of 8 bits! Just lacked to discover through where the other two groups of 8 bits should come. Researching with the scope, I found these two segments, presents in the pins DO4 and DO5 of the printer port.

   Give it was just enough to segment the bus and to tie the pin 15 of U5 to the pin D04 and the pin 15 of U6 to the pin DO5 of the parallel port, and voilá! Therefore the outline was accordingly below:

   Now to stop and analyze, will discover the because the programmer is much faster when used in the new bus format. Because now instead of carrying all the necessary bits to the bus of one by one, they are divided in three groups of 8 bits, what means that in any case will just be necessary 8 clock pulses to carry the whole bus, while in the old method it was necessary the same amount of pulses that the amount of bits of the bus of the eprom.

   Simple, practical and efficient!

   Note that I opted including the jumps for the selection of modes, so that the board it can work on PCB3b mode, an also PCB4.5. The jumps was installed close to the leds Vcc and Vpp, there, underneath of the board is a massive copper area linked to GND, with a small drill I made the 6 pads for installation of jumps.

   Even so when doing this modification, I noted that during the reading of an eprom, the programmer didn't still work correctly, in spite of the correct address in the bus, they were not read consistent data of eprom. That is to say, still has more some thing to be altered.

   We are going the research again.

   The data bus is read by another shift register, now a CD4014, that reads the 8 bits in a step, and it transmits them serial for the parallel port. To send the 8 bits for the parallel port they are necessary 8 pulses of individual clock, that is to say, it pulse clock and reads bit, it pulse clock and reads the bit. Just as in the illustration below:

   This way notes that the program needs to be change to have written in the pin clock and reading of the data. To thick way they are necessary at least 16 operations for the reading of a byte.

   When analyzing the operation of the board under the new software, I noted that 2 bits were just read of the data bus, what indicated a new bus division, now in the data bus. When placing pull-up resistors in the lines of data, to set up the bit 0FFh, I observed that was read as being 090h.

   The 4014 have exits outputs in its last 3 stages of the shift register, and observed the reads data, notes that the bits are being read of 3 by 3 by software. Note: 10010000

   What does the one happen then? The software this waiting the other two bits for some way, they put as there is not connected, he reads as zero. The form as the reading and done to 3 bits and exemplified below:

   This way, note that are loaded 3 bits for pulse with 3 pulses of simultaneous clock. Making one analyzes as I did previously, they would be necessary at least 12 operations for the reading of the byte (three clock pulses, a reading, three clock pulses, a reading and more three clock pulses and a reading)

   Researching with a resistor connected to 5V line, discovered that the reading of the bits lost is made by the pins paper end and select of the parallel port.

   Therefore it would be enough to connect the pins Q6 and Q7 of the 4014 to these pins of the parallel port and ready. But... there is a problem, the pin Q8, originally it goes by a inverter gate (NOT) and observing the photo of the board in the site of the sivava, there is no extra ic, and all gates of 74HC14 they are used. Thinking a little, I believe that the circuit have been modify in way to liberate two of the gates of 74HC14, I believe the circuit of transistor Q5 to have been altered, to liberate the gate U12D and also the circuit of transistor Q3 to liberate the gate U12C.

   This would be a problem because it would involve more modifications in the board. Then I opted for add a 74HC14 SMD in bottom of board to use the two extra inverter gates. In the portion of schematic below, see as it was this part:  

   And in this last image, as I installed extra CI in bottom of board. The pins 2 and 4 was directly connected to pins of DB25.

  Performance tests

   After having done the modifications, went be proven there is really an improvement in the programmer's speed. Everybody the tests of speed, I made using a Flash AM29F040B, plcc with adapting PLCC -> DIP.

   For the test two different computers were used, to verify to what extent the clock of the processor influences in the time programing.

AMD Pentium 233MMX, with 256Mb RAM and Windows Millennium Edition
Athlon XP 2400+ (2GHz), with 1Gb  RAM and Windows 2000 Professional

   The file for program in the eprom is a MP3 file, which filled the whole memory flash. It was used a mp3, for the reason that its content is quite aleatory and great sequences of byte 0FFh don't exist, which is not programmed indeed by the software.

   The time computes the programming and verification of flash AM29F040B. Consider a variation of 5% in the times measured as acceptable.

   Computer 1: Pentium 233MMX

   Mode PCB3b : 1079 seconds (17:59 minutes)
   Mode PCB4.5: 392 seconds (6:32 minutes)

   Computer 2: Ahtlon XP 2400+

   Mode PCB3b : 420 seconds (7:00 minutes)
   Mode PCB4.5: 198 seconds (3:18 minutes)

   Then, the following devices were tested in the programmer, to verify the correct compatibility and operation, everybody with result 100%:




   A thing that I don't understand is the reason of so much secret on the part of Gitti and Sivava for these modifications, because in less than 3 days work (counting only the time that I dedicated to this) it was possible to lift all the modifications.

   The programmer's project, of responsibility of Willem was always open and free and this philosophy was what it provided a good development of the same, so much that Gitti was who did all the last modernizations of the software for windows, and many of alterations of the hardware and also many adapters.

   Gitti and Sivava albeit they could have turned publish these information, and I am sure that would not harm its sales, and they would receive a great and valuable collaboration of all the users.

   Just to mention the all it can be of great help the software and schematic free, in the time that did tests of versions beta of software, I found two bugs, that were quickly corrected by Gitti, and an improvement suggestion that was added to the software.

   I title it of curiosity, the bugs and suggestions was:

Bug in programming  PICs 12C508/9 OTP
Add option PICs 12C508/9 JW
Add option on/off Vcc (MCLRE) in ICSP mode

   Now a small explanation about this last function, because a lot of people don't understand so that she serves.

   Imagine programming a software for a PIC16F877A, the normal process would be to tie the ICSP cable, program the firmware, to turn off the cable and to tie power to board.

   With this resource it is not necessary this process, it is enough activate (on) the dipswitch 2 and to mark the box MCLRE +5V that the code loaded in PIC starts execution immediately after the programming, using the power supply of programmer to this.

   It is necessary to just provide isolation for the reset pin, so that the tension of Vpp doesn't enter for the power line and isolation for the lines RB6 and RB7, so that there are not conflicts with the pic and the programmer, or simply not to use the lines RB6 and R7 during the development phase.

  Alternative softwares.

   Several softwares that can be configured to work with Willeprom. All they are only for programming of serial devices, as PIC's and I2C memory.

   Three of them that deserve to be mentioned:

IC-Prog by Bonny Gijzen
WinPIC800 by Sisco Benach

   A comment worthy of note, is on WinPIC By DL4YHF and its fantastic idea of as to add support new PIC's to software. All the devices can be described in a text file (devices.ini). this way it is a lot, but very simple of adding new devices to software. It is enough to catch everybody the data in the datasheet of wanted PIC and to create a new entrance in the file.

   Simpler and practical impossible, because this same way that the author discontinues the upgrades, any user can continue to add new devices.

   Other great idea, is the description of the file of programmer's interface, this way it is also possible to place the software to work with practically any devices programmer for serial devices, so much for the parallel port, as for the serial port (yes, he also supports programmers RS232!).

   In the current version of software, (V2.9d - updated: April 8th, 2006) not this included one the configuration file for the operation with Willeprom. Even so I already created it, and I sent the author, and it will be included in the next update.

   Meanwhile it doesn't happen, you can make the donwload here: Willem_OnLptPort.ini


Schematic PCB4.5
Layout of Giga Test board.
This text in PDF format.


Você tem problemas com interferências, ruídos em seu shack/casa que inviabiliza sua recepção em HF?


Resultado Parcial

Enquetes anteriores

10 últimos
QSL's Recebidos


PY4EU - AO-51

PU2WZY - VO-52

PY4LY - VO-52

PY2TZT - Gift

PY5JCI - AO-51

PY7DI - AO-51

CX5IC - AO-51

PU2NJL - Beacon

PU1NEI - Gift


10 últimos
QSL's Enviados

WP4CNU - AO-51
L50E - AO-51
YV6BFE - AO-51
YV5MM - AO-51
CX5IC - AO-51
CX2SC - AO-51
PU5MRA - AO-51
PY2XT - AO-51
YY6KWD - AO-51
YY6IEA - AO-51


Contato Recorde:


José Antônio


GG67rw > GG49df

554.6 Km


Irineu C. Gudin


GG68oa > GG29rn

822.6 Km

Get Firefox!

Assinar FEED!
Assinar Feed

bandeira do brasil

go top

Page View:



Última atualização do site em: 19/novembro/2023

Todo o conteúdo é © 2003-2023 por PY2BBS, todos os direitos reservados.
Proibida cópia ou reprodução de qualquer texto ou imagem deste site sem a devida autorização por escrito.
Todos os nomes e as imagens utilizadas são marcas registradas de seus respectivos detentores.
PY2BBS não se responsabiliza pelo conteúdo de quaisquer dos sites lincados.

Valid HTML 4.01 Transitional   Valid CSS!   [Valid RSS]