Physics 37100
Advanced Physics Laboratory I
Lab #4
(PART II: Simple oscilloscope)
1)
Using the code
and circuit from part I and lab 3-II, create a sketch to:
a. establish communication with matlab
using ‘?’ and ‘K’;
b. wait
to receive the character ‘g’ (for go);
c. make one loop to take 512 points of time series data
from photoresistor on A0 measuring the PWM pin 9 LED
set to 128;
d. make a second loop to send the data to matlab using Serial.println();
e. at the end of the second loop send the total
acquisition time;
f.
loop back to part b.
2)
Modify (part I) matlab script to:
a. establish communication with arduino
using ‘?’ and ‘K’;
b. send
the character ‘g’ (for go);
c. loop over the serial data using fgetl()
and str2double() to store the data in an array;
V=zeros(1,N);
t=(0:N-1)/N;
for m=1:N
str=fgetl(s);
V(m)=str2double(str);
end
d. read the acquisition time using fgetl()
and str2double();
e. plot the data using a time axis in μs;
f.
drawnow;
g. Loop back to part b.
3)
Move the wire
connected to A0 to other points in the circuit while the script is running to
see the data update.
4)
Change the
plotting to display the FFT of the data.
a. The horizontal axis should be in Hz. Include a nice plot of the FFT with x and y
axis labels in the report.
b. What is the frequency of the PWM light?
c. Is it consistent with the value in the description of
analogWrite on the arduino
site: https://www.arduino.cc/en/Reference/AnalogWrite.
d. Measure the frequency directly using the time series
data to measure the time from one peak to the next. Is it consistent?
5)
(Extra credit)
modify to allow matlab to set the value of the LED
output on each loop.