We built and programmed a controller to apply the reflow soldering process for assembling EFM8 boards with ovens in the UBC ECE Undergraduate Lab.
This was built with a N76E003 microcontroller, ADC input peripherals and an op-amp circuit to amplify voltage measurements from a thermocouple.
This electronic circuit and its firmware was designed to achieve the state operations in the following Architecture Diagram.
We implemented a statemachine to go through each mandatory condition statement and state for the reflow soldering process to execute to completion in a safe manner. There was emphasis on meeting the necessary preconditions for the circuit to enable the subsequent stage.
This was implemented in 8051 ASM. We structured the Firmware
codebase to have peripheral functionality in dedicated .inc
files. The Finite State Machine (FSM) controller was implemented in the MAIN.ASM
and included these libraries to undergo the reflow process.
A large part of the system design involved interaction between different firmware modules and the I/O devices, as shown in this diagram.
The ADC firmware was a problem of its own. This was a several-step task, as shown in the diagram below.
The room temperature was read with a LML335 temperature sensor, which was straightforward to implement. For the thermocouple temperature, we built a dedicated op-amp circuit to amplify the voltage.
Through firmware, we performed arithmetic on the voltage read to account for the amplification and convert it into a temperature value.
The controller functionality relied on an accurate calculation of this to be summed with the room temperature and was required to be within 3C accuracy. We validated this extensively, using the Multimeter_Temp.pyw
application.
Validation_Video.mp4
The build tasks in the .vscode
file were set up to run :
- the
a51.exe
executable to compile theMAIN.ASM
file - the
ISPN76E003.exe
executable to flash the program onto the N76E003 (8051 family) microcontroller
To augment the user-feedback, we developed the Python application run with app.py
. This was used to display the real-time incoming datastream, store it to a pandas table, and export it to a .csv
for postprocessing in the Logbook
subdirectory. The software backend and user interface was designed to receive serial transmission during state changes and indicate this to the user as well.
We set up a Google Cloud Platform (GCP) bucket for additional data post-processing, across multiple reflow processes. This enabled us to leverage a data warehouse and its Big Data handling capabilities if we needed the infrastructure to analyze our controller performance over many runs. The generated reflow process .csv
was uploaded to the GCP bucket with the uploading.py
package in the base application.
We also implemented the ability to download these with the downloading.py
script.
We have uploaded our Final Demo on Youtube.
We have also attached our Project Report for detailed analysis of our engineered solution.
This was completed as part of the ELEC 291 - Design Studio project course in the The University of British Columbia Electrical and Computer Engineering undergraduate program. We received tremendous support and guidance from Dr. Jesus Calvino-Fraga.