Difference between revisions of "RoboCup: Reflow Soldering Oven"
Line 57: | Line 57: | ||
==== Communication Protocols ==== | ==== Communication Protocols ==== | ||
− | SPI | + | '''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 a master device (such as an arduino) and a slave device (such as a display or sensor). |
− | Here are the | + | Here are the names of a typical SPI setup.<br/>''SCLK ''- Serial Clock (output from master).<br/>''MOSI ''- Master Output, Slave Input (output from master).<br/>''MISO ''- Master Input, Slave Output (output from slave).<br/>''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 here: [http://goo.gl/Yv06RM http://goo.gl/Yv06RM] | ||
− | + | '''I<sup>2</sup>C'''<br/>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. 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. | |
− | The system works with two wires that all devices are connected to (the master and all the slave devices). <br/>SDA | + | The system works with two wires that all devices are connected to (the master and all the slave devices). <br/>''SDA -'' Line of communication between master/slave and slave/master.<br/>''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 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. | ||
Line 73: | Line 73: | ||
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 | + | '''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. |
− | Tx - Transmit pin <br/>Rx - Receive pin | + | ''Tx ''- Transmit pin <br/>''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. |
Revision as of 05:22, 6 December 2014
Contents
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.
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. <
- 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 Capabilities
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 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.
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 pinnouts for each arduino. Notice that some pins are able to do multiple things.
Arduino UNO
- 6 analog I/O pins [pins A0 - A5]
- 14 digital I/O pins [pins 0 - 13]
- 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]
- SPI interface [pins 11, 12, 13]
- I2C interface [pins A4, A5]
- 3.3V and 5V power
Arduino Nano
- 8 analog I/O pins [pins A0 - A7]
- 14 digital I/O pins
- 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]
- 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 (http://arduino.cc/en/Reference/softwareSerial) 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: http://goo.gl/Yv06RM
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. This makes it extremely useful for large circuits (like motherboards) because it keeps things clean and simple. 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.
Serial
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) 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, often to complex to recreate on a custom PCB, that can be easily implemented.
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.