Difference between revisions of "Virtual Circuit Simulation Guide"

From EG1004 Lab Manual
Jump to: navigation, search
 
(46 intermediate revisions by 4 users not shown)
Line 1: Line 1:


== <b>Circuitry</b> ==
= Circuitry =
This guide focuses on two options for virtual circuitry, one for simulation called Tinkercad and one for more advanced circuit creation called Fritzing. It is highly recommended that students utilize these software for EG-UY 1004 assignments.


Please refer to the overview of  [[Prototyping with Microcontrollers, Sensors, and Materials|overview section of Lab 5]] if you are unfamiliar with prototyping or electrical components. It is important to have a good understanding of how circuits, microcontrollers, and breadboards work to be able to simulate said components virtually.
= Tinkercad =


This guide will focus on two options for virtual circuitry, one for simulation and one for more advanced circuit creation. It is highly recommended that you utilize these softwares, but you are welcome to use any form of simulation that you deem satisfactory.


== <b>Simulation Software</b> ==
Tinkercad is a free in-browser software that will be used for the simulation of microcontrollers and associated electrical components. A link to the website can be found [https://www.tinkercad.com/| here]. Sign into a Tinkercad with an Autodesk account. After logging in, a circuit project can be created by clicking Create new Circuit (Figure 1).


=== Interface ===
[[File:Vc1.png|500px|thumb|center|Figure 1: Creating a Circuit in TinkerCAD]]


* TinkerCAD is a free in-browser software that will be used for simulation of microcontrollers and associated electrical components. A link to the website can be found [https://www.tinkercad.com/| here]. After making an account, a circuit project can be created by clicking “create new circuit”
The sidebar allows  access to common electrical components and templates for prototyping (Figure 2).


Figure 1: Creating a circuit on TinkerCAD
[[File:Vc2.png|700px|thumb|center|Figure 2: Tinkercad Sidebar]]


* The sidebar allows for access to common electrical components, as well as generic setups for prototyping for microcontrollers.
Tinkercad allows the user to directly write and execute code within the software. When the circuit is ready, click Start Simulation to simulate powering the circuit (Figure 3).


Figure 2: TinkerCAD options
[[File:Vc3.png|400px|thumb|center|Figure 3: TinkerCAD Simulation]]
* TinkerCAD allows for the user to directly code within the software. When the circuit is ready, click “start simulation” to simulate powering the circuit.


Figure 3: Code and simulation
Click Code to open the panel to write code. The code is based on the Arduino programming language. A guide to coding with Arduino can be found [[Arduino Coding Guide | here]]. The Serial Monitor window function as it would in the Arduino IDE, and has the same setup and loop areas (Figure 4). Note that the circuit cannot be adjusted while the code tab is opened.


* Select “text-based” upon opening the simulation. A guide to coding with Arduino can be found here. The serial monitor window functions the same as it would in the Arduino IDE, and must be initialized in the same fashion. Note that the circuit cannot be adjusted while the code tab is opened.
[[File:Vc4.png|600px|thumb|center|Figure 4: TinkerCAD Code Area]]


Figure 4: Code menu for simulation
= Frtizing =


== <b>Drawing Circuitry</b> ==
Fritzing is a free, open-source software that has a variety of tools. A link to download the software can be found [[Media: Fritzing.zip |here]]. Extract the ZIP file to a folder on a computer and run the EXE file.


=== Interface ===
Fritzing's interface is similar to Tinkercad's interface, with the exception that it cannot perform simulations. Still, Fritzing provides a greater variety of components that are not included in Tinkercad.


* Fritizing is a free, open-source software that includes a variety of tools. A link to download can be found here. It is a very similar interface to TinkerCAD, with the exception that it cannot perform simulations. However, Fritzing allows for a much greater variety of components that are not included on TinkerCAD.
Upon installation, the following tabs are shown (Figure 5). The Breadboard View tab displays the components, and the Code tab gives the in-program access to Arduino IDE.
* Upon installation, the following tabs are shown. The breadboard is the visual interaction with components, and the code is an in-program access for Arduino


Figure 5: Tabs for Fritzing
[[File:Vc5.png|600px|thumb|center|Figure 5: Fritzing Tabs]]


* The parts menu is the same interface as TinkerCAD, with many more options.
The Parts menu has the same interface as that of Tinkercad, but with many more options (Figure 6).


Figure 6: Parts menu
[[File:Vc6.png|300px|thumb|center|Figure 6: Fritzing Parts Menu]]


== <b>Basic Examples</b> ==
= Examples =


* In this guide, two basic example projects will be shown to you on TinkerCAD, but can be easily replicated on Fritzing: a DC motor running continuously in one direction, and a DC motor that spins based on the input of the user.
In this guide, two basic example projects will be shown in Tinkercad, but can be easily replicated in Fritzing. The examples include a DC motor rotating continuously in one direction and a DC motor that rotates based on the input of the user.
* After dragging in a DC motor and Arduino, the proper wiring is drawn and the simulation is run.


Figure 5: Continuous DC motor
== Continuous DC Motor ==


* The DC motor now displays the RPM that it would be at for this amount of voltage, specifically at 3.3 V. Note that in this situation, the microcontroller is functioning directly as a battery. Were this a 9 V battery instead of a microcontroller, the displayed RPM would be much higher if the DC motor is able to take it.
A DC motor that runs continuously  will be simulated in TinkerCAD. After dragging in a DC motor and Arduino from the Tinkercad sidebar (Figure 7), the wiring is drawn and the simulation is run.
* When creating this same setup in a real scenario, it is highly unlikely that the motor will be directly connected to the power supply. Additionally, buffers such as resistors are used to prevent damage to the motor from being directly exposed to the power supply, or to manipulate the RPM to a desired quantity. As such, we will drag a breadboard and resistor to the circuit. With all electrical components, TinkerCAD allows for the user to directly set the quantity in question; a resistor is dragged in and is set to 100k Ohms.


Figure 6: Dragging in a resistor
[[File:Vc7.png|400px|thumb|center|Figure 7: Continuous DC Motor Example]]


Figure 7: Continuously running DC motor with 100k Ohm resistor
The DC motor displays the revolutions per minute (RPM) that it rotates at for this amount of voltage, specifically 6586 RPM at 3.30 V. The RPM is directly proportional to the input voltage, so the motor speed can be controlled by varying the input voltage. Note that in this situation, the microcontroller is functioning directly as a battery to the motor. Were this a 9.00 V battery instead of a microcontroller, the displayed RPM would be much higher, if the DC motor is able to support the speed.


* As seen in the figure above, the RPM of the motor is decreased greatly, despite the input voltage being the same. By utilizing a breadboard, one is able to directly control how fast the motor will spin purely using resistors
When creating this same circuit in a physical motor, it is highly unlikely that the motor will be directly connected to the power supply. Additionally, resistors are used to prevent damage to the motor from being directly exposed to the full voltage from the power supply and are used to manipulate the RPM to a desired speed. Drag a breadboard and a 10.00 kΩ resistor into the circuit (Figure 8).
* However, this is an example of a circuit where the user has no control over the system; the motor can only run continuously in a single direction. Let’s look at an example where the motor is coded to spin back and forth on a timer.


Figure 7: Motor programmed to run and pause
[[File:VCSG Figure 8.png|400px|thumb|center|Figure 8: Continuous DC Motor with 10 k&Omega; Resistor]]


* In the above figure, note that the power supply now is wired from pin 8. In our code, the function digitalWrite is sending signals to the specified pin. Here, HIGH will cause the pin to supply power, while LOW shuts off the power being supplied to the circuit. The delay function tells the microcontroller how long to follow the prior line. In this example, the motor is running for one second, then stopping for one second. As it is in a loop, it then repeats.
With all electrical components, Tinkercad allows  the user to directly set the value of the component, such as the resistance for a resistor or voltage for a power supply. A resistor is dragged in and set to 10 k&Omega; (Figure 9).
 
[[File:VCSG Figure 9.png|400px|thumb|center|Figure 9: Setting Resistor Value]]
 
By using the resistor, the RPM of the motor decreased to 41.00 RPM, while the input voltage was the same. The resistor directly controls how fast the motor will rotate.
 
 
== DC Motor with Specified Input ==
 
A DC motor that runs for a specified time based on a specified input will be simulated in Tinkercad (Figure 10).
 
[[File:Vc10.png|800px|thumb|center|Figure 10: Motor Programmed to Run and Pause]]
 
To control the motor with a specified input, the motor must be connected with the Arduino. In this circuit, the power supply is wired to digital pin 8. This will allow the Arduino board to communicate with the power supply, which will directly communicate with the motor. As pin 8 is a digital pin, it only has two values: HIGH or LOW. In the program, the function digitalWrite sends signals to the specified pin. In the code, HIGH will cause the pin to supply power and therefore for the motor to run, while LOW shuts off the power being supplied to the circuit for the motor to stop, as seen in rows 8 and 10, respectively. The motor can also be directly wired to the board instead of wired to the power supply to receive signals directly from the Arduino board.
 
For the Arduino,  digital pins that will transmit signals utilizing 5.00 V, so a resistor is used to protect the motor from burning out from too much voltage. The delay function tells the microcontroller how long to run one line of code, or how long to turn on the motor, before executing the next line of code. The delay function reads its value in milliseconds. In this example, the motor is running for 1.00 s, then stopping for 1.00 s. As this part of the program is in the Loop area, it repeats until a line of code indicates it to stop.

Latest revision as of 20:01, 2 September 2024

Circuitry

This guide focuses on two options for virtual circuitry, one for simulation called Tinkercad and one for more advanced circuit creation called Fritzing. It is highly recommended that students utilize these software for EG-UY 1004 assignments.

Tinkercad

Tinkercad is a free in-browser software that will be used for the simulation of microcontrollers and associated electrical components. A link to the website can be found here. Sign into a Tinkercad with an Autodesk account. After logging in, a circuit project can be created by clicking Create new Circuit (Figure 1).

Figure 1: Creating a Circuit in TinkerCAD

The sidebar allows access to common electrical components and templates for prototyping (Figure 2).

Figure 2: Tinkercad Sidebar

Tinkercad allows the user to directly write and execute code within the software. When the circuit is ready, click Start Simulation to simulate powering the circuit (Figure 3).

Figure 3: TinkerCAD Simulation

Click Code to open the panel to write code. The code is based on the Arduino programming language. A guide to coding with Arduino can be found here. The Serial Monitor window function as it would in the Arduino IDE, and has the same setup and loop areas (Figure 4). Note that the circuit cannot be adjusted while the code tab is opened.

Figure 4: TinkerCAD Code Area

Frtizing

Fritzing is a free, open-source software that has a variety of tools. A link to download the software can be found here. Extract the ZIP file to a folder on a computer and run the EXE file.

Fritzing's interface is similar to Tinkercad's interface, with the exception that it cannot perform simulations. Still, Fritzing provides a greater variety of components that are not included in Tinkercad.

Upon installation, the following tabs are shown (Figure 5). The Breadboard View tab displays the components, and the Code tab gives the in-program access to Arduino IDE.

Figure 5: Fritzing Tabs

The Parts menu has the same interface as that of Tinkercad, but with many more options (Figure 6).

Figure 6: Fritzing Parts Menu

Examples

In this guide, two basic example projects will be shown in Tinkercad, but can be easily replicated in Fritzing. The examples include a DC motor rotating continuously in one direction and a DC motor that rotates based on the input of the user.

Continuous DC Motor

A DC motor that runs continuously will be simulated in TinkerCAD. After dragging in a DC motor and Arduino from the Tinkercad sidebar (Figure 7), the wiring is drawn and the simulation is run.

Figure 7: Continuous DC Motor Example

The DC motor displays the revolutions per minute (RPM) that it rotates at for this amount of voltage, specifically 6586 RPM at 3.30 V. The RPM is directly proportional to the input voltage, so the motor speed can be controlled by varying the input voltage. Note that in this situation, the microcontroller is functioning directly as a battery to the motor. Were this a 9.00 V battery instead of a microcontroller, the displayed RPM would be much higher, if the DC motor is able to support the speed.

When creating this same circuit in a physical motor, it is highly unlikely that the motor will be directly connected to the power supply. Additionally, resistors are used to prevent damage to the motor from being directly exposed to the full voltage from the power supply and are used to manipulate the RPM to a desired speed. Drag a breadboard and a 10.00 kΩ resistor into the circuit (Figure 8).

Figure 8: Continuous DC Motor with 10 kΩ Resistor

With all electrical components, Tinkercad allows the user to directly set the value of the component, such as the resistance for a resistor or voltage for a power supply. A resistor is dragged in and set to 10 kΩ (Figure 9).

Figure 9: Setting Resistor Value

By using the resistor, the RPM of the motor decreased to 41.00 RPM, while the input voltage was the same. The resistor directly controls how fast the motor will rotate.


DC Motor with Specified Input

A DC motor that runs for a specified time based on a specified input will be simulated in Tinkercad (Figure 10).

Figure 10: Motor Programmed to Run and Pause

To control the motor with a specified input, the motor must be connected with the Arduino. In this circuit, the power supply is wired to digital pin 8. This will allow the Arduino board to communicate with the power supply, which will directly communicate with the motor. As pin 8 is a digital pin, it only has two values: HIGH or LOW. In the program, the function digitalWrite sends signals to the specified pin. In the code, HIGH will cause the pin to supply power and therefore for the motor to run, while LOW shuts off the power being supplied to the circuit for the motor to stop, as seen in rows 8 and 10, respectively. The motor can also be directly wired to the board instead of wired to the power supply to receive signals directly from the Arduino board.

For the Arduino, digital pins that will transmit signals utilizing 5.00 V, so a resistor is used to protect the motor from burning out from too much voltage. The delay function tells the microcontroller how long to run one line of code, or how long to turn on the motor, before executing the next line of code. The delay function reads its value in milliseconds. In this example, the motor is running for 1.00 s, then stopping for 1.00 s. As this part of the program is in the Loop area, it repeats until a line of code indicates it to stop.