Coder Social home page Coder Social logo

solderingiron's Introduction

SolderingIron

Idea for an OpenSource Soldering Iron

This project is just another avr based soldering iron. Since professional equipment is quite pricy and not very complicated this projects takes a good, changeable soldering iron tip like the Weller RT1 and provides all the electronics behind that.

View on PCB Layout

Features

  • open hardware (schematic and layout made in Eagle 7.2 freeware license)
  • open firmware written in C (not ready to use right now)
  • fast heatup
  • saving and restoring temperature to and from EEPROM
  • high-precision op-amp for temperature measurement
  • safety measures against overheating and controller crashes
  • automatic temperature control (pid controller)
  • different temperature scales available (recompiling necessary)
  • solder tip rest detection via hall sensor (optional)
  • almost all parts are available from the Seeedstudio Open Parts Library

How does it work

  • 5V for logic
  • 12V for soldering iron
  • ATmega328p controlled

Temperature measure

The thermo-voltage signal is amplified by an op-amp with a gain g = 1 + R1/R2 = 1 + 51k/100 = 511 this signal is converted by ADC0 using Vcc=5V as voltage reference

Solder tip detection

Solved by a hall sensor connected to ADC2. This sensor is powered by 5V

References

Links:

Datasheets:

Current State:

  • hardware version 1.2 is almost ready to be produced
  • optimized bill of materials by reducing unnecessary components
  • PCB measures 5cm x 5cm
  • individual 7-segment displays in use (broader availability)
  • I2C is now unused and can be used for additional hardware

solderingiron's People

Contributors

kenog avatar oni303 avatar rodeo-sam avatar yschroeder avatar

Stargazers

 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

solderingiron's Issues

Update ADC library

The ADC library should not measure the tip temperature free running as stated in #26. The solution is to let the PID controller trigger the adc measurement when the heater is off. The PID controller will continue its work on the ADC conversion complete interrupt.

Things to change:

  • do not measure the tip temperature free running
  • no need for averging any more
  • do nothing when the conversion is completed, the PID controller will handle this

Maybe we should not scrap everything unneeded from the library, AFAIK the hall sensor needs the ADC too and it may be valid to use free running mode there...

Debug print and setting new values via UART

Use the UART interface to implement a debug print, which features:

  • Current temperature
  • Desired Temperature
  • PID values
  • PWM ratio

Writing new values to the AVR:

  • set new PID values
  • set new desired temperature

Rework UART Access

Change the UART pin header, so that GND is on another pin.
2 pin (RX,TX) --> 3 pin (RX,TX,GND)
Add correct labels for all three pins.

adding gerber files

In my opinion working gerber files should be placed here as well.
Maybe in a first hardware release

Optional Hardware Changes

  • ~~Change pin for PWM of soldering iron to a pin connected to an 8-bit timer output~ (see commit dfee941)
  • Add an optional FTDI for debugging (UART is available and an FT232 does not fit on the board)
  • Add an optional ESP8266 (an ESP8266 can be wired to the UART and it does not fit onto the board)
  • More Buttons for Presets
  • Free SDA/SCL pins from display in order to connect I2C (see hardware v1.2 in bc35961)

Sanity-check if temperature is rising when heating

It is possible to kill a soldering tip (not happened yet) if it not fully plugged in. The heater has contact but the thermocouple is floating. This results in no temperature measurement and the tip is heated indefinitely.

The same thing will happen when the thermocouple is broken, wires are disconnected etc.

The controller should check if the temperature gets higher when it starts heating up a tip. If it does not, stop heating and display the famous "tip" message. Only start again if the tip is unplugged and plugged back in.

Build Environment

The wiki currently states that we build this on linux. I see no reason why this project can be built on Windows with WinAVR. It supplies make and avrdude for Windows and should work fine.

Should we support (and test) that, too? And what's with Atmel Studio? That may work as well...

change the 6pin header

change the 6pin header so that vcc for the hall sensor is on that same header and the tip does not need two pin header on the pcb if the hall sensor is built into the handle

Watchdog for AVR

When the AVR crashes for any reason the soldering iron has to be disconnected from power. When the pin to power the iron is high, when the AVR crashes the tip will not be disconnected from power until it reboots. This poses a safety issue and should be addressed.

add gpl header to files

just add the default GPL header to each c and h file to remind every one reusing our code

Move display FETs to the display in schematic

The FETs should be drawn close to the display, as this is part of the display hardware as the current limiting resistors are, too.

Make the ENABLE_LED_x signals the ones on TP1-3, not the power signal of the FETs.

More intelligent PID controller

While discussing PR #40, I had an idea:
It was observed that the ADC readings for the tip temperature are too high when the tip is heated as predicted in issue #26. When the ADC reading while heating does not exceed the maximum value it may be possible to calculate accurate temperatures even while heating. There would be a need to sometimes measure without heating to have a baseline temperature. Then it might be possible to measure how much the ADC value rises while heating. It may then be possible to compensate this excessive voltage in software and allow the PID controller to not disable the heating when it needs a new ADC value. This can increase the possible PWM duty cycle.

Put R27 and C16 close together

These two components are the lowpass for the op amp, both parts are placed right acros the board. Put them togehter becuase they are a logical unit.

Another Display

The widespread HD44780 should be supported. The problem is, that it needs at least 6 pins to make it work. This could be done by using Port B. That should be free, when the current display is removed.

Maybe also the DogL displays might be an interesting option.

We could keep that as an option, so the user can decide, what display he wants. We might have to make a pin header to stack other display shields onto the base plate.

Generalize Buttons.c

Change the buttons.c so that button pins can be changed transparent to the buttons.c.

uart

RX and TX pins are connected to JP2
for debugging issues it would be practical

solder tip pinout missing

I failed to assemble my solder iron. What is the pinout off the tip?
It would be useful to see it on the Pinout wiki page.

pdf

lets add pdf files to show that producing a PCB yourself isn't easy

Default PID values

PID values should be defined as a global variable to go easy on the EEPROM. Also there should be default values which should be used in case there are no values written to the EEPROM or the EEPROM breaks.

Custom values can be written to EEPROM (see #33) and will be used then.

Use a logical numbering for the resistors and capacitors on the board

I know this one is not easy to pull off with Eagle, but the numbering is odd in some places. For example the numbers for the current limiting resistors on the display are messed up. I wanted to reference then in the FAQ but it is not possible to just say R4-11 or something like that.

On the other hand it is not a good idea to change the numbering all the time as it will kill compatibilty between hardware versions and may mess things up even further.

We should get this right as early as possible to reduce chaos.

what is the current Hardware version?

documenting the Pinouts I wondered which Hardware verison is connected to witch Milestone. Am I right that milestone running version is HW_VERSION=2 and our current PCB has HW_VERSION=1 ?

Pressing Buttons disturbs temperature controller

Buttons are read out via interrupts. They are firing often if buttons are held down and the pwm loop runs not often enough. Therefore the tip heats up a lot.

Even if you decrease the temperature the tip will heat up.

Rearrange pinout

The 328p in TQFP has two ADC pins that are not present on the PDIP package. For the sake of simplicity for the design of the THT version (see #21) these pins should not be used. This will break software compatibility.

The hall sensor should be remapped to ADC1 oder ADC2 (what is the purpose of these two currently anyway?).

The display FETs should be switched to PD5-PD7. This frees up the I2C, which should be mapped to some pins for future use. Also include +5V and GND on this I2C header. Don't forget the pullups.

Those changes should then be made to the currently used development boards and documented in the wiki. Then change the code accordingly.

Changes for next version

  • Add Cap (100nF) to AREF pin
  • Check collision of parts (especially overlapping)
  • Change pin for PWM of soldering iron to a pin connected to an 8-bit timer output
  • Simplify Layout and create a THT version for users with no SMD experience.
  • Add an optional FTDI for debugging
  • Add an optional ESP8266
  • More Buttons for Presets

No tip detection

We can implement a reliable detection if no tip is detected by adding a resistor to the op amp input that pulls it to a defined voltage (either GND or VCC, more on that later). This way the op amp output would go into an extreme which signals that no tip is attached.

I think pulling it up to VCC is the best option, this way it is possible to even detect a short circuit on the sensor pin, when it is connected to GND somehow.

An ADC value of 1023 signals a missing tip then, an ADC value of 0 (or close by) signals some other defect of the tip (shorted sensor pin).

By pulling up the op amp input we will change the calibration curve that we sampled earlier. This should be resampled then.

Someone should validate that this works and we should find a reasonable resistor value as pull up. I think 100k may be too little, but let's experiment on that.

Filling the Wiki with documentation

We should add some documentation:

  • Pinout of the different headers
  • Instructions for assembly
  • Information on connectors and power supply
  • Available options for housing, tip rest, cables, grip, hall sensor...

This should be done in the Project Wiki.

Hall Sensor Integration

To make the soldering iron realize that it is at rest a hall sensor is used that is triggered, when the iron is resting. The sensor needs to be interfaced, and tested for different orientation and magnets.

3D printed case for the board

We should offer some .stl file that can be used to print a simple housing for the hardware. It should have the needed holes for switches, display and wires.

Check interaction of heating current with thermocouple

As the soldering tip has only three connections and the thermocouple and the heater share a common ground we should check if there is happening anything funny to the temperature reading when the heater is powered.

If yes, we need a mechanism that notifies the adc library that the power is off and the temperature can now be measured.

By thinking about it there shouldn't be any interference as the thermocouple is a voltage source and the circuits from it and the heater are separated, but let's watch out for this!

THT Design

Create a design (possibly one sided) with THT parts only to make this project more accessible for people without experience soldering SMD.

Tip safety in hardware

You may have already heard about it: There is already one dead tip from experimenting with the PID controller.

If powered from a beefy 12V supply the tip heats up until it glows bright orange in a few seconds. If something goes wrong it dies in seconds!

Therefore we should implement some mechanic to disable the heating when an absolute maximum temperature (like 550°C) is reached. We already discussed some ways to implement it.

The best option we could come up with so far is to use another channel of the op amp and let its output pull the reset line of the AVR when the temperature reaches the critical point. Reseting the AVR will instantly disable the heating. After that the AVR enters its reset interrupt and stays there indefinitely while printing an error on the display. This condition can only be changed by power-cycling the whole soldering station.

There is just one problem: The op amp will have to measure the tip temperature when it is heated which itself results in huge false tempature readings. The read temperatures are even dependant on the resistance of the cable to the tip as there is a voltage over that wire while the current is flowing. Maybe we can find an upper bound for that voltage and let it trigger when it exceeds this voltage.

Cold Junction Compensation for the thermocouple

I was informed (and I should also know this from lectures...) that we have to be careful with the readings from the thermocouple regarding its cold junction temperature.

Small excursion to the world of thermocouples:
A thermocouple only measures a differential temperature. The voltage at its output is proportional to the temperature difference between the coupling point and the end that is connected to the measurement circuit.

Back to our soldering iron:
This may lead to complications with our design. We have calibrated the tip temperature already at what must be something like room temperature. If you hold the soldering iron in your hand then you will likely change (increase) the temperature at the cold junction. This means that we will measure a smaller temperature and therefore the tip is hotter than expected. Also, what happens when the soldering iron is on for longer and the grip gets warm? This will also decrease the measured temperature.

I am not sure how this is solved in the original design, but maybe this is the reason why the complete grip is made from metal. It may dissipate heat from the cold junction.

If the heat dissipation from the tip to the end with the connector can be ignored, then the error in the temperature will be around 10 Kelvin from the warm hand of the user. This is acceptable. However if the heat from the tip heats the connection significantly, then the tip temperature will be much higher than the measured temperature.

We can test how the original iron behaves by cooling the end with the connection down while it is heated to some constant temperature. If they don't take care of this, then the display should wrongfully indicate a rise in temperature.

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.