Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168733
Image: ubuntu2004
var('t f') a = 1500*t+1 b = 5*sin(1400*t)-cos(14000*t+pi/6) c = sin(40000*t)+2.5 sample_rate = 10000 samples = 20 bits = 8 total_time = (samples / sample_rate) resol = 256 range = 5 reso_range = range/resol lookup = {} def adc(x,f): x = floor(x * sample_rate)/sample_rate if x in lookup: return lookup[x] else: n = max( min( floor( f(x)/reso_range ) ,255),0)*reso_range lookup[x] = n return n def adc2(x,f): x = floor(x * sample_rate)/sample_rate if x in lookup: return lookup[x] else: n = max( min( floor( f(x)/reso_range ) ,255),0) lookup[x] = n return n def getTable(f): s = "<table border=1><thead><tr><th>Sample</th><th>Time (sec.)</th><th>v(t) (volts)</th><th>ADC value</th><th>Voltage read by ADC</th></tr></thead><tbody>" for i in xrange(0,20): t = i / 10000 v = f(t) d = adc2(t,f) e = d * reso_range s = s + "<tr><td>%d</td><td>%f</td><td>%f</td><td>%d</td><td>%f</td></tr>" % (i,t,v,d,e) s = s + "</tbody></table>" return s
lookup = {} show(plot(a(t),(0,total_time))+plot(lambda x: adc(x,a),(0,total_time),color="orange"),ymin=0,ymax=5,figsize=(8,10),dpi=75)
html(getTable(a))
SampleTime (sec.)v(t) (volts)ADC valueVoltage read by ADC
00.0000001.000000510.996094
10.0001001.150000581.132812
20.0002001.300000661.289062
30.0003001.450000741.445312
40.0004001.600000811.582031
50.0005001.750000891.738281
60.0006001.900000971.894531
70.0007002.0500001042.031250
80.0008002.2000001122.187500
90.0009002.3500001202.343750
100.0010002.5000001282.500000
110.0011002.6500001352.636719
120.0012002.8000001432.792969
130.0013002.9500001512.949219
140.0014003.1000001583.085938
150.0015003.2500001663.242188
160.0016003.4000001743.398438
170.0017003.5500001813.535156
180.0018003.7000001893.691406
190.0019003.8500001973.847656
lookup = {} show(plot(c(t),(0,total_time))+plot(lambda x: adc(x,c),(0,total_time),color="orange"),ymin=0,ymax=5,figsize=(8,10),dpi=75)
lookup = {} html(getTable(b))
SampleTime (sec.)v(t) (volts)ADC valueVoltage read by ADC
00.000000-0.86602500.000000
10.0001001.043245531.035156
20.0002002.3652611212.363281
30.0003002.0275931032.011719
40.0004001.668638851.660156
50.0005002.8966831482.890625
60.0006004.6002322354.589844
70.0007004.7750202444.765625
80.0008003.8351061963.828125
90.0009003.9117272003.906250
100.0010005.3041342554.980469
110.0011005.9744702554.980469
120.0012004.9253922524.921875
130.0013003.8534681973.847656
140.0014004.3336402214.316406
150.0015005.2087222554.980469
160.0016004.5174482314.511719
170.0017002.7602561412.753906
180.0018002.0811901062.070312
190.0019002.7237731392.714844
lookup = {} show(plot(b(t),(0,total_time))+plot(lambda x: adc(x,b),(0,total_time),color="orange"),figsize=(8,10),dpi=75)
lookup = {} html(getTable(c))
SampleTime (sec.)v(t) (volts)ADC valueVoltage read by ADC
00.0000002.5000001282.500000
10.0001001.743198891.738281
20.0002003.4893581783.476562
30.0003001.9634271001.953125
40.0004002.2120971132.207031
50.0005003.4129451743.398438
60.0006001.594422811.582031
70.0007002.7709061412.753906
80.0008003.0514271563.046875
90.0009001.508221771.503906
100.0010003.2451131663.242188
110.0011002.5177021282.500000
120.0012001.731745881.718750
130.0013003.4866281783.476562
140.0014001.9784491011.972656
150.0015002.1951891122.187500
160.0016003.4200261753.417969
170.0017001.602072821.601562
180.0018002.7538231402.734375
190.0019003.0661081563.046875