Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rev 2.0 - PCB updates #198

Closed
wants to merge 178 commits into from
Closed

Rev 2.0 - PCB updates #198

wants to merge 178 commits into from

Conversation

dcschooley
Copy link
Collaborator

@dcschooley dcschooley commented Jul 5, 2020

  1. Resolves issue Control Board Schematic Issues #187 regarding test point T3 and duplicate 16 connectors. Renamed connector to J28. Connectivity unchanged. Documentation updated to refer to J28.

  2. Removed extraneous trace described in issue PCB Rev E no electrical continuity between J6, J7 for pin 16 and all grounds #177. No other changes around J6 and J7 because that might still be an open discussion,

  3. Resolved issue Main PCB: Potential collision RoboClaw 1 and C2 #169 by moving C2 closer to the data pins for RoboClaw 1

  4. Made trace widths consistent for +5 going to encoders. (There was some discussion about this. The change was probably unnecessary, but it didn't hurt anything.)

  5. The +12V and GND labels for J13 get lost under the part. The label has been moved slightly.

TODOs

Schematic Todo

  • Eliminate voltage divider circuitry
  • Add E_STOP3 to S5
  • Add pull-up resistors to E_STOP2 and E_STOP3
  • Power ina260 via 3.3V
  • Update ina260 high-current connector for 0.2" Digi-key
  • Power servo controller via 3.3V
  • Put +12 or +BATT on RoboClaw LB+ pins (NOT DOING)
    • Add decoupling capacitor on voltage supply to RC LB+ pins
  • Connect RPi GPIO pin to servo controller OE pin to allow RPi to enable/disable servos
  • Add extra servo output pins from servo controller to board
  • Add LEDs for debugging
    • LEDs will need pullup resistors
    • Proposed list of LEDS:
      • BATTPOS
      • +BATT
      • +12V
      • +5V
      • ESTOPS
      • Alert from ina260
  • Add decoupling capacitors to +5V and +3.3V
  • Determine which lines on J6 should not go to J7
    • Proposed list:
      • E_STOP
      • Alert from ina260 (to be discussed)
      • LEDs controlled by Pi (to be discussed)
  • At least two +5 and GND pins on J12
  • Rearrange pin assignments on J12 so that plugging connector in backwards will not destroy anything
  • Pin header with test points
    • Proposed list:
      • Each voltage level
      • GND
      • Serial lines
  • Change Arduino from USB-Dongle to I2C - discussion in progress
  • Replace existing fuse with standard glass fuse
  • Impliment the large +5V/15A Pololu voltage converter
    • Change to schematic/part library
    • Determine PCB implementation
  • add i2c header for externally talking to rpi

Layout Todo

  • Avoid through-holes opposite electrolytic capacitors on RoboClaws

Layout Changes for v1

  • Look at changing the transistor footprint so that the holes are farther apart
  • All passives, diodes, and transistors on the motor board should be on the same side. Most are, but there are few that show up on the reverse side without a good reason
  • Labeling of resistors and capacitors needs to be fixed so that the label for a particular device is not located under a different device
  • The electrolytic capacitors need to have labels with the correct polarity
  • The orientation for the LED block is not clear. -- updated LED footprint for correct numbering. Also added chamfered corner on silkscreen to correspond to chamfer on part
  • The orientation for the switch block is not clear
  • The large electrolytic capacitor C19 is to close to nearby parts
  • Label the power connections and DROK
  • Evaluate better combination of parts for J21+J26
  • Wrong footprint for J24 - it should be ok but it isn't
  • Label pins on J20
  • Label LEDs
  • Brain board interferes with the Molex motor connectors - not as bad as I originally thought. The problem is that J21 and J26 don't really match, and it's possible to attach them incorrectly so that the wrong pins go into the sockets and the brain board moves too much in one direction.
  • Connect unused GPIOs between J22 and J23
  • Orientation of pin 1 is inconsistent
  • Consider moving the 5V converter to the opposite side of the brain board and flip it over as was done with the previous board. (Just a thought. The voltage converters, the ina260, and the servo controller all need to be socketed with standoffs, and flipping the 5V converter would take up less vertical space.)
  • For the servo controller, we might want to consider a single row of signal pins for outputs 1-4. This will simplify soldering the part or header. The power and ground pins don't really accomplish anything since we use a separate set of of pins on the edge of the board. If we don't include additional sets of pins on the edge of the board for outputs 5-16, then the holes beneath the servo controller need to be removed.

Schematic Changes for V1

  • Add weak pull-down to the TxD and RxD lines so that they don't light up the LED before the Pi is ready
  • Bring +3.3V to J20
  • Alert line needs a pull-up instead of a pull down
  • Move alert LED from brain board to motor board and connect to red LED

Documentation Todo

  • The A0 address pads on the pca9685 need to be bridged to give the device i2c address 041. The default address for both the ina260 and the pca9685 are both 0x40, so there will be a conflict if you don't change one of them.

Parts list additions

  • Adafruit ina260
  • Adafruit pca9685
  • Pololu 5V/15A converter

Parts list removals

  • Remove small Pololu 5V converter

Parts list changes to part counts

  • Change Roboclaws from 5 to 3

@dcschooley dcschooley changed the title Rev F Rev F - PCB updates Jul 6, 2020
@ericjunkins
Copy link
Collaborator

@dcschooley I'll take a look at this soon, I think there might be a few additional things we were looking at doing if we were going to do a PCB rev. Let me see if I can collect those and compare it here.

@dcschooley
Copy link
Collaborator Author

I'll be happy to incorporate additional things if you have a list and if it would take some of the load off of you all.

@ericjunkins
Copy link
Collaborator

@dcschooley I took at look at this and it does look like it looks good on the items 1-5 that you listed above, which close a couple of the open issues, great job on this thanks.

I think we should discuss some potential upgrades that would be nice for addition things as well. Below are a few that I'm aware of

  • Connect all ground pins between J6 and J7
  • Connect the 5V rail to the J7 connector
  • Remove J12 and C1

These changes will mean that we will be powering the RPi through the Ribbon cable instead of a micro USB port. It bypasses the internal protection on the Pi, however because it is being supplied directly from the regulator which is nowhere near its' limit I believe this is fine to do.

  • Look at ways of integrating in a different voltage/current sensing system, to be able to be read into the Pi (@Achllle was particularly thinking about this with issue DROK current+voltage sensor replacement #196)
  • Change the inputs to the PCB to be a little simpler with working with the battery/any external monitor system. Right now it's a bit of a spaghetti between in/out
  • There had been some discussion at one point about choosing a better connector (issue Feedback: 30AWG wire (X3, X4, X5, X6) too difficult to work with. #190) instead of the terminal blocks. We could explore options and if there is something that allows this to be done easier.

@mikcox @Achllle @gfosmire @Roger-random Might be able to give some more feedback of ideas of things we might want to do as well

@dcschooley
Copy link
Collaborator Author

@ericjunkins Powering the PI via the ribbon cable also helps out those switching to a PI 4 because it uses a USB C connector, thus requiring a USB-A to USB-C cable. I assume the ribbon cable can handle the current, but Adafruit doesn't provide the current limits.

https://www.adafruit.com/product/4226 might be the device @achille was thinking about. It looks like it would work. I would mount it on the RoboClaw side of the board to the left of RC2, so between RC2 and the PI headers. Someone needs to try it to see if it works.

Is there any reason to keep J14 as a USB connector? Why not make it like J13? One possibility might be to leave the existing 5V regulator dedicated to the PI, Arduino, and LED panel. A second, optional 5V converter could be added for aux power. Most people might not need it, but it could be really useful for those who want it. It could probably go on the Raspberry PI side of the board near J8. Putting it on the RoboClaw side of the board would make it hard to get to the screws in J5.

I had been thinking along the same lines regarding the board connectors. The 30AWG wires are all sorts of painful. I ended up using ferrules for all of my connections. Any plugs need to fit through the 0.5" holes in the pattern plates, otherwise you require a connector on the motor side too. (Most people are probably doing that already, but I still think it is a good idea not to trap the connector. For JST connectors, you are limited to 3A until you get to the VH series. Maybe 3A is enough for a short period of time.. You could split up the connectors into a small data connector for the encoders and a 2-position VH connector for the motors. The Molex Micro-fit connectors are pretty great. They make a PCB mount version, and I know the 2x3-position plug will fit through the holes.

I would also bring back both encoder lines for the corner motors. You don't really need the extras right now, but someone might want to use quadrature encoders in the future.

@dcschooley
Copy link
Collaborator Author

dcschooley commented Jul 6, 2020

I'll tackle the battery and power monitoring first, since that will be somewhat hairy when updating the PCB.

@ericjunkins
Copy link
Collaborator

Ferruls are great and definitely more industry standard, I was hoping to avoid having everyone have to purchase all the specific tooling to help with that, but in the end it might be worth it, I think the ferrule crimper is only like $20. I'm working on updating the docs and build list to not use the 30AWG wire, issue #190 has an update on that. Definitely in general worth thinking about moving to something like the Molex Microfit jr or some other kind of connector. Of course ideally you can put all 6 on one connector, but like you said sizing is an issue. I do have connectors trapped in mine, my version goes:

Terminal block on PCB -> 25 Position Mico - D connector (one on left side one on right side)
25 Position Micro - D connector -> 5 individual bundles, terminated each with a Molex Mini fit Jr (6 position)
6 Position Mini fit Jr -> Motor

Although I have cables trapped inside the routing of the rocker-bogie I can disconnect individual motors, or the entire rocker-bogie from the body for storage with this scheme. It is extremely convenient, but definitely required a bit more expenses to make it happen.

@dcschooley
Copy link
Collaborator Author

I wouldn't recommend ferrules for most people simply for the specialized crimper that you can't really use for anything else. If someone needs to buy a crimper for a project like this, it would be better if it could be used for lots of different connectors. You can also break off the ferrule in the terminal block if you are not careful. I was running into problems keeping the wires in place in the RoboClaw connections, and the ferrules totally fixed that. I then went a bit crazy and used them everywhere. They solve the problem with the 30AWG wires, although I don't think they are intended for that small of wire. I work for an electric utility, and ferrules are in our construction standards. Things need to last for decades, and a loose strand of wire in the wrong place at the wrong time can cause all sorts of grief.

Going with a different connector, such as a JST-PH largely fixes the 30AWG problem, but I'm always a bit concerned about breaking a wire in the wiring harness somewhere.

Trapping the cables is ok if you can disconnect what's needed. If you have a big connector inside the body, then you need a connector on the other end of the cable that you can push through the holes.

I commented on Issue #190. 16AWG wire limits connector options and might be bigger than necessary. It pushes things in the direction of a four-pin JST PH connector for data and a 2-pin JST VH for the motors.

@Achllle
Copy link
Collaborator

Achllle commented Aug 3, 2020

Somewhat relevant: The encoders on the GoBilda motors use 4 pin JST XH connectors. Would probably be good to use as much of the same connectors as possible

@ericjunkins
Copy link
Collaborator

ericjunkins commented Aug 3, 2020

Is there a pre crimped cable available for the jst connectors?

@Achllle
Copy link
Collaborator

Achllle commented Aug 3, 2020

For sure, for example: https://www.gobilda.com/wiring/

@Achllle Achllle requested a review from ericjunkins January 28, 2021 03:07
@apollokit apollokit linked an issue Apr 9, 2021 that may be closed by this pull request
@apollokit
Copy link
Collaborator

heads up, I rebased this pull request on top of master, needed to be done. There's a copy of the original, unrebased branch here https://github.com/apollokit/open-source-rover/commits/revF_backup

@apollokit apollokit marked this pull request as draft April 21, 2021 02:41
@apollokit
Copy link
Collaborator

I propose we close this out in favor of my new PR here: #396

There's simply too much going on in this PR at this point. All the work that was done for this is reflected in that other pull request, just cleaned up and consistent with @Achllle's latest updates to the documentation.

@dcschooley @Achllle @ericjunkins thoughts?

@Achllle
Copy link
Collaborator

Achllle commented Aug 21, 2023

closing because #396 was merged in

@Achllle Achllle closed this Aug 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants