Teensy CC Dummy Load +300W

Status
Not open for further replies.
Display? ILI9341 touchscreens

The ILI9341 touchscreens are cheap and good. We bought several from BuyDisplay (nicely packed, all work well) as well as from PJRC (all good) and eBay (many broken in shipping). For the price, full color, and touchscreen you get a full UI or GUI. We forked Paul's library here and modified some examples: ILI9341_t3 and wrote some helper code for scrolling etc: ILI9341_helper. We use it on some new manufacturing test fixtures and really like it. It eliminates the need to have a PC at the manufacturing site. The users like it to since it is simple, small, and easy to manage.

For temp sensors we like the TMP275, direct to I2C. As long as they are thermally connected to the FETs (a PCB trace from the FET heatsink or from the FETs TH pads to under the sensor will do) they will do fine and are very simple and cheap to use. Library on github: Systronix_TMP275.

All the fans we use lately are 24V, with power supplies of course 24V. We use the OKI 78SR series switchers followed by linear regulators as needed. PC fans as others have noted are 12V and lots of them are available with fluid or ball bearings.

For getting a lot more digital outputs from Teensy we like the PCA9557 I2C 8-bit I/O register, we are using a number of them on a new product. PCA9557 Library. We have now many billions of test cycles on multiple boards, using our fork of the wonderful @nox771 i2c_t3 library.

I like that you added remote sensing, if you need to know voltage at the remote supply points. If all you want is CC then all you care about is the load current of course; voltage drop on the wires doesn't matter.

You've probably seen Arachnid Labs Re:load pro on Tindie. It's only 25W sink without a fan. I have the re:load 2 and it's fine.

We had/have some 300W to 450W supplies to test, so I bought a Tekpower TP3710A on Amazon for $350, 150W, and supplement it with some huge ceramic resistors rated for 120W each, 1-8 ohms, in series and or parallel as needed, plus a fan, to get up to higher loads.

My favorite little opamp for current sinks is the LMP7716 series, single supply. We've used it for some pretty precise laser diode driver CC designs. We drive FETs with it and also amplify the current sense resistor to make it readable for monitor and display.

Just found out about this project today, nice to see it's still moving along.
 
Hi, I am back on the dummy load bandwagon and decided to chime in once again. Reviewing your latest schematic, I noticed that you plan on using IRFP150MPbF MOSFETs. Pouring over the datasheet for this MOSFET, I noticed immediately that it is only characterized for safe operation to a maximum pulse width of 10 ms. Therefore, it is in my opinion not a good candidate for use with a load that can operate at DC.

I think that MOSFETs that are characterized all the way down to DC should be employed, instead. Ixys (e.g., Linear L2 series) and other companies make MOSFETs that fit this requirement - safe and well characterized linear mode operation via an extended FBSOA (Forward Bias Safe Operating Area). I will admit that these MOSFETs are (several dollars) more expensive than the average $1 made in China types, but do offer a manufacturer guaranteed operating area across temperature and load times in excess of 10 ms.

You may want to visit Kerry Wong's dummy load page at: A 400W (1kW Peak) 100A Electronic Load Using Linear MOSFETs, and view the YouTube video linked from that page for further details on this subject.

My interest in building a dummy load is very similar to yours, but I am particularly interested in higher currents without taking very significant hits in measurement resolution (which may not be possible):

Voltage: 0-24 V
Current: <200 A
Power: 1-2 kW (A beefy heatsink and convection cooling will be used)
Control: Voltage to 1 mV, Current to 1 mA, Resistance to 1 Ω
Monitoring: Voltage to 1 mV, Current to 1 mA, Resistance to 1 Ω (or 0.1 Ω, if possible), Temperature to 0.1° C
 
Last edited:
@SharpEars: "I noticed immediately that it is only characterized for safe operation to a maximum pulse width of 10 ms." Actually, no. Not sure where you got this information. The Infineon IRFP150MPbF data sheet shows rated for an absolute max continuous drain current of 30 amps at 100 deg C, more if you can keep it cooler. And 140 A if pulsed. Those pulsed current ratings can be massive if the duty cycle is low. But they are an artifact of characterization, under those specific circumstances, not an operating limit under all circumstances. And you don't want to run the device at the absolute max ratings, of course, if you want it to last a long time. The limiting factor in current handling with a DC load is mostly the junction temperature. This package type may not be as good at conducting heat out as a TO-220, but Rdson, Vgs, etc all are pretty nice. I haven't had a chance to look for a possible better candidate device.

We now have a need for a 300W load to test a 24V power supply when it comes in for service. There we need to load it to 300W long enough to be sure it's up to full operating temperature, the fan is spinning at the right speed, etc. It's not urgent but it needs to get done this year. So I am looking at how best to accomplish this, with renewed interest in this thread.
 
Last edited:
@SharpEars.
Ah, thank you for reminding me, I need to update that. I'm actually leaning towards the IRFP250N which provides a higher voltage rating. Its also used in a few off the shelf Bench Electric Loads .
As for the Safe Operating Area, I should be fine. I don't plan to put more then 4.095A into each of the 5 Fets. The PCB has enough copper to allow for up to 40A but I would probably need a different Reverse Polarity setup or have to remove it.
The hardest part is making sure you don't exceed the junction temperature ratings, which can be hard since you cant read the true junction temperature. Those safe operating are graphs have there limits, most of them are at a junction of 25C, and usually they are calculated not actually tested to.

If your looking for massive amounts of current then ya you have to go with the Linear L2's or a crap ton of little fets, kind of what I did.

Just looking at your specs, reminds me that I could have used a 45V 250A version about 3 months ago on a project at work, instead I used some large Brake resistors we had at work.

Voltage: 0-24 V
Current: <200 A
Pretty low voltage and really high current means you need really low system resistance. 3.3V @ 200A = 16.5mR 5V @ 200A = 25mR, 12V @ 200A = 60mR, 24V @ 200 = 120mR. I'm expect about 175mR for my setup at full load.

Control: Voltage to 1 mV, Current to 1 mA, Resistance to 1 Ω
Monitoring: Voltage to 1 mV, Current to 1 mA, Resistance to 1 Ω (or 0.1 Ω, if possible), Temperature to 0.1° C
1mV and 1mA should be pretty easy, I screwed up and went with a really high divider for voltage so I get 20mV resolution at 12Bit. My current is 1mA resolution at 12Bit. I may add an external SPI ADC to increase my resolution, i'm going to see what oversampling can get me first. Temperate is pretty easy provided you get your divider optimized for the range you need and you run 12 bit or more. Resistance is just V/A unless you want to do resistance control instead of current, I have seen some examples of power control and resistance. Don't really have a need for them and I have pretty quick control with a Teensy so I could just program the PID to work with power or resistance.

If you measure current with 1 ADC you would need...
200A Range = 18Bit = 763uA resolution, 20Bit = 191uA resolution
Or with 2 ADC
100A Range = 16Bit = 1.53mA resolution ,18Bit = 381uA resolution
Or with 3 ADC
66.67A Range = 16Bit = 1.53mA resolution ,18Bit = 254uA resolution
Or with 4 ADC
50A Range = 16Bit = 1.02mA resolution ,18Bit = 191uA resolution
Or with 5 ADC
40.96A Range = 16Bit = 625uA Resolution, 18Bit = 156uA Resolution
Limiting factor will be the number of Fets.

Voltage will need.
24V range = 16Bit = 366uV resolution, 18 = 91uV resolution

@bboyes, progress has been slow, ATM i'm working on getting the ILI9341 screen code sorted out. Never been a fan of how much flicker they can produce, hoping the work KurtE and FrankB have done will sort it out. Not sure how much longer this will take to complete. I don't want to make PCB's and then have to rework the crap out of them because of the LCD. You could build a working unit with Heatsink/Mosfets/Sense resistors/2 opamps and a pot on a protoboard. My first prototype had only 1 amp driving 5 fets with 1 sense resistor, it worked because they are 1200V binned parts I had laying around lol.

Render of the design with acrylic housing, the PCB shown is an older version that is only 100mmx150mm.
I have made a few more alterations since my last PCB/Schematic upload also.
QfKtGsS.png


Prototype Dummy Load, middle Fet was hitting 113C because they were not balanced.
https://imgur.com/UlzphKw
 
Last edited:
@SharpEars: "I noticed immediately that it is only characterized for safe operation to a maximum pulse width of 10 ms." Actually, no. Not sure where you got this information. The Infineon IRFP150MPbF data sheet shows rated for an absolute max continuous drain current of 30 amps at 100 deg C, more if you can keep it cooler. And 140 A if pulsed. Those pulsed current ratings can be massive if the duty cycle is low. But they are an artifact of characterization, under those specific circumstances, not an operating limit under all circumstances. The limiting factor in current handling with a DC load is mostly the junction temperature. This package type may not be as good at conducting heat out as a TO-220, but Rdson, Vgs, etc all are pretty nice. I haven't had a chance to look for a possible better candidate device.

Looking at Figure 8 of the Datasheet at the link you posted, you will notice that the safe operating area for this Mosfet is only characterized to 10 ms. The implication is that we do not know what the DC curve looks like or even whether operation for periods in excess of 10 ms (at any reasonable current) will damage the device. Even if the device will not be damaged, what does the 100 ms curve look like? The DC curve? We just don't know, because the manufacturer has not characterized it for this mode of operation (per Figure 8).

Also, the absolute max continuous drain current may be one aspect, but the actual maximum is a function of Vds, Vgs, pulse width, TJ, and Rds(on), hence Figure 8. This and most other MOSFETs are not meant for operation in the ohmic (i.e., triode) region for any significant amount of time (i.e., they are meant to be used as a switch), which is why they are not characterized for this mode of operation.
 
Last edited:
@Donziboy2, the IRFP250n is also not characterized for linear operation. I don't know why pro load manufacturers use it, unless they did their own statistical analysis of failure rate.

It is a very good idea to watch Kerry Wong's YouTube video on the subject where he goes into quite a bit of detail on this topic (i.e., characterization of MOSFETs for linear mode operation):

https://www.youtube.com/watch?v=Vr6YsT403DM
 
@Donziboy2, the IRFP250n is also not characterized for linear operation. I don't know why pro load manufacturers use it, unless they did their own statistical analysis of failure rate.

It is a very good idea to watch Kerry Wong's YouTube video on the subject where he goes into quite a bit of detail on this topic (i.e., characterization of MOSFETs for linear mode operation):

https://www.youtube.com/watch?v=Vr6YsT403DM

Actually, you can just calculate the Junction temperature using Junction to Case, Case to Sink and knowing the Sink to Air and Air values.
Yes I have watched his videos and about 20 others from various people.

And just so we are clear, the Linear L2 SOA are calculated not tested to. I have not seen any new mosfet datasheets in years that actually have a true SOA graph, if its all straight lines its just calculate.
And there is no way in hell i'm going to believe the Linear L2 SOA, they show a case temp of 75 and Junction of 150C and claim 200 Watt dissipation (10V @ 20A includes a TO220 package...) inside the safe DC area.
 
Last edited:
A few possible upgrades are available to consider.

Assume 35C ambient, a HS Temp Rise of 45C (HS = 80C) and an Rcs of 0.24. (Assumes a perfect circuit with 100% load on the HS){Heatsink thermal resistance estimated at 0.15}
At full load, each load FET will see around 49.5W. (Sense resistor and P-FET seeing the remainder)
The IRFP260M has a Rjc of 0.5 vs the 0.7 of the IRFP250N.
IRFP250N, Case Temp = 91.9C, Junction Temp = 126.5C (Overload for 150C Junction would be 375W)
IRFP260M, Case Temp = 91.9C, Junction Temp = 116.6C (Overload for 150C Junction would be 410W)
Thats a 10C difference for a $0.50 increase in price each Fet.

There is also the uniFET series from Fairchild that has even better Rjc of 0.26 (FDA69N25). They are a slightly different package though.
FDA69N25, Case Temp = 91.9C, Junction Temp = 104.8C (Overload for 150C Junction would be 480W)
Thats a 21.7C difference for a $1.59 increase in price each Fet.

The Cheapest Linear L2 Fet in the same range as the others is the IXTQ60N20L2, its $14.28 and has an Rjc of 0.23. Same package as the Fairchild FDA69N25.
IXTQ60N20L2, Case Temp = 91.9C, Junction Temp = 103.3C (Overload for 150C Junction would be 490W)
Thats a 23.2C difference for a $11.97 increase in price each Fet.

As you can see in all the examples the Junction Temperature is well below the rated 175C. I'm going to update my schematic to the IRFP260M and see how hard it would be to create a dual footprint that can handle TO-247 and TO-3P. Edit2... Looks as if the pin layout is the same the TO-247 has slightly larger pins but both are same layout spacing. TO-247 is also slightly larger then the TO-3P so if the TO-247 fits the TO-3P will be fine.

In case your wondering how i'm getting all this its a combination of datasheets and an excel spreadsheet I created that gives me breakdowns of relevent data.

Edit...
Also for Heatsink Thermal Resistance I used myheatsinks.com

Settings as follows.
Aluminum(extruded)
Width 69mm
Length 150mm
Height 39mm
Base Thickness 4.6mm
Fin Thickness 0.7mm
Number of Fins 27

With a 92mm fan. LFM-CFM Calculator
100 LFM = 6.25 CFM
200 LFM = 12.5 CFM
300 LFM = 18.75 CFM
400 LFM = 25 CFM
500 LFM = 31.25 CFM
600 LFM = 37.5 CFM
700 LFM = 43.75 CFM
800 LFM = 50 CFM
900 LFM = 56.25 CFM
1000 LFM = 62.5 CFM
 
Last edited:
And just so we are clear, the Linear L2 SOA are calculated not tested to. I have not seen any new mosfet datasheets in years that actually have a true SOA graph, if its all straight lines its just calculate.

You are clearly referring to the thermal instability limitation which would often cause the downtrend SOA line to have a steeper downward slope at higher voltages (and which requires actual measurement vs. theoretical calculations). This would derate the currents shown in the SOA further, unless the manufacturer already performed this derating and gave a conservative SOA graph, but not by much and only at higher voltages - a relative statement that is very mosfet dependant and I will admit this aspec is somewhat unpredictable and needs to be measured to be reliable. I will also concede that a straight down trending line on the right side of a DC SOA curve is clearly indicative of no thermal instability limitation testing being done (or a perfect device with regard to thermal instability, which is extremely unlikely if not downright impossible, or a very pesimistic curve (i.e., the device is capable of more current, but the manufacturer decided to play it safe)). The moral here is that unless you are near or at the celing threshold of the SOA curve combined with higher voltages, the thermal instability derating is not generally something you need to worry about, but every device is different and it would certainly be nice if manufacturers started doing actual physical measurement based characterization (e.g., TI has been doing measurement based characterization for all their MOSFETs this since 2014).

And there is no way in hell i'm going to believe the Linear L2 SOA, they show a case temp of 75 and Junction of 150C and claim 200 Watt dissipation (10V @ 20A includes a TO220 package...) inside the safe DC area.

I think the implication here is "with adequate cooling," which for that combination may or may not exist or may be extreme. The manufacturer doesn't tell you how or whether it is even possible to maintain that case temp, just that: If you could, then...

I understand that the max safe area for DC is calculated (as are the other areas), but at least they did enough DC testing on their parts to specifically recommend their use for DC (unlike most other manufacturers, which still give you safe area estimates and only up to 10 ms or if you really get lucky, 100 ms, which for a long use (i.e., hours at a time) DC load are meaningless unless you want to play your own statistical games and extrapolate the safe area). On almost all mosfets I looked at with an area for 100 ms, it was way below the 10 ms area. Who knows where the DC area would fall, if uncharacterized?

The last thing I want to do is to play guessing games at 50+ Amps DC (at 5-24 V).
 
Last edited:
Thats a 23.2C difference for a $11.97 increase in price each Fet.

I am just going to reply to the pricing aspect of this for now, I still have to digest the rest of the info:

Consider buying them on eBay, especially the Buy it now or Make an offer variety where you can low-ball, from reputable sellers as (new [unused] old stock (and make sure they are genuine) parts). You can save a bundle and get a SOT-227B packaged MOSFET, which is ideal for this use case (and not TO-220/TO-264/other flimsy TO-ANYTHING!), if you want awesome RthJC and RthCS figures, which are the ones that really matter because it's all about cooling these suckers (at high currents and reasonable voltages).

For example, I just bought: IXFN280N085-ND for $9 apiece (qty: 5) and that included shipping, by making an offer that was accepted.
 
The last thing I want to do is to play guessing games at 50+ Amps DC (at 5-24 V).

There is no guessing involved, its all math.
The SAO is a quick lookup guide for engineers, no matter what kind of fancy label they place on that mosfet. Most manufacturers provide a 25C Case to 175C Junction temperature only since that is the worst case scenario, if you pulse current into a device that's already 175C for more then a few mS your going to see smoke. It provides an at the glance chart for engineers to tell if that is an acceptable device to use. After that its up to the engineer to read the full datasheet and do the math to determine if it is the correct mosfet for the job.

The reason most manufacturers don't bother with DC curves or 100mS curves is because 99.9% of engineers out there are looking for switches, not linear devices. Switches are ment to be fast with low losses. Linear operation is the opposite of that.

$9 for devices that usually start at $30 a piece is not bad. You could drive 5 of those with the this board if you ran external buswork and sense resistors. You would need one hell of a cooling solution though. Buying on eBay is nice until the stock runs out, remember I'm not just making one of these, I'm trying to create a board that others can build. If I base it on parts that cant be gotten anymore or are much more expensive it will be less of a bargain. You can get name brand 300W bench supplies starting at $800. And there is plenty of no name or knockoffs on eBay for $250-$300 in the same wattage range, if they are anything like many of the no name/knockoff bench power supplies they are fires waiting to happen.



In other news I've started playing with the ILI9341, so far its hit and miss. I can update the screen fairly fast but it still takes around 30mS to rewrite the entire screen, I can probably get that down to 10-15mS if I only draw the numbers and leave everything else as static. The downside is that if every number needs to change it will take a while, meaning I will have to cut each screen update into several passes depending on how much information is provided. I'm hoping that there is a chance to move the screen updates to SPIDMA since right now sending data is done by the MCU. I have tried increasing the SPI from 30Mhz to 60Mhz but have some odd background screen flashing. I will try 45Mhz today and see if the flashing persists.

I also have the XPT2046 sharing the same SPI line as the LCD. Seems to work pretty well with no issues so far, the most time ive seen to do a touch read is 2uS.

Edit. seeing 84uS for touch every once and a while.
 
Last edited:
There is no guessing involved, its all math.
$9 for devices that usually start at $30 a piece is not bad. You could drive 5 of those with the this board if you ran external buswork and sense resistors. You would need one hell of a cooling solution though

One hell of a cooling solution you say? Well I really got lucky in this department and picked this sucker up for a total shipped price of $45 on eBay:

s-l1600.jpg s-l1600.jpg

For size references:

heatsink_profile.jpg


I will mount two high static pressure 120 mm fans side by side to push air through it (and maybe two more to pull on the other side?). Testing will show what works to get 1000+ W dissipated by this thing.

Who knows what this sold for originally, but if I was a betting man, I would say north of $200 for sure. It weighs over 25 lbs (and this is made of aluminum - lots of aluminum!).

What looks like left over heat sink compound is actually unknown mystery black stuff that I have not been able to get off no matter what chemical I've tried, so it looks like it's baked into the aluminum itself and will have to get sanded off. It would be interesting to know what three devices were originally mounted on this cool looking (tailor made?) heat sink.
 
Last edited:
Ok, latest schematic and pcb render.

Few items im still working out.
1. LCD, so far it looks like I may be SOL with using the LCD on the T3.6 and getting a fast response time from the Teensy. Worst case I will be forced to add a T3.2 or LC to do the grunt work for the screen. I also need to confirm that using both touch and lcd on the same SPI lines will prove a good idea long term.
2. Noise, some of my testing has shown a good amount of noise, originally I was going to use 3.3V to power the LCD but found a significant amount of noise coming from and going to the LCD. To combat it I have gone back to 5V and added some ceramics to help squash the noise there, I have also added series resistors to all lines going to/from the LCD. I still need to see what noise will be introduced with the LCD Backlight driver and the Fan PWM control.
3. I'm on the fence in terms of the Voltage readings. Since I went with a decently high range my resolution went down the drain. I can either over-sample and hope to get a decent 16bit value at 800Ksps or go with an external ADC to measure the 2 voltage's. Even at 16Bit resolution the best we will get is 1.25mV and I would expect some noise. There are a few 18bit adc's to consider the issue is accuracy, sample rate and data rate.


Schematic
Recent additions to the schematic include micro USB power input, on/off power control, Piezo buzzer, and jumpers to disable each FET(calibration or if you just want a specific number of fets on)..

Wire holes are 3.2mm, will accept 10AWG wire or M3 screw. May push it to 3.5mm allowing 8AWG to fit.
1V75YhA.png
 
Heck, I'd go for 24-bit ADCs (with 19-20 ENOB) if I could get them to communicate with the Teensy easily (and to get a max REF voltage of 5 V or more, if possible). I bought a board on ali-express, but there was no library support and I couldn't get it to work.
 
Back when I started this project I bought two 300mmx69mmx36mm heatsinks for $33 shipped. Now I see them going for roughly twice that amount. And I only needed a 150mm piece, you can buy the 150mm pieces for around $15 now.

The ADC upgrade is a tough choice, it adds cost and anything above 16bit will be slow unless your willing to pay the premium for the really nice one's. It also adds more complexity to the project and more constraints.

I think we can live with 14bit resolution which should be ok at 200Ksps.
14bit resolution will be 5mV which is 0.1% at 5V or 0.006% at max V input(81.92V). Or another way of looking at it is a load of 15V @ 20A, the maximum we would miss is 100mW of the 300W load or 0.03%. I think that's reasonable for this project. I've also added some notes on the schematic for the Voltage channel dividers, in case the end user only wants 40.96V range instead of 81.92V.

Speaking of the ADC's I had some issues with the DMA ADC configuration, the library does not like none base 2 values, so using 6 Channels on ADC0 and 6 on ADC1 was not possible so I have 8 channels on ADC0 and 4 on ADC1. I just noticed I need to make a small move so that Vin, Vin-true, Q5temp and Iout5 are on ADC1. This will allow me to do up to 200Ksps on the 4 channels of ADC1 and 100Ksps on the other 8 on ADC0.
 
Are there any devices any more that even use more than 24 V DC any more? It seems like it's 24 V or less for pretty much everything these days, with 12 V becoming the new high. The trend is clearly towards lower voltage and higher current. Also, battery wise it's pretty much 6/12/24 V. I guess 48 V was a thing at some point, but it seems to be dead now.

This is why I am setting a 24 V max for my load and trying to maximize the current side of things at that voltage and lower (e.g., so very low Rds on MOSFETs).
 
36/48 is still the primary voltage for golf carts and many solar systems use 36-72V along with transit and commercial industry.

I just recently finished testing and delivered a 650V to 37.5V 175A power supply for a certain mouse eared customer.
 
I guess I was ignorant of the commercial vehicle sector when it comes to high levels of DC - was thinking more of home/shop/factory (stationary) electronic devices...
 
I am really liking the specs of the INA233AIDGST from TI. It is a High-Side or Low-Side Measurement, Bidirectional Current and Power Monitor (16-bit ADC built in) which seems perfect for use with a current load. The only problem is reconciling the price difference between the chip itself ($3.06) and the demo board is like $50. If I can find a usable board/module for <=$15 with this chip it be well worthwhile. I'd solder it myself, but these things are tiny - the notorious 0.5 mm dot pitch which makes manual soldering damn near impossible.

The INA233EVM evaluation board looks great, except for the crazy high price of $50.
 
I am really liking the specs of the INA233AIDGST from TI. It is a High-Side or Low-Side Measurement, Bidirectional Current and Power Monitor (16-bit ADC built in) which seems perfect for use with a current load. The only problem is reconciling the price difference between the chip itself ($3.06) and the demo board is like $50. If I can find a usable board/module for <=$15 with this chip it be well worthwhile. I'd solder it myself, but these things are tiny - the notorious 0.5 mm dot pitch which makes manual soldering damn near impossible.

The INA233EVM evaluation board looks great, except for the crazy high price of $50.

Lol, the TPS55340 on my board is 0.65mm Pitch. And i've hand soldered 0.5mm pitch onto 1mm pitch SO breakouts before. (fun stuff)
 
Been working with KurtE to solve some issues with DMA SPI for the ILI9341. Got it working but it takes more time to do operations then I was expecting. A single print operation takes around 200uS@240MHz, so if we had 10 changing numbers on the screen it would take 2mS to update all of them before we could hand it off to the DMA to update the screen.

If we do just pure constant current mode that's not an issue, but if we want to do constant power or constant resistance that's a long time to be spending not adjusting the outputs. My initial goal was a 5KHz minimum loop, as it stands 2KHz is the most we can ever hope to achieve without moving the screen to a separate micro. At 2KHz we would be able to change 1 screen value and then have to move on to other things, so it could take 10-20 loop cycles to complete a full screen update.

I'm going to continue poking around to find faster ways but I don't have high hopes of squeezing sub 100uS updates out of it.
What do you guys think? Should we live with this limitation? Should we add connections to say Serial1 so that later on we can add a second Micro to run the screen?
 
@Donziboy2, You could scatter the screen updates across intervals (e.g., print only say 20% of the info each interval), so as not to delay processing too much for that interval.

Also, how about ILI9841 boards, they offer 320x480 for less than ten bucks?
 
Last edited:
@Donziboy2, You could scatter the screen updates across intervals (e.g., print only say 20% of the info each interval), so as not to delay processing too much for that interval.

Also, how about ILI9841 boards, they offer 320x480 for less than ten bucks?

Yep breaking it up was part of the plan, I was just hoping not to have to break it up as much as I will need to, i've also managed to push it to 240Mhz CPU with 120Mhz FBus and 60Mhz SPI. If I reduce the maximum size of the values I print from 9chars to 6 (5 numbers and a decimal) I can get it to about 100uS for the largest updates at text size 3(need to try bigger and see where that gets me). Making 200uS loops possible.

Paul teased us a few months back with the possibility of a PJRC 3.5" Touch Screen. Then he got busy and it was put on hold. The downside to that is that the Teensy 3.6 cant hold the Frame buffer for the larger 480*320 screen meaning we would be back to slow transfers. Meaning no other way but to use a second micro to run the screen. I really would like to avoid adding another micro if possible.

Teensy 3.6 Memory is 262144 Bytes
320 x 240 screen needs 153600 Bytes
480 x 320 screen needs 307200 Bytes

I do have two of these FT810 guys on the way.
But they are fairly large, my plexiglass front case is only 6.38" x 3.86". And the screen bezel is 5.28" x 3.46", I would have to mount the screen on top of the case lol.
 
Spent most of yesterday staring at an O-Scope and 3 multimeters.
Tested the PWM fan control on a Cooler Master Blade Master 92 fan. Added a small pull-up on the Fan PWM line since the internal one of the fan was really large and hardly pulled the line up(spec says max of 5.25V and most nowadays are setup for 3.3 Logic, figured 5V was safer for noise). Also found that the fan uses more continuous current then the box states (290mA vs 260mA on box). See Schematic for HW Test Notes. Found that the Teensy can trigger on a voltage as low as 1.6V(Falling) accurately for interrupts. Also tested the LED pwm driver, the P-chan I used was a cheap Chinese Ebayer but it work surprisingly well, same can be said for the N-chan I used for the PWM controller. Both the Fan and Backlight have dedicated power traces with large/small capacitors to reduce induced noise.

Latest Schematic

Spent a few hours today playing with a few functions to make printing numbers easier. Instead of copy paste hell I just call a function with X, Y, Textsize and Value.
Hit a snag with Floats and printing also that took me a few hours of scratching to figure out and come up with a workaround. For some reason numbers like 999.999 come out as 1000.000 but the if statement I use to send number of digits after the decimal sees 999.999 so I get 1000.000 printed instead of 999.999, which overwrites stuff at the end of what should be a 6 character printout. It seems the safe rounding point is 999.995, the sixth number has to be 5 or it messes up the output. At-least the error is small enough not to be visually noticeable.

The below code produces values with 2-4 digits right of the decimal, a total of 5 digits and 1 decimal at any one time, values above 1000(999.995) are switched over to Kilo, I stop at millions since that would be out of scope for any number i'm using, it also does not do negative numbers larger then -9.99995 without going out of bounds. For this project I don't see negative numbers as being an issue.

Code:
void printFloat5Char2Dec(uint16_t posx, uint16_t posy, uint8_t Textsize, float value){   
    

      tft.setTextColor(ILI9341_WHITE);
      tft.fillRect(posx, posy, (Textsize*6*7), (Textsize*8), ILI9341_BLACK);
      tft.setTextSize(Textsize);                                            
      if(value < 9.99995){       //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character.
      tft.setCursor(posx, posy);       
      tft.print(value, 4);            } 
      else if(value < 99.9995){  //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character.
      tft.setCursor(posx, posy);       
      tft.print(value, 3);            }      
      else if(value < 999.995){  //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character. 
      tft.setCursor(posx, posy);       
      tft.print(value, 2);            }
      else if(value < 9999.95){  //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character. 
      float a = (value / 1000);                            
      tft.setCursor(posx, posy);
      tft.print(a, 4);
      tft.print("K");                 }
      else if(value < 99999.5){  //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character. 
      float a = (value / 1000);                            
      tft.setCursor(posx, posy);
      tft.print(a, 3);
      tft.print("K");                 }
      else if(value < 999995){   //weird glitch when transitioning up, no idea why this kind of fixes it, prevents overflow to next character. 
      float a = (value / 1000);                            
      tft.setCursor(posx, posy);
      tft.print(a, 2);
      tft.print("K");                 }                                       
      else {
      tft.setCursor(posx, posy);
      tft.print("error");             }
             
      }

My next task is setting up a Debug Menu with all the ADC data listed on the screen so I can start testing the DMA and make sure I don't have any conflicts with the LCD and ADC's.

I'm also on the fence about adding the ability to measure VCC, knowing what the input voltage is to the system would be handy for say running on batteries? The downside is I would have add 3 more ADC's on top of that to get to 8 from the 4 I'm using on ADC1 ATM. ADC DMA only works with 1?,2,4,8 configurations (have not tested 1, may not work). 2 of the possible additions would be VREF_OUT and MCU Temperature. Knowing the Micro temp could be handy and the VREF_OUT is the internal 1.2V ref, which we could compare with our 2.048V ref. So if the 2.048 Ref started to move out of spec we would see it. For the last one I have no clue, maybe just sample Vin_True on a second line to increase usable resolution.
 
Status
Not open for further replies.
Back
Top