##### Meritev smernega diagrama - S53MV 11.09.2016 ##### #izvajanje potrebuje najmanj Anaconda2-4.1.1-Windows-x86 in pyserial-2.7.win32_py3k import time,serial,math #uporabljene funkcije rxime='COM8' #ime zaporednega vmesnika sprejemnika vrtime='COM10' #ime zaporednega vmesnika vrtiljaka print '*** Meritev smernega diagrama - S53MV 11.09.2016 ***' x=[0.0] #pripravi obe polji za rezultat y=[999] i=1 while i<=3600: x=x+[i/10.0] y=y+[999] i=i+1 #odpri comporta rx in vrt, 115200bps, 8bit, brez paritete print 'Pocakaj na lenobni USB...' rx=serial.Serial(rxime,115200,timeout=3.0) rx.setRTS(False) #sprosti /BOOTLOADER rx.setDTR(False) #sprosti /RESET vrt=serial.Serial(vrtime,115200,timeout=3.0) vrt.setRTS(False) #sprosti /BOOTLOADER vrt.setDTR(False) #sprosti /RESET time.sleep(3) vrt.flushInput() #pocisti sprejemni vmesnik vrtiljaka vrt.write('6D') #pozeni vrtiljak v desno i=0 #zanka merjenja antene m=-1 while i<3600: s=vrt.readline() k=float(s[0:5]) rx.flushInput() rx.readline() s=rx.readline() r=int(s[0:3]) print 'Kot:',k,' Jakost:',r,' ',chr(13), i=int(k*10.0+0.5) y[i]=r if r>m: #isci maksimum m=r km1=k if r==m: km2=k vrt.write('7L') #vrtiljak v levo z navisjo hitrostjo t=time.ctime() #zabelezi cas meritve print '\r\nMeritev smernega diagrama '+t rx.close() #zapri oba comporta vrt.close() if m<1: #prepreci deljenje z 0 m=1 i=0 #normaliziraj smerni diagram na max while i<=3600: y[i]=y[i]/float(m) i=i+1 km=(km1+km2)*0.5 #povprecni polozaj maksimuma om='Odmik maksimuma: '+str(km-180.0)+' stopinj' print om i=1 #integriraj smerni diagram s=0.0 im=int(km*10+0.5) while i<1800: i1=im-i if i1<0: i1=i1+3600 i2=im+i if i2>3600: i2=i2-3600 ff=(y[i1]*y[i1])+(y[i2]*y[i2]) s=s+ff*math.sin(math.radians(i*0.1)) i=i+1 D=(7200/math.pi)/s #izracunaj smernost dd='Smernost: %5.1f'%(D)+' = %5.2f'%(10*math.log(D,10))+' dBi' print dd i=int(km*10+0.5) #poisci -3dB meji glavnega lista while i>=0: km1=i*0.1 if y[i]