Git Product home page Git Product logo

sparky's Introduction

boot_screen1_500

SPARKY

The Little Stick Welder with Big Features.

Welcome to the Sparky Stick Welder project. It's a low cost Chinese built stick welder that's been DiY upgraded to enhance its features. The upgrade is driven by an ESP32 with 16MB FLASH. Several new features are added, including a color touch screen, Bluetooth low energy (BLE) control, DAC voice playback, and high current measuring capabilities.

Features:

  • Uses low cost ($60 USD) ZX7-200 type Inverter Welding Machine.
  • Color TFT Screen displays welding current, arc voltage, and menus.
  • Touch Screen for selecting features. Built-in help screens display useful welding tips too.
  • Programmable Pulse current mode for enhanced stick welding.
  • Helmet mounted Bluetooth Low Energy (BLE) Button for remote Amps control.
  • Audio for announcing Amps and over-temp alerts.
  • Flash memory for saving power-up defaults.
  • Low cost components (~$40 USD).
  • Non invasive design, no permanent changes to the welder.

Skills Required:

This project is suitable for most advanced electronic circuit builders that are familiar with high voltage safety. Step-by-step wiring instructions and "Heathkit" type pictorial wiring diagrams are not provided. But basic build information is available in the project build log (PDF file): https://github.com/thomastech/Sparky/raw/master/Sparky_Stick_Welder.pdf

Warning:

An inverter welder is a potentially dangerous machine. Lethal primary voltages (>300 volts) are present inside the cabinet, even after power is turned off. The involved currents have more than enough energy to vaporize misplaced wiring (and misguided hand tools) in a dangerously hot explosive flash. Proceed at your own risk.

Demo Video: Click image to play

Sparky Project Introduction

sparky's People

Contributors

hogthrob avatar thomastech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sparky's Issues

PlatformIO has issues with patched libraries

Hello!

Trying to build this project with the latest versions of PlatformIO and it seems to have heartburn with the patched library.properties files not being parsed correctly. The only thing I can find about this subject is that PlatformIO recommends this file to be in json format. Any ideas?

CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/lolin_d32_pro_16MB.html
PLATFORM: Espressif 32 (3.3.2) > WEMOS LOLIN D32 PRO 16MB
HARDWARE: ESP32 240MHz, 3.91MB RAM, 6.25MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 3.10006.210326 (1.0.6)
  • tool-esptoolpy 1.30100.210531 (3.1.0)
  • toolchain-xtensa32 2.50200.97 (5.2.0)
    LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    ValueError: Invalid simple block '26b691b2c8':
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/builder/main.py", line 178:
    env.SConscript("$BUILD_SCRIPT")
    File "/Users/bobj/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Script/SConscript.py", line 597:
    return _SConscript(self.fs, *files, **subst_kw)
    File "/Users/bobj/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
    File "/Users/bobj/.platformio/platforms/espressif32/builder/main.py", line 218:
    target_elf = env.BuildProgram()
    File "/Users/bobj/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Util.py", line 748:
    return self.method(*nargs, **kwargs)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/builder/tools/platformio.py", line 62:
    env.ProcessProjectDeps()
    File "/Users/bobj/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Util.py", line 748:
    return self.method(*nargs, **kwargs)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/builder/tools/platformio.py", line 141:
    project_lib_builder = env.ConfigureProjectLibBuilder()
    File "/Users/bobj/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Util.py", line 748:
    return self.method(*nargs, **kwargs)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/builder/tools/piolib.py", line 1092:
    project.install_dependencies()
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/builder/tools/piolib.py", line 916:
    if lm.get_package(spec):
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/manager/base.py", line 234:
    spec = self.ensure_spec(spec)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/manager/base.py", line 102:
    return spec if isinstance(spec, PackageSpec) else PackageSpec(spec)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/meta.py", line 124:
    self._parse(self.raw)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/meta.py", line 227:
    raw = parser(raw)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/meta.py", line 250:
    self.requirements = tokens[1].strip()
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/platformio/package/meta.py", line 167:
    else semantic_version.SimpleSpec(str(value))
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/semantic_version/base.py", line 618:
    self.clause = self._parse_to_clause(expression)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/semantic_version/base.py", line 1014:
    return cls.Parser.parse(expression)
    File "/Users/bobj/.platformio/penv/lib/python3.8/site-packages/semantic_version/base.py", line 1034:
    raise ValueError("Invalid simple block %r" % block)

INA219 configuration is not what it seems to be

The resulting configuration of the INA219 is not what it seems to be:

ina219.configure(BUS_RANGE_16V, PGA_RANGE_160MV, SAMPLE_AVG_128, CONTINUOS_OP); // Note: 68mS Sample Time!

generates as IN219 config register value 0x183F or
in bit groups: 000 11 0000 0111 111
BRNG = 0 -> 16V
PG10 = 11 -> /8 320mV
BADC = 0000 -> 9 bit, 84uS
SADC = 0111 -> 12 bit, 532uS
MODE = 111 -> Continuous Shunt and Bus voltage

Reason for this is the extensive use of default values combined with limited checking of value ranges in the INA219 library used.

void configure(uint8_t range = D_RANGE, uint8_t gain = D_GAIN, uint8_t bus_adc = D_BUS_ADC, uint8_t shunt_adc = D_SHUNT_ADC, uint8_t mode = D_MODE);

So the correct call to achieve the intentions would be:

ina219.configure(BUS_RANGE_16V,  PGA_RANGE_160MV, 0, SAMPLE_AVG_128, CONTINUOS_OP);

The extra 0 for the bus_adc shifts the shunt_adc setting to the right place.

Unfortunately this alone would not work as expected, as SAMPLE_AVG_128 is set to 16 (0b10000) but should be 15 ( 0b1111). Because of the missing checking of value ranges in configure, the 5th bit "bleeds" into the next higher settings bits. So SAMPLE_AVG_128 has to be defined to 15 in PulseWelder.h

However, I wonder, if we should not simply fix the configuration call to match what has been configured in reality, e.g. like this (given set the used defines to the correct values)

ina219.configure(BUS_RANGE_16V,  PGA_RANGE_320MV, SAMPLE_9BITS, SAMPLE_12BITS, CONTINUOS_OP);

and start from there. For things I have in mind, the averaging in the INA219 may not be appropriate, I have to see what current sample rate I will need.

BTW, the config register value generated from this is 0x181F which is identical in terms of resulting configuration to 0x183F since the 3rd bit in SAMPLE_12BITS is don't care if the 4th( == MSB) bit is 0.

If this is fine with everyone, I would submit a PR for this.

INA219 very sensitive for external influence

On my build (which is quite similar to the original one), the current readings are easily disturbed by placing or moving a hand close to the INA219 mounted on the perfboard. I use twisted wire but moving the wire around or touching it does not cause changes.
Also if everything is put together I see more fluctuation in the measured current than if the electronics are not as close to the front of the welder. However, the disturbuance create by hand movements is worse.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.