User Tools

Site Tools


Navigation Menu

Flight-Control

  • StatusClosed
  • OP-ModePre-Launch
  • LocationN48 - E11
  • Localtime00:24
  • CountdownT-00D 00:00

Hot Projects

SEEDStack

SEEDStack - Open 3D printable seed/sprouting systemDIY Food Hacking

UCSSPM

UCSSPM - Unified Clear-Sky Solar Prediction ModelOpen Solar Power

picoReflow

picoReflow - DIY PID Reflow Oven Controller based on RaspberryPiDIY Reflow Soldering

PiGI

PiGI - DIY Geiger Counter based on RaspberryPiRasPi Geiger Counter

DIY ARA-2000

Active Wideband Receiver Antenna for SDR - ARA-2000Wideband Antenna

DSpace

DSPace - Map everythingMap everything!

Mission-Tags

EZVD - Easy Voltage-Divider Calc-/Simulator

When you migrate from just learning by copying open-source hardware designs/schematics towards creating your own electronic designs and solutions, you'll sooner or later will be confronted with the task of designing and selecting the right resistors for a certain voltage divider.

In the past, online-tools like this have been a great companion in the process, what can go wrong, it's just two simple resistors, right? Well, after a little more research it seems that it's actually not as trivial as it may did in the beginning, especially when used as an input divider for an ADC.

EZVD Output on the console (python/ncurses)

EZVD was born out of the necessity to have a paperless math proving ground that should be easily hackable and fun to play with various math models and parameters. Python seemed like a logical choice to rebuild the whole division/conversion/calculation chain from input voltage to predicted decimal output for a given ADC resolution.

With EZVD you can simulate and instantly assert your design choices and get warnings for certain constraints you can set:

  • Power Efficiency
    • How much power will it cost to drive the divider?
    • How much power is dissipated in each Resistor?
      • Determines package/thermal management decisions
      • Determines temperature increase of package which changes its own resistance
  • Design Efficiency Indicator Bar (wasted resolution vs. clipping)
  • Analog Reference Voltage (ADC)
  • VD output impedance (to match ADC input muxer circuit, which lowers the ADC input impedance)
  • Simultaneous Overview for most common ADCs (8,10,12 and 16 Bit)
  • Have consistent/tested copy-paste math blocks to use in firmware development

It's still a very hackish and early implementation but it (or the idea of it) serves well as a basic tool we can build upon. So everyone interested is invited to make it better to help us all to reduce design failure risks by mis-aligning a simple voltage divider where a calculator/simulator can show us the way:

  • Review, verify and extend its math model
  • Add more functionality
  • Make it more robust (Fix uncaught cases where EZVD will crash with large step sizes)

Installation

Dependencies

  • Python 3.x
    • with UTF support
    • with ncurses support

Every reasonably recent GNU system should have this available.

Clone repo

$ git clone https://github.com/apollo-ng/ezvd.git
$ cd ezvd

Usage

Run

$ ./ezvd.py

Interaction

Basic Parameters

Key Function
1 Enter value of R1 in Ohms
2 Enter value of R2 in Ohms
M Enter maximum input Voltage (Full-Scale)
R Enter ADC Reference Voltage

Simulation Control

Key Function
Tab Cycle between simulation targets (VIN/R1/R2)
+ Increase simulation step size
- Decrease simulation step size
Change simulation direction (Up)
Change simulation direction (Down)
P/Space Pause/Resume simulation

Development / Sources / Issue-Tracking

People are fighting board-wars over the 1024 vs. 1023 multiplier issue and a lot of code out there one could use as an example bears the risk of also just being copy-pasted from some other bad example. So anyone with the skill to provide knowledge, reflection, verification and feature expansion is invited to join development, so that we all can have an open, reviewed and verified simulation/calculation tool basis to work with. Feedback, PR's and everything else that might increase precision/usability are, as always, very welcome:

https://github.com/apollo-ng/ezvd

Roadmap

  • Reverse Finding of optimal resistor values for given inputs

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Discussion

Comment text

Please type the letters you see on the left into the box on the right:

   __   ____  __  __  _____   _  __
  / /  /_  / / / / / / ___/  | |/_/
 / /__  / /_/ /_/ / / (_ /  _>  <  
/____/ /___/\____/  \___/  /_/|_|