Full CAD: Difference between revisions
Adamcolton (talk | contribs) |
Adamcolton (talk | contribs) No edit summary |
||
| Line 95: | Line 95: | ||
Shapes can be defined using vectors. All sort of interesting ways to extrude or intersect. | Shapes can be defined using vectors. All sort of interesting ways to extrude or intersect. | ||
[[Category:Cobl]] | |||
Revision as of 16:08, 20 February 2017
A suite of CAD/CAM tools designed to work together and with the Cobl Workshop.
Core Tools
- Auth
- Either open, password or user.
- Circuits
- Simulates circuits, perform analysis, list parts
- Boards
- Takes a circuit and lays it out onto a board, either bread, perf, vero or pc.
- Vectors
- Describes Bezier curves on a plane
- Solids
- Builds solid shapes
- Link
- Gives physical properties to solids and allows them to be linked together and exposed to forces to simulate motion.
- CAM
- Takes solids and produces G-Code for machining, 3d-printing or milling
- Control
- Takes G-code and sends it to a machine, 3d-printer, milling.
- MCU
- This would be pretty advanced, but simulate micro-controller code. Could even work with Link, if that allowed switches, sensors and motors.
Architecture
Runs as a Go server, use browser and UI. Can run locally or as a remote server. Server configuration will be stored in a Bolt database, projects will be saved in directories.
Circuits
At it's core, this is going to be like spice. However, I want the UI to feel more like the web UI I've used a few times. It should feel like breadboarding.
Components
A component is a set of leads, configuration values and a function that mathematically represents their relationship.
At the root, is a component family which holds the function. Different members of the family can have different configuration settings. Each family has a default which is either the most common instance or an ideal instance. This way, a circuit can be done quickly and simulated without needing to pick out an exact part for each component.
We can also have sub-families (like power-transistor) that still use the same function, but provide new defaults for the configurations and have a different default instance.
At the lowest level, there will be a list of components.
Sub-Circuits
For many IC's, there's a standard circuit. Rather than defining the behavior with a function, we can build the circuit.
Noise
The default setting will introduce a small amount of noise into the circuit. Many circuits (like multi-vibrators) only work with this. It's far more friendly for a beginner to start with a semi-realistic config and have experienced users need to change the settings to simulate true ideal circuits.
Architecture
Of course, the UI is separate from the simulator. I'm not sure what the best format is for circuit files. It may be good to use a Spice format, or it may make more sense to have our own with a converter.
Layout
Advanced feature, but there should be a way to provide some physical description of the board layout to simulate wire resistance, heat and RF.
Boards
Boards lays out parts on a circuit board. I want to focus on homebrew, so breadboards, veroboard, perfboard and pcb's with toner transfer or UV. Most boards will be created from circuits, but a board can also be created directly.
Each component has a package. There is a physical description of the part above the board and a description of the position and type of each connection. A connection is either a lead or a pad. And there is a definition of all the nodes.
After the Solids component is working, we should be able to export a board as a solid and import a package from a solid.
Breadboard
Shows a picture of the breadboard with the components labeled and placed. Need a way to describe the breadboard; holes per row, pitch, rails. The router will try and minimize the number of leads needed, the number of overlapping leads and there will be an option to avoid short leads.
Jumper Patterns
Sort of an off the cuff idea; if we had a huge database of projects, we might be able to come up with a few jumper patterns that are common. Using some header pins and perfboard, users could make a few of these to speed up breadboarding.
Perfboard
Places the objects on the perfboard and lays out where wire jumpers need to go. Again, need a way to describe the board.
There should be a silkscreen option here. Users can do toner transfer, or just glue the paper to the back of the board.
I'd also like a way to do "header stacks", layout multiple boards that connect with header pins (like an arduino shield), if that will simplify the board design. Needs to take into account the physical size of the components.
Veroboard
Much like perfboard. In addition, it shows where to cut.
PCB
The assumption here is either toner transfer or UV transfer, but it's pretty much the same thing either way. Boards are defined as either single or double layer. Can produce silk screens for each side.
Needs to define wires vs regions.
Maths
I'll need something that can define and solve equations dynamically, and therefore, might as well be exposed as a calculator. I could embed either Lua or Python, more power but also more risk. There are also libraries for expression evaluation.
Vectors
Describes points on plane and Bezier curves defined by those paths. The points can be described absolutely or using functions to reference each other.
Shapes
Describes a 3D shape, I should be able to use the Canvas native 3D support to do this.
Shapes can be defined using vectors. All sort of interesting ways to extrude or intersect.