Code Monkey home page Code Monkey logo

os3m-hardware's People

Contributors

lpurdy01 avatar spoter368 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

os3m-hardware's Issues

Overhauled boards

I've made several changes to the design, from what I remember:

  • All components from LCSC (should be assembleable by JLC)
  • Used components I prefer (button, USB-C)
  • 0603 passives
  • Reduced amount of component values
  • Reduced amount of decoupling caps
  • Changed debug header to only have power and SWD, same pinout as generic STM32 boards
  • UART is on testpoints
  • Set components that shouldn't be in CPL/BOM to not be there
  • Changed routing
  • Changed board thickness to 1.6mm and ensured there's 3D models for everything for CAD reasons
  • Significantly reduced amount of DRC errors
  • Added silkscreen around coils
  • Added KiCad logo, changed OSHW logo

Impemented suggestions I've seen here:

  • testpoints for some GPIOs
  • fixed BOOT0

As a base I used master from from around 30.12.2023. Since the majority of changes are purely just my personal preference, the routing looks pretty bad, I haven't tested it and it might not be 100% compatible (it should be compatible, coils and board shape are identical, but programming header and USB-C etc aren't), should I do a pull request or just upload it to my account as an alternative board? I don't know when I'll get around to ordering it, it could be a matter of months

Ferrite "Core" to Redirect Magnetic Field

image

EDIT:

Everything below is hypothetical and could be wrong since I've now learned these PCB inductive sensors are radically different from commercial inductive sensors. For example commercial ones detect steel 3x better than copper, but PCB sensors detect steel ~25% worse than copper (Source: https://www.ti.com/lit/an/snoa957b/snoa957b.pdf?ts=1702241246361)

Original post:

100% of commercial inductive sensors have ferrite cores to strengthen and direct the oscillating magnetic field while reducing interference. Based on the diagrams below you can see how the geometry of the core directs the field.

There's generally 2 kinds, flush and non-flush, with the differences being the coil/core design, plus the flush-mount has a metal band for shielding:

EcoSensors3
SENSOR(Figure8)
(Source: https://www.altechcorp.com/HTML/Sensors_Standard-A.html)

The OS3M PCB coils are thin and can't have a core in/around the coils, but it would still be an improvement to include a 12mm (1/2") wide ferrite disc below each of the coils to strengthen the field and reduce interference. Ferrite is the ideal material because it redirects fields while reducing losses (due to hysteresis).

In my country I could only find 12x3mm magnets on aliexpress (ferrite, and obviously I picked non-flexible and non-neodym.). A cheap tool demagnetizer does nothing (not surprised). I baked them in the oven past 250°C for 10+ mins which was supposed to work, but did nothing (temperature source: https://www.magnet-shop.com/lexikon/demagnetise-permanent-magnet). Will try wrapping them in aluminum foil + blowtorch, assuming the aluminum doesn't melt.

image

I might be already experiencing less sensor noise by clamping a steel gear to the base of my OS3M mouse, but it's far from ideal and honestly could be my imagination since I didn't measure it.
image

Taking inspiration from the metal band in the flush-mount inductive sensors, it may help to surround the PCB or individual coils with glued aluminum foil, though there's a risk of shorting if the foil gets loose. Non-ferrous metals do block changing fields.

Potential over-driving of the 40 MHz oscillator

This is an awesome design and, as part of the team in NZ keen on getting a few made at JLCPCB, I started reviewing the design. At this stage, just the layout and BOM. I noticed X1 is a 40 MHz oscillator being used to drive both the LDC1612 and LDC1614 devices and, for at least the JLCPCB BOM, is a YXC part: https://www.lcsc.com/product-detail/Oscillators_YXC-O705040MEDA4SC_C24796.html

Reading the datasheet, I note the oscillator output is rated to 15 pF - which isn't that much! Especially when driving the signal across the PCB as it is now.

Can I recommend updating the design? One option would be using a clock buffer to up the drive strength and adding series termination to cut down on reflections (40 MHz is pretty quick, and you're competing with just using the internal oscillators of the LDC161x parts). Another option could be using the microcontroller instead - the internal PLL could be tuned to (maybe not exactly) 40 MHz and used to drive the two inductive sensors. The upshot here is fewer clock sources (multiple oscillators can cause EMI problems, which you'd be really unlikely to see issues from on a small project), and you would also be free to use an STM32F103 part (just because they're really cheap and easy to get).

Keen to hear your thoughts around this, and whether you have tried probing the clock output with a scope? Note that scope probes are typically around 2 pF or so. If you're already right on the limit of that clock buffer then perhaps the scope would tip it over the edge.

Floating BOOT0 Pin Causing Inconsistent Boot Entry Point

I was having problems the board inconsistently entering the bootloader or the flashed firmware.

The fix is to add a jumper that holds PB8 (BOOT0) to GND. Optionally, on the next board revision a button and two resistors could be added to keep PB8 low unless the button was pressed. This would allow the user to upload firmware to the STM32 Bootloader by holding the reset and boot buttons. It could be useful for the project to be able to distribute .hex files for users that don't have STLink devices to update their boards.

IMG_20231219_223312_038~2

Releases section and file order

Hey I was just confused for a minute why the gerbers file wasn't in the sub folder mentioned in the readme then got more confused why the zip rev file wasn't a gerbers file. Took me a minute to understand where your PCB spec was.

Would recommend a small modification to where you're storing files and the file location in the READ.md releases would make this easier because you can just put all the required files in the file section of the readme.

Optimal thickness of PCB?

Howdy howdy.

I was thinking about picking up a copy of the latest revision alongside my latest JLCPCB order, but I'm unsure as to what thickness is best for this!

Because most USB-C ports I've run into don't fully fill a 1.6mm deep through hole, I usually choose a 1.0mm board when designing PCBs with USB-C. And when trying to figure out what to order here, I got stuck since I found no reference to PCB thickness other than a PR, and the Physical Stackup defined in KiCad results in a ~5mm thick PCB :P
image
image

So I'm assuming most people have ordered 1.6mm, but I wanted to be sure.

JLCPCB parts out of stock

Upon going to order the assembled PCB via JLCPCB, they notified me that two components are out of stock:

SW1 - SW_Push - Button Switch
X1 - XTAL_40MHz - 40 MHz Oscillator

The button switch looks like it will be easy to source an alternative. After attempting to pre-order the 40 MHz oscillator, they informed me that the manufacturer has discontinued that part number. It looks like a replacement part will need to be sourced.

@spoter368

Document software needed and BOM

Please document what software is needed to open the files.
My Alibre Design/3D Systems Geomagic Design uses SLD_ASM and SLD_PRT too but refuses to open the files.

A Bill Of Meterials especially for the foreign coins needed would be useful too.

Aisler PCB manufacturer: shortend pads

Hi,
i just wanted to order the pcb via aisler.com. (My favorite PCB manufacturer)
I uploaded the kicad PCB file and aisler checked it and found 6 shorted Pads.
Are these pads consciously connected? So is it save to order the board?
Here ist the original message:

We detected deviation(s) between the netlist and the processed layout of your pcb. At least one of the listed nets shares at least one pad, which is conductively connected the other net. Please check your layout before ordering. See also our [help article](https://community.aisler.net/t/smart-tests/52).
NET-(C8-PAD1), NET-(C8-PAD2)
NET-(C19-PAD1), NET-(C19-PAD2)
NET-(C20-PAD1), NET-(C20-PAD2)
NET-(C7-PAD1), NET-(C7-PAD2)
NET-(C9-PAD1), NET-(C9-PAD2)
NET-(C10-PAD1), NET-(C10-PAD2)

Jlcpcb order help

Could you please describe what options we need there.
And how to order assembled pcb.
Screenshot_20240504-232333_Chrome

Alternate inductor plane material - not US legal tender

Great concept! Small limitation for non-US citizens is that we don’t have convenient almost-flat discs of Nickel clad copper hanging around.

I’ll try a build just using some cutout thin copper sheet, which should do the job. I’ll give some thin iron strip a try too. Wouldn’t bother with aluminium though.

Drivers?

I'd love to build one, but it seems that the driver side for OSX is missing, right?
Hopefully the project gains some momentum and some smart people come on board and complement the project to make it a usable solution.
Great start!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.