I couldn't go to bed without trying the VFD power board with the actual vacuum fluorescent display. Which meant mating the iCEblink40 board with the VFD driver board. And once again I've run into problems.
I
wired the VFD power board to the VFD driver board in place of the two
previous breadboarded circuits and checked for sane voltages and current
draws. The average draw on the 3.3V supply by the filament driver is about 121mA, which is about what I expected.
I
reprogrammed my iCEblink40 board to drive the VFD, which required
some tweaking to the Verilog to allow for the new 10 MHz clock
frequency. Plugging it into the VFD driver board and powering it with a
standalone USB supply caused a single "0" digit to be displayed, which
is proper. Current draw on the +30V supply was about 9mA, again within
expected behavior.
By moving the USB cable to my
computer and running the Digilent Adept I/O expansion application on my PC I was
able to change the digits displayed. With all 12 digits showing "0" and
one decimal point illuminated, the +30V current was about 11mA, again about what I expected. The +30V supply was designed to provide at least 16mA with only 5V input, while with a 7V
input it should be capable of up to 30mA.
While I was testing I told
Adept to "write all registers" in the expansion interface. Immediately
after doing this the VFD display rippled with suddenly changing digits,
then every segment illuminated simultaneously. At the same time the
current draw on the +30V supply jumped to about 68mA, so I cut the power
to the VFD power board. Starting clean seemed to fix the problem, but
it recurred after a few minutes. This could only happen if all of the
anode drivers and all the grid drivers turned on simultaneously, which should never happen with the logic programmed into the FPGA.
I
checked the voltages on the VFD power board and everything seemed
reasonable. I thought maybe I was demanding too much current from the
+3.3V supply on the iCEblink, so I connected my voltmeter to the +3.3V
output on one of the Pmod ports and plugged in the USB cable. For a
few moments it read +3.32V, but then it jumped to +4.1V. That's bad -- it should never go above +3.63V. I
disconnected the VFD driver board and tried it again, and again the
output jumped to above 4V. This implies the voltage regulator on the
iCEblink has failed.
Here's a mug shot of the suspect. That's my index finger for size comparison:
The regulator Lattice used is an
Analog Devices ADP2140, which has a synchronous buck regulator supplying +3.3V at
up to 600mA and a linear LDO regulator supplying +1.2V at up to 300mA. Both are
fed from the USB +5V line. The LDO is entirely self-contained and seems to be working properly. The
buck regulator requires an external inductor. To sense the output
voltage the buck regulator has a feedback pin that connects downstream
of the inductor. Aside from a complete failure of the buck portion of
the regulator, the only thing that makes sense is if the feedback pin is
disconnected from the inductor, perhaps due to a cold solder joint.
DigiKey
sells this part for $3.31, and has 1,489 in stock as of this writing.
It's in a 3mm x 3mm leadless package, much like the LT3494, so it's possible that I may be able to remove and replace the chip with the equipment on hand. However, I don't want to pay $4 shipping on a $3 part. And if the FPGA
itself has been damaged, replacing the regulator won't restore the
operation of the board.
I have an open shopping cart at
Mouser but they don't stock the ADP2140ACPZ3312R7. They do have 16
iCEblink40HX1K boards in stock, but do I want to spend $34 on a board I
dislike so much? Unfortunately, that's the only board I know of that
will mate with my VFD driver board.
Tomorrow I'll put a scope on the upstream side of the inductor and see if it's going into maximum output mode. Then I'll probably try reflowing all the joints in the area of the voltage regulator in the hope that I have a bad joint somewhere. If that doesn't fix it I'll have a decision to make.
It may be that I give up on using the iCEblink board entirely. I could call the VFD driver and power subsystems done, though I worry that there's some sort of a spike or glitch that caused the regulator failure. The FPGA power subsystem can be tested without the VFD. I can test the printer driver transistors with my PIC circuit which is still on a breadboard. I can test the keyclick transducer with my 556 circuit, also on the breadboard. The external serial interface will probably be very close to the Digilent PmodLVLSHFT and doesn't really need testing. The remaining bits, like the FPGA boot ROM interface, can only be tested with the real FPGA.
There is another, somewhat bizarre option. The filament supply requires a +3.3V supply, which is currently being provided by my bench power supply. If I remove the inductor from the iCEblink's buck regulator I can feed +3.3V into the board from the bench supply. If the FPGA isn't fried, this would allow me to continue working with the iCEblink while I figure out what to do long-term.
It's morning. I put the scope on the buck regulator's inductor. Sure enough, the upstream end started off pulsing, but then switched to a constant "on" state. That's classic lack of feedback.
ReplyDeleteI applied a bit of flux to the area around the IC and related components, and gave it a good heat-soak with the hot air. After I was sure everything had reached solder melting temp I removed the heat and let it cool undisturbed. Connecting my voltmeter across the +3.3V and GND pins of one of the Pmod connectors I held my breath and applied power to the USB connector. The voltage rose to a hair above 3.3 and stayed there. SUCCESS!
I finished my tests of the VFD power subsystem and updated the schematic of the full replacement board. Now I can go about my day without having that hanging over my head.