Difference between revisions of "RoboCup: Reflow Soldering Oven"

From RoboJackets Wiki
Jump to navigation Jump to search
 
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<span style="font-size: 13px; line-height: 1.6;">For the Fall 2014 semster, an introductory project was laid out for the incoming members to become famaliar with the basics of embedded systems. To accomplish this, the incoming members were told to design and develop a temperature controlling unit for a reflow oven. This page outlines the technical details of the project's results and includes information for helping others learn the high-level basics of an embedded system.</span>
+
For the Fall 2014 semester, an introductory project was laid out for the incoming members to become familiar with the basics of embedded systems.
 +
To accomplish this, the incoming members were asked to design and develop a temperature controlling unit for a reflow oven.
 +
This page outlines the technical details of the project's results and includes information for helping others learn the high-level basics of embedded systems.
  
 
== Project Specifications ==
 
== Project Specifications ==
  
'''<span style="color: rgb(34, 34, 34); font-family: 'Trebuchet MS', Verdana, sans-serif; line-height: normal;">Required</span>'''
+
=== Required ===
<ul style="margin-bottom: 1em; font-family: Verdana, sans-serif; font-size: 12px; line-height: normal;">
+
*The Arduino controller must integrate into a [http://www.amazon.com/Proctor-Silex-31111-Toaster-Broiler/dp/B004O0ANH2/ref=sr_1_17?ie=UTF8&qid=1412085077&sr=8-17&keywords=toaster+oven Proctor Silex 31111 Toaster Oven].
<li>The arduino controller must integrate into a&nbsp;[http://www.amazon.com/Proctor-Silex-31111-Toaster-Broiler/dp/B004O0ANH2/ref=sr_1_17?ie=UTF8&qid=1412085077&sr=8-17&keywords=toaster+oven Proctor Silex 31111 Toaster Oven].</li>
+
*A temperature sensor must be used in order to control the oven's temperature for [http://www.digikey.com/product-detail/en/SMD291SNL10/SMD291SNL10-ND/2057272 SMD291SNL10] solder paste.
<li>A temperature sensor must be used in order to control the oven's temperature for&nbsp;[http://www.digikey.com/product-detail/en/SMD291SNL10/SMD291SNL10-ND/2057272 SMD291SNL10]&nbsp;solder paste.</li>
+
*The temperature of the board (in the oven) must never exceed 260 &deg;F for 40 seconds.
<li>The temperature of the board (in the oven) must never exceed 260 40 seconds.</li>
+
*A ''finalization'' stage must be incorporated that will evenly cool down the boards.
<li>A&nbsp;''finalization''&nbsp;stage must be incorporated that will evenly cool down the boards.</li>
+
*An indicator must inform the user (visual and/or auditory) when the board is ready to be removed.
<li>An indicator must inform the user (visual and/or auditory) when the board is ready to be removed.</li>
+
*Temperature control must be done by having a signal for the oven being on or off. Do not worry about directly controlling the oven - just provide the signal.
<li>Temperature control must be done by having a signal for the oven being on or off. Do not worry about directly controlling the oven - just provide the signal.</li>
+
*Once started, the oven must automatically turn off all heating elements after the process is over (no user action required).
<li>Once started, the oven must automatically turn off all heating elements after the process is over (no user action required).</li>
+
*The total costs of all required electrical components must be less than $45 (including any dev. boards).
<li>The total costs of all required electrical components must be less than $45 (including any dev. boards).</li>
+
*The final bill of materials ([http://en.wikipedia.org/wiki/Bill_of_materials BOM]) must be acquired from one (1) supplier.
<li>The final bill of materials ([http://en.wikipedia.org/wiki/Bill_of_materials BOM]) must be acquired from one (1) supplier.</li>
+
*All electrical components in the electrical room are open for use and do not add to the project's cost ([http://inventory.robojackets.org/ http://inventory.robojackets.org])
<li>All electrical components in the electrical room are open for use and do not add to the project's cost ([http://inventory.robojackets.org/ http://inventory.robojackets.org])</li>
 
</ul>
 
<div class="contextual" title="Edit this section" style="float: right; white-space: nowrap; line-height: 1.4em; margin-top: 5px; padding-left: 10px; font-size: 0.9em; font-family: Verdana, sans-serif;"></div>
 
'''Extended Features (Optional)'''
 
<ul style="margin-bottom: 1em; font-family: Verdana, sans-serif; font-size: 12px; line-height: normal;">
 
<li>Use a&nbsp;[https://www.sparkfun.com/products/255 monochrome]&nbsp;or&nbsp;[https://www.sparkfun.com/products/11377 color]&nbsp;LCD for displaying the oven's inside air temperature and/or other useful information.</li>
 
<li>Create a method that will allow a user to create a&nbsp;''custom temperature profile''.</li>
 
<li>Create predefined temperature profiles for common types of solder pastes and allow the user to choose a thermal profile before beginning.</li>
 
</ul>
 
  
== <span style="line-height: 1.2; font-size: 13px;">Introductory Concepts</span> ==
+
=== Extended Features (Optional) ===
 +
*Use a [https://www.sparkfun.com/products/255 monochrome] or [https://www.sparkfun.com/products/11377 color] LCD for displaying the oven's inside air temperature and/or other useful information.
 +
*Create a method that will allow a user to create a ''custom temperature profile''.
 +
*Create predefined temperature profiles for common types of solder pastes and allow the user to choose a thermal profile before beginning.
  
<span style="line-height: 1.2; font-size: 13px;">This section outlines a few of the most common terms one may encounter when learning about embedded systems. An Arduino was used for the reflow oven's central controlling unit, so it is used below to help one relate to the reflow oven.</span>
+
== Introductory Concepts ==
 +
This section outlines a few of the most common terms one may encounter when learning about embedded systems.
 +
An Arduino was used for the reflow oven's central controlling unit, so it is used below to help one relate to the reflow oven.
  
Arduino Capabilities<br/>The arduino brought electronics to the hacking population. It has been credited as the device that started the DIY project boom. The device allows one to easily interface with Atmel's&nbsp;[http://www.atmel.com/devices/atmega328.aspx ATmega328] microcontroller (some arduinos are based upon other chips that provide different capabilities). The rest of the board consists of power regulation (5V and 3.3V), an FTDI for serial communication over USB, connection headers (make it easy to use with a breadboard), and a clocking crystal. It actually is not too much of a challenge to integrate all of an arduino's parts to the reflow oven's circuit board.
+
=== Arduino ===
 +
The Arduino brought electronics to the hacking population. It has been credited as the device that started the DIY project boom. The device allows one to easily interface with some of Atmel's AVR microcontrollers. The rest of the board consists of voltage regulation (5V and 3.3V), an FTDI chip for serial communication over USB, connection headers (makes it easy to use with a breadboard), and a clocking crystal. It actually is not too much of a challenge to integrate all of an Arduino's parts to the reflow oven's circuit board.
  
Pins:<br/>There are many types of arduinos, and each one has advantages and disadvantages from the others. The standard models of the Arduino UNO and Arduino Nano will be discussed for this project. It is very easy to search Google for a diagram showing what the connection pins are attached to on the board. Additionally, the ATmega IC chips have datasheets if you are interested in the IC's pin diagram. Below are the basic pinnouts for each arduino. Notice that some pins are able to do multiple things.
+
Pins:
 +
There are many types of Arduinos, and each one has advantages and disadvantages from the others. The standard models of the Arduino UNO and Arduino Nano will be discussed for this project. It is very easy to search Google for a diagram showing what the connection pins are attached to on the board. Additionally, the ATmega IC chips have datasheets if you are interested in the IC's pin diagram. Below are the basic pinouts for each Arduino. Notice that some pins are able to do multiple things.
  
'''Arduino UNO'''
+
==== Arduino UNO ====
 
+
*6 analog input pins [pins A0 - A5]
*6 analog I/O pins [pins A0 - A5]
 
 
*14 digital I/O pins [pins 0 - 13]
 
*14 digital I/O pins [pins 0 - 13]
 
*Rx and Tx [pins 0 and 1 respectively]
 
*Rx and Tx [pins 0 and 1 respectively]
*6 Pulse Wave Modulation (PWM - allows for simulated analog output by turning the signal on and off really fast) pin [pins 3, 5, 6, 9, 10, 11]
+
*6 PWM pins [pins 3, 5, 6, 9, 10, 11]
 
*SPI interface [pins 11, 12, 13]
 
*SPI interface [pins 11, 12, 13]
 
*I<sup>2</sup>C interface [pins A4, A5]
 
*I<sup>2</sup>C interface [pins A4, A5]
 
*3.3V and 5V power
 
*3.3V and 5V power
  
'''Arduino Nano'''
+
==== Arduino Nano ====
 
+
*8 analog input pins [pins A0 - A7]
*8 analog I/O pins [pins A0 - A7]
 
 
*14 digital I/O pins
 
*14 digital I/O pins
 
*Rx and Tx
 
*Rx and Tx
*6 Pulse Wave Modulation (PWM - allows for simulated analog output by turning the signal on and off really fast) pin [pins D3, D5, D6, D9, D10, D11]
+
*6 PWM pins [pins D3, D5, D6, D9, D10, D11]
 
*SPI interface [pins D10, D11, D12, D13]
 
*SPI interface [pins D10, D11, D12, D13]
 
*I<sup>2</sup>C interface [pins D4, D5]
 
*I<sup>2</sup>C interface [pins D4, D5]
 
*3.3V and 5V power
 
*3.3V and 5V power
  
The nice thing about working with microcontrollers is that some pin functionality can be synthesized by other pins using code. For example, the SoftwareSerial library ([http://arduino.cc/en/Reference/softwareSerial http://arduino.cc/en/Reference/softwareSerial]) can synthesize Tx and Rx pins on pins other than 0 and 1.
+
The nice thing about working with microcontrollers is that some pin functionality can be synthesized by other pins using code. For example, the [http://arduino.cc/en/Reference/SoftwareSerial SoftwareSerial library] can synthesize Tx and Rx pins on pins other than 0 and 1.
  
==== Communication Protocols ====
+
=== Communication Protocols ===
  
SPI:<br/>SPI is the fastest of these three protocols. It requires 4 wires which makes it more cumbersome to implement in large circuits, however, due to the size of this project, SPI shouldn't be an issue. SPI allows for direct two way communication between the Master device (such as an arduino) and the Slave device (such as a display or sensor).
+
==== SPI ====
 +
SPI is the fastest of these three protocols. It requires 4 wires which makes it more cumbersome to implement in large circuits. However, due to the size of this project, SPI shouldn't be an issue. SPI allows for direct, two-way communication between a master device (such as an Arduino) and a slave device (such as a display or sensor).
  
Here are the four signals (From wikipedia):&nbsp;<br/>SCLK&nbsp;: Serial Clock (output from master).<br/>MOSI&nbsp;: Master Output, Slave Input (output from master).<br/>MISO&nbsp;: Master Input, Slave Output (output from slave).<br/>SS&nbsp;: Slave Select (active low, output from master).
+
Here are the names of a typical SPI setup.
 +
*SCLK - Serial Clock (output from master).
 +
*MOSI - Master Output, Slave Input (output from master).
 +
*MISO - Master Input, Slave Output (output from slave).
 +
*SS - Slave Select (active low, output from master).
  
A nice visual representation of this setup can be found here: [http://goo.gl/Yv06RM http://goo.gl/Yv06RM]
+
A nice visual representation of this setup can be found [http://goo.gl/Yv06RM here]:
  
I2C:<br/>I2C (Pronounced I-Squared-C or I-Two-C) Is one of the slower communication methods; However, it requires only two wires to implement, and new devices are easy to add while still using the same two wires. This makes it extremely useful for large circuits (like motherboards) because it keeps things clean and simple. The difference between I<sup>2</sup>C and SPI is that I<sup>2</sup>C does not support simultaneous two way communication.
+
==== I<sup>2</sup>C ====
 +
I<sup>2</sup>C (Pronounced I-Squared-C or I-Two-C) Is one of the slower communication methods; however, it requires only two wires to implement, and new devices are easy to add while still using the same two wires. The difference between I<sup>2</sup>C and SPI is that I<sup>2</sup>C does not support simultaneous two way communication.
  
The system works with two wires that all devices are connected to (the master and all the slave devices).&nbsp;<br/>SDA&nbsp;: Line of communication between master/slave and slave/master.<br/>SCL&nbsp;: Clocking signal (from the master)
+
The system works with two wires that all devices are connected to (the master and all the slave devices).
 +
*SDA - Line of communication between master/slave and slave/master.
 +
*SCL - Clocking signal (from the master)
  
One very important thing to note about I<sup>2</sup>C is that the ''SDA ''and ''SCL ''pins must be "Pulled up" to V<sub>cc</sub> with pull-up resistors. The reasons for this will not be explained here, but a quick google search is all that's needed for those who are interested.
+
One very important thing to note about I<sup>2</sup>C is that the ''SDA'' and ''SCL'' pins must be "Pulled up" to Vcc with pull-up resistors. The reasons for this will not be explained here, but a quick Google search is all that's needed for those who are interested.
  
The master device sends out an address over the ''SDA ''signal wire corresponding to the target slave device. I<sup>2</sup>C slave devices are coded with an address that should be specified in its datasheet. All devices on the I<sup>2</sup>C wires will receive the address, and the device whose address was called responds to let the master device know that it is listening. Then communication can occur between the master and slave over the ''SDA ''signal wire in one direction at a time.
+
The master device sends out an address over the ''SDA '' signal wire corresponding to the target slave device. I<sup>2</sup>C slave devices are coded with an address that should be specified in its datasheet. All devices on the I<sup>2</sup>C wires will receive the address, and the device whose address was called responds to let the master device know that it is listening. Then communication can occur between the master and slave over the ''SDA '' signal wire in one direction at a time.
  
 
This system is similar to a leader wishing to communicate with an individual within a group. The leader (the master device) calls out the name of his or her assistant, and then they communicate openly with each other. Everyone in the room can hear the conversation, but only the leader and the assistant are engaging in conversation because it is understood who is being addressed.
 
This system is similar to a leader wishing to communicate with an individual within a group. The leader (the master device) calls out the name of his or her assistant, and then they communicate openly with each other. Everyone in the room can hear the conversation, but only the leader and the assistant are engaging in conversation because it is understood who is being addressed.
  
Serial:<br/>Serial communication is one of the easiest to understand from a wiring standpoint and it is widely used with arduino projects because of the supporting libraries for the arduino. The difference between this form of communication and the others is that it does not make use of a clocking pin. The baud rate, or the clocking speed for the serial connection, must be specified and each device handles clocking independently. On each device, Rx and Tx pins are present. Data is transmitted from Tx on one device to the Rx on another. This allows for two way communication between only two devices. To communicate with additional devices, new com ports must be implemented (either through hardware or software. See [http://arduino.cc/en/Reference/softwareSerial http://arduino.cc/en/Reference/softwareSerial]) or the appropriate com ports must be reconnected.
+
==== RS-232 ====
 +
RS-232 serial communication is one of the easiest to understand from a wiring standpoint and it is widely used with Arduino projects because of the supporting libraries for the Arduino. The difference between this form of communication and the others is that it does not make use of a clocking pin. The baud rate, or the clocking speed for the serial connection, must be specified and each device handles clocking independently. On each device, Rx and Tx pins are present. Data is transmitted from Tx on one device to the Rx on another. This allows for two way communication between only two devices. To communicate with additional devices, new COM ports must be implemented (either through hardware or software; see the [http://arduino.cc/en/Reference/SoftwareSerial SoftwareSerial library]) or the appropriate COM ports must be reconnected.
  
Tx - Transmit pin&nbsp;<br/>Rx - Receive pin
+
*Tx - Transmit pin
 +
*Rx - Receive pin
  
 
To wire up a serial connection, connect the Rx of one device to the Tx of the other and vice versa.
 
To wire up a serial connection, connect the Rx of one device to the Tx of the other and vice versa.
Line 80: Line 88:
 
==== Miscellaneous Acronyms ====
 
==== Miscellaneous Acronyms ====
  
PCB - Printed Circuit Board.<br/>IC - Integrated circuit. Basically a fancy packaged circuit, often to complex to recreate on a custom PCB, that can be easily implemented.<br/>PWM - Pulse Wave Modulation. Signal pins that support PWM have the ability to switch between high and low (on and off) at very high speeds. This allows them to synthesize a fake analog output.
+
*PCB - Printed Circuit Board
 +
*IC - Integrated Circuit. Basically a fancy packaged circuit. Densely packed logic reduces space and power usage while providing faster switching speeds.
 +
*PWM - Pulse Width Modulation. A fake analog output can be synthesized by switching on and off quickly. The average voltage is adjusted by changing the duration of the high and low.
  
 
== Parts ==
 
== Parts ==
  
[http://www.adafruit.com/products/1770 http://www.adafruit.com/products/1770]
+
[http://www.adafruit.com/products/1770 Touch Screen LCD]
 +
 
 +
[[Category: RoboCup]] [[Category: 2014-2015]]

Latest revision as of 21:44, 13 June 2018

For the Fall 2014 semester, an introductory project was laid out for the incoming members to become familiar with the basics of embedded systems. To accomplish this, the incoming members were asked to design and develop a temperature controlling unit for a reflow oven. This page outlines the technical details of the project's results and includes information for helping others learn the high-level basics of embedded systems.

Project Specifications

Required

  • The Arduino controller must integrate into a Proctor Silex 31111 Toaster Oven.
  • A temperature sensor must be used in order to control the oven's temperature for SMD291SNL10 solder paste.
  • The temperature of the board (in the oven) must never exceed 260 °F for 40 seconds.
  • A finalization stage must be incorporated that will evenly cool down the boards.
  • An indicator must inform the user (visual and/or auditory) when the board is ready to be removed.
  • Temperature control must be done by having a signal for the oven being on or off. Do not worry about directly controlling the oven - just provide the signal.
  • Once started, the oven must automatically turn off all heating elements after the process is over (no user action required).
  • The total costs of all required electrical components must be less than $45 (including any dev. boards).
  • The final bill of materials (BOM) must be acquired from one (1) supplier.
  • All electrical components in the electrical room are open for use and do not add to the project's cost (http://inventory.robojackets.org)

Extended Features (Optional)

  • Use a monochrome or color LCD for displaying the oven's inside air temperature and/or other useful information.
  • Create a method that will allow a user to create a custom temperature profile.
  • Create predefined temperature profiles for common types of solder pastes and allow the user to choose a thermal profile before beginning.

Introductory Concepts

This section outlines a few of the most common terms one may encounter when learning about embedded systems. An Arduino was used for the reflow oven's central controlling unit, so it is used below to help one relate to the reflow oven.

Arduino

The Arduino brought electronics to the hacking population. It has been credited as the device that started the DIY project boom. The device allows one to easily interface with some of Atmel's AVR microcontrollers. The rest of the board consists of voltage regulation (5V and 3.3V), an FTDI chip for serial communication over USB, connection headers (makes it easy to use with a breadboard), and a clocking crystal. It actually is not too much of a challenge to integrate all of an Arduino's parts to the reflow oven's circuit board.

Pins: There are many types of Arduinos, and each one has advantages and disadvantages from the others. The standard models of the Arduino UNO and Arduino Nano will be discussed for this project. It is very easy to search Google for a diagram showing what the connection pins are attached to on the board. Additionally, the ATmega IC chips have datasheets if you are interested in the IC's pin diagram. Below are the basic pinouts for each Arduino. Notice that some pins are able to do multiple things.

Arduino UNO

  • 6 analog input pins [pins A0 - A5]
  • 14 digital I/O pins [pins 0 - 13]
  • Rx and Tx [pins 0 and 1 respectively]
  • 6 PWM pins [pins 3, 5, 6, 9, 10, 11]
  • SPI interface [pins 11, 12, 13]
  • I2C interface [pins A4, A5]
  • 3.3V and 5V power

Arduino Nano

  • 8 analog input pins [pins A0 - A7]
  • 14 digital I/O pins
  • Rx and Tx
  • 6 PWM pins [pins D3, D5, D6, D9, D10, D11]
  • SPI interface [pins D10, D11, D12, D13]
  • I2C interface [pins D4, D5]
  • 3.3V and 5V power

The nice thing about working with microcontrollers is that some pin functionality can be synthesized by other pins using code. For example, the SoftwareSerial library can synthesize Tx and Rx pins on pins other than 0 and 1.

Communication Protocols

SPI

SPI is the fastest of these three protocols. It requires 4 wires which makes it more cumbersome to implement in large circuits. However, due to the size of this project, SPI shouldn't be an issue. SPI allows for direct, two-way communication between a master device (such as an Arduino) and a slave device (such as a display or sensor).

Here are the names of a typical SPI setup.

  • SCLK - Serial Clock (output from master).
  • MOSI - Master Output, Slave Input (output from master).
  • MISO - Master Input, Slave Output (output from slave).
  • SS - Slave Select (active low, output from master).

A nice visual representation of this setup can be found here:

I2C

I2C (Pronounced I-Squared-C or I-Two-C) Is one of the slower communication methods; however, it requires only two wires to implement, and new devices are easy to add while still using the same two wires. The difference between I2C and SPI is that I2C does not support simultaneous two way communication.

The system works with two wires that all devices are connected to (the master and all the slave devices).

  • SDA - Line of communication between master/slave and slave/master.
  • SCL - Clocking signal (from the master)

One very important thing to note about I2C is that the SDA and SCL pins must be "Pulled up" to Vcc with pull-up resistors. The reasons for this will not be explained here, but a quick Google search is all that's needed for those who are interested.

The master device sends out an address over the SDA signal wire corresponding to the target slave device. I2C slave devices are coded with an address that should be specified in its datasheet. All devices on the I2C wires will receive the address, and the device whose address was called responds to let the master device know that it is listening. Then communication can occur between the master and slave over the SDA signal wire in one direction at a time.

This system is similar to a leader wishing to communicate with an individual within a group. The leader (the master device) calls out the name of his or her assistant, and then they communicate openly with each other. Everyone in the room can hear the conversation, but only the leader and the assistant are engaging in conversation because it is understood who is being addressed.

RS-232

RS-232 serial communication is one of the easiest to understand from a wiring standpoint and it is widely used with Arduino projects because of the supporting libraries for the Arduino. The difference between this form of communication and the others is that it does not make use of a clocking pin. The baud rate, or the clocking speed for the serial connection, must be specified and each device handles clocking independently. On each device, Rx and Tx pins are present. Data is transmitted from Tx on one device to the Rx on another. This allows for two way communication between only two devices. To communicate with additional devices, new COM ports must be implemented (either through hardware or software; see the SoftwareSerial library) or the appropriate COM ports must be reconnected.

  • Tx - Transmit pin
  • Rx - Receive pin

To wire up a serial connection, connect the Rx of one device to the Tx of the other and vice versa.

Miscellaneous Acronyms

  • PCB - Printed Circuit Board
  • IC - Integrated Circuit. Basically a fancy packaged circuit. Densely packed logic reduces space and power usage while providing faster switching speeds.
  • PWM - Pulse Width Modulation. A fake analog output can be synthesized by switching on and off quickly. The average voltage is adjusted by changing the duration of the high and low.

Parts

Touch Screen LCD