FPGARelated.com
Forums

FPGA as heater

Started by John Larkin April 10, 2017
On 11 Apr 2017 09:52:20 -0700, Winfield Hill
<hill@rowland.harvard.edu> wrote:

> Here's my fan speed controller. Quite serious. >https://www.dropbox.com/s/7gsrmb9uci1wdb9/RIS-764Gb_fan-speed-controller.JPG?dl=0 > > First there's an LM35 TO-220-package temp sensor > mounted to the heat sink, amplify and offset its > 10mV/deg signal by 11x, to generate a fan-speed > voltage, present to a TC647 fan-speed PWM chip, > add optional MOSFET for when using a non-PWM fan. > E.g., cool, fan runs at 0%, ramps its speed over > a 30 to 40 degree range, thereafter runs at 100%. > TC647 chip senses stalled fan, makes error signal. >
Complicated. Here's my simple controller. https://www.dropbox.com/s/u6b7ujxv3y5g20p/Tnduction_fan_controller.pdf?dl=1 The ATtiny88 is about as cheap as the LM35. The microprocessor allows many things other than simple linear control. It has derivative action, for instance, to catch a rapidly heating heat sink before it gets very hot. Other features include a POST that, among other things, spins the fan to full speed for about a second before settling down into the control loop. I've found some fans that have enough bearing stiction that they won't start at the 20% of full voltage that idle provides. So the full power pulse gives them a starting kick. The 3rd output is designed to allow any voltage up to the transistor's limit to be controlled. I designed this controller for a device that had a 45 volt fan. The board is tiny - about the size of 2 postage stamps. The LM35 in a surface mount package is on the bottom of the board. The board is designed to be glued in place with the LM35 in contact with the heat sink. I use the E6000 neoprene adhesive available at Wal-mart in their marine department or in calking gun tubes from McMaster. It is VERY strong but pulls loose from the substrate when stretched. I'm going to open source this design so as soon as I get a round tuit, I'll put the CAD files (KiCAD) and firmware source and hex on http://www.neon-john.com. John John DeArmond http://www.neon-john.com http://www.tnduction.com Tellico Plains, Occupied TN See website for email address
Neon John wrote...
> > Complicated. Here's my simple controller. > >https://www.dropbox.com/s/u6b7ujxv3y5g20p/Tnduction_fan_controller.pdf?dl=1 > >The ATtiny88 is about as cheap as the LM35. The microprocessor allows >many things other than simple linear control. It has derivative >action, for instance, to catch a rapidly heating heat sink before it >gets very hot. Other features include a POST that, among other >things, spins the fan to full speed for about a second before settling >down into the control loop. I've found some fans that have enough >bearing stiction that they won't start at the 20% of full voltage that >idle provides. So the full power pulse gives them a starting kick. > >The 3rd output is designed to allow any voltage up to the transistor's >limit to be controlled. I designed this controller for a device that >had a 45 volt fan. > >The board is tiny - about the size of 2 postage stamps. The LM35 in a >surface mount package is on the bottom of the board. The board is >designed to be glued in place with the LM35 in contact with the heat >sink. I use the E6000 neoprene adhesive available at Wal-mart in >their marine department or in calking gun tubes from McMaster. It is >VERY strong but pulls loose from the substrate when stretched. > >I'm going to open source this design so as soon as I get a round tuit, >I'll put the CAD files (KiCAD) and firmware source and hex on >http://www.neon-john.com. > >John >John DeArmond >http://www.neon-john.com >http://www.tnduction.com >Tellico Plains, Occupied TN >See website for email address
Thanks John, that is pretty simple. Of course the processor requires a program, but if you put it up, that's good. And include the controller code-burning instructions. -- Thanks, - Win
On Fri, 14 Apr 2017 11:47:57 -0400, Neon John <no@never.com> wrote:

>On 11 Apr 2017 09:52:20 -0700, Winfield Hill ><hill@rowland.harvard.edu> wrote: > >> Here's my fan speed controller. Quite serious. >>https://www.dropbox.com/s/7gsrmb9uci1wdb9/RIS-764Gb_fan-speed-controller.JPG?dl=0 >> >> First there's an LM35 TO-220-package temp sensor >> mounted to the heat sink, amplify and offset its >> 10mV/deg signal by 11x, to generate a fan-speed >> voltage, present to a TC647 fan-speed PWM chip, >> add optional MOSFET for when using a non-PWM fan. >> E.g., cool, fan runs at 0%, ramps its speed over >> a 30 to 40 degree range, thereafter runs at 100%. >> TC647 chip senses stalled fan, makes error signal. >> > >Complicated. Here's my simple controller. > >https://www.dropbox.com/s/u6b7ujxv3y5g20p/Tnduction_fan_controller.pdf?dl=1 > >The ATtiny88 is about as cheap as the LM35. The microprocessor allows >many things other than simple linear control. It has derivative >action, for instance, to catch a rapidly heating heat sink before it >gets very hot. Other features include a POST that, among other >things, spins the fan to full speed for about a second before settling >down into the control loop. I've found some fans that have enough >bearing stiction that they won't start at the 20% of full voltage that >idle provides. So the full power pulse gives them a starting kick. > >The 3rd output is designed to allow any voltage up to the transistor's >limit to be controlled. I designed this controller for a device that >had a 45 volt fan. > >The board is tiny - about the size of 2 postage stamps. The LM35 in a >surface mount package is on the bottom of the board. The board is >designed to be glued in place with the LM35 in contact with the heat >sink. I use the E6000 neoprene adhesive available at Wal-mart in >their marine department or in calking gun tubes from McMaster. It is >VERY strong but pulls loose from the substrate when stretched. > >I'm going to open source this design so as soon as I get a round tuit, >I'll put the CAD files (KiCAD) and firmware source and hex on >http://www.neon-john.com. > >John >John DeArmond >http://www.neon-john.com >http://www.tnduction.com >Tellico Plains, Occupied TN >See website for email address
The LM35 is supposedly not c-load stable, but most things are c-load stable with enough c. It is a kinda tricky part. -- John Larkin Highland Technology, Inc picosecond timing precision measurement jlarkin att highlandtechnology dott com http://www.highlandtechnology.com
On 4/14/2017 8:10 AM, lasselangwadtchristensen@gmail.com wrote:
> Den fredag den 14. april 2017 kl. 06.12.52 UTC+2 skrev John Larkin: >> On Thu, 13 Apr 2017 15:22:52 -0700 (PDT), Kevin Neilson >> <kevin.neilson@xilinx.com> wrote: >> >>> >>>> We are exactly trying to drive external flops, some 1 ns CMOS parts. >>>> They are clocked by the same clock that is going into the ZYNQ, and >>>> the FPGA needs to set up their D inputs reliably. We can't use a PLL >>>> or DLL inside the FPGA. >>>> >>>> So the problem is that the Xilinx tools are reporting a huge (almost >>>> 3:1) spread in possible prop delay from our applied clock to the iob >>>> outputs. The tools apparently assume the max process+temperature+power >>>> supply limits, without letting us constrain these, and without >>>> assigning any specific blame. >>> >>> Like Lasse said above, you can adjust the output delay with a half-cycle resolution using ODDRs. >> >> I can declare the differential-input clock polarity either way, which >> would shift things 3.5 ns (out of a 7 ns clock.) But the guaranteed >> data-valid window is less than 2 ns. >> > > the point of using DDR was not to shift the clock but to keep the clock and > data aligned > > "regenerating" the clock with a DDR, means the clock and data gets treated the same and both have the same path DDR-IOB so they should track > > getting the output clock aligned with the input clock (if needed) might be possible using the "zero-delay-buffer" mode of the MMCM
He has already said he has some constraint that won't let him use a PLL or DLL inside the FPGA, so I expect he can't use this either. I can't imagine what his constraint is, maybe the clock is not regular like a typical clock but rather is an async data strobe. I don't recall the upper limits of what can be done with the SERDES that most FPGAs have on chip. But they all run at multi-GHz data rates and are clocked much slower with an internal clock multiplier. Likely that can't be used either. It does seem pretty silly to be adjusting timing by varying the temperature of the die. Not just crude, but fairly ineffective as delays are controlled by local temperature and a die can have hot spots. If the full problem were explained perhaps a solution could be offered. Anyone know what a "1 ns CMOS part" means? -- Rick C
On 14 Apr 2017 10:07:41 -0700, Winfield Hill
<hill@rowland.harvard.edu> wrote:


> Thanks John, that is pretty simple. Of course the processor > requires a program, but if you put it up, that's good. And > include the controller code-burning instructions.
I'll put up the code and instructions on programming. I used Atmel's Studio development environment (unfortunately based on Microsoft Studio) for development (use GNU-C suite backend) and use AVRDUDE in a command script to program in production. The genuine Atmel programmer is about $35 from Digikey et al but there are plenty of articles on the web about how to build $5 programmers. I notice that AVRDUDE even has a model based on a parallel port. Check out http://www.avrfreaks.com. John John DeArmond http://www.neon-john.com http://www.tnduction.com Tellico Plains, Occupied TN See website for email address
On Fri, 14 Apr 2017 10:58:11 -0700, John Larkin
<jjlarkin@highland_snip_technology.com> wrote:


>The LM35 is supposedly not c-load stable, but most things are c-load >stable with enough c. > >It is a kinda tricky part.
It is in this design. There are several hundred of these boards in service in our products. I added the cap because the processor was picking up lots of RFI from the intense RF field inside the induction heater. John John DeArmond http://www.neon-john.com http://www.tnduction.com Tellico Plains, Occupied TN See website for email address
On Sat, 15 Apr 2017 10:23:42 -0400, Neon John <no@never.com> wrote:

>On Fri, 14 Apr 2017 10:58:11 -0700, John Larkin ><jjlarkin@highland_snip_technology.com> wrote: > > >>The LM35 is supposedly not c-load stable, but most things are c-load >>stable with enough c. >> >>It is a kinda tricky part. > >It is in this design. There are several hundred of these boards in >service in our products. I added the cap because the processor was >picking up lots of RFI from the intense RF field inside the induction >heater. > >John >John DeArmond >http://www.neon-john.com >http://www.tnduction.com >Tellico Plains, Occupied TN >See website for email address
LM35 output is an emitter follower with a weak pulldown. An ideal RF detector. And it latches up if it possibly can. LM71, SPI interface, is a nice part. -- John Larkin Highland Technology, Inc lunatic fringe electronics
On 2017/04/11 7:26 PM, John Larkin wrote:
> On Tue, 11 Apr 2017 21:09:52 -0400, krw@notreal.com wrote: > >> On Mon, 10 Apr 2017 20:06:57 -0700, John Larkin >> <jjlarkin@highlandtechnology.com> wrote: >> >>> On Mon, 10 Apr 2017 22:15:50 -0400, krw@notreal.com wrote: >>> >>>> On Mon, 10 Apr 2017 18:13:13 -0700, John Larkin >>>> <jjlarkin@highland_snip_technology.com> wrote: >>>> >>>>> We have a ZYNQ whose predicted timing isn't meeting decent margins. >>>>> And we don't want a lot of output pin timing variation in real life. >>>>> >>>>> We can measure the chip temperature with the XADC thing. So, why not >>>>> make an on-chip heater? Use a PLL to clock a bunch of flops, and vary >>>>> the PLL output frequency to keep the chip temp roughly constant. >>>> >>>> Why not? Don't bother with the output frequency, just vary the number >>>> of flops wiggling. >>> >>> That would work too. Maybe have a 2-bit heat control word, to get >>> coarse steps of power dissipation, 4 groups of flops. I suppose a >>> single on-off bit could be a simple bang-bang thermostat. >>> >>> The PLL thing would be elegant, proportional control of all the flops >>> in the distributed heater array. >> >> You can do the same thing with the flops. Use a shift register to >> enable flops in a "thermometer code" sort of thing. Too low - shift >> right. Wait. Still to low - shift right. Wait. Too high - shift >> left... >> >> There are all sorts of algorithms that can be built into spare flops. >>> >>> I'm thinking we could reduce the overall effect of ambient temp >>> changes by some healthy factor, 4:1 or 10:1 or something. >> >> Seems reasonable. IBM used to add heater chips for the same purpose >> (bipolar circuits run faster at high temperature). > > CMOS is slower at high temps. Somewhere between about 1000 and 3000 > PPM/K prop delay. >
Do you use that property of CMOS (slower the warmer it gets) as an automatic negative feedback loop for your heater? John
On 4/15/2017 12:21 PM, John Robertson wrote:
> On 2017/04/11 7:26 PM, John Larkin wrote: >> On Tue, 11 Apr 2017 21:09:52 -0400, krw@notreal.com wrote: >> >>> On Mon, 10 Apr 2017 20:06:57 -0700, John Larkin >>> <jjlarkin@highlandtechnology.com> wrote: >>> >>>> On Mon, 10 Apr 2017 22:15:50 -0400, krw@notreal.com wrote: >>>> >>>>> On Mon, 10 Apr 2017 18:13:13 -0700, John Larkin >>>>> <jjlarkin@highland_snip_technology.com> wrote: >>>>> >>>>>> We have a ZYNQ whose predicted timing isn't meeting decent margins. >>>>>> And we don't want a lot of output pin timing variation in real life. >>>>>> >>>>>> We can measure the chip temperature with the XADC thing. So, why not >>>>>> make an on-chip heater? Use a PLL to clock a bunch of flops, and vary >>>>>> the PLL output frequency to keep the chip temp roughly constant. >>>>> >>>>> Why not? Don't bother with the output frequency, just vary the number >>>>> of flops wiggling. >>>> >>>> That would work too. Maybe have a 2-bit heat control word, to get >>>> coarse steps of power dissipation, 4 groups of flops. I suppose a >>>> single on-off bit could be a simple bang-bang thermostat. >>>> >>>> The PLL thing would be elegant, proportional control of all the flops >>>> in the distributed heater array. >>> >>> You can do the same thing with the flops. Use a shift register to >>> enable flops in a "thermometer code" sort of thing. Too low - shift >>> right. Wait. Still to low - shift right. Wait. Too high - shift >>> left... >>> >>> There are all sorts of algorithms that can be built into spare flops. >>>> >>>> I'm thinking we could reduce the overall effect of ambient temp >>>> changes by some healthy factor, 4:1 or 10:1 or something. >>> >>> Seems reasonable. IBM used to add heater chips for the same purpose >>> (bipolar circuits run faster at high temperature). >> >> CMOS is slower at high temps. Somewhere between about 1000 and 3000 >> PPM/K prop delay. >> > > Do you use that property of CMOS (slower the warmer it gets) as an > automatic negative feedback loop for your heater?
That would likely not work nearly as well as directly measuring the temperature of the die. Notice he said the chip has a built in thermometer. The only issue with using the thermometer is the temperature across the die will vary. Using the delay to control the heater might work well in concept, but would be hard to measure and still only work for the output being measured. Any other outputs will be spread around the die and so not isothermal. But mostly the timing would be hard to measure. He has an oven/refrigerator. He could measure the change in timing over temperature for some number of samples. This would give him an idea of how much spread is involved. There are multiple sources of timing spread and he can control one and sort of control another. He wants an idea of how much timing spread is left. -- Rick C
On 2017/04/15 9:37 AM, rickman wrote:
> On 4/15/2017 12:21 PM, John Robertson wrote: >> On 2017/04/11 7:26 PM, John Larkin wrote: >>> On Tue, 11 Apr 2017 21:09:52 -0400, krw@notreal.com wrote: >>> >>>> On Mon, 10 Apr 2017 20:06:57 -0700, John Larkin >>>> <jjlarkin@highlandtechnology.com> wrote: >>>> >>>>> On Mon, 10 Apr 2017 22:15:50 -0400, krw@notreal.com wrote: >>>>> >>>>>> On Mon, 10 Apr 2017 18:13:13 -0700, John Larkin >>>>>> <jjlarkin@highland_snip_technology.com> wrote: >>>>>> >>>>>>> We have a ZYNQ whose predicted timing isn't meeting decent margins. >>>>>>> And we don't want a lot of output pin timing variation in real life. >>>>>>> >>>>>>> We can measure the chip temperature with the XADC thing. So, why not >>>>>>> make an on-chip heater? Use a PLL to clock a bunch of flops, and >>>>>>> vary >>>>>>> the PLL output frequency to keep the chip temp roughly constant. >>>>>> >>>>>> Why not? Don't bother with the output frequency, just vary the >>>>>> number >>>>>> of flops wiggling. >>>>> >>>>> That would work too. Maybe have a 2-bit heat control word, to get >>>>> coarse steps of power dissipation, 4 groups of flops. I suppose a >>>>> single on-off bit could be a simple bang-bang thermostat. >>>>> >>>>> The PLL thing would be elegant, proportional control of all the flops >>>>> in the distributed heater array. >>>> >>>> You can do the same thing with the flops. Use a shift register to >>>> enable flops in a "thermometer code" sort of thing. Too low - shift >>>> right. Wait. Still to low - shift right. Wait. Too high - shift >>>> left... >>>> >>>> There are all sorts of algorithms that can be built into spare flops. >>>>> >>>>> I'm thinking we could reduce the overall effect of ambient temp >>>>> changes by some healthy factor, 4:1 or 10:1 or something. >>>> >>>> Seems reasonable. IBM used to add heater chips for the same purpose >>>> (bipolar circuits run faster at high temperature). >>> >>> CMOS is slower at high temps. Somewhere between about 1000 and 3000 >>> PPM/K prop delay. >>> >> >> Do you use that property of CMOS (slower the warmer it gets) as an >> automatic negative feedback loop for your heater? > > That would likely not work nearly as well as directly measuring the > temperature of the die. Notice he said the chip has a built in > thermometer. The only issue with using the thermometer is the > temperature across the die will vary. Using the delay to control the > heater might work well in concept, but would be hard to measure and > still only work for the output being measured. Any other outputs will > be spread around the die and so not isothermal. But mostly the timing > would be hard to measure. > > He has an oven/refrigerator. He could measure the change in timing over > temperature for some number of samples. This would give him an idea of > how much spread is involved. There are multiple sources of timing > spread and he can control one and sort of control another. He wants an > idea of how much timing spread is left. >
Thanks for the explanation. I am not a qualified board designer, just a bit of a hacker designing and making the few I need for my restoration business. It is nice to get the background of design considerations as I find that information useful in determining where designs have gone wrong in our equipment and try to make improvements to the systems. As an example - Common/Ground designs in early arcade games were not always at their best. A number of early electronic pinball games used to burn up driver transistors and coils at random until I traced the problem - which was a design error where all the commons (MPU, Audio, Solenoids, Lamps) came together at the regulator board through several different pins, and as each pin connection oxidized slightly it allowed ground potential differences between the MPU and the solenoid logic grounds, leading to the transistors being slightly biased on... And this game logic had been designed by Rockwell. John