Get involved in beginner tool development! - Page 1
Forum section: electronics / projects

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 19, 2016, 06:03:18 am
content: I'm primarily a software guy, and I'd like to apply those skills to assist hardware beginners like myself. So, I'm working on a desktop application to calculate the values of support/configuration circuitry for ICs like the NE/NA555, the LM317, et cetera.NE555 timer (almost done, I'm redoing the SI unit implementation because the Boost one is poor)Op amp, various configurationsFirst- and second-order passive filtersSallen key filter (maybe)LM317 power supply controllerLED resistor values (for given LED colour (which varies voltage drop across LED), supply voltage, and driver voltage drop).Battery Life Estimator (battery capacity, average load current OR min/max current consumption)Resistor Calculator (Turns required value, into nearest E24?, common value)Resistor Colour Codes Converter (in BOTH directions, 4 or 5 etc bands, etc) (lower priority; excellent desktop and mobile applications already exist for this. Might implement as a separate app or window.)Interactive Multimeter Component Tester Instructions (specify component to test, e.g. transistor, brings up page describing how to use a multimeter to test that component. E.G. Diode/mosfet/etc. Is voltage > 0.7 then test step 5. else etc etc)Interactive Multimeter Component Lead Configuration Identifier (e.g. transistor pinout, via multimeter)Multi-capacitor circuit Calculator (e.g. 5uF + 22uF = ?, in series/parallel, max voltage is now ...)Units Converter Calculator (amps,volts to Watts, uF to pF, V to mV, etc) (likely will be implemented as a separate window, allowing the user to use this and another calculator at once)Transistor Multivibrator Designer (desired operation frequency, calculates resistor/capacitor values and shows typical circuit)If you have any suggestions for chips you'd like to see added to the calculator, I'd love to hear about them.

author: matseng
author_rank: Frequent Contributor
timestamp: March 19, 2016, 06:21:48 am
content: Nowadays I'd prefer webapps over the traditional you-have-to-download-and-install applications. I use two different operating systems (osx and windows) plus also android on my phone and an ipad. So why limit your application to one of these platforms, an also force the users to update the software every now and then?Some things are still better as a "real "application like ltspice or cad software, but I really see no reason for simple apps like part value calculators and configurators to be installed.

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 19, 2016, 07:23:56 am
content: Well, it's using Qt, so it certainly won't be limited to one platform! It's being developed on Linux, will definitely be available to all desktop platforms, and in theory I'll be able to make it work on iOS and Android (and Sailfish!)I considered making a webapp, but I don't want it to require network connectivity. No reason to install it on Windows or Mac OS X, though, just run the .exe or .app. Of course, on Linux, you need to install it with your package manager, but that's easier than installing or even just downloading and running on Windows or OS X. Just anCode:apt-getor Gnome Software Center visit away.Also, on every system I use, I don't have to manually update software. My package manager does it for me. It's a nice feature that's been around for about a million years, and I'm surprised Windows and Mac OS X haven't adopted it yet.

author: Kilrah
author_rank: Unknown
timestamp: March 19, 2016, 08:01:21 am
content: You're certainly aware there are already many similar offerings?Just one example, the Electrodroid app on Android.

author: matseng
author_rank: Frequent Contributor
timestamp: March 19, 2016, 08:29:21 am
content: Windows doesn't have anything like a packet manager or requirements versioning and auto dl. In OSX that works kinda well if the application is installed from the App Store, the ones downloaded and installed separately doesn't. There are some alternative packet managers/installers/updates for osx like homebrew, but that is then something that both the author needs to be aware of and I as a user must manually update. (Just as in most linux dists. I didn't mention linux since I only run linux on servers - started doing that in 1994)And don't even get me started on all the problems I had with Qt when it comes to version incompatibilities when installing software requiring a specific version of it. I hate it, but that might be the people using it in their softwares or the guy making the packages that is fucking things up.Python is almost the same. I recently tried to install some python software on osx and after 30 minutes reading dox and installing a handful of required libs and other stuffs I just gave up.Back in the god old days you could just drop an exe in a folder and run it. Luckily you can do the same with golang today - they are always fully statically linked and can easily have all assets embedded in the exe as well. No dependencies on specific libs with specific versions.Have you used the online Falstad circuit simulator?http://www.falstad.com/circuit/Previously it was a java app that ran online, but you could also just download it to your machine and run locally. Same thing with the new version that is done in javascript.My machines are online 99% of the time, but I have the Falstad simulator tucked away in a download folder if I'd need it while offline.

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 19, 2016, 02:43:01 pm
content: I have used Falstad, though I now use QUCS which is open source, and much more powerful (it's a proper SPICE).And I do know that similar offerings exist, but only on the web and on mobile.I really am only looking for suggestions for chips to add to the project. I can deal with the software aspect, that's the part I'm good at!Also, have you used a Linux system orientated towards the desktop since about 2005? The extent of the user's interaction in the package upgrade process is to click yes on a pop-up and enter their password, unless they want to change something.

author: jeremy
author_rank: Super Contributor
timestamp: March 20, 2016, 02:49:15 am
content: Sallen key filter calculator is definitely a useful one, especially if it can pick real E-series values.Simple BJT biasing calculator maybe ? Although that could be a can of worms...Quote from: matseng on March 19, 2016, 08:29:21 amHave you looked at anaconda? You can install it on osx in about 3 minutes and you get all the jupyter goodies as well.

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 20, 2016, 03:28:20 am
content: I think I'll avoid the BJT biasing calculator, at least in the first version. Sallen-Key filters probably deserve their own tab, as separate from general op-amp usage topologies.As an aside, it's rather funny to listen to the trials and tribulations of Mac OS and Windows users trying to install things. When I want to use a Python project I just pop open a terminal, runCode:pip install <whatever dependencies>, and for general software I can usually just enter its name into Aptitude and install it with a single click... The only problems I have are installing Windows software on Wine, and that's only when devs are purposely obtuse and don't release the source!

author: jeremy
author_rank: Super Contributor
timestamp: March 20, 2016, 04:56:20 am
content: Quote from: SilverWingedSeraph on March 20, 2016, 03:28:20 amWell to be fair, I run anaconda on windows, mac and linux, as well as on server and desktop. Ubuntu is my flavour of choice, and I like the support of the LTS versions, but of course this means that sometimes the packages are necessarily a little behind in some cases so you need to do it yourself. Also, pip is less useful when you want to install a python library which has a compiled backend like opencv or vtk (though this is improving).

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 20, 2016, 05:06:17 am
content: Absolutely. I love Anaconda. It's an incredibly useful collection of software.

author: jeremy
author_rank: Super Contributor
timestamp: March 20, 2016, 05:09:20 am
content: I just remembered: if you'd like a big pile of op amp circuits to look at for ideas,thisis a pretty classic app note.

author: technix
author_rank: Super Contributor
timestamp: March 20, 2016, 10:55:55 pm
content: If you restrict the support of your apps to the latest versions of each platform only, all platform have a package manager.Microsoft's Windows Store is common across all versions of Windows 10, desktop and mobile, and support Xbox One console too. The .net framework and user interface library for Metro-style apps are common too. So a single carefully coded C# app can cover Windows 10, Windows Mobile 10 and Xbox One.OS X and iOS both have App Stores and have source compatible libraries except the user interface itself. So if you carefully separate the backend data and the user interface you can have OS X and iOS versions created out of the same code base.For various Linux distributions the glibc+Qt are largely standardized. You can code a single Linux version based on that and package them into different formats for Debian-based and Red Hat-based distributions. Also since OS X, iOS and Linux are all UNIX favoring native code you can share a single common POSIX-based data backend across them.Android is a weird beast as it uses Java. But it does have package managers like Google Play.

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 21, 2016, 01:18:45 am
content: I have very little desire to pay Microsoft to make my free app available on their platform.In a more germane direction, the currently planned tabs are:NE555 timer (almost done, I'm redoing the SI unit implementation because the Boost one is poor)Op amp, various configurationsFirst- and second-order passive filtersSallen key filter (maybe)LM317 power supply controllerPlease, suggest more!

author: MK14
author_rank: Super Contributor
timestamp: March 21, 2016, 01:39:59 am
content: LED resistor values (for given LED colour (which varies voltage drop across LED), supply voltage, and driver voltage drop).Battery Life Estimator (battery capacity, average load current OR min/max current consumption)Resistor Calculator (Turns required value, into nearest E24?, common value)Resistor Colour Codes Converter (in BOTH directions, 4 or 5 etc bands, etc)Interactive Multimeter Component Tester Instructions (specify component to test, e.g. transistor, brings up page describing how to use a multimeter to test that component. E.G. Diode/mosfet/etc. Is voltage > 0.7 then test step 5. else etc etc)Interactive Multimeter Component Lead Configuration Identifier (e.g. transistor pinout, via multimeter)Multi-capacitor circuit Calculator (e.g. 5uF + 22uF = ?, in series/parallel, max voltage is now ...)Magnetic Coil Turns Field Intensity Calculator (Calculates estimated Inductance, magnetic field strength etc, user suppplies number of turns in coil).Units Converter Calculator (amps,volts to Watts, uF to pF, V to mV, etc)Transistor Multivibrator Designer (desired operation frequency, calculates resistor/capacitor values and shows typical circuit)

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 21, 2016, 04:54:10 am
content: These are all awesome ideas, MK14. Thank you!I do have one question: from a usability standpoint, would it be valuable to add a function to estimate with the nearest "standard" (E24) components? For example, if the user requested a configuration that called for a 46.5 uF cap it would initially display that, but by pressing a button, it would choose a 47 uF instead (and update the frequency or whatever to match). Would that be valuable?

author: jeremy
author_rank: Super Contributor
timestamp: March 21, 2016, 05:01:22 am
content: Quote from: SilverWingedSeraph on March 21, 2016, 04:54:10 amYes, but you are treading into multivariate optimisation as it might be more optimal to round different values (other resistors, caps, etc) as well, and it's unlikely that your solution space will be convex. It's certainly a solvable problem, but its not as simple as it first looks..

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 21, 2016, 05:10:21 am
content: In that case, perhaps I'll leave it to the engineer (or make it an "advanced" feature). In any case, you've all been a great help in giving me additional ideas. Thank you!

author: Kilrah
author_rank: Unknown
timestamp: March 21, 2016, 05:11:10 am
content: Yes it would be useful, and no need to go intp multivariable optimization - just what you said is already enough and convenient. And is what the other similar offerings do.

author: jeremy
author_rank: Super Contributor
timestamp: March 21, 2016, 05:14:13 am
content: FWIW, I did write a browser based N-dimensional stochastic solver for E series values once upon a time:http://walter.jeremyherbert.net/discrete.htmlFor the record: never try to write mathematical solvers in javascript

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 21, 2016, 05:22:52 am
content: I'd imagine that's a bad idea, considering things like the non-commutative == operator...

author: MK14
author_rank: Super Contributor
timestamp: March 21, 2016, 10:37:25 am
content: Quote from: SilverWingedSeraph on March 21, 2016, 04:54:10 amI'm about to describe the "IDEAL", solution in my mind. DON'T WORRY if it is too much trouble.There is NO need for the user to spend time pressing buttons. Once you have written such software, it can display ALL applicable values.Code:Options Page:Show Closest E24 values Show Calculated Led drive resistors Default Led drive current 20mA  10mA [.] 5mA[.] Variable [???? mA]....Function ConvertRawResistorValueIntoClosestStandardPart .......So if something calculates that the real value/answer is 9789 Ohms.It could say (on the screen) ...Multibrator TR1 Base resistor 9789 Ohms (Closest standard part = 10K (E24))LED (Red) Resistor R7, 4.27 V @20mA's, = 281.063 Ohms (Closest standard part = 270 Ohms (E24))

author: SilverWingedSeraph
author_rank: Contributor
timestamp: March 21, 2016, 03:03:50 pm
content: That avoids doing the (slow) optimization every time, and gives an easy way to build up a similar circuit from a minimum of components. An elegant solution. Thank you.