Greetings All,
So I have been working on a Breakout Board for the MCP23017 to be used for various deving projects. Currently I have one built on a weird protoboard I bought from RadioShack.
Bottom
Top (Shown with Particle Photon Installed)
Well I have had some issues with choosing the correct pullup resistors for SDA/SCL. Then for the Photon (3.3v) I found folks were saying that 4.7k is optimal for pullups which is what you see installed in between the buttons by the two little header pins. Well this circuit works as it should but I have a feeling it won't be great as a stand alone setup. I managed to get it working on an Arduino also although I think I toasted the Arduino because it won't work anymore. Which is weird because my oscilloscope still shows a data waveform but no LEDs are lighting up when instructed. Anyways, all this fussing about with this clunky board has led me to develop a PCB in which I want to have made. But just before I pull the trigger on that I wanted to read the datasheet again and really make sure I'm getting the most of Rev#1.0.
MCP23017 Breakout (Top)
MCP23017 Breakout (Bottom)
Here is what I have designed thus far. It's not great by any means I know. So here begins my questions which I hope you all may be able to talk some sense into this project. Lets start with the addressing pins. As you can see I have some switches (A0, A1, A2) on the board, and each of those switches are connected to VDD(left side of switch) and VSS(right side of switch). Now from here I read about the use of pullup and pulldown resistors. Is it good practice to put these in place when trying to externally bias? On the ugly board way up top I literally just connected straight up to VDD and VSS. And if indeed this is good practice what is a good resistance ,10k?
Next design issue, If you look on the image that is the top of the PCB; You will see another resistor in place to pull the RESET pin up to VDD. On the ugly board up top, I literally just soldered that straight into VDD. Now in this process, I thought is it possible to put a button in here to actually have a manual reset? But nothing I've read would indicate that I can.
This leads to a confusing bit of the datasheet.
Here I see what looks like a pullup of 1k and then a capacitor! None of the articles I have read have ever shown a capacitor on the breadboards. So I'm think what purpose does that serve? I am a total rookie at best. But I take all these things seriously and want to learn.
Now the next question is, let's say I want to interface with 3+ of these breakouts at the same time; how would I have to adjust my design to allow for this? I have seen various boards on Sparkfun that had an I2C header on one side of their board and another on the opposite side. I want to include this concept on my breakout board as well to allow for simple daisy chaining. The other thing I want to include is a spot for some jumpers to be soldered in if needed to allow for safe and simple hookup of the oscilloscope or logic analyser. At this point I don't intend this to be an actual product to be sold but if I'm going to make this a shareable PCB on OSHPark, I want it to be awesome and educational. I'm a hobbyist at best but I have done this with all my projects. I start on the breadboard then move into Eagle and design the schematics and PCB for actual print so I have a few PCBs laying around for two reasons.
1. It allows me to have a finished project so I am not trying to fiddle around with jumper wires and breadboards just to show my friends what I did.
2. It's kind of like a portfolio of my work for one day when I graduate in EE and want to have something to show how I've progressed over time. Although it did add up $$$.
View attachment 106311 View attachment 106312 View attachment 106313 View attachment 106314 View attachment 106311 View attachment 106312 View attachment 106313 View attachment 106314 View attachment 106311 View attachment 106312
Here is an example of another project I just finished (not related to this post):
So I have been working on a Breakout Board for the MCP23017 to be used for various deving projects. Currently I have one built on a weird protoboard I bought from RadioShack.
Bottom
Top (Shown with Particle Photon Installed)
Well I have had some issues with choosing the correct pullup resistors for SDA/SCL. Then for the Photon (3.3v) I found folks were saying that 4.7k is optimal for pullups which is what you see installed in between the buttons by the two little header pins. Well this circuit works as it should but I have a feeling it won't be great as a stand alone setup. I managed to get it working on an Arduino also although I think I toasted the Arduino because it won't work anymore. Which is weird because my oscilloscope still shows a data waveform but no LEDs are lighting up when instructed. Anyways, all this fussing about with this clunky board has led me to develop a PCB in which I want to have made. But just before I pull the trigger on that I wanted to read the datasheet again and really make sure I'm getting the most of Rev#1.0.
MCP23017 Breakout (Top)
MCP23017 Breakout (Bottom)
Here is what I have designed thus far. It's not great by any means I know. So here begins my questions which I hope you all may be able to talk some sense into this project. Lets start with the addressing pins. As you can see I have some switches (A0, A1, A2) on the board, and each of those switches are connected to VDD(left side of switch) and VSS(right side of switch). Now from here I read about the use of pullup and pulldown resistors. Is it good practice to put these in place when trying to externally bias? On the ugly board way up top I literally just connected straight up to VDD and VSS. And if indeed this is good practice what is a good resistance ,10k?
Next design issue, If you look on the image that is the top of the PCB; You will see another resistor in place to pull the RESET pin up to VDD. On the ugly board up top, I literally just soldered that straight into VDD. Now in this process, I thought is it possible to put a button in here to actually have a manual reset? But nothing I've read would indicate that I can.
This leads to a confusing bit of the datasheet.
Here I see what looks like a pullup of 1k and then a capacitor! None of the articles I have read have ever shown a capacitor on the breadboards. So I'm think what purpose does that serve? I am a total rookie at best. But I take all these things seriously and want to learn.
Now the next question is, let's say I want to interface with 3+ of these breakouts at the same time; how would I have to adjust my design to allow for this? I have seen various boards on Sparkfun that had an I2C header on one side of their board and another on the opposite side. I want to include this concept on my breakout board as well to allow for simple daisy chaining. The other thing I want to include is a spot for some jumpers to be soldered in if needed to allow for safe and simple hookup of the oscilloscope or logic analyser. At this point I don't intend this to be an actual product to be sold but if I'm going to make this a shareable PCB on OSHPark, I want it to be awesome and educational. I'm a hobbyist at best but I have done this with all my projects. I start on the breadboard then move into Eagle and design the schematics and PCB for actual print so I have a few PCBs laying around for two reasons.
1. It allows me to have a finished project so I am not trying to fiddle around with jumper wires and breadboards just to show my friends what I did.
2. It's kind of like a portfolio of my work for one day when I graduate in EE and want to have something to show how I've progressed over time. Although it did add up $$$.
View attachment 106311 View attachment 106312 View attachment 106313 View attachment 106314 View attachment 106311 View attachment 106312 View attachment 106313 View attachment 106314 View attachment 106311 View attachment 106312
Here is an example of another project I just finished (not related to this post):
Last edited: