JamesNewton / HybridDiskEncoder

Hybrid Disk Encoder: A lasercut Analog / Quadrature encoder with more than 1 MILLION CPR
27 stars 5 forks source link

Hybrid Disk Encoder

This encoder is based on the Haddington Dynamic Analog / Digital Hybrid encoders used on the Dexter robot arm:
https://github.com/HaddingtonDynamics/Dexter/wiki/Encoders
Please take a moment to read and understand that revolutionary system before continuing here; many of the goals of this project won't make sense with out understanding it.

Laser cut: Instead of using 3D printed disks, this project will focus on laser cut parts. As laser cutters become more available and lower cost, their greater resolution and the simplicity of not supporting 3 dimisional objects may provide a cleaner signal and easy processing.

Firmware only, no FPGA required: Because the primary goal of this project is to enable a very low cost human input device, it will not depend on FPGA speed, as humans don't move that fast, and have builtin motion control systems that avoid the need for a high speed feedback loop.

OpenJSCAD: In keeping with the focus on Javascript in DDE (the Dexter IDE), node.js processing for remote control, and an upcoming Robotics class, this project uses
https://OpenJSCAD.com
as the CAD system of choice. This is unusual and may deter collaboration (hopefully not) but if you look at the code for a while, it becomes obvious that it just isn't that different from a regular cad system. The CAD system can be viewed and played with at:
https://openjscad.com/#https://raw.githubusercontent.com/JamesNewton/HybridDiskEncoder/master/encoderdisk.jscad (note: that link seems not to work directly, but if you go to OpenJSCAD.com first, then copy in the code above, it does work)
Use the mouse to turn the model (shift to shift, ctrl or scroll to zoom), scroll through the code on the right, and edit parameters in the control block lower left. Switch from "Assembly" to "Parts" (bottom control block) to generate DXF or SVG output for cutting.

Electronics At this point, we are focused on the Cypress PSoC 4 chips for the processor, with only opto sensors, and LEDs, (and USB serial interface).
http://www.cypress.com/part/cy8c4247azi-m485
This gives us:

And if we want to include support for high speed slot counting in the future: 48 macrocells for some FPGA ability.

It is featured in this development system:
http://www.cypress.com/documentation/development-kitsboards/cy8ckit-043-psoc-4-m-series-prototyping-kit $10 WITH a debugger! The importance of a good debugger can not be overstated.

The IDE includes schematic capture FPGA designer, etc... But it is Windows only IDE. However it is open source and has been built on Linux
https://hackaday.io/project/18590-psoc-on-linux
https://github.com/clementleger/cypress_linux_tools

And can apparently be run under wine
https://appdb.winehq.org/objectManager.php?sClass=application&iId=16168

Layers
Encoder center hub layers:

At edge:

Building the Firmware

IDE: To start with the cy8ckit-043, you want this link:
http://www.cypress.com/file/199476
for both the Creator IDE and the support files for that hardware.

Questions:

Detector to support mount should be adjustable? Or will laser cut and assembly be accurate enough?

Status:

See also: