# THIS PROGRAM DEMONSTARTES THE SIMULTANEOUS rc CIRCUIT CHARGING & DISCHARGING #OF THREE CAPACITORS OF VARYING TIME CONSTANTS import phm, time from Tkinter import * datac1 = [] datac2=[] datac3=[] running = False start_time = None def sample(): global fd, datac1, running,datac2,datac3, start_time if running: if len(datac1) == 0: start_time = fd.zero_to_5000()[0] for i in range(2): fd.select_adc(0) v = fd.zero_to_5000() mv = (v[0]-start_time, v[1]) datac1.append(mv) fd.del_channel(0) fd.select_adc(1) v1 = fd.zero_to_5000() mv1 = (mv[0], v1[1]) datac2.append(mv1) fd.del_channel(1) fd.select_adc(2) v2 = fd.zero_to_5000() mv2 = (mv[0], v2[1]) datac3.append(mv2) fd.del_channel(2) fd.line(datac1,'red') fd.line(datac2,'blue') fd.line(datac3,'black') if len(datac1) >= 700: running = False root.after(3, sample) def charge(): global running, fd, data,datarv,datac2 running = True datac1 = [] datac2 = [] datac3 = [] fd.write_outputs(15) fd.remove_lines() def discharge(): global fd,running,val,datac1,datac2,datac3 running = True datac1 = [] datac2=[] datac3=[] fd.select_adc(0) val=fd.read_adc() if val[1] !=datac1 or datac2 or datac3: fd.write_outputs(0) fd.remove_lines() def Clear(): global fd, running,datac1,datac2,datac3 running=False datac1 = [] datac2=[] datac3=[] fd.remove_lines() def save(): global datac1,datac2,datac3,fd fd.save_data(datac1,'rc1.dat') fd.save_data(datac2,'rc2.dat') fd.save_data(datac3,'rc3.dat') def analyze(): try: import pygrace except: return global datac1,datac2,datac3 pg = pygrace.grace() x = [] y = [] for xy in datac1: x.append(xy[0]) y.append(xy[1]) pg.plot(x,y) def bye(): sys.exit(0) fd = phm.phm() fd.set_adc_size(2) root = Tk() fd.window(300,200,root) fd.set_scale(0,0,30,5000) # 10 seconds maximum cmd = Frame(root) cmd.pack(side=BOTTOM, anchor = SW) b = Button(cmd,text='Charge', command = charge) b.pack(side=LEFT, anchor = S) b = Button(cmd,text='Discharge', command = discharge) b.pack(side=LEFT, anchor = S) b=Button(cmd,text='Save', command = save) b.pack(side=LEFT, anchor = S) b=Button(cmd,text='Analyse', command = analyze) b.pack(side=LEFT, anchor = S) b=Button(cmd,text='Clear', command = Clear) b.pack(side=LEFT, anchor = S) f1=Frame(root) f1.pack(side=TOP, anchor = W, fill = BOTH) b=Button(cmd,text='Quit', command = bye) b.pack(side=LEFT, anchor = S) root.after(1, sample) root.title('Multiple RC Study') root.mainloop()