Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 25 of 25

Thread: Any alternative to 4067BE multiplexer?

  1. #1

    Any alternative to 4067BE multiplexer?

    Long story short, the 4067BE multiplexer has proven impossible for me to use without errors. Does anyone know of a good multiplexer alternative? I need something that can take 8+ analog inputs (i'm inputting potentiometers) and read at least 2 pots at once. Does anyone have any good suggestions?

    Thanks again for your time!

  2. #2
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    What aspect of it doesn't work for you ? I think you are making the long story too short !
    Last edited by Jp3141; 05-04-2014 at 04:53 AM.

  3. #3
    Senior Member
    Join Date
    Sep 2013
    Location
    Hamburg, Germany
    Posts
    891
    Quote Originally Posted by A. Williams View Post
    read at least 2 pots at once.
    What exactly do you mean by "at once"? What is your timing requirement?

  4. #4
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,585
    How about using two 74HC4051 chips?

  5. #5
    Senior Member
    Join Date
    Nov 2013
    Posts
    719
    At least with two 74HC4051 chips it would become possible to read two channels genuinely simultaneously, with certain caveats including needing a Teensy 3.1

    Even after multiple reads per channel for averaging and such like a single ADC stepping through a list of sources to sample (whether pin by pin on the processor or through a de/multiplexer) can do it so quickly as to be as if simultaneous

    I've a suspicion the trouble you are having with the 4067BE will probably transfer to the 74HC4051 easily enough if you do.

    More information about how the 4067BE is failing you will get you better help imho.

  6. #6
    My main issue with the 4067BE is that it reads pots moving without me even touching them. Without touching anything, pots come alive and the variables attached to them jump around seemingly randomly. I am guessing this is a power issue? I have grounded all pins that are not in use.

  7. #7
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    Are you picking up interference ?

    How long are the wires between components ? between the pots and the 4067 ? and between it and the Teensy ?

    ICs like that usually don't do random things unless they are designed to

  8. #8
    The pots are all wired (ground and v++) in series, then connected (ground and v++) to the multiplexer and to the teensy board. None of the wires are more than 4 in.

    I've never been able to use a 4067 without it reading random signals :P

  9. #9
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    Don't wire them in series -- connect each pot to GND and V++ (in parallel). Each middle pin (wiper) should then connect to one pin of the MUX.

    Wiring in series would dramatically reduce the range of signal available, as well as make signals somewhat interdependent.

  10. #10
    I've wired the 4067 in parallel to the pots.
    As in there are separate ground and v++ lines for the series of pots and the multiplexer chip. Was that what you meant? That was how i wired it.

  11. #11
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    Each pot has 3 terminals -- two end terminals and a (usually in the middle) wiper terminal. Connect one end terminal of each pot to your Ground, connect the other end terminal of each pot to your V++ supply (3.3 V on the Teensy); Wire VSS and VDD of the mux to ground and V++ (3.3) respectively. Connect the wiper of each pot to a separate input of the mux (pins 2-9 or 16-23). Connect the output of the mux to the ADC port. Drive the 'inhibit' pin of the mux low (just connect it to ground), and drive the select pins A,B,C,D appropriately.

    If Inhibit isn't low, it won't work for you. If you connect the mux to a supply higher than 3.3 V that the Teensy uses, it won't work well.

  12. #12
    Yup. I have done all of those things. Including driving the inhibit pin low. I've done all of those things as of the first post in this thread. The multiplexer still reads random values occasionally.

    The only thing i can think of is that, since I've been using teensy 2.0 with it, The v++ 3.3 you're suggesting is actually v++ 5. Would that raise in voltage make any difference?


    Sorry, my problem with the 4067be is rather strange, it tends to just pop up occasionally every now and then. I've done all of those things and I thought I had removed the error, then I use the very same circuit again in a couple weeks and the error pops up again out of nowhere. This is about the 4th time I've had the very same problem with the 4067be chip, hence why I'm looking for an alternative.

  13. #13
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    If the 4067 would be so strange, nobody could use it. It was built a million times.....

    If you're really sure that the wiring is ok: could it be a bug in your code ?

  14. #14
    I really don't know what to say, I've been using code that no one has claimed to have any problems with before. I really appreciate the help and concern, but I'm looking only for an alternative to the 4067be at this point. My only requirement is that the multiplexer chip can read multiple inputting pots at once.

  15. #15
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany NRW
    Posts
    5,679
    Quote Originally Posted by A. Williams View Post
    I really don't know what to say, I've been using code that no one has claimed to have any problems with before. I really appreciate the help and concern, but I'm looking only for an alternative to the 4067be at this point. My only requirement is that the multiplexer chip can read multiple inputting pots at once.
    Please post the schematic and the code.

    Edit:
    - Which potentiometers are you using ? 1k? 10k? 100k?
    - cheap potentiometers sometimes have contact problems. Are they ok ?
    Last edited by Frank B; 05-18-2014 at 09:17 PM.

  16. #16
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    There are no problems with the mux -- it works as designed in others' applications. Random errors sound like something to do with wiring (or software ?). What types of errors do you get ? Do you have capacitors (10 nF) from each pot's wiper to gnd ? Do you have a cap at the output of the MUX ? if so, you'll have to wait ~ 1 ms between reading two pots on the same mux (cap is charged to 1 pot's value; takes some time to charge to the new pot's value).

    What types of errors do you get ? readings of close to 0 or the supply ? could it be RF interference ? AC line interference ?

    Don't constrain yourself to reading multiple pots at once -- 1) your ADC can't do that, and 2) pots don't change faster than the ADC can read.

  17. #17
    Junior Member
    Join Date
    Jul 2014
    Posts
    3
    Hello,
    I have a weird undocumented problem with a HC4067M made by TI.
    The 16 channels of the MUX (P2-9 & P16-23) each connect to ground via a variable resistance sensor (say 0 to 100R).
    The common (P1) is pulled up via a 1K resistor, then series 10K into an OpAmp configured for non-inverting gain.
    Enable (P15) and GND (P12) both connect to ground.
    Vss (P24) to 5V
    Data select pins all connected to MCU and always driven.
    The whole circuit works fine, EXCEPT the MUX does not connect I2-3, I6-7, I10-11, I14-15.
    Sounds like a problem with the S1 data line, but only when this line is HIGH.
    Checked with scope all data lines, even hard wired data lines to GND and 5V manually selecting one of the problem channels, still can not get MUX to connect.
    Can not find anything online to even hint at this problem... and these chips are dam easy to use... this has me stumped for now..
    Any suggestions ?

  18. #18
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    If you are using a Teensy 3.0 or 3.1, they only put out 3.3 V on their output pins. Operating the MUX from a 5 V supply (p.s. it's VDD on P24, not VSS) probably mean that the 3.3 V isn't high enough to generate a logic '1'. Some inputs may be different than others, that's why you get some signals, not others.

    1) Do you need 5 V (are you working with 5 V signals ?) -- if not, just power it from 3.3 V.
    2) Which specific 4067 are you using -- while the HC4067 operates from 2-6 V, the input thresholds are 70 % of VCC (i.e. 3.3 V for 5 V) -- probably your problem. He HCT4067 has a more restricted supply range (5 V +/-), but the input thresholds are 2 V -- can be driven directly by T3.

    Note the T3's ADC can't convert an input signal over 3.3 V.

  19. #19
    Junior Member
    Join Date
    Jul 2014
    Posts
    3
    All voltage rails are 5V, the input voltages on the data lines reach 5V and 0V checked with scope, so no problem there.
    P24 Vdd IS connected to 5V, typo above.
    The specific part i'm using is TI - CD74HC4067M96
    Click image for larger version. 

Name:	Schem.jpg 
Views:	1656 
Size:	216.3 KB 
ID:	2389
    Attached schematic to help.
    The problem seems related to D1 input on 4067 only. All other inputs work (when D1 = 0) so I can access 50% of the channels.
    If I try to tie D1 to 5V I don't get any channels switching through.
    This is an interesting one. BTW I have tried two 4067 chips, but they are from the same batch though...
    Going to order some from different manufactures to try.
    But still any further input or suggestions will be much appreciated.
    it is almost like D1 and ENABLE is back to front ??? if i did it i would understand,, but the wiring has been checked MANY times...

  20. #20
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    I don't see anything wrong with this schematic. Have you tried to measure the voltage on the P0..P15 nodes themselves as the channel is selected ?

    However you should note that each MUX channel has a resistance of ~ 70 ohm (and varies with temperature, channel, supply V) and this may swamp your 100ohm variable resistors. If you can afford the supply current, it's better to have individual 1 k pull-up resistors on each P0-P15, and use the MUX to route the selected junction to the opamp...

  21. #21
    Junior Member
    Join Date
    Jul 2014
    Posts
    3
    The change in resistance through the MUX is ok for this application. We are measuring the relative change in signal. As long as there isn't much drift and the supply voltages are steady it should be ok.

    I will try individual pull-ups, was hoping not to, but it may make the circuit more stable...

    At the moment the enable input is floating and seems to be more reliable, when the enable input is connected to 5V it pulls a high current, which is weird.
    I'm suspecting a latch-up or similar may be happening...
    Will post with more info after more testing..

  22. #22
    Senior Member Constantin's Avatar
    Join Date
    Nov 2012
    Location
    In the yard with a 17' Dia. Ferris Wheel
    Posts
    1,408
    Quote Originally Posted by A. Williams View Post
    Long story short, the 4067BE multiplexer has proven impossible for me to use without errors. Does anyone know of a good multiplexer alternative? I need something that can take 8+ analog inputs (i'm inputting potentiometers) and read at least 2 pots at once. Does anyone have any good suggestions?
    Not all multiplexers are created equally. I had good luck with the Analog Devices ADG706 series which multiplexes 16 in/out connections. The 707 series does the same thing with 8 pairs of differential channels. In particular, they offer a low, consistent resistance from channel to channel, making it that much easier to get consistent results.

    At higher resistances (i.e. anything over 1kOhm) , I would consider the use of a differential op-amp to act as a buffer for the Teensy ADC. You might be able to get away with using just a capacitor for slow-moving signals, but I would not count on it. FWIW, Freescale advocates in section 6.6.1 to use a 0.01uF cap between any analog pin and AGND.

    A differential input should help reduce noise issues. You could set up three resistors in series with two reference resistors on the ends and the resistor under investigation in the middle. A differential reading is hence possible, the two reference resistors can be characterized, etc. Then use the MUX to 'swap' resistors as needed.

  23. #23
    Senior Member Jp3141's Avatar
    Join Date
    Nov 2012
    Posts
    458
    I can assure you that these types of ICs don't behave in a non-standard way when used appropriately. Are you possibly applying the D0-D3 signals before applying the 5 V supply ? Are they driven from the same supply as the 5 V ?

    Leaving Enable floating is bad -- the pins will probably drift low, but you can't be sure.

    I suspect you have damaged your IC, or you have solder shorts on your board or opens in your socket if you used one.

  24. #24
    You don't mention (or I missed) if you are using a plug-in proto board;

    I've had enough trouble with these over the years that they're on the

    list of usual suspects when a circuit acts differently than expected.

    I had a brand new one, from a reputable supplier, fail spectacularly

    a few years ago, the 1st time power was applied power to the rails.


    Since then I test them, and regularly find boards that exhibit anamolous

    behavior.

    Just saying...

  25. #25
    Member
    Join Date
    Aug 2014
    Location
    Johannesburg South Africa
    Posts
    21
    Quote Originally Posted by A. Williams View Post
    My main issue with the 4067BE is that it reads pots moving without me even touching them. Without touching anything, pots come alive and the variables attached to them jump around seemingly randomly. I am guessing this is a power issue? I have grounded all pins that are not in use.
    I've had the same issues of pots sending information without being touched so i changed the "THRESHOLD" in the coding and it was all sorted. IF you need that code just holler. (FYI it wasn't with a mux so i don't know if it makes a difference. That definitely sounds like coding to me.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •