You are on page 1of 99

Introduction to LabVIEW

Electrical Wiring
Music Instrument
GRAPHICAL PROGRAMMING
FOR ENGIEERS AND SCIENTI

Hands-On Material
From National Instruments

ENGR 100 Section C


Course Goals
Become comfortable with the LabVIEW
environment and data flow execution
Ability to use LabVIEW to integrate HW/SW and
create your personal music instrument.
LabVIEW Concepts
Find and use math and complex analysis functions
Work with data types, such as Boolean, integer, and
Displaying

ENGR 100 Section C


Music Instrument Project
Pitch / Gain

ENGR 100 Section C


LabVIEW Graphical Development System
Graphical Programming Environment
Compile code for multiple OS and devices
Useful in a broad range of applications

ENGR 100 Section C


The NI Approach Integrated Hardware Platforms

PXI Modular Instrumentation Desktop PC Laptop PC PDA

High-Speed High-Resolution Multifunction Dynamic Instrument Digital I/O Counter/ Machine Motion Distributed I/O and
Digitizers Digitizers and DMMs Data Acquisition Signal Acquisition Control Timers Vision Control Embedded Control

Signal Conditioning
and Switching

Unit Under Test

ENGR 100 Section C


Section I LabVIEW Environment
A. Getting Data into your Computer
Data Acquisition Devices
NI-DAQ
Simulated Data Acquisition
Sound Card
B. LabVIEW Environment
Front Panel / Block Diagram
Toolbar /Tools Palette
C. Components of a LabVIEW Application
Creating a VI
Data Flow Execution
D. Additional Help
Finding Functions
Tips for Working in LabVIEW
ENGR 100 Section C
A. Setting Up Your Hardware

Data Acquisition Device (DAQ)


Actual USB, PCI, or PXI Device
Configured in MAX

Simulated Data Acquisition Device


(DAQ)
Software simulated at the driver level
Configured in MAX

Sound Card
Built into most computers
ENGR 100 Section C
What type of device should I use?

Sound Card* NI USB DAQ NI PCI DAQ Instruments*


AI Bandwidth 844 KS/s 10200 KS/s 250 K1.2 Ms/s 20kS/s2 GS/s
Accuracy 1216 bit 1216 bit 1418 bit 1224 bit
Portable x x some
AI Channels 2 816 1680 2
AO Channels 2 12 24 0
AC or DC AC AC/DC AC/DC AC/DC
Triggering x x x
Calibrated x x x

ENGR 100 Section C


* The above table may not be representative of all device variations that exist in each category
What is MAX?
MAX stands for Measurement & Automation Explorer.
MAX configures and organizes all your National
Instruments DAQ, PCI/PXI instruments, GPIB, IMAQ, IVI,
Motion, VISA, and VXI devices.
Used for configuring and testing devices.

Icon Found on
Windows Desktop

ENGR 100 Section C


Track B
Exercise 1 Setting Up Your Device

Use Measurement and Automation Explorer


(MAX) to:
Configure and test your Simulated Data
Acquisition (DAQ) device

ENGR 100 Section C


Open and Run LabVIEW
StartAll ProgramsNational Instruments LabVIEW 8.6

Startup Screen:
Start from a Blank VI:
NewBlank VI
or
Start from an Example:
ExamplesFind
Examples

ENGR 100 Section C


LabVIEW Programs Are Called Virtual Instruments (VIs)
Each VI has 2 Windows
Front Panel
User Interface (UI)
Controls = Inputs
Indicators = Outputs
Block Diagram
Graphical Code
Data travels on wires from
controls through functions to
indicators
Blocks execute by Dataflow

ENGR 100 Section C


Controls Palette (Place items on the Front Panel Window)
(Controls & Indicators)
Customize
Control: Palette
Numeric View

Indicator:
Numeric Slide

ENGR 100 Section C


Functions (and Structures) Palette
(Place items on the
Block Diagram Window)

Structure:
While Loop

ENGR 100 Section C


Tools Palette
Recommended: Automatic Selection Tool
Tools to operate and modify both front panel and
block diagram objects

Automatic Selection Tool

Automatically chooses among the following tools:


Operating Tool

Positioning/Resizing Tool

Labeling Tool

Wiring Tool

ENGR 100 Section C


Status Toolbar

Run Button

Continuous Run Button

Abort Execution

Additional Buttons on
the Diagram Toolbar

Execution Highlighting Button


Retain Wire Values Button
Step Function Buttons

ENGR 100 Section C


Demonstration 1: Creating a VI
Front Panel Window

Graph
Indicator

Block Diagram Window

Output
Terminal
Boolean
Control
Input
Terminals

ENGR 100 Section C


Dataflow Programming
Block diagram execution
Dependent on the flow of data
Block diagram does NOT execute
left to right
Node executes when data is
available to ALL input terminals
Nodes supply data to all output
terminals when done

ENGR 100 Section C


Debugging Techniques
Finding Errors
Click on broken Run button.
Window showing error appears.
Execution Highlighting
Click on Execution Highlighting button; data
flow is animated using bubbles. Values are
displayed on wires.
Probes
Right-click on wire to display probe and it shows
data as it flows through wire segment.

You can also select Probe tool from Tools palette


and click on wire.

ENGR 100 Section C


Context Help Window
HelpShow Context Help, press the
<Ctrl+H> keys
Hover cursor over object to update window

Additional Help
Right-Click on the VI icon and
choose Help, or
Choose Detailed Help. on
the context help window

ENGR 100 Section C


Tips for Working in LabVIEW
Keystroke Shortcuts
<Ctrl+H> Activate/Deactivate Context Help Window
<Ctrl+B> Remove Broken Wires From Block Diagram
<Ctrl+E> Toggle Between Front Panel and Block
Diagram
<Ctrl+Z> Undo (Also in Edit Menu)
ToolsOptions Set Preferences in LabVIEW
VI PropertiesConfigure VI Appearance,
Documentation, etc.

ENGR 100 Section C


Section II Elements of Typical Programs

A. Loops
While Loop
For Loop
B. Functions and SubVIs
Types of Functions
Creating Custom Functions (SubVI)
Functions Palette & Searching
C. Decision Making and File IO
Case Structure
Select (simple If statement)
File I/O

ENGR 100 Section C


Loops
While Loops While Loop
i terminal counts iteration
Always runs at least once
Runs until stop condition is
met

For Loop
For Loops
i terminal counts iterations
Run according to input N of
count terminal

ENGR 100 Section C


Drawing a Loop
2. Enclose code to be repeated

1. Select the structure

3. Drop or drag additional nodes and then wire

ENGR 100 Section C


3 Types of Functions (from the Functions Palette)
Express VIs: interactive VIs with configurable dialog page (blue border)

Standard VIs: modularized VIs customized by wiring (customizable)

Functions: fundamental operating elements of LabVIEW; no front panel or


block diagram (yellow)

ENGR 100 Section C


What Types of Functions are Available?
Input and Output Express Functions Palette
Signal and Data Simulation
Acquire and Generate Real Signals with DAQ
Instrument I/O Assistant (Serial & GPIB)
ActiveX for communication with other programs
Analysis
Signal Processing
Statistics
Advanced Math and Formulas
Continuous Time Solver
Storage
File I/O

ENGR 100 Section C


Searching for Controls, VIs, and Functions
Palettes are filled with hundreds
of VIs
Press the search button to index the
all VIs for text searching
Click and drag an item from the
search window to the block diagram
Double-click an item to open the
owning palette

ENGR 100 Section C


Create SubVI

Enclose area to be converted into a


subVI.
Select EditCreate SubVI from the Edit
Menu.

C2F ENGR 100 Section C


LabVIEW Functions and SubVIs operate
like Functions in other languages
Function Pseudo Code Calling Program Pseudo Code
function average (in1, in2, out) main
{ {
out = (in1 + in2)/2.0; average (in1, in2, pointavg)
} }

SubVI Block Diagram Calling VI Block Diagram

ENGR 100 Section C


Connector Pane and Icon Viewer
Use this connector pane layout as a standard

Top terminals are usually reserved for file paths


and references, such as a file reference
Bottom terminals are
usually reserved for
error clusters
Icon Viewer Create an Icon
Create custom icons by right-clicking the icon
in the upper-right corner of the front panel or
block diagram and selecting Edit Icon or by
double-clicking the icon
You also can drag a graphic from anywhere in
your file system and drop it on the icon
Refer to the
Icon Art Glossary at
ni.com for standard
graphics to use in
a VI icon
Track A,B,&C
Exercise 3.1 Analysis
Use LabVIEW Express VIs to:
Simulate a signal and display its amplitude and frequency

This exercise should


take 15 minutes.

ENGR 100 Section C


How Do I Make Decisions in LabVIEW?
1. Case Structures

(a) Boolean (b) Numeric


2. Select

(d) (c) string

ENGR 100 Section C


Case structure

Homework Practice Problem 1

Create the required VI(s) to achieve the following tasks.

Requirements:
1. Create a basic calculator function with the ability to add, subtract, multiply,
and divide two numbers and display the output
2. Allow the program to keep on running until a stop button is pressed.

ENGR 100 Section C


File I/O
File I/O passing data to and from files
Files can be binary, text, or spreadsheet
Write/Read LabVIEW Measurements file (*.lvm)

Writing to LVM file Reading from LVM file

spreadsheetformattedfiles
ENGR 100 Section C
File I/O Programming Model Under the Hood

Open/ Read
Close Check for
Create/ and/or
File Errors
Replace File Write to File

FileI/O>>WritetoSpreadsheetFile
Section III Presenting your Results
A. Displaying Data on the Front Panel
Controls and Indicators
Graphs and Charts
Loop Timing
B. Signal Processing
MathScript
Arrays
Clusters
Waveforms

ENGR 100 Section C


What Types of Controls and Indicators are Available?
Numeric Data Express Controls Palette
Number input and display
Analog Sliders, Dials, and
Gauges
Boolean Data
Buttons and LEDs
Array & Matrix Data
Numeric Display
Chart
Graph
XY Graph
Intensity Graph
3D graph: point, surface, and
model
Decorations
Tab Control
Arrows
Other
Strings and text boxes
Picture/Image Display
ActiveX Controls
ENGR 100 Section C
Charts Add 1 data point at a time with
history

Waveform chart special numeric indicator that can


display a history of values

Chart updates with each individual point it receives


FunctionsExpressGraph IndicatorsChart

ENGR 100 Section C


Graphs Display many data points at once
Waveform graph special numeric indicator that
displays an array of data
Graph updates after all points have been collected
May be used in a loop if VI collects buffers of data
FunctionsExpressGraph IndicatorsGraph

ENGR 100 Section C


Graph and Chart (history length)
Homework Practice Problem 2

Requirements:
1. Create a VI which runs exactly 50 times or
until a stop button is pushed
2. At each intervals, it generates a random
number between 50 and 100.
3. Display the random number on a
waveform chart.

ENGR 100 Section C


Shift registers (Moving Average)
Homework Practice Problem 3

Requirements:
1. Modify the Previous Practice Problem so
that the total sum of all the random
numbers generated is displayed
2. Using another shift register to have
moving average of three numbers
3. Plot moving average and original random
number in the waveform chart , i.e. two
curves in one chart. (Hint: use bundle in
cluster pallets

ENGR 100 Section C


Building Arrays with Loops (Auto-Indexing)
Auto-Indexing Enabled
Wire becomes thicker
Loops can accumulate
arrays at their boundaries
with auto-indexing 1D Array
For Loops auto-index by
default 012345

While Loops output only Auto-Indexing Disabled


the final value by default Wire remains the same size
Right-click tunnel and
enable/disable auto-
indexing
Only one value (last iteration)
5 is passed out of the loop

ENGR 100 Section C


Creating an Array (Step 1 of 2)
From the ControlsModernArray, Matrix, and Cluster
subpalette, select the Array icon.

Drop it on the Front Panel.

ENGR 100 Section C


Create an Array (Step 2 of 2)
1. Place an Array Shell.
2. Insert datatype into the shell (i.e. Numeric Control).

Practice:
2D array?

ENGR 100 Section C


Array

Homework Practice Problem 4

Requirements:
1. Generate an array of 20 random numbers.
2. Find the maximum, minimum, and mean
of the array using a shift register.
3. Modify the array by multiplying the fifth
element by 5

ENGR 100 Section C


How Do I Time a Loop?
1. Loop Time Delay
Configure the Time Delay Express VI for seconds to wait
each iteration of the loop (works on For and While loops).
2. Timed Loops
Configure special timed While loop for desired dt.

Time Delay Timed Loop

ENGR 100 Section C


Control & Indicator Properties
Properties are characteristics or qualities about an
object
Properties can be found by right clicking on a Control
or Indicator
Properties Include:
Size
Color
Plot Style
Plot color
Features include:
Cursors
Scaling

ENGR 100 Section C


Math with the MathScript Node
Implement equations and algorithms textually
Input and Output variables created at the border
Generally compatible with popular m-file script language
Terminate statements with a semicolon to disable immediate
output

(FunctionsProgramming
StructuresMathScript)
Prototype your equations in the interactive MathScript Window.
ENGR 100 Section C
The Interactive MathScript Window
Rapidly develop and test algorithms

Share Scripts and


Variables with the Node
View /Modify Variable Variable
Output Workspace
content in 1D, 2D, and 3D Window

View/Modify
Variable Contents

User Commands
m-file Script
(LabVIEWToolsMathScript Window)

ENGR 100 Section C


Formula Node Practice

Structure>>formula node

Homework Practice Problem 5

Requirements:
1. Create a formula node which has 3 inputs(X, Y, Z) and one output. If X>Y
output Z, otherwise output 0.
2. Create a subVI which performs the same task as the formula node. (Hint: Use
the selection function found in the comparison palette)

ENGR 100 Section C


Review of Data Types Found in LabVIEW

ENGR 100 Section C


DAQ
Real World Sensors
Signal

Voltage
Pressure,
Temperature,
Distance,
Signal Conditioning Current

Light

A/D
Power Convertor
Amp
Transduce Digital World
r
D/A
Convertor

Signal Processing
DAQ Practice
DAQ Assistant Express VI
Homework Practice Problem 6
Conti Acq&Graph Voltage int Clk.vi

Requirements:
1. Create a data acquisition task which reads
data from the audio input on your MyDAQ
using the low level DAQmx functions
2. Display the signal on a waveform chart
3. After collecting this data write it to a
comma separated file using the Read
From Measurement File express VI.

ENGR 100 Section C


MyDAQ

USB Cable

Audio Cable

DMM Banana Cable

20-Position Screw Terminal Connector

ENGR 100 Section C


MyDAQ

ENGR 100 Section C


Soft Front Panel (SFP)

ENGR 100 Section C


Fun Generator

ENGR 100 Section C


ENGR 100 Section C
ENGR 100 Section C
ENGR 100 Section C
D I/O

ENGR 100 Section C


MyDAQ

1. Create an audio loopback program using the MyDAQ. Read the signal
from audio in port and output it to the audio out port. Stop the loop when
a user pushes a stop button
2. Display the acquired signal on a graph.

2V

ENGR 100 Section C


State Machines

1. While Loop
2. Shift Register
3. Case Structure
State Machines Transitions
Several programming
techniques exist for
transitioning from state
to state in LabVIEW
using state machines
Default transition
implies that after one
state, another state
always follows
Transitions between two
potential states can be
handled by a select
function
State Machine
Homework Practice Problem 7

Vending Machine (15 cents Gum):


1. Create a state machine driven program which follows the following state diagram
2. Send user message via Display monitor at each state. (Hint: totally 5 states and 2
transition conditions)

Insert Change Insert 10 Cents Insert 5 Cents Collect Gum Collect Gum/Change

ENGR 100 Section C


Communicating between Loops
Communicating between loops
using data flow is not possible
The left loop executes
completely before the right loop
Variables are needed when
communication with wires does
not give the desired behavior
Local Variables

Local Variables allow data to be passed between


parallel loops.
A single control or indicator can be read or written to
from more than one location in the program
Local Variables break the dataflow paradigm and should
be used sparingly
Creating a Local Variable - Walk Through
In this example we will see how Local Variables allow us to
share data between parallel loops. We will create a
program that toggles two separate LEDs using one switch.
It also stops two loops with one button.

Create the block diagram and front panel show in the


notes.
Creating Local Variables

Right-click on the
Stop Button in the
Front Panel and
change the
Mechanical Action
to Switch When
Released since
Local Variables
cannot store
Latched data.
Producer/Consumer Design Pattern
Switch

2-Way Switch 3-Way Switch 4-Way Switch


LEVITION

LEVITION

LEVITION
ENGR 100 Section C
Single 2-Way Switch Layout

ENGR 100 Section C


3-3 Switch Layout

ENGR 100 Section C


3-4-3 Switch Layout

ENGR 100 Section C


Logic Gate

ENGR 100 Section C


Logic Gate

ENGR 100 Section C


Logic Gate

ENGR 100 Section C


Logic Gate

ENGR 100 Section C


Music Instrument Project
Pitch / Gain

ENGR 100 Section C


Digital I/O
Hysteresis +5v

Analog signal Digital signal


Vin(t) 01011

Pull down resistor

Contact bounce

ENGR 100 Section C


Equal temperament
Fnm=f0*2^((n/12)+m-4)
The vast majority of Western
music is based on the tuning
system called equal
temperament in which the
C4

octave interval (a 2:1 ratio in A4 Concert A


440Hz(m=4,n=0)

frequency) is equally
subdivided into 12 subintervals
Octave

A5 880Hz
called semitones. (m=4,n=12)or
(m=5,n=0)

ENGR 100 Section C


Sine Wave VI

ENGR 100 Section C


ENGR 100 Section C
Play music via Laptop audio chip
Using Play Waveform Express VI
Graph & Sound>>Sound>>Output>>Play
Waveform
Signal Process>>Sig Generation>>Sine Wave
Waveform>>Build Waveform

ENGR 100 Section C


ENGR 100 Section C
Play music
Using low level Sound output VI
Graphics&
Sound>>Sound>>Output>>Configure
Graphics& Sound>>Sound>>Output>>Write
Graphics& Sound>>Sound>>Output>>Clear
Signal Process>>Signal Generation>>Sine
Wave

ENGR 100 Section C


Play music

Homework Practice Problem 8

Procedure: Create the required VI(s) to play sound at certain freq.

Requirements:
1. Modify the play music using express vi with Sampling Frequency
(=44.1kHz), A4 Concert Frequency (f0=440 Hz), Duration(=0.1s)
, Frequency fnm (=f0*2^((n/12)+m-4)), numeric control n (integer
0~12), m(integer 0~12)
2. Add a while loop and shift register so that the sound will be
played when the value of frequency fnm is changed.

ENGR 100 Section C


Simple Read /Write .wav Files
Graphics& Sound>>Sound>>Files>>Simple Read
Graphics& Sound>>Sound>>Files>>Simple Write
Graphics& Sound>>Sound>>Files>>Info

ENGR 100 Section C


Create 2 channel wave file
Signal Processing>>Signal Generation>> Sine Wave
Signal Processing>>Signal Generation>> Uniform Noise
Signal Processing>>Signal Generation >>Quick scale
(Scale audio signal to +/- 1 range before saving to a .wav file)

Free wave editor tool: Audacity

ENGR 100 Section C


Property and Invoke Nodes
Create Property and Invoke nodes for a VI
element by right-clicking the element and
selecting CreateProperty Node.
Use the Property Node to get and set object
properties.

Invoke object methods with the Invoke Node.


Play music file using ActiveX
Windows media player

ENGR 100 Section C


Property Nodes
WMPLib.IWMPPlayer4 (File location, Controls)

ENGR 100 Section C


Invoke Node
Invoke Method of controls (Play, Pause)

ENGR 100 Section C


Invoke Node
Invoke Method of WMPLib.IWMPPlayer4
(Close WMPlayer)

ENGR 100 Section C


Close Active X reference

ENGR 100 Section C


Example (Play, Pause two music files)

ENGR 100 Section C


Music Instrument Switch (Digital)
Key board DI0
DI1

DI2

DI3
DI4
DI5
.
.
.
5V DC

Play with Hand/Pam/Foot/ Whole Body?

ENGR 100 Section C


Music Instrument Switch (Analog)
Voltage /Current Variation
Capacitance Variation
Inductance Variation
Resistance Variation(Potentiometer)
Distance Variation
Acoustic Sensor
Microphone
Optical Sensor (Photo-Diode + Opamp)
Optical Theremin

ENGR 100 Section C

You might also like