目次

dBからDUTY比生成(Python)

 無線機の受信感度がdBで表現されているとき
 電圧へと変換する処理が、必要になりました。

 電圧は、PWMのDUTY比に置き換えて生成することが
 できるとして、変換が正しいのかを確認するため
 スクリプトを作成。

 0Vから5Vが、DUTY比で0から255に対応。
 dB値は、−128から−80と変化し、0Vから
 5Vに対応するとします。

 dB値を0か正の整数にしたいので、128を加えます。

for e in range(-128,-79):
  tmp = e + 128
  print('input=',e,'temporary=',tmp)

 このスクリプトで表示されるのは、以下。

input= -128 temporary= 0
input= -127 temporary= 1
input= -126 temporary= 2
input= -125 temporary= 3
input= -124 temporary= 4
input= -123 temporary= 5
input= -122 temporary= 6
input= -121 temporary= 7
input= -120 temporary= 8
input= -119 temporary= 9
input= -118 temporary= 10
input= -117 temporary= 11
input= -116 temporary= 12
input= -115 temporary= 13
input= -114 temporary= 14
input= -113 temporary= 15
input= -112 temporary= 16
input= -111 temporary= 17
input= -110 temporary= 18
input= -109 temporary= 19
input= -108 temporary= 20
input= -107 temporary= 21
input= -106 temporary= 22
input= -105 temporary= 23
input= -104 temporary= 24
input= -103 temporary= 25
input= -102 temporary= 26
input= -101 temporary= 27
input= -100 temporary= 28
input= -99 temporary= 29
input= -98 temporary= 30
input= -97 temporary= 31
input= -96 temporary= 32
input= -95 temporary= 33
input= -94 temporary= 34
input= -93 temporary= 35
input= -92 temporary= 36
input= -91 temporary= 37
input= -90 temporary= 38
input= -89 temporary= 39
input= -88 temporary= 40
input= -87 temporary= 41
input= -86 temporary= 42
input= -85 temporary= 43
input= -84 temporary= 44
input= -83 temporary= 45
input= -82 temporary= 46
input= -81 temporary= 47
input= -80 temporary= 48

 dB値は、−150からー50まで、変化すると
 して、範囲外であれば、0から48までとなる
 ように操作。

for e in range(-150,-50):
  tmp = e + 128
  # range check
  if tmp < 0 :
    tmp = 0 
  if tmp > 48 :
    tmp = 48
  # show
  print('input=',e,'temporary=',tmp)

 このスクリプトで表示されるのは、以下。

input= -150 temporary= 0
input= -149 temporary= 0
input= -148 temporary= 0
input= -147 temporary= 0
input= -146 temporary= 0
input= -145 temporary= 0
input= -144 temporary= 0
input= -143 temporary= 0
input= -142 temporary= 0
input= -141 temporary= 0
input= -140 temporary= 0
input= -139 temporary= 0
input= -138 temporary= 0
input= -137 temporary= 0
input= -136 temporary= 0
input= -135 temporary= 0
input= -134 temporary= 0
input= -133 temporary= 0
input= -132 temporary= 0
input= -131 temporary= 0
input= -130 temporary= 0
input= -129 temporary= 0
input= -128 temporary= 0
input= -127 temporary= 1
input= -126 temporary= 2
input= -125 temporary= 3
input= -124 temporary= 4
input= -123 temporary= 5
input= -122 temporary= 6
input= -121 temporary= 7
input= -120 temporary= 8
input= -119 temporary= 9
input= -118 temporary= 10
input= -117 temporary= 11
input= -116 temporary= 12
input= -115 temporary= 13
input= -114 temporary= 14
input= -113 temporary= 15
input= -112 temporary= 16
input= -111 temporary= 17
input= -110 temporary= 18
input= -109 temporary= 19
input= -108 temporary= 20
input= -107 temporary= 21
input= -106 temporary= 22
input= -105 temporary= 23
input= -104 temporary= 24
input= -103 temporary= 25
input= -102 temporary= 26
input= -101 temporary= 27
input= -100 temporary= 28
input= -99 temporary= 29
input= -98 temporary= 30
input= -97 temporary= 31
input= -96 temporary= 32
input= -95 temporary= 33
input= -94 temporary= 34
input= -93 temporary= 35
input= -92 temporary= 36
input= -91 temporary= 37
input= -90 temporary= 38
input= -89 temporary= 39
input= -88 temporary= 40
input= -87 temporary= 41
input= -86 temporary= 42
input= -85 temporary= 43
input= -84 temporary= 44
input= -83 temporary= 45
input= -82 temporary= 46
input= -81 temporary= 47
input= -80 temporary= 48
input= -79 temporary= 48
input= -78 temporary= 48
input= -77 temporary= 48
input= -76 temporary= 48
input= -75 temporary= 48
input= -74 temporary= 48
input= -73 temporary= 48
input= -72 temporary= 48
input= -71 temporary= 48
input= -70 temporary= 48
input= -69 temporary= 48
input= -68 temporary= 48
input= -67 temporary= 48
input= -66 temporary= 48
input= -65 temporary= 48
input= -64 temporary= 48
input= -63 temporary= 48
input= -62 temporary= 48
input= -61 temporary= 48
input= -60 temporary= 48
input= -59 temporary= 48
input= -58 temporary= 48
input= -57 temporary= 48
input= -56 temporary= 48
input= -55 temporary= 48
input= -54 temporary= 48
input= -53 temporary= 48
input= -52 temporary= 48
input= -51 temporary= 48

 0から48が、0から255に変換されるように
 計算式を追加すると、次のように記述すればよい
 はず。

for e in range(-150,-50):
  tmp = e + 128
  # range check
  if tmp < 0 :
    tmp = 0 
  if tmp > 48 :
    tmp = 48
  # convert pwm duty
  adv = int( (tmp * 255) / 48 )
  # show
  print('input=',e,'temporary=',tmp,adv)

 このスクリプトで、生成される内容は以下。

input= -150 temporary= 0 0
input= -149 temporary= 0 0
input= -148 temporary= 0 0
input= -147 temporary= 0 0
input= -146 temporary= 0 0
input= -145 temporary= 0 0
input= -144 temporary= 0 0
input= -143 temporary= 0 0
input= -142 temporary= 0 0
input= -141 temporary= 0 0
input= -140 temporary= 0 0
input= -139 temporary= 0 0
input= -138 temporary= 0 0
input= -137 temporary= 0 0
input= -136 temporary= 0 0
input= -135 temporary= 0 0
input= -134 temporary= 0 0
input= -133 temporary= 0 0
input= -132 temporary= 0 0
input= -131 temporary= 0 0
input= -130 temporary= 0 0
input= -129 temporary= 0 0
input= -128 temporary= 0 0
input= -127 temporary= 1 5
input= -126 temporary= 2 10
input= -125 temporary= 3 15
input= -124 temporary= 4 21
input= -123 temporary= 5 26
input= -122 temporary= 6 31
input= -121 temporary= 7 37
input= -120 temporary= 8 42
input= -119 temporary= 9 47
input= -118 temporary= 10 53
input= -117 temporary= 11 58
input= -116 temporary= 12 63
input= -115 temporary= 13 69
input= -114 temporary= 14 74
input= -113 temporary= 15 79
input= -112 temporary= 16 85
input= -111 temporary= 17 90
input= -110 temporary= 18 95
input= -109 temporary= 19 100
input= -108 temporary= 20 106
input= -107 temporary= 21 111
input= -106 temporary= 22 116
input= -105 temporary= 23 122
input= -104 temporary= 24 127
input= -103 temporary= 25 132
input= -102 temporary= 26 138
input= -101 temporary= 27 143
input= -100 temporary= 28 148
input= -99 temporary= 29 154
input= -98 temporary= 30 159
input= -97 temporary= 31 164
input= -96 temporary= 32 170
input= -95 temporary= 33 175
input= -94 temporary= 34 180
input= -93 temporary= 35 185
input= -92 temporary= 36 191
input= -91 temporary= 37 196
input= -90 temporary= 38 201
input= -89 temporary= 39 207
input= -88 temporary= 40 212
input= -87 temporary= 41 217
input= -86 temporary= 42 223
input= -85 temporary= 43 228
input= -84 temporary= 44 233
input= -83 temporary= 45 239
input= -82 temporary= 46 244
input= -81 temporary= 47 249
input= -80 temporary= 48 255
input= -79 temporary= 48 255
input= -78 temporary= 48 255
input= -77 temporary= 48 255
input= -76 temporary= 48 255
input= -75 temporary= 48 255
input= -74 temporary= 48 255
input= -73 temporary= 48 255
input= -72 temporary= 48 255
input= -71 temporary= 48 255
input= -70 temporary= 48 255
input= -69 temporary= 48 255
input= -68 temporary= 48 255
input= -67 temporary= 48 255
input= -66 temporary= 48 255
input= -65 temporary= 48 255
input= -64 temporary= 48 255
input= -63 temporary= 48 255
input= -62 temporary= 48 255
input= -61 temporary= 48 255
input= -60 temporary= 48 255
input= -59 temporary= 48 255
input= -58 temporary= 48 255
input= -57 temporary= 48 255
input= -56 temporary= 48 255
input= -55 temporary= 48 255
input= -54 temporary= 48 255
input= -53 temporary= 48 255
input= -52 temporary= 48 255
input= -51 temporary= 48 255

 範囲内と外がわかるように、フラグを追加して
 みると、次の記述になります。

for e in range(-150,-50):
  tmp = e + 128
  t = 'YES'
  # range check
  if tmp < 0 :
    tmp = 0 
    t = 'NO'
  if tmp > 48 :
    tmp = 48
    t = 'NO'
  # convert pwm duty
  adv = int( (tmp * 255) / 48 )
  # show
  print('input=',e,'temporary=',tmp,adv,'range=',t)

 このスクリプトを動かすと、以下のようにまとめられます。

input= -150 temporary= 0 0 range= NO
input= -149 temporary= 0 0 range= NO
input= -148 temporary= 0 0 range= NO
input= -147 temporary= 0 0 range= NO
input= -146 temporary= 0 0 range= NO
input= -145 temporary= 0 0 range= NO
input= -144 temporary= 0 0 range= NO
input= -143 temporary= 0 0 range= NO
input= -142 temporary= 0 0 range= NO
input= -141 temporary= 0 0 range= NO
input= -140 temporary= 0 0 range= NO
input= -139 temporary= 0 0 range= NO
input= -138 temporary= 0 0 range= NO
input= -137 temporary= 0 0 range= NO
input= -136 temporary= 0 0 range= NO
input= -135 temporary= 0 0 range= NO
input= -134 temporary= 0 0 range= NO
input= -133 temporary= 0 0 range= NO
input= -132 temporary= 0 0 range= NO
input= -131 temporary= 0 0 range= NO
input= -130 temporary= 0 0 range= NO
input= -129 temporary= 0 0 range= NO
input= -128 temporary= 0 0 range= YES
input= -127 temporary= 1 5 range= YES
input= -126 temporary= 2 10 range= YES
input= -125 temporary= 3 15 range= YES
input= -124 temporary= 4 21 range= YES
input= -123 temporary= 5 26 range= YES
input= -122 temporary= 6 31 range= YES
input= -121 temporary= 7 37 range= YES
input= -120 temporary= 8 42 range= YES
input= -119 temporary= 9 47 range= YES
input= -118 temporary= 10 53 range= YES
input= -117 temporary= 11 58 range= YES
input= -116 temporary= 12 63 range= YES
input= -115 temporary= 13 69 range= YES
input= -114 temporary= 14 74 range= YES
input= -113 temporary= 15 79 range= YES
input= -112 temporary= 16 85 range= YES
input= -111 temporary= 17 90 range= YES
input= -110 temporary= 18 95 range= YES
input= -109 temporary= 19 100 range= YES
input= -108 temporary= 20 106 range= YES
input= -107 temporary= 21 111 range= YES
input= -106 temporary= 22 116 range= YES
input= -105 temporary= 23 122 range= YES
input= -104 temporary= 24 127 range= YES
input= -103 temporary= 25 132 range= YES
input= -102 temporary= 26 138 range= YES
input= -101 temporary= 27 143 range= YES
input= -100 temporary= 28 148 range= YES
input= -99 temporary= 29 154 range= YES
input= -98 temporary= 30 159 range= YES
input= -97 temporary= 31 164 range= YES
input= -96 temporary= 32 170 range= YES
input= -95 temporary= 33 175 range= YES
input= -94 temporary= 34 180 range= YES
input= -93 temporary= 35 185 range= YES
input= -92 temporary= 36 191 range= YES
input= -91 temporary= 37 196 range= YES
input= -90 temporary= 38 201 range= YES
input= -89 temporary= 39 207 range= YES
input= -88 temporary= 40 212 range= YES
input= -87 temporary= 41 217 range= YES
input= -86 temporary= 42 223 range= YES
input= -85 temporary= 43 228 range= YES
input= -84 temporary= 44 233 range= YES
input= -83 temporary= 45 239 range= YES
input= -82 temporary= 46 244 range= YES
input= -81 temporary= 47 249 range= YES
input= -80 temporary= 48 255 range= YES
input= -79 temporary= 48 255 range= NO
input= -78 temporary= 48 255 range= NO
input= -77 temporary= 48 255 range= NO
input= -76 temporary= 48 255 range= NO
input= -75 temporary= 48 255 range= NO
input= -74 temporary= 48 255 range= NO
input= -73 temporary= 48 255 range= NO
input= -72 temporary= 48 255 range= NO
input= -71 temporary= 48 255 range= NO
input= -70 temporary= 48 255 range= NO
input= -69 temporary= 48 255 range= NO
input= -68 temporary= 48 255 range= NO
input= -67 temporary= 48 255 range= NO
input= -66 temporary= 48 255 range= NO
input= -65 temporary= 48 255 range= NO
input= -64 temporary= 48 255 range= NO
input= -63 temporary= 48 255 range= NO
input= -62 temporary= 48 255 range= NO
input= -61 temporary= 48 255 range= NO
input= -60 temporary= 48 255 range= NO
input= -59 temporary= 48 255 range= NO
input= -58 temporary= 48 255 range= NO
input= -57 temporary= 48 255 range= NO
input= -56 temporary= 48 255 range= NO
input= -55 temporary= 48 255 range= NO
input= -54 temporary= 48 255 range= NO
input= -53 temporary= 48 255 range= NO
input= -52 temporary= 48 255 range= NO
input= -51 temporary= 48 255 range= NO


目次

inserted by FC2 system