spoter368 / os3m-hardware Goto Github PK
View Code? Open in Web Editor NEWAll the hardware needed to build your own OS3M Mouse!
Home Page: https://hackaday.io/project/187172-os3m-mouse
All the hardware needed to build your own OS3M Mouse!
Home Page: https://hackaday.io/project/187172-os3m-mouse
I've made several changes to the design, from what I remember:
Impemented suggestions I've seen here:
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
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)
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:
(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.
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.
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.
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.
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.
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.
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
So I'm assuming most people have ordered 1.6mm, but I wanted to be sure.
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.
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.
Could you provide some information on material's and settings used for printing?
Great project, thank you for the work.
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)
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.
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.