Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
As shown in attachment we are using BTS716G for Solenoid driver. In our design there are 16 solenoid.
The block attached here shows driver for 4 solenoid, other block are ideal to this.


Now our question is how we can detect the Open load error or Over temperature error from a single signal for two channels.
We have seen the Truth table given in datasheet but, we are confuse at how we can detect the error.
Suppose from 16 solenoid if we are going to use on 13 channel then there may be :
1. Channel 1-12 are used identically.
2. Channel 13 is used but its sibling pair Channel 14 is left open always
3. Channel 15 and 16 is also left open always

Now what if channel 13 gets over temperature in field, how can we detect that from Status signal.
What will happen when one channel of two sibling channel pair, is over temperature and other channel is open load?
Please suggest us the logic so we can detect the error in Microcontroller.
2 Replies
Not applicable
Now first of all I am making "Permanent Short Circuit" at Output of BTS716G to generate Over Temperature conditions. Correct me if I am wrong here.

I have created a complete practical test for below Truth Table:


"NA" conditions are which, when Short and Open load condition are present for same channel, as obvious which are not possible. Red indication are cause of error as we think.

My requirement is to design a logic (Software) which takes PWM Input1 , PWM Input 2 and Error Status signal as Input and provide Two Fault 1 and Fault 2 output. I hope I am not confusing here.


Please help me to design logic for above picture.
lock attach
Attachments are accessible only for community members.
Not applicable

Thanks for taking the interest in others pain.

I have just completed software logic and tested it with only software simulation. Yet hardware testing is pending. Just a different approach.

1. I have taken the reading in a single register called "ReadingValue".
//Here ReadingValue is a copy of last reading
//of pin no 3,5 and 4
//0th bit is INPWM 1
//1st bit is INPWM 2
//2nd bit is Status1/2

Here Status1/2 is active low.

Example of Reading value:
(0x00 : Status1/2 = 0, INPWM2 = 0, INPWM1 = 0)
(0x04 : Status1/2 = 1, INPWM2 = 0, INPWM1 = 0)
(0x05 : Status1/2 = 1, INPWM2 = 0, INPWM1 = 1)
(0x07 : Status1/2 = 1, INPWM2 = 1, INPWM1 = 1)

2. There are below mentioned error state possible for any input
//Possible error state means
//0 - No Error
//1 - Open Load Channel 1
//2 - Open Load Channel 2
//3 - Open Load Channel 2, Open Load Channel 1
//4 - Open Load Channel 2
//6 - Over Temprature Channel 1,Open Load Channel 2
//8 - Over Temprature Channel 2
//9 - Over Temprature Channel 2, Open Load Channel 1
//12 - Over Temprature Channel 2, Over Temprature Channel 1

By close review of TT, I have calculated possible error state for any input:
Reading Value = 0 -->>Possible Error State = {1,2,3,6,9}
Reading Value = 1 -->>Possible Error State = {2,3,4,6,12}
Reading Value = 2 -->>Possible Error State = {1,3,8,9,12}
Reading Value = 3 -->>Possible Error State = {4,6,8,9,12}
Reading Value = 4 -->>Possible Error State = {0,4,8,12}
Reading Value = 5 -->>Possible Error State = {0,1,8,9}
Reading Value = 6 -->>Possible Error State = {0,2,4,6}
Reading Value = 7 -->>Possible Error State = {0,1,2,3}

Now Say first we received Reading Value = 4
Reading Value = 4 --> Possible state of error : {0,4,8,12}

In next cycle if we received Reading Value = 5
Reading Value = 5 --> Common state of error : {0,8}

In next cycle if we received Reading Value = 0
Reading Value = 0 --> Common state of error : {8}

So finally it state that error is Over Temprature in Channel 2.

Complete C conversion is here
It is bit lengthy, but if you have time please review it. Thanks for that in advance.