Electronics > Projects, Designs, and Technical Stuff
AI circuit design experiment. Programing the meat of a component sandwich?
excitedbox:
I started doing some experimentation with AI in electronic circuit design and need some help.
I started out with a simple circuit description language which can be used for the human input into the system but will also be used later for a node based visual input system. Then I devised a parts/components database design which the system can use to build circuits from. I have a web scraper that will collect as many datasheets as I can scrape from digikey and manufacturer sites and there is a kicad project to parse through datasheets and extract component specs which I am looking to adapt to fill the database to the brim.
The way I envision the system working is that you place components and draw lines between them and the AI fills in the resistors, caps, inductors, and accompanying circuits. The AI basically takes the output voltage, and current of the pin the connection starts at and matches it with the input requirements (min + max) of the pin it ends at. It gets these values from the DB by querying the parts specified in the code.
Now comes the part I need help with. I need a way for the system to know what is needed for each type of connection or component beyond just matching voltages and amperage. Such as deciding if I need a diode, filtering circuit, voltage multiplier, h bridge etc. For a LED or Button it is easy to add a resistor based on either of those components being used. How can I programmatically decide where to place a filtering cap or diode?
I understand I will need to program these circuits and the equations for which part values to use, but I also need a way for the AI to pick when to use them. The end goal is that you would be able to place an MCU and a motor, lcd, buttons, sensors, adc, and draw lines between them and the AI can fill in the rest.
I will thank people ahead of time for not wasting everyones' time by posting it wont work and other negativity, this is not meant to become a finished product. This is me playing around and pushing myself to see how far I can take it. Mostly to improve my coding skills and knowledge of electronics.
pwlps:
--- Quote from: excitedbox on January 02, 2020, 09:58:07 pm ---
Now comes the part I need help with. I need a way for the system to know what is needed for each type of connection or component beyond just matching voltages and amperage. Such as deciding if I need a diode, filtering circuit, voltage multiplier, h bridge etc. For a LED or Button it is easy to add a resistor based on either of those components being used. How can I programmatically decide where to place a filtering cap or diode?
--- End quote ---
We decide where to place components depending on the desired function of the circuit, so the question is how to programatically encode such a function. This is probably a difficult problem for a general circuit, I would suggest first considering some specific classes of circuits where the circuit function can be easily coded by a mathematical function. For example to design a filter (i.e. any linear circuit) we start specyfying its desired transfer function, and it is possible to devise an algorithm for the filter synthesis.
unitedatoms:
AI doing circuit level self replication ? Don't people read in literature that it is the humanity's worst fear. :)
SiliconWizard:
I don't know what kind of AI you're going to use, I'm guessing NNs, as they are the most popular approach these days.
I guess you would approach this problem just like any other one based on learning? You'd need to build large data sets with expected outputs versus inputs for a given circuit. As there's obviously a dynamic side here, you'd need to take a look at how it's currently done for things such as music/speech recognition, or moving images.
Once you have that, you'd still need to add a learning "layer" to make your NNs aware of existing components and how they behave.
That looks like a very complex problem.
To make it a bit more tractable, you could approach it as some kind of optimization problem first.
The idea would be to kind of "synthesize and map" the functionality of a given circuit on a predefined array of analog cells which parameters and interconnections could be defined to perform a specific function. NNs or other kind of optimization algorithms, or a mix of both, could be used. For how to devise those generic analog cells, you could find some inspiration from Silego devices or the like.
i_am_fubar:
Most designs are done through piecing together design patterns as opposed to designing from scratch each time.
For instance, low power LED on 5v circuit? 1k series resistor. Yes, you can calculate voltage drop, subtract from rail voltage and calculate that 20mA requires X resistor. But generally this is not needed in 90% of situations.
It may be worth trying to find a library of design patterns. Then based on what components are placed by the user, predict the target design pattern and fill in the blanks.
At that point, timing component selection could be based on known equations from datasheet application notes.
For instance, you place a 555 timer IC and an LED. *Bing*, suggestions - oscillator or timer? What time base.
Then resolve the actual RC(L) values via NN based on timing values.
Navigation
[0] Message Index
[#] Next page
Go to full version