2

I'm prototyping a board which will drive a control module. I'm not an electrical engineer by trade but I have tried to learn as much as I can.

The board is intended to interface with 8 logic lines, where each may be pulled high to 30V which comes from the control module. These 8 lines are normally grounded. Inside the control module the signal from each line is converted into a lower logic level.

My board works using a PIC12F615 with a 74HC164N, which then drives a ULN2803 (I'm using a ULN2003 now because it's what I have on hand).

I know I could just use a PIC16 with an array of transistors, but minimizing component count and board size is important. There will be a high volume and I will be assembling these myself.

With BC547 transistors in the open-collector configuration, and the emitter tied to each of the 8 logic lines, things work as expected. What I have essentially tried to do is replicate this using the ULN2003/2803. Both configurations sink current, right?

Here, my issue lies at the last stage, at the Darlington array. I am not sure if using this is compatible with my switching application, but I have been stubbornly trying to make it work.

The only configuration that has worked so far has been connecting all logic lines to board ground and 30V to the ULN2003 COM / all output pins - but this only works for one channel, otherwise it simply pulls every single line high with even just one input high. The lines must be individually controlled.

Treating this like a switch by adding a pull-down resistor did not work. The voltage drop is too great.

I've come to the point of concluding this just isn't possible. I'm not sure where to look next besides other transistor array ICs...

Am I correct in my assumption or have I missed something fundamental?

I'd really appreciate any feedback.

** R1-R8 are for the simulation to work only

ULN2003 schematic

BC547 array

Res
  • 21
  • 2
  • "With BC547 transistors in the open-collector configuration, and the collector tied to each of the 8 logic lines, things work as expected." - Can you show us this configuration? – ErikR May 23 '21 at 08:09
  • I built and tested the circuit I've added in my edit. It does what I need. Each emitter is tied to the 30V logic channels which sit at ground when off. Sorry, I just saw now I wrote collector instead of emitter. – Res May 23 '21 at 10:10
  • The reason for using the ULN2803 is that the shift register does not source enough current to directly drive the transistors. I implemented this thinking the simulation is always correct. – Res May 23 '21 at 10:13
  • There's the TPIC6B595 device that integrates the shift register with the uln2803. Available in SMT if you're concerned about pcb real estate. – Kartman May 23 '21 at 10:32
  • 1
    Are you sure the BC547 circuit is accurate? The B0-B7 outputs in the circuit will always be at ground regardless of the voltages at Q0-Q7. – ErikR May 23 '21 at 11:47
  • @ErikR Yes I am sure. I physically tested just the BC547 with my uC driving the base and connected it exactly as shown and it drove the control module as intended. – Res May 23 '21 at 12:44
  • Well, from your schematic the B0-7 nodes are always at ground so I don't see how they can change their voltage relative to ground. – ErikR May 23 '21 at 12:53
  • When testing, not connecting the emitters to ground causes my circuit to stop functioning. I got this idea from the fact that with the 8 logic lines alone to the control module, shorting any one of them to 30V (from control module) directly works. They are button inputs I am digitizing. – Res May 23 '21 at 13:33

4 Answers4

1

enter image description here

Figure 1. ULN2803A. Note the GND connection on pin 9. Image source: ElementzOnline.

I can't quite figure out the problem from your text but I notice on the schematic that the ground pin is not shown on your schematic.

enter image description here

Figure 2. The GND pin needs to be connected as that provides the path to ground for each output. All eight emitters are connected to this common GND. Image source: TI.

Transistor
  • 168,990
  • 12
  • 186
  • 385
  • Proteus has the ULN2803 implicitly tied to the same ground as all other components, so pin 9 is not shown. – Res May 23 '21 at 09:51
1

The question was incredibly unclear. It would have helped to know the model of the control module, or have a copy of the page describing the control module inputs included in the question.

This is the circuit that would waste less power, and do the job of sourcing current. The ULN chip is not suitable for this application.

schematic

simulate this circuit – Schematic created using CircuitLab

The 3.3V input waveform and the 30V output waveform:

The input and output waveforms

0

Taking a stab at this...

Does this work for you?

schematic

simulate this circuit – Schematic created using CircuitLab

When 1B is low, 1C will be at Vcc; when 1B is high 1C will be close to 0V.

Replicate using 2BC, 3BC, etc. for the other logic lines.

ErikR
  • 4,897
  • 11
  • 18
0

This was the solution that ended up working for me:

image

I needed to source current, not sink it. The only drawback is that the collector resistors need to be 0.5W as they dissipate about 0.18W of heat.

Res
  • 21
  • 2