|
|
4 năm trước cách đây | |
|---|---|---|
| .github | 4 năm trước cách đây | |
| .vscode | 4 năm trước cách đây | |
| cad | 4 năm trước cách đây | |
| doc | 4 năm trước cách đây | |
| electronics | 4 năm trước cách đây | |
| firmware | 4 năm trước cách đây | |
| scripts | 4 năm trước cách đây | |
| util | 4 năm trước cách đây | |
| .gitignore | 4 năm trước cách đây | |
| LICENSE.txt | 4 năm trước cách đây | |
| README.md | 4 năm trước cách đây | |
| __init__.py | 4 năm trước cách đây |
SmartKnob is an open-source input device with software-configurable endstops and virtual detents.
A brushless gimbal motor is paired with a magnetic encoder to provide closed-loop torque feedback control, making it possible to dynamically create and adjust the feel of detents and endstops.
Premium SmartKnob experience. Under active development.
⚠️ Update (2022-03-24): As a result of the popularity of this project, it seems like the recommended motors are unfortunately no longer available. I expect that these motors are simply no longer in production and therefore limited stock was available (for future reference in case you find them being sold elsewhere at a higher price, they were originally selling for US$2.56 each before this project was published). However... 👇
💡 There is an ongoing search for new motors in issue #16 - follow along there for the latest info (or join in and help us find a good replacement). Any change in motor will likely require substantial redesigns, so don't order PCBs/printed parts until there is more clarity on the motor.
Features:
Current status: Not recommended for general use (mechanical and electrical revisions are planned)
<img src="https://img.youtube.com/vi/ip641WmY4pA/maxresdefault.jpg" width="480" />
Latest Fusion 360 Model: https://a360.co/3BzkU0n
While this is a "DIY" open-source project, it is not yet a mature plug-and-play project. If you intend to build your own, note that it requires advanced soldering experience to build - very small-pitch surface-mount soldering is required (reflow or hot air recommended), and assembly is quite time-consuming and delicate. Please go into it with the expectation that you will almost certainly need to be able to troubleshoot some hardware and firmware issues yourself - I recommend reviewing/understanding the schematics and basic firmware before jumping in!
More documentation on the BOM and what parts you need to order is coming in the future - thanks so much for your interest! Follow me on Twitter for the latest updates on this and other projects.
View the latest auto-generated (untested) Base PCB Interactive BOM and Screen PCB Interactive BOM (or, the combined BOM csv) for electronics/hardware parts list. ⚠️ These are auto-generated from the latest untested revision on GitHub. For tested/stable/recommended artifacts, use a release instead.
A few miscellaneous notes in the meantime:
Future plans:
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png" width="300" />
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png" width="300" />
Ordering notes: use white soldermask, for reflecting light from RGB LED ring around the knob. Should be 1.2mm thick (not "standard" 1.6mm).
Latest auto-generated (untested and likely broken!) artifacts⚠️:
BOM (for JLCPCB assembly (warning: completely untested!)
CPL (for JLCPCB assembly) (warning: completely untested!)
⚠️ For tested/stable/recommended artifacts, use a release instead.
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png" width="300" />
<img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png" width="300" />
Ordering notes: Must be 1.2mm thick (not "standard" 1.6mm) per mechanical design.
Latest auto-generated (untested and likely broken!) artifacts⚠️:
⚠️ For tested/stable/recommended artifacts, use a release instead.
Planned for the future.
How much does it cost?
I wish I could tell you now, but I don't actually know off the top of my head. Check back soon - I've only built 1 so far, which was the result of a bunch of tinkering and prototyping over an extended period, so I don't have all the expenses tallied up yet. Certainly less than $200 in parts, and maybe closer to $100?
Does it work with XYZ?
Not yet. So far I've only implemented enough firmware for the demo shown in the video, so you can't actually use it for anything productive yet. The basic detent configuration API is there, but not much else. Lots of firmware work remains to be done. If you build one, I'd love your help adding support for XYZ though!
Can I buy one as a kit or already assembled?
Probably not? Or at least, I don't have any immediate plans to sell them myself. It's not that I don't want you to be happy, but hardware is a hard business and I just work on this stuff in my free time.
It's open source with a fairly permissive license though, so in theory anyone could start offering kits/assemblies. If someone does go down that route of selling them, note that attribution is required (and I wouldn't say no to royalties/tips/thanks if you're in a giving mood 🙂).
Excellent sensor at a reasonable price - highly recommended. Less noisy than TLV493D, and more responsive (control loop is more stable) using SSI.
A mediocre choice. Easy to prototype with using Adafruit's QWIIC breakout board.
In my testing, it is a little noisy, requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Or, with less filtering, the noise can easily be "amplified" by the derivative component in the PID motor torque controller, causing audible (and tactile) humming/buzzing.
There is also apparently a known silicon issue that causes the internal ADC to sometimes completely lock up, requiring a full reset and re-configuration. See section 5.6 in the User Manual
In the Master Controlled Mode (MCM) or the Fast Mode (FM) the ADC conversion may hang up. A hang up can
be detected by:
- Frame Counter (FRM) counter stucks and does not increment anymore.
In my experience testing 4 different Adafruit breakout boards, 2 of them (50%) regularly exhibit this lockup behavior within a minute or two of use. It is possible to detect and auto-reset (and there is code in the project to do so), but it is slow and may cause undesirable jumps/delays if the sensor locks up often.
A mediocre choice. Cheap breakout boards are readily available.
In my testing, it's fairly noisy (anecdotally, noisier than the TLV493d), requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Additionally, it saturates at a lower magnetic field strength than other sensors I tested, requiring a significant air gap (8-10mm) when used with a strong neodymium diametric magnet like Radial Magnets 8995.
This is a relatively new IC and it's a perfect match! There generally aren't any other drivers (with integrated fets) that meet the requirements for the low-voltage and low-current motors used in this project (DRV8316 might work, but has not been tested).
Highlights:
This is overall the easiest motor to get started with. Low cogging and a built-in diametric magnet are great!
Sadly, does not seem to be available any longer.
TODO: document this
Also TODO: implement a lot more of the firmware
This project was greatly inspired by Jesse Schoch's video "haptic textures and virtual detents" and the corresponding discussion in the SimpleFOC community. Seriously, this project wouldn't exist if not for that video - thank you Jesse!
This project is licensed under Apache v2 (software, electronics, documentation) and Creative Commons Attribution 4.0 (hardware/mechanical) (see LICENSE.txt and Creative Commons).
Copyright 2022 Scott Bezek
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.