| 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
|---|
| 2 | <html><head> |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | <meta http-equiv="Content-Language" content="en-us"> |
|---|
| 6 | <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> |
|---|
| 7 | <meta name="GENERATOR" content="ZyTrax"> |
|---|
| 8 | <meta name="keywords" content="wireless calculators, Fresnel Zones, dBm conversion, Free Space Loss, Radio System Budget, cck,16QAM,64QAM,DQPSK"> |
|---|
| 9 | |
|---|
| 10 | <title>ZYTRAX - Wireless Calculators</title> |
|---|
| 11 | |
|---|
| 12 | <!-- this page originated from http://www.zytrax.com/tech/wireless/calc.htm --> |
|---|
| 13 | <!-- HTTP_USER_AGENT=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090810 Ubuntu/9.10 (karmic) Firefox/3.5.2 --> |
|---|
| 14 | <style type="text/css"> |
|---|
| 15 | <!-- |
|---|
| 16 | /* ZYTRAX STYLE SHEET */ |
|---|
| 17 | /* google maps */ |
|---|
| 18 | v\:* {behavior:url(#default#VML);} |
|---|
| 19 | a {text-decoration:none;} |
|---|
| 20 | body {background-color:white;color:black;margin:0px;padding:0px;font:normal 10pt Verdana,Arial, Helvetica, sans-serif;} |
|---|
| 21 | div.l-f table{width:100%;padding:4px;} |
|---|
| 22 | h1 {font-size:14pt;background:#EEE;border-width:0 0 5px 0;border-style:solid;border-color:#9bf;padding:4px;color:#336} |
|---|
| 23 | h2 {border-width:0 0 5px 0;border-color:#9bf;border-style:solid;font-size:12pt;font-weight:bold;padding:4px;color:#336} |
|---|
| 24 | h3 {border-width:0 0 3px 0;border-color:#9BF;border-style:solid;font-size:12pt;padding:4px;color:#336;} |
|---|
| 25 | h4 {border-width:0 0 2px 0;border-color:#9BF;border-style:solid;font-size:10pt;padding:2px;color:#336;} |
|---|
| 26 | h5 {border-width:0 0 2px 0;border-color:silver;border-style:solid;font-size:10pt;font-weight:bold;padding:4px;} |
|---|
| 27 | h6 {border-width:0 0 1px 0;border-color:silver;border-style:solid; font-size:10pt;color:silver;padding:4px;} |
|---|
| 28 | form {border:1px solid #ccc;} |
|---|
| 29 | input {border:1px solid #999;background:#acf;} |
|---|
| 30 | textarea {border:1px solid #999;background:#acf;} |
|---|
| 31 | /* Printer friendly */ |
|---|
| 32 | |
|---|
| 33 | div.l-r #layout {visibility:visible;} |
|---|
| 34 | div.l-l-fp #layout {visibility:visible;} |
|---|
| 35 | .l-l {position:absolute;top:60px;left:6px;width:110px;font:10pt Verdana,Helvetica, Arial, sans-serif;z-index:1;} |
|---|
| 36 | .l-c {margin:45px 170px 0px 125px;padding:4px 20px;font:1.0em Verdana,Helvetica, Arial, sans-serif;border-width:0 1px; border-style:solid; border-color:#336; z-index:5; line-height:1.3em;} |
|---|
| 37 | .l-r {font:10pt Verdana,Arial, Helvetica, sans-serif;position:absolute;top:60px;right:6px;width:160px;background:#eee;z-index:2;} |
|---|
| 38 | #popups {visibility:visible;} |
|---|
| 39 | |
|---|
| 40 | /* end printer friendly - begin divs - generic */ |
|---|
| 41 | .button {background:#ddd;border:3px outset #black;} |
|---|
| 42 | .l-f {margin:0 200px 0 125px;} |
|---|
| 43 | .l-c-fp {margin:0 160px 0 125px;padding:4px;font:10pt Verdana,Helvetica, Arial, sans-serif;border-width:0 1px;border-style:solid;border-color:#336;z-index:5;} |
|---|
| 44 | .l-p {margin:10px;padding:4px;font:10pt Verdana,Helvetica, Arial, sans-serif;} |
|---|
| 45 | .l-100 {width:100%;margin:0;} |
|---|
| 46 | /* end divs - nav pop-outs */ |
|---|
| 47 | .n-l1 {padding:0;margin:0;list-style:none;width:100px;} |
|---|
| 48 | .n-l1-e {text-align:right;margin:0;padding:2px;position:relative;} |
|---|
| 49 | .n-t1-e,.n-t2-e,.n-t3-e {text-align:left;margin:0;padding:2px 5px;border:1px solid blue;border-width:1px 1px 0 1px;position:relative;} |
|---|
| 50 | .n-t1-es,.n-t2-es,.n-t3-es {text-align:left;margin:0;padding:2px 5px;border:1px solid blue;border-width:1px 1px 0 1px;position:relative;background:#ccf;} |
|---|
| 51 | .n-t1-v {position:absolute;display:none;padding:0;margin:0;list-style:none;top:100%;right:0;width:100px;border-bottom:1px solid blue;background:#EEE;} |
|---|
| 52 | .n-t1-vr {position:absolute;display:none;padding:0;margin:0;list-style:none; top:100%;right:0;width:100px;border-bottom:1px solid blue;background:#EEE;} |
|---|
| 53 | .n-t2,.n-t3 {position:absolute;display:none;padding:0;margin:0;list-style:none;top:0;right:100%;width:120px;border-bottom:1px solid blue;background:#EEE;} |
|---|
| 54 | /* end pop-up styles - nav effects */ |
|---|
| 55 | a:hover {text-decoration:underline;} |
|---|
| 56 | a:hover.p-f-s {color:black} |
|---|
| 57 | .g-c-n:hover {background:#eee;} |
|---|
| 58 | .g-c-s:hover {background:#eee;} |
|---|
| 59 | .g-t-n:hover {background:#acf;} |
|---|
| 60 | div.n-l a:hover {color:#336;} |
|---|
| 61 | div.g-sb a:hover {background-color:#DDD;} |
|---|
| 62 | /* W3c pop-ups - ignored by MSIE 6- */ |
|---|
| 63 | div.n-t0:hover > ul {display:block;} |
|---|
| 64 | li.n-t1-e:hover > ul {display:block;} |
|---|
| 65 | li.n-t1-es:hover > ul {display:block;} |
|---|
| 66 | li.n-t1-e:hover, li.n-t1-es:hover,li.n-t2-e:hover,li.n-t2-es:hover,li.n-t3-e:hover {background:#ccc;} |
|---|
| 67 | li.n-t2-e:hover > ul {display:block;} |
|---|
| 68 | li.n-t2-es:hover > ul {display:block;} |
|---|
| 69 | .n-l1-e:hover > ul {display:block;} |
|---|
| 70 | .n-l1-es:hover > ul {display:block;} |
|---|
| 71 | .n-l2-e:hover > ul {display:block;} |
|---|
| 72 | .n-l2-es:hover > ul {display:block;} |
|---|
| 73 | .n-l3-e:hover > ul {display:block;} |
|---|
| 74 | .n-l3-es:hover > ul {display:block;} |
|---|
| 75 | li.n-l1-e:hover,li.n-l2-e:hover,li.n-l2-es:hover, li.n-l3-e:hover, li.n-l3-es:hover,li.n-l4-e:hover {background:#ccc;} |
|---|
| 76 | /* end pop-out effects - generic alpha */ |
|---|
| 77 | .adv {} |
|---|
| 78 | .at {font-family:Verdana,sans-serif;font-size:9pt;margin:0px;text-indent:8px;} |
|---|
| 79 | .b-1 {font-family:Verdana, sans-serif;} |
|---|
| 80 | .b-r {border-width:0 0 0 1px;border-color:#336;border-style:solid;width:150px;} |
|---|
| 81 | .b-l {border-width:0 1px 0 0;border-color:#336;border-style:solid;width:110px;} |
|---|
| 82 | .b-b {list-style:none;margin:2px;font: 9pt Verdana,Arial,, sans-serif;padding:0 1.0em;} |
|---|
| 83 | .b-b-s {border:1px solid black;} |
|---|
| 84 | li.b-b-l {visibility:hidden;margin:10px 0;} |
|---|
| 85 | .b-b-a {background:#336;color:white; text-decoration:none;border:1px solid black;padding:0 0.25em 0 0;} |
|---|
| 86 | a.b-b-a span {color:#336;background:white;padding:0 0.25em 0 0.33em;text-decoration:none;} |
|---|
| 87 | .d {font-family:Verdana,sans-serif;font-size:9pt;margin:0px;} |
|---|
| 88 | .dd {position:absolute;left:0;top:0; font-family:Tahoma,sans-serif;font-size:9pt; visibility:hidden;background:cyan;color:black;margin:0px;border:black solid 1px;padding:2px;} |
|---|
| 89 | .f-d {font-weight:bold;} |
|---|
| 90 | .f-bd {font-weight:bold;font-size: 12pt;} |
|---|
| 91 | .g-c-n {font:10pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px;background-color:#acf;padding:5px; color:black;} |
|---|
| 92 | .g-c-nm {font: 10pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px;background-color:#ddd;padding:5px;color:black;margin:0 0 0 40px;} |
|---|
| 93 | .g-c-s,.codegray {font: 8pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px; background-color:#acf;padding:5px; color:black;width;inherit;} |
|---|
| 94 | .g-e-t {font-weight:normal;} |
|---|
| 95 | .g-e-d {font-weight:normal;} |
|---|
| 96 | .g-f-n {font:10pt "Courier New", monospace;} |
|---|
| 97 | .g-h-n {background:#336;color:white;padding:4px; font-size:10pt;font-weight:normal;} |
|---|
| 98 | .g-h-ng,.section {background:#9bf;color:#336;font:bold 10pt Verdana,sans-serif;padding:4px; text-decoration:none;} |
|---|
| 99 | .g-h-s {background:#336;color:white;padding:4px; font-size:8pt;font-weight:bold;} |
|---|
| 100 | .g-n {text-decoration:none;color:white;} |
|---|
| 101 | .g-i1-n {margin:5px 5px 5px 20px;} |
|---|
| 102 | .g-i2-n {margin:5px 5px 5px 30px;} |
|---|
| 103 | .g-i3-n {margin:5px 5px 5px 40px;} |
|---|
| 104 | .g-l-n {list-style:none;} |
|---|
| 105 | .g-s-b {border-width:1px 5px; border-color:black;border-style:solid;background:#EEE;color:black; font-family:Verdana,sans-serif;font-size:14pt;font-weight:bold; text-decoration:none;} |
|---|
| 106 | .g-sb-h1 {background:#336;color:white;padding:4px; font-size:14pt;font-weight:bold;} |
|---|
| 107 | .g-sb-h2 {background:#336;color:white;font-size:10pt;font-weight:bold;padding:2px;} |
|---|
| 108 | .g-sb-n {color:blue;font-size:8pt;line-height:150%;margin:2px;} |
|---|
| 109 | .g-s-n {background-color:#EEEEEE;color:black;font-size:10pt; text-decoration:none;} |
|---|
| 110 | .g-s-nr {font-family:Verdana,sans-serif;background-color:red;color:white;font-size:10pt;font-weight:bold; text-decoration:none;} |
|---|
| 111 | .g-s-gn {font-family:Verdana,sans-serif;background-color:silver;color:black;font-size:10pt;font-weight:bold; text-decoration:none;} |
|---|
| 112 | .g-t-n {font-size:9pt;border-style:solid;border-color:#bbb;border-width: 1px 1px 1px 5px;margin:7px;padding:3px;background-color:#eee; color:black;} |
|---|
| 113 | .gs-h {font-family:Verdana,sans-serif;color:black;font-size:28pt;font-weight:bold;text-decoration:none;} |
|---|
| 114 | .gs-m {font-family:Verdana,sans-serif;color:black;font-size:22pt;font-weight:bold;text-decoration:none; margin-left:100px;} |
|---|
| 115 | .gs-f {font-family:Verdana,sans-serif;color:black;font-size:12pt; font-weight:normal;text-decoration:none;} |
|---|
| 116 | .h-b {background:#ddd;color:black;font-weight:bold;} |
|---|
| 117 | .i-2 {background: url(../../images/info.gif) no-repeat top left;} |
|---|
| 118 | .i-3 {background: url(../../../images/info.gif) no-repeat top left;} |
|---|
| 119 | .i-n {border-width: 3px 0 3px 0; border-style:solid;border-color:#bbb;font-size:10pt;margin:10px 10px 10px 60px;padding:10px;} |
|---|
| 120 | .i-h {margin:5px 5px 10px 60px;padding:5px;} |
|---|
| 121 | .i-m-s {padding:2px;margin:0;} |
|---|
| 122 | .i-s {border-width: 3px 0 3px 0; border-style:solid;border-color:#bbb;font-size:8pt;margin:10px 10px 10px 60px;padding:10px;} |
|---|
| 123 | .n-b-l {font:1pt Verdana, Arial, Helvetica, sans-serif;border-width:0 0 1px 0;border-style:solid;border-color:#CCF;margin:0px;padding:0px;} |
|---|
| 124 | .n-l-s {font:8pt Verdana, Arial, Helvetica, sans-serif;visibility:hidden;} |
|---|
| 125 | .n-t0 {float:right;position:relative;color:white;} |
|---|
| 126 | .n-t-t {text-align:right;padding:1px 1px 8px 1px;margin:0;color:white;} |
|---|
| 127 | .p-b {background:#eee;text-indent:3em;} |
|---|
| 128 | .p-m-ni {font-family:Verdana,sans-serif;font-size:10pt;font-style:italic;} |
|---|
| 129 | .navback {background:white;color:black;font-family:Verdana,sans-serif; text-decoration:none;font-weight:bold;font-size:10pt;} |
|---|
| 130 | .nav-top {background:blue;color:white;font-family:Verdana,sans-serif; text-decoration:none;font-weight:bold;font-size:10pt;} |
|---|
| 131 | .p-m-n,.norm {font-size: 10pt;font-family: Verdana, Helvetica, Arial, sans-serif;} |
|---|
| 132 | .p-m-s { font:8pt Verdana,Helvetica, Arial, sans-serif;} |
|---|
| 133 | .p-m-si {font:italic 8pt Verdana, Helvetica, Arial, sans-serif;} |
|---|
| 134 | .p-m-sp { background:white;font:8pt Verdana,Helvetica, Arial, sans-serif;} |
|---|
| 135 | .q-i-2 {background: url(../../images/quotes-open.gif) no-repeat top left;} |
|---|
| 136 | .q-s {border-width: 0 0 0 6px;border-style:solid;border-color:#acf;font-size:8pt;margin:10px 10px 10px 60px;padding:10px;} |
|---|
| 137 | .smallbold { font-family: Verdana, sans-serif; font-size: 8pt; font-weight:bold;} |
|---|
| 138 | /* link styles */ |
|---|
| 139 | .t-dd:hover {background:#ddd;} |
|---|
| 140 | .t-ba {color:#aaa;font-weight:bold;} |
|---|
| 141 | .t-gb {color:blue;background:#eee;} |
|---|
| 142 | .t-dr {color:red;text-decoration:none;} |
|---|
| 143 | .t-dw {color:#666;text-decoration:none;} |
|---|
| 144 | .t-td1-l,.t-td1 {border-style:solid;border-width:5px 0 0 0;border-color:#ddd;padding:3px 3px 8px 5px;} |
|---|
| 145 | .t-td2-l,.t-td2 {border-style:solid;border-width:5px 0 0 0;border-color:#acf;padding:3px 3px 8px 5px;} |
|---|
| 146 | .t-m {background:#ccc;color:blue;text-decoration:none;} |
|---|
| 147 | .vital {font-family:Tahoma,Arial, sans-serif;font-size:12pt;background-color:#ddd; color:black;border-color:red;} |
|---|
| 148 | .w-2 {background: url(../../images/warning.gif) no-repeat top left;} |
|---|
| 149 | .w-3 {background: url(../../../images/warning.gif) no-repeat top left;border-width: 3px 0 3px 0; border-style:solid;border-color:#bbb;} |
|---|
| 150 | |
|---|
| 151 | /* Gecko/W3C specific */ |
|---|
| 152 | abbr[title]:after {content:"";} |
|---|
| 153 | abbr[title]:hover:after {content:" (" attr(title)")";} |
|---|
| 154 | /* W3C pop-ups */ |
|---|
| 155 | .n-l2,.n-l3,.n-l4 {position:absolute;display:none;padding:0;margin:0;list-style:none;top:0;left:100%;width:120px;border-bottom:1px solid blue;background:#EEE;font:8pt Verdana,Helvetica, Arial, sans-serif} |
|---|
| 156 | .n-l2-e,.n-l3-e,.n-l4-e {text-align:left;margin:0;padding:2px 5px;border:1px solid blue;border-width:1px 1px 0 1px;position:relative;} |
|---|
| 157 | .n-l2-es,.n-l3-es,.n-l4-es {text-align:left;margin:0;padding:2px 5px;border:1px solid blue;border-width:1px 1px 0 1px;position:relative;background:#ccf;} |
|---|
| 158 | /* end - start expand divs */ |
|---|
| 159 | .v-f {display:none;} |
|---|
| 160 | .v-o {display:block;} |
|---|
| 161 | /* end expand divs */ |
|---|
| 162 | .n-l-f a {color:#336;} |
|---|
| 163 | #toplogo {float:left;vertical-align:bottom;} |
|---|
| 164 | .g-b-n {font:10pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px;padding:5px;background:#eee;} |
|---|
| 165 | .g-b-s {font:8pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px;padding:5px;background:#eee;} |
|---|
| 166 | .g-ci-s {font:8pt "Courier New",monospace;border-style:solid;border-color:#ccc;border-width: 1px 1px 1px 5px; background-color:#acf;color:black;} |
|---|
| 167 | .g-sb {font-family:Verdana, sans-serif;width:150px;} |
|---|
| 168 | .jp-h-n {position:absolute;left:50%;top:50%;text-indent:4px;font-family:Verdana,sans-serif;font-size:10pt; visibility:hidden;background:#EEEEEE;color:blue;text-decoration:none;} |
|---|
| 169 | .l-b {position:absolute;top:0px;left:0px;font:8pt Verdana, Arial, Helvetica, sans-serif;border:0;background:#336;color:white;height:44px;z-index:9;width:100%;} |
|---|
| 170 | .l-b-s {position:absolute;top:0;left:0;font:8pt Verdana, Arial, Helvetica, sans-serif;border:0;background:red;color:white;height:44px;z-index:9;width:100%;} |
|---|
| 171 | .l-b-fp {font:8pt Verdana, Arial, Helvetica, sans-serif;background:white;color:#336;height:88px;padding:5px 5px 0 5%;margin:0 0 5px 0;z-index:2;} |
|---|
| 172 | .l-c-i {padding:10px;} |
|---|
| 173 | .l-l-fp {position:absolute;top:95px;left:6px;width:120px;z-index:10;text-align:right;} |
|---|
| 174 | .l-r-fp {position:absolute;top:95px;right:6px;width:150px;z-index:2;} |
|---|
| 175 | .n-l {font-family:Verdana,sans-serif;position:fixed;top:60px;left:6px;width:110px;background:#eee;} |
|---|
| 176 | .n-l-u {font-family:Verdana,sans-serif;top:60px;left:6px;width:110px;background:#eee;} |
|---|
| 177 | .n-l-l {font-size: 9pt;color:black;text-align:right;line-height:150%;} |
|---|
| 178 | .n-l-f {font-size: 9pt;text-align:right;line-height:1.2em;} |
|---|
| 179 | .n-p-f {color:#336;font:9pt/16pt Verdana,sans-serif;text-decoration:none;text-indent:6px;} |
|---|
| 180 | .n-p-n {background:#EEE;color:#336;font:9pt Verdana,sans-serif;text-indent:6px;} |
|---|
| 181 | .n-p-n a {text-indent:6px;display:block;} |
|---|
| 182 | .n-p-o {font:10pt Verdana,sans-serif; background:#DDD;color:blue;text-decoration:none;height:16pt;} |
|---|
| 183 | .n-t-n {color:#336;font:10pt Verdana,sans-serif;text-decoration:none;margin:0;padding:0;} |
|---|
| 184 | .n-t-s {color:white;font: 8pt Verdana,sans-serif;text-decoration:none;padding:0 3px 0 0} |
|---|
| 185 | .p-b-h {visibility:hidden;} |
|---|
| 186 | .p-n-h {position:absolute;left:0;top:0;text-indent:4px;font-family:Verdana,sans-serif;font-size:small; visibility:hidden;background:#EEE;color:blue;text-decoration:none;border:1px blue solid;width:110px;} |
|---|
| 187 | .p-f-s {font-family: Verdana, sans-serif; font-size:8pt; color:silver; background:white;text-decoration:none;} |
|---|
| 188 | .t-db,.t-dd,.t-dn,.w-db {color:blue;text-decoration:none;} |
|---|
| 189 | |
|---|
| 190 | //--> |
|---|
| 191 | </style> |
|---|
| 192 | <style type="text/css" media="print"> |
|---|
| 193 | <!-- |
|---|
| 194 | /* ZYTRAX STYLE SHEET PRINT TEMPLATE */ |
|---|
| 195 | .l-l {display:none;} |
|---|
| 196 | .l-r {display:none;} |
|---|
| 197 | .l-c {width:600px;margin:0;padding:30px 10px 5px 10px; border-width:0;} |
|---|
| 198 | .l-f {margin:5px;} |
|---|
| 199 | .n-t-t {display:none;} |
|---|
| 200 | .n-t0 {display:none;} |
|---|
| 201 | .adv {display:none;} |
|---|
| 202 | --> |
|---|
| 203 | </style> |
|---|
| 204 | |
|---|
| 205 | <script language="JavaScript" type="text/javascript"> |
|---|
| 206 | <!-- |
|---|
| 207 | // Copyright ZYTRAX, Inc. 2001 - 2007 |
|---|
| 208 | // You are welcome to copy or use this script for non-commercial purposes |
|---|
| 209 | // We prefer you leave in this Copyright statement but don't insist on it |
|---|
| 210 | // if you make improvements send us a copy or make the code available on your |
|---|
| 211 | // own web site. |
|---|
| 212 | // NO WARRANTY OR FITNESS FOR PURPOSE UNDERTAKEN - USE AT YOUR OWN RISK |
|---|
| 213 | // global variables |
|---|
| 214 | var mw; // milliwatts |
|---|
| 215 | var w; // watts |
|---|
| 216 | var dbm; // dBm |
|---|
| 217 | var dbw; // dBW |
|---|
| 218 | var num; // intermediate results |
|---|
| 219 | var f; // frequency |
|---|
| 220 | var d; // distance |
|---|
| 221 | var ktm = .621; // km to miles |
|---|
| 222 | var mtk = 1.609; // miles to klics |
|---|
| 223 | var ftm = 3.28; // meters to feet |
|---|
| 224 | var mtf = .3048 // feet to meters |
|---|
| 225 | var db; // work variable |
|---|
| 226 | function round(number,places) { |
|---|
| 227 | // rounding numbers default = 3 |
|---|
| 228 | places = (!places ? 3 : places); |
|---|
| 229 | return Math.round(number*Math.pow(10,places))/Math.pow(10,places); |
|---|
| 230 | } |
|---|
| 231 | |
|---|
| 232 | function log10(x) { |
|---|
| 233 | // Log 10 calculation |
|---|
| 234 | return(Math.log(x) / Math.log(10)); |
|---|
| 235 | } |
|---|
| 236 | |
|---|
| 237 | function from_dbm(u_dbm) { |
|---|
| 238 | // convert dbm to watts and milliwatts |
|---|
| 239 | dbm = parseFloat(u_dbm); |
|---|
| 240 | |
|---|
| 241 | // validate dbm range |
|---|
| 242 | if ((isNaN(dbm)) || (dbm < -110) || (dbm > 100)) |
|---|
| 243 | { |
|---|
| 244 | window.alert("dBm range from -110 to 100"); |
|---|
| 245 | return("Error"); |
|---|
| 246 | } |
|---|
| 247 | |
|---|
| 248 | mw = Math.pow(10,dbm / 10); |
|---|
| 249 | |
|---|
| 250 | return(round(mw,3)); |
|---|
| 251 | } |
|---|
| 252 | |
|---|
| 253 | function to_dbm(u_mw) { |
|---|
| 254 | w = parseFloat(u_mw); |
|---|
| 255 | |
|---|
| 256 | // validate milliwatts range |
|---|
| 257 | if ((isNaN(w)) || (w < 0) || (w > 20000)) |
|---|
| 258 | { |
|---|
| 259 | window.alert("millWatts range = 0 to 20,000"); |
|---|
| 260 | |
|---|
| 261 | return("Error"); |
|---|
| 262 | } |
|---|
| 263 | w = log10(w) / log10(10); |
|---|
| 264 | dbm = round((10 * w),3); |
|---|
| 265 | return(dbm); |
|---|
| 266 | } |
|---|
| 267 | |
|---|
| 268 | function free_space(u_freq, u_km, u_miles) { |
|---|
| 269 | |
|---|
| 270 | f = parseFloat(u_freq); |
|---|
| 271 | if ((d = check_m(u_km,u_miles,"Distance")) == "Error") |
|---|
| 272 | { |
|---|
| 273 | return("Error"); |
|---|
| 274 | } |
|---|
| 275 | // validate frequency |
|---|
| 276 | if ((isNaN(f)) || (f < 100) || (f > 60000)) |
|---|
| 277 | { |
|---|
| 278 | window.alert("Frequency (in MHz) range = 100 to 60,000"); |
|---|
| 279 | return("Error"); |
|---|
| 280 | } |
|---|
| 281 | |
|---|
| 282 | f = log10(f) / log10(10); |
|---|
| 283 | d = log10(d) / log10(10); |
|---|
| 284 | |
|---|
| 285 | return(round((20 * f) + (20 * d) + 36.56,3)); |
|---|
| 286 | |
|---|
| 287 | } |
|---|
| 288 | function check_dbm(u_dbm, u_mw) |
|---|
| 289 | { |
|---|
| 290 | // normalise power to dbm |
|---|
| 291 | if(u_dbm == "") |
|---|
| 292 | { |
|---|
| 293 | dbm = to_dbm(u_mw); |
|---|
| 294 | } |
|---|
| 295 | else |
|---|
| 296 | { |
|---|
| 297 | dbm = parseFloat(u_dbm); |
|---|
| 298 | } |
|---|
| 299 | //validate dbm range |
|---|
| 300 | if ((isNaN(dbm)) || (dbm < -110) || (dbm > 100)) |
|---|
| 301 | { |
|---|
| 302 | window.alert("dBm range from -110 to 100"); |
|---|
| 303 | return("Error"); |
|---|
| 304 | } |
|---|
| 305 | return(dbm); |
|---|
| 306 | } |
|---|
| 307 | |
|---|
| 308 | function check_km(k,m,e) // returns KM |
|---|
| 309 | { |
|---|
| 310 | if(k == ""){ |
|---|
| 311 | if(m == ""){ // must have a mile measure |
|---|
| 312 | |
|---|
| 313 | alert(e+" not supplied");// error |
|---|
| 314 | return -1; |
|---|
| 315 | } |
|---|
| 316 | else{ |
|---|
| 317 | |
|---|
| 318 | if(isNaN(m) || m < 0.1 || m > 100){ |
|---|
| 319 | alert(e+" (Miles) not numeric or not in range .1 to 100"); |
|---|
| 320 | return -1; |
|---|
| 321 | } |
|---|
| 322 | tm = parseFloat(m); |
|---|
| 323 | return (tm * mtk); |
|---|
| 324 | } |
|---|
| 325 | } |
|---|
| 326 | else{ |
|---|
| 327 | if(isNaN(k) || k < 0.1 || k > 160){ |
|---|
| 328 | alert(e+" (Km) not numeric or not in range .1 to 160"); |
|---|
| 329 | return -1; |
|---|
| 330 | } |
|---|
| 331 | return parseFloat(k); |
|---|
| 332 | } |
|---|
| 333 | } |
|---|
| 334 | function check_m(u_km, u_miles, err) // returns MILES |
|---|
| 335 | { |
|---|
| 336 | if(u_km == "") |
|---|
| 337 | { |
|---|
| 338 | // must be miles |
|---|
| 339 | d = parseFloat(u_miles); |
|---|
| 340 | if(isNaN(d) || d < 0.1 || d > 100) |
|---|
| 341 | { |
|---|
| 342 | window.alert(err+" range is .1 to 100 MILES"); |
|---|
| 343 | return("Error"); |
|---|
| 344 | } |
|---|
| 345 | } |
|---|
| 346 | else |
|---|
| 347 | { |
|---|
| 348 | d = parseFloat(u_km); |
|---|
| 349 | if(isNaN(d) || d < 0.1 || d > 160) |
|---|
| 350 | { |
|---|
| 351 | window.alert("Distance range is .1 to 160 KM"); |
|---|
| 352 | return("Error"); |
|---|
| 353 | } |
|---|
| 354 | d = d * ktm; |
|---|
| 355 | } |
|---|
| 356 | return(d); |
|---|
| 357 | } |
|---|
| 358 | |
|---|
| 359 | // W3C DOM'ish |
|---|
| 360 | function check_int(num, lo, hi, def, err) |
|---|
| 361 | { |
|---|
| 362 | if(num == "" && def != "") |
|---|
| 363 | { |
|---|
| 364 | return def; // just return default |
|---|
| 365 | } |
|---|
| 366 | |
|---|
| 367 | tn = parseInt(num); |
|---|
| 368 | if(isNaN(tn) || tn < lo || tn > hi) |
|---|
| 369 | { |
|---|
| 370 | alert(err+" must be in range "+lo+" to "+hi); |
|---|
| 371 | return("Error"); |
|---|
| 372 | } |
|---|
| 373 | return tn; |
|---|
| 374 | } |
|---|
| 375 | function fres_zone() |
|---|
| 376 | { |
|---|
| 377 | // note: uses explicit names in form which must be unique on page |
|---|
| 378 | if((tl = check_km(document.getElementById("fltk").value,document.getElementById("fltm").value,"Total Link distance")) == -1) |
|---|
| 379 | { |
|---|
| 380 | return; |
|---|
| 381 | } |
|---|
| 382 | // tl valid numeric in Km check for obstacle - if not present = link/2 |
|---|
| 383 | tok = document.getElementById("flok").value; |
|---|
| 384 | tom = document.getElementById("flom").value; |
|---|
| 385 | if (tok == "" && tom == ""){ |
|---|
| 386 | // default in km link/2 |
|---|
| 387 | if (document.getElementById("fltk").value != ""){ |
|---|
| 388 | document.getElementById("flok").value = round(tl/2,3); |
|---|
| 389 | }else{ |
|---|
| 390 | document.getElementById("flom").value = round((tl/2)*ktm,3); |
|---|
| 391 | } |
|---|
| 392 | } |
|---|
| 393 | if((d1 = check_km(document.getElementById("flok").value, document.getElementById("flom").value, "Obstacle Distance")) == -1) |
|---|
| 394 | { |
|---|
| 395 | return; |
|---|
| 396 | } |
|---|
| 397 | d2 = tl - d1; |
|---|
| 398 | // check frequency present and numeric |
|---|
| 399 | flf = document.getElementById("flf").value; |
|---|
| 400 | if(flf == "") |
|---|
| 401 | { |
|---|
| 402 | alert("Frequency not specified"); |
|---|
| 403 | return; |
|---|
| 404 | } |
|---|
| 405 | if(isNaN(flf )) |
|---|
| 406 | { |
|---|
| 407 | alert("Frequency not numeric"); |
|---|
| 408 | return; |
|---|
| 409 | } |
|---|
| 410 | freq = parseFloat(flf); |
|---|
| 411 | |
|---|
| 412 | freq = freq /1000; // in GHz |
|---|
| 413 | // fresnel and obstacle free zone |
|---|
| 414 | flrm = Math.round(17.3 * Math.sqrt((d1 * d2)/(freq * tl))); |
|---|
| 415 | document.getElementById("flzm").value = flrm; |
|---|
| 416 | document.getElementById("flzf").value = Math.round(flrm * ftm); |
|---|
| 417 | document.getElementById("fld1k").value = round(d1,3); |
|---|
| 418 | document.getElementById("fld1m").value = round(d1 * ktm,3); |
|---|
| 419 | // 0.6 fresnel |
|---|
| 420 | flr6m = round(flrm *0.6,3); |
|---|
| 421 | document.getElementById("flofm").value = flr6m; |
|---|
| 422 | document.getElementById("floff").value = Math.round((flr6m * ftm),3); |
|---|
| 423 | // earth's height at mid point |
|---|
| 424 | ehm = (Math.pow(tl,2)/(8*((4*6378)/3))) * 1000; |
|---|
| 425 | document.getElementById("flehm").value = round(ehm,3); |
|---|
| 426 | document.getElementById("flehf").value = round(ehm * ftm,3); |
|---|
| 427 | } |
|---|
| 428 | |
|---|
| 429 | function power_budget() |
|---|
| 430 | { |
|---|
| 431 | if((dbm = check_dbm(document.getElementById("bdbm").value, document.getElementById("bmw").value)) == "Error") |
|---|
| 432 | { |
|---|
| 433 | return ("Error"); |
|---|
| 434 | } |
|---|
| 435 | // antenna |
|---|
| 436 | if((db = check_int(document.getElementById("bag").value,1,100, "", "Antenna Gain")) == "Error"){ |
|---|
| 437 | return "Error"; |
|---|
| 438 | } |
|---|
| 439 | // result for gains |
|---|
| 440 | radan_tot = dbm + db; |
|---|
| 441 | document.getElementById("brr").value = round(dbm + db,3); |
|---|
| 442 | |
|---|
| 443 | if(document.getElementById("blf").value != "" || document.getElementById("blm").value != "") |
|---|
| 444 | { |
|---|
| 445 | // handle cable loss |
|---|
| 446 | // we have a cable parameter normalise to meters |
|---|
| 447 | if(document.getElementById("bcf").value != "") |
|---|
| 448 | { |
|---|
| 449 | // user supplied feet |
|---|
| 450 | cable_loss = parseFloat(document.getElementById("bcf").value); |
|---|
| 451 | if(isNaN(cable_loss)) |
|---|
| 452 | { |
|---|
| 453 | window.alert("Cable loss not numeric"); |
|---|
| 454 | return("Error"); |
|---|
| 455 | } |
|---|
| 456 | cable_loss = cable_loss * ftm; |
|---|
| 457 | } |
|---|
| 458 | else |
|---|
| 459 | { |
|---|
| 460 | cable_loss = parseFloat(document.getElementById("bcm").value); |
|---|
| 461 | if(isNaN(cable_loss)) |
|---|
| 462 | { |
|---|
| 463 | window.alert("Cable loss not numeric"); |
|---|
| 464 | return("Error"); |
|---|
| 465 | } |
|---|
| 466 | } |
|---|
| 467 | if(document.getElementById("blf").value != "") |
|---|
| 468 | { |
|---|
| 469 | // user supplied feet |
|---|
| 470 | cable_length = parseFloat(document.getElementById("blf").value); |
|---|
| 471 | if(isNaN(cable_length)) |
|---|
| 472 | { |
|---|
| 473 | window.alert("Cable length not numeric"); |
|---|
| 474 | return("Error"); |
|---|
| 475 | } |
|---|
| 476 | cable_length = cable_length * mtf; |
|---|
| 477 | } |
|---|
| 478 | else |
|---|
| 479 | { |
|---|
| 480 | cable_length = parseFloat(document.getElementById("blm").value); |
|---|
| 481 | if(isNaN(cable_length)) |
|---|
| 482 | { |
|---|
| 483 | window.alert("Cable length not numeric"); |
|---|
| 484 | return("Error"); |
|---|
| 485 | } |
|---|
| 486 | } |
|---|
| 487 | // normalise cable loss |
|---|
| 488 | cable_tot = round((cable_loss /100) * cable_length,3); |
|---|
| 489 | document.getElementById("bcr").value = cable_tot; |
|---|
| 490 | } |
|---|
| 491 | else |
|---|
| 492 | { |
|---|
| 493 | cable_tot = 0; |
|---|
| 494 | document.getElementById("bcr").value = "0"; |
|---|
| 495 | } |
|---|
| 496 | |
|---|
| 497 | // handle connectors |
|---|
| 498 | if(document.getElementById("bconno").value != "") |
|---|
| 499 | { |
|---|
| 500 | // handle connector loss |
|---|
| 501 | f = parseFloat(document.getElementById("bconf").value); |
|---|
| 502 | if ((isNaN(f)) || (f < 100) || (f > 25000)) |
|---|
| 503 | { |
|---|
| 504 | window.alert("Frequency range 100 to 25,000 MHz"); |
|---|
| 505 | return("Error"); |
|---|
| 506 | } |
|---|
| 507 | f = f /1000; //frequency in GHz |
|---|
| 508 | num_con = parseInt(document.getElementById("bconno").value); |
|---|
| 509 | if (isNaN(num_con)) |
|---|
| 510 | { |
|---|
| 511 | window.alert("Number of connectors not numeric"); |
|---|
| 512 | return("Error"); |
|---|
| 513 | } |
|---|
| 514 | // max. loss = 0.10 * sqrt(freq) |
|---|
| 515 | con_tot = round(num_con * (0.1 * Math.sqrt(f)),3); |
|---|
| 516 | document.getElementById("bconr").value = con_tot; |
|---|
| 517 | } |
|---|
| 518 | else |
|---|
| 519 | { |
|---|
| 520 | con_tot = 0; |
|---|
| 521 | document.getElementById("bconr").value = "0"; |
|---|
| 522 | } |
|---|
| 523 | document.getElementById("btr").value = round(radan_tot - con_tot - cable_tot,3); |
|---|
| 524 | } |
|---|
| 525 | |
|---|
| 526 | function op_margin() |
|---|
| 527 | { |
|---|
| 528 | //calculate various operating margins or antenna gains or distance |
|---|
| 529 | want_dis = 0; |
|---|
| 530 | want_tan = 0; |
|---|
| 531 | want_ran = 0; |
|---|
| 532 | if((sad = check_int(document.getElementById("spomsad").value, 1, 100, 30, "SAD factor")) == "Error"){ |
|---|
| 533 | return "Error"; |
|---|
| 534 | } |
|---|
| 535 | sad = sad/100; |
|---|
| 536 | if(document.getElementById("spk").value == "" && document.getElementById("spm").value == ""){ |
|---|
| 537 | want_dis = 1; // no distance - solve for distance only |
|---|
| 538 | } |
|---|
| 539 | else |
|---|
| 540 | { |
|---|
| 541 | if((d = check_m(document.getElementById("spk").value, document.getElementById("spm").value, "Distance")) == "Error") |
|---|
| 542 | { |
|---|
| 543 | return("Error"); |
|---|
| 544 | } |
|---|
| 545 | } |
|---|
| 546 | // must always have valid frequency |
|---|
| 547 | f = parseFloat(document.getElementById("spf").value); |
|---|
| 548 | if(isNaN(f) || f < 100 || f > 60000) |
|---|
| 549 | { |
|---|
| 550 | window.alert("Frequency range is 100 to 60,000 MHz"); |
|---|
| 551 | return("Error"); |
|---|
| 552 | } |
|---|
| 553 | f = log10(f) / log10(10); |
|---|
| 554 | if(!want_dis) |
|---|
| 555 | { |
|---|
| 556 | d = log10(d) / log10(10); |
|---|
| 557 | fs_loss = round((20 * f) + (20 * d) + 36.56,3); |
|---|
| 558 | } |
|---|
| 559 | // calculate tx power |
|---|
| 560 | // confirm TX antenna gain |
|---|
| 561 | if (document.getElementById("sptxa").value == "" && want_dis) |
|---|
| 562 | { |
|---|
| 563 | window.alert("Cannot solve for distance and TX antenna gain"); |
|---|
| 564 | return("Error"); |
|---|
| 565 | } |
|---|
| 566 | else |
|---|
| 567 | { |
|---|
| 568 | if (document.getElementById("sptxa").value == "") |
|---|
| 569 | { |
|---|
| 570 | want_tan = 1; // solve for tx gain |
|---|
| 571 | tx_an = 0; // temp |
|---|
| 572 | } |
|---|
| 573 | else |
|---|
| 574 | { |
|---|
| 575 | tx_an = parseFloat(document.getElementById("sptxa").value); |
|---|
| 576 | } |
|---|
| 577 | } |
|---|
| 578 | if(isNaN(tx_an) || tx_an < 0 || tx_an > 100) |
|---|
| 579 | { |
|---|
| 580 | alert("Antenna gain range 0 to 100"); |
|---|
| 581 | return("Error"); |
|---|
| 582 | } |
|---|
| 583 | // check radio power |
|---|
| 584 | if((tx_dbm = check_dbm(document.getElementById("sptxdbm").value, document.getElementById("sptxmw").value)) == "Error") |
|---|
| 585 | { |
|---|
| 586 | return("Error"); |
|---|
| 587 | } |
|---|
| 588 | // if cable loss invalid substitute 0 |
|---|
| 589 | tx_cable = parseFloat(document.getElementById("sptxc").value); |
|---|
| 590 | if (isNaN(tx_cable)) |
|---|
| 591 | { |
|---|
| 592 | tx_cable = 0; |
|---|
| 593 | document.getElementById("sptxc").value = 0; |
|---|
| 594 | } |
|---|
| 595 | tx_budget = tx_an + tx_dbm - tx_cable; |
|---|
| 596 | // calculate rx power |
|---|
| 597 | // confirm RX antenna gain |
|---|
| 598 | if (document.getElementById("sprxa").value == "" && want_dis) |
|---|
| 599 | { |
|---|
| 600 | window.alert("Cannot solve for distance and RX antenna gain"); |
|---|
| 601 | return("Error"); |
|---|
| 602 | } |
|---|
| 603 | else |
|---|
| 604 | { |
|---|
| 605 | if (document.getElementById("sprxa").value == "") |
|---|
| 606 | { |
|---|
| 607 | want_ran = 1; // solve for rx gain |
|---|
| 608 | rx_an = 0; |
|---|
| 609 | } |
|---|
| 610 | else |
|---|
| 611 | { |
|---|
| 612 | rx_an = parseFloat(document.getElementById("sprxa").value); |
|---|
| 613 | } |
|---|
| 614 | } |
|---|
| 615 | if(isNaN(rx_an) || rx_an < 0 || rx_an > 100) |
|---|
| 616 | { |
|---|
| 617 | window.alert("Antenna gain range 0 to 100"); |
|---|
| 618 | return("Error"); |
|---|
| 619 | } |
|---|
| 620 | // check radio power |
|---|
| 621 | if((rx_dbm = check_dbm(document.getElementById("sprxdbm").value, "")) == "Error") |
|---|
| 622 | { |
|---|
| 623 | return("Error"); |
|---|
| 624 | } |
|---|
| 625 | // if cable loss invalid substitute 0 |
|---|
| 626 | rx_cable = parseFloat(document.getElementById("sprxc").value); |
|---|
| 627 | if (isNaN(rx_cable)) |
|---|
| 628 | { |
|---|
| 629 | rx_cable = 0; |
|---|
| 630 | document.getElementById("sprxc").value = 0; |
|---|
| 631 | } |
|---|
| 632 | rx_budget = rx_an - rx_dbm - rx_cable; |
|---|
| 633 | |
|---|
| 634 | // got everything we might need - figure out what to do |
|---|
| 635 | if(!want_dis && !want_tan && !want_ran) |
|---|
| 636 | { |
|---|
| 637 | // straight calculation of margins |
|---|
| 638 | document.getElementById("sprxr").value = round(rx_budget,3); |
|---|
| 639 | document.getElementById("sptxr").value = round(tx_budget,3); |
|---|
| 640 | document.getElementById("spfr").value = fs_loss; |
|---|
| 641 | margin = tx_budget - fs_loss + rx_budget; |
|---|
| 642 | document.getElementById("spomr").value = round(margin,3); |
|---|
| 643 | document.getElementById("spomrx").value = round(margin + rx_dbm,3); |
|---|
| 644 | document.getElementById("spomsad").value = round(((margin/tx_budget) * 100),3); |
|---|
| 645 | } |
|---|
| 646 | else |
|---|
| 647 | { |
|---|
| 648 | if (want_dis) |
|---|
| 649 | { |
|---|
| 650 | // solve for distance |
|---|
| 651 | document.getElementById("sprxr").value = round(rx_budget,3); |
|---|
| 652 | document.getElementById("sptxr").value = round(tx_budget,3); |
|---|
| 653 | // reduce tx_budget by SAD |
|---|
| 654 | tx_budget = tx_budget - (tx_budget * sad); |
|---|
| 655 | fs_loss = tx_budget + rx_budget; |
|---|
| 656 | // now solve fs equation for distance |
|---|
| 657 | // 20*log10d(in miles) = 36.56 + (RX sensitivity + TX budget) + 20*log10(freq) |
|---|
| 658 | alert("Solve for distance not currently operational - sorry"); |
|---|
| 659 | return("Error"); |
|---|
| 660 | } |
|---|
| 661 | else |
|---|
| 662 | { |
|---|
| 663 | document.getElementById("spfr").value = fs_loss; |
|---|
| 664 | temp_budget = tx_budget - (tx_budget * sad); |
|---|
| 665 | gain = Math.ceil(fs_loss - (temp_budget + rx_budget)); |
|---|
| 666 | if(gain < 0){ |
|---|
| 667 | gain = 0; |
|---|
| 668 | } |
|---|
| 669 | // round gain up |
|---|
| 670 | if(want_tan && want_ran){ |
|---|
| 671 | // solve for two antenna (symetric) |
|---|
| 672 | gain = Math.ceil(gain /2); |
|---|
| 673 | document.getElementById("sptxa").value = gain; |
|---|
| 674 | document.getElementById("sprxa").value = gain; |
|---|
| 675 | tx_budget = tx_dbm - tx_cable + gain; |
|---|
| 676 | rx_budget = gain - rx_dbm - rx_cable; |
|---|
| 677 | }else{ |
|---|
| 678 | // solve for one antenna |
|---|
| 679 | if(want_tan){ |
|---|
| 680 | document.getElementById("sptxa").value = gain; |
|---|
| 681 | tx_budget = tx_dbm - tx_cable + gain; |
|---|
| 682 | }else{ |
|---|
| 683 | document.getElementById("sprxa").value = gain; |
|---|
| 684 | rx_budget = gain - rx_dbm - rx_cable; |
|---|
| 685 | } |
|---|
| 686 | } |
|---|
| 687 | document.getElementById("sprxr").value = round(rx_budget,3); |
|---|
| 688 | document.getElementById("sptxr").value = round(tx_budget,3); |
|---|
| 689 | document.getElementById("spfr").value = fs_loss; |
|---|
| 690 | margin = tx_budget - fs_loss + rx_budget; |
|---|
| 691 | document.getElementById("spomr").value = round(margin,3); |
|---|
| 692 | document.getElementById("spomrx").value = round(margin + rx_dbm,3); |
|---|
| 693 | if(document.getElementById("spomsad").value == ""){ |
|---|
| 694 | document.getElementById("spomsad").value = Math.ceil(sad * 100); |
|---|
| 695 | } |
|---|
| 696 | } |
|---|
| 697 | } |
|---|
| 698 | } |
|---|
| 699 | |
|---|
| 700 | //--> |
|---|
| 701 | </script> |
|---|
| 702 | |
|---|
| 703 | |
|---|
| 704 | <script language="JavaScript" type="text/javascript"> |
|---|
| 705 | <!-- |
|---|
| 706 | // copyright ZYTRAX, Inc. 1994 - 2003 |
|---|
| 707 | // you may use this javascript code at your own risk. |
|---|
| 708 | // we would like you to keep the copyright statement intact but don't insist on it. |
|---|
| 709 | // If you make improvements mail us a copy or make it available on your own web site. |
|---|
| 710 | // global variables |
|---|
| 711 | var topall = new Array(2); |
|---|
| 712 | var lownav = new Array(2); |
|---|
| 713 | var lowpop = new Array(2); |
|---|
| 714 | var rightnav = new Array(2); |
|---|
| 715 | var rightpop = new Array(2); |
|---|
| 716 | var x = 0; // global menu level |
|---|
| 717 | var way = 'h'; |
|---|
| 718 | var menu = null; |
|---|
| 719 | var menus = null; |
|---|
| 720 | var pop1 = new Array(2); |
|---|
| 721 | |
|---|
| 722 | // -- W3C DOM specific code first choice always |
|---|
| 723 | function lock(num){ |
|---|
| 724 | // lock relies on a style which end with -l |
|---|
| 725 | rollover = document.getElementById("l" + num); |
|---|
| 726 | if(rollover){ |
|---|
| 727 | cn = rollover.className |
|---|
| 728 | if((pos = cn.lastIndexOf("-")) != -1){ |
|---|
| 729 | bcn = cn.substring(0,pos + 1); |
|---|
| 730 | scn = cn.substring(pos +1); |
|---|
| 731 | if(scn == "f" || scn == "o"){ |
|---|
| 732 | rollover.className = bcn + "l"; |
|---|
| 733 | } |
|---|
| 734 | } |
|---|
| 735 | } |
|---|
| 736 | } |
|---|
| 737 | |
|---|
| 738 | function expand(cid,img){ |
|---|
| 739 | // expand hidden div cid = div class name, img = id |
|---|
| 740 | var io = document.getElementById(img); |
|---|
| 741 | } |
|---|
| 742 | function gotourl($url) |
|---|
| 743 | { |
|---|
| 744 | window.location = $url; |
|---|
| 745 | } |
|---|
| 746 | function mailus(mbox,stub,subject) |
|---|
| 747 | { |
|---|
| 748 | mail = "mailto:"+mbox+"@"+stub; |
|---|
| 749 | if(subject != ""){ |
|---|
| 750 | mail = mail+"?SUBJECT="+"A-M: "+subject; |
|---|
| 751 | } |
|---|
| 752 | window.location = mail; |
|---|
| 753 | return; |
|---|
| 754 | } |
|---|
| 755 | |
|---|
| 756 | // W3C compliant uses CSS popups not JS |
|---|
| 757 | |
|---|
| 758 | |
|---|
| 759 | |
|---|
| 760 | //--> |
|---|
| 761 | </script> |
|---|
| 762 | |
|---|
| 763 | |
|---|
| 764 | |
|---|
| 765 | </head><body> |
|---|
| 766 | |
|---|
| 767 | <h1>Wireless Calculators</h1> |
|---|
| 768 | <p>These calculators are written in Javascript (saves our bandwidth). |
|---|
| 769 | Find the calculation you want, and enter the various parameters |
|---|
| 770 | required then click the 'Calculate' button. If you don't like 'em or |
|---|
| 771 | think you can improve 'em, the <a href="view-source:http://www.zytrax.com/scripts/wireless_calc.shtml" target="_blank" class="t-db">code for the calculators is here</a>. For the equations used in each calculator follow the <b>Calculations and equations used</b> link.</p> |
|---|
| 772 | <p><b>Groveling apology 1:</b> The <a href="#fresnel" class="t-db">Fresnel calculator</a> |
|---|
| 773 | said it would default to the mid-point if no obstacle distance was |
|---|
| 774 | specified and it didn't. More importantly the 60% rule-of-thumb |
|---|
| 775 | distance was incorrect on the pessimistic side. Thanks to Phil Wells |
|---|
| 776 | for pointing out the errors.</p> |
|---|
| 777 | <p><b>Groveling apology 2:</b> The <a href="#fresnel" class="t-db">Fresnel calculator</a> provides the earth's height at the mid-point. However the <a href="http://www.atis.org/0010/index.asp" class="t-db">ATIS Committe T1A1</a> recommends use of the <a href="http://www.atis.org/tg2k/_effective_earth_radius.html" class="t-db"> effective earth radius (4/3 * earth radius)</a>. Previous calculations used the earth's radius and were higher by ~30%. Thanks to Ranjan Sonalkar for pointing out the error.</p> |
|---|
| 778 | <p><b>Partial Groveling apology 3:</b> The <a href="#fresnel" class="t-db">Fresnel calculator</a> |
|---|
| 779 | incorrectly computed the 60% obstacle free zone for MSIE browsers. |
|---|
| 780 | Those of you using Gecko/Moz based browsers (for example Firefox) had |
|---|
| 781 | the right answer all the time. And the moral of this tale - get a |
|---|
| 782 | decent browser. Thanks to Attila Altay Yavuz for pointing out the |
|---|
| 783 | error. Also the Fresnel calculator equations quoted 72.1 as the |
|---|
| 784 | conversion factor for miles - this should have been 72.6. Since the |
|---|
| 785 | calculator normalizes to km/meters this had no effect on results. |
|---|
| 786 | Thanks to Chris Herrington for pointing out this error. The calculators |
|---|
| 787 | verify the various values entered for being within a valid range and |
|---|
| 788 | output an error message if this is not the case. A number of error |
|---|
| 789 | messages were inconsistent with the ranges being tested. While |
|---|
| 790 | confusing, these inconsistent messages had no effect on the acuracy of |
|---|
| 791 | results. Our thanks to Jay Joffe for taking the time to point out this |
|---|
| 792 | problem.</p> |
|---|
| 793 | <h3 align="center">A Wireless System (more or less!)</h3> |
|---|
| 794 | <p align="center"><img src="calc_files/radio_system.gif" alt="Radio system" border="0"></p> |
|---|
| 795 | <p align="center"><b>Key:</b> Green is good, Red is bad.</p> |
|---|
| 796 | <!-- Start of calculator tables --> |
|---|
| 797 | <ol> |
|---|
| 798 | <li><a href="#budget" class="t-db">Power Budget</a> - total power of your system in dBm.</li> |
|---|
| 799 | <li><a href="#free_space" class="t-db">Free Space Loss</a> - power loss over distance.</li> |
|---|
| 800 | <li><a href="#system" class="t-db">System Performance</a> - How far will it go, will it get there or what is my Operating Margin?</li> |
|---|
| 801 | <li><a href="#fresnel" class="t-db">Fresnel Zones</a> - How much more than LOS or how high should my antenna be?</li> |
|---|
| 802 | <li><a href="#dbm" class="t-db">Power Conversion</a> - dBm to milliWatts and milliWatts to dBm</li> |
|---|
| 803 | </ol> |
|---|
| 804 | <p><b>Serious Health Warning:</b> It is nothing short of a minor |
|---|
| 805 | miracle of physics that ANY wireless signal gets to its destination. |
|---|
| 806 | These calculators use standard algorithms which give reasonable results |
|---|
| 807 | BUT it should be borne in mind you can have two locations 1 meter apart |
|---|
| 808 | in which one gets great reception ALL the time and the other NEVER gets |
|---|
| 809 | reception. Use <a href="http://www.zytrax.com/tech/wireless/intro.htm#propagation" class="t-db">this link</a> |
|---|
| 810 | for our quick overview of the background to radio propagation and the |
|---|
| 811 | side-bar links for some 'real brain-hurting stuff'. With suitable |
|---|
| 812 | apologies to the the memory of the late, lamented <a href="http://www.phnet.fi/public/mamaa1/adams.htm" class="t-db">Douglas Noel Adams</a> the answer to the question of 'how far will this wireless transmission go?' is 42.</p> |
|---|
| 813 | <!-- start of calculators --> |
|---|
| 814 | |
|---|
| 815 | <!-- W3C DOM'ish formats --> |
|---|
| 816 | |
|---|
| 817 | <table summary="" class="p-m-n" width="450" align="center" border="1" cellpadding="4" cellspacing="0"> |
|---|
| 818 | <tbody><tr> |
|---|
| 819 | <td class="section"><a name="budget"></a>Power Budget</td> |
|---|
| 820 | </tr> |
|---|
| 821 | <tr> |
|---|
| 822 | <td><p>Use this calculator to walk through all the factors that make up |
|---|
| 823 | your Power Budget. The 'Power Budget' is the the total power being |
|---|
| 824 | output from the wireless system and is the sum of:</p> |
|---|
| 825 | <ul> |
|---|
| 826 | <li> PLUS Radio Transmit Power (A above)</li> |
|---|
| 827 | <li> MINUS cables and connectors losses (B above)</li> |
|---|
| 828 | <li> PLUS antenna gain (C above).</li> |
|---|
| 829 | </ul> |
|---|
| 830 | <p>Enter one parameter in each column (or leave blank) depending on |
|---|
| 831 | what you know and the calculator will supply the appropriate |
|---|
| 832 | conversions automatically. Up to 2 decimal places may be entered as |
|---|
| 833 | 0.xx or .xx.</p> |
|---|
| 834 | <p><b>Note:</b> Connector loss is generally small UNLESS you've got |
|---|
| 835 | lots of 'em in which case you are probably in trouble anyway, or your |
|---|
| 836 | cable is VERY short. Just leave the line blank if you are feeling lazy.</p> |
|---|
| 837 | <a href="#budget_calc" class="t-db">Calculations and equations used.</a> |
|---|
| 838 | <form name="calcbudget"> |
|---|
| 839 | <table summary="" class="p-m-n" width="450" align="center" border="0" cellpadding="4" cellspacing="0"> |
|---|
| 840 | <tbody><tr valign="top"> |
|---|
| 841 | <td class="g-h-n" width="180">Radio and Antenna</td> |
|---|
| 842 | <td width="150"> </td> |
|---|
| 843 | <td width="120" align="center"> </td> |
|---|
| 844 | </tr> |
|---|
| 845 | <tr valign="top"> |
|---|
| 846 | <td>Transmit Power</td> |
|---|
| 847 | <td>Antenna Gain</td> |
|---|
| 848 | <td align="center"><b>Power</b></td> |
|---|
| 849 | </tr> |
|---|
| 850 | <tr valign="top"> |
|---|
| 851 | <td><input id="bmw" size="6" type="text"><b> mW<br>OR</b><br> |
|---|
| 852 | <input id="bdbm" size="6" type="text"><b> dBm</b></td> |
|---|
| 853 | <td><input id="bag" size="6" type="text"><b> dB(i)</b></td> |
|---|
| 854 | <td align="right"><input id="brr" size="10" type="text"><b> dB</b></td> |
|---|
| 855 | </tr> |
|---|
| 856 | <tr valign="top"> |
|---|
| 857 | <td class="g-h-n">Cable Loss</td> |
|---|
| 858 | <td> </td> |
|---|
| 859 | <td> </td> |
|---|
| 860 | </tr> |
|---|
| 861 | <tr valign="top"> |
|---|
| 862 | <td>Cable Properties<br> |
|---|
| 863 | (per 100 ft or m)</td> |
|---|
| 864 | <td>Cable Length</td> |
|---|
| 865 | <td> </td> |
|---|
| 866 | </tr> |
|---|
| 867 | <tr valign="top"> |
|---|
| 868 | <td><input id="bcf" size="6" type="text"><b> dB</b> (100 ft)<br> |
|---|
| 869 | <b>OR</b><br> |
|---|
| 870 | <input id="bcm" size="6" type="text"><b> dB</b> (100 m)</td> |
|---|
| 871 | <td><input id="blf" size="6" type="text"><b> feet<br> |
|---|
| 872 | OR</b><br> |
|---|
| 873 | <input id="blm" size="6" type="text"><b> meters</b></td> |
|---|
| 874 | <td align="right"><input id="bcr" size="10" type="text"><b> dB</b></td> |
|---|
| 875 | </tr> |
|---|
| 876 | <tr valign="top"> |
|---|
| 877 | <td class="g-h-n">Connector Loss</td> |
|---|
| 878 | <td> </td> |
|---|
| 879 | <td> </td> |
|---|
| 880 | </tr> |
|---|
| 881 | <tr valign="top"> |
|---|
| 882 | <td>Frequency in MHz</td> |
|---|
| 883 | <td>No. of Connectors</td> |
|---|
| 884 | <td> </td> |
|---|
| 885 | </tr> |
|---|
| 886 | <tr valign="top"> |
|---|
| 887 | <td><input id="bconf" value="2400" size="6" type="text"><b> MHz.</b></td> |
|---|
| 888 | <td><input id="bconno" size="6" type="text"><b> No.</b></td> |
|---|
| 889 | <td align="right"><input id="bconr" size="10" type="text"><b> dB</b></td> |
|---|
| 890 | </tr> |
|---|
| 891 | <tr valign="top"> |
|---|
| 892 | <td class="g-h-n">Budget</td> |
|---|
| 893 | <td> </td> |
|---|
| 894 | <td> </td> |
|---|
| 895 | </tr> |
|---|
| 896 | <tr valign="top"> |
|---|
| 897 | <td> </td> |
|---|
| 898 | <td><input class="button" value="Calculate" onclick="power_budget()" type="button"></td> |
|---|
| 899 | <td align="right"><input id="btr" size="10" type="text"><b> dB</b></td> |
|---|
| 900 | </tr> |
|---|
| 901 | </tbody></table> |
|---|
| 902 | </form> |
|---|
| 903 | </td> |
|---|
| 904 | </tr> |
|---|
| 905 | </tbody></table> |
|---|
| 906 | <p> </p> |
|---|
| 907 | <table summary="" class="p-m-n" width="450" align="center" border="1" cellpadding="4" cellspacing="0"> |
|---|
| 908 | <tbody><tr> |
|---|
| 909 | <td class="section"><a name="free_space"></a>Free Space Loss</td> |
|---|
| 910 | </tr> |
|---|
| 911 | <tr> |
|---|
| 912 | <td><p>Loss of power over distance (assuming no <a href="#fresnel" class="t-db">FRESNEL Effect</a> |
|---|
| 913 | and nothing in the way). This a very idealised calculation and in |
|---|
| 914 | practice everything interferes with the signal but it will give you a |
|---|
| 915 | reasonable approximation of the actual loss over distance.</p> |
|---|
| 916 | <p>Enter the system Frequency in MHz and the distance in either <b>Kilometers (Km) or Miles</b> below and then click the 'Calculate' button. 1 GHz = 1000 MHz e.g. 2400 = 2.4 GHz.</p> |
|---|
| 917 | <a href="#free_calc" class="t-db">Calculations and equations used.</a> |
|---|
| 918 | <form name="calcfreeloss"> |
|---|
| 919 | <table summary="" class="p-m-s" width="100%" border="0" cellpadding="4" cellspacing="0"> |
|---|
| 920 | <tbody><tr valign="top"> |
|---|
| 921 | <td class="g-h-n" width="100">Frequency</td> |
|---|
| 922 | <td class="g-h-n" width="120">Distance</td> |
|---|
| 923 | <td> </td> |
|---|
| 924 | <td align="center"><b>Result</b></td> |
|---|
| 925 | </tr> |
|---|
| 926 | <tr valign="top"> |
|---|
| 927 | <td><input id="fsf" size="6" value="2400" type="text"><b> MHz</b></td> |
|---|
| 928 | <td><input id="fsk" size="6" type="text"><b> Km<br>OR<b><br> |
|---|
| 929 | <input id="fsm" size="6" type="text"><b> Miles</b></b></b></td> |
|---|
| 930 | <td><input class="button" id="dbmcalc" value="Calculate" onclick='document.getElementById("fsr").value = free_space(document.getElementById("fsf").value, document.getElementById("fsk").value, document.getElementById("fsm").value);' type="button"></td> |
|---|
| 931 | <td align="right"><input id="fsr" size="6" type="text"><b> dB</b></td> |
|---|
| 932 | </tr> |
|---|
| 933 | </tbody></table> |
|---|
| 934 | </form> |
|---|
| 935 | </td> |
|---|
| 936 | </tr> |
|---|
| 937 | </tbody></table> |
|---|
| 938 | <p> </p> |
|---|
| 939 | <table summary="" class="p-m-n" width="450" align="center" border="1" cellpadding="4" cellspacing="0"> |
|---|
| 940 | <tbody><tr> |
|---|
| 941 | <td class="section"><a name="fresnel"></a>Fresnel Zones</td> |
|---|
| 942 | </tr> |
|---|
| 943 | <tr> |
|---|
| 944 | <td><p>Defines how much clearance you need (yes you need more than |
|---|
| 945 | simple Line-of-Sight) and for longer links > 3 Km (2 miles) whether |
|---|
| 946 | you may have a ground clearance problem from our friendly planet. <a href="http://www.zytrax.com/tech/wireless/fresnel.htm" class="t-db">M. Fresnel and his theories</a>.</p> |
|---|
| 947 | <p>Enter the <b>Total link</b> distance (in Miles or Kilometers), if you do not enter an <b>Obstacle distance</b> (in Miles or Kilometers) the calculator will use the mid-point for all calculations (<b>Note:</b> |
|---|
| 948 | assumes antennas at same height). Finally enter the system Frequency in |
|---|
| 949 | MHz and then click the 'Calculate' button. 1 GHz = 1000 MHz e.g. 2400 = |
|---|
| 950 | 2.4 GHz.</p> |
|---|
| 951 | <p>The calculator will generate the radius of the 1st Fresnel zone only |
|---|
| 952 | (at the obstable point or the mid-point), the 60% (no obstacle) radius |
|---|
| 953 | and the height of the effective earth curvature at the mid-point of the |
|---|
| 954 | <b>Total link</b> distance using the effective earth radius.</p> |
|---|
| 955 | <a href="#fresnel_calc" class="t-db">Calculations and equations used.</a> |
|---|
| 956 | <form name="calcfresnel"> |
|---|
| 957 | <table summary="" class="norm" width="100%" border="0" cellpadding="4" cellspacing="0"> |
|---|
| 958 | <tbody><tr class="g-h-n" valign="top"> |
|---|
| 959 | <td width="100">Total Link</td> |
|---|
| 960 | <td width="100">Obstacle Distance</td> |
|---|
| 961 | <td colspan="2" align="center">1st Fresnel Zone Radius</td> |
|---|
| 962 | </tr> |
|---|
| 963 | <tr valign="top"> |
|---|
| 964 | <td><input id="fltk" size="6" type="text"><b> Km<br>OR</b><br> |
|---|
| 965 | <input id="fltm" size="6" type="text"><b> Miles</b></td> |
|---|
| 966 | <td><input id="flok" size="6" type="text"><b> Km<br>OR<b><br> |
|---|
| 967 | <input id="flom" size="6" type="text"><b> Miles</b></b></b></td> |
|---|
| 968 | <td> |
|---|
| 969 | <input id="flzm" size="6" type="text"><b> m<br>at<br></b> |
|---|
| 970 | <input id="fld1k" size="6" type="text"><b> Km</b></td> |
|---|
| 971 | <td><input id="flzf" size="6" type="text"><b> ft<br>at<br></b> |
|---|
| 972 | <input id="fld1m" size="6" type="text"><b> Miles</b></td> |
|---|
| 973 | </tr> |
|---|
| 974 | <tr valign="top"> |
|---|
| 975 | <td class="g-h-n">Frequency</td> |
|---|
| 976 | <td> </td> |
|---|
| 977 | <td class="g-h-n" colspan="2" align="center">60% No Obstacle Radius</td> |
|---|
| 978 | </tr> |
|---|
| 979 | <tr valign="top"> |
|---|
| 980 | <td><input id="flf" size="6" value="2400" type="text"><b> MHz</b></td> |
|---|
| 981 | <td> </td> |
|---|
| 982 | <td align="right"><input id="flofm" size="6" type="text"><b> m</b></td> |
|---|
| 983 | <td align="right"><input id="floff" size="6" type="text"><b> ft</b> |
|---|
| 984 | </td></tr> |
|---|
| 985 | <tr valign="top"> |
|---|
| 986 | <td><input class="button" name="flcalc" value="Calculate" onclick="fres_zone();" type="button"></td> |
|---|
| 987 | <td> </td> |
|---|
| 988 | <td class="g-h-n" colspan="2" align="center">Earth Height (mid-point)</td> |
|---|
| 989 | </tr> |
|---|
| 990 | <tr valign="top"> |
|---|
| 991 | <td> </td> |
|---|
| 992 | <td> </td> |
|---|
| 993 | <td align="right"><input id="flehm" size="6" type="text"><b> m</b></td> |
|---|
| 994 | <td align="right"><input id="flehf" size="6" type="text"><b> ft</b> |
|---|
| 995 | </td></tr> |
|---|
| 996 | </tbody></table> |
|---|
| 997 | </form> |
|---|
| 998 | </td> |
|---|
| 999 | </tr> |
|---|
| 1000 | </tbody></table> |
|---|
| 1001 | <p> </p> |
|---|
| 1002 | <table summary="" class="norm" width="500" align="center" border="1" cellpadding="4" cellspacing="0"> |
|---|
| 1003 | <tbody><tr> |
|---|
| 1004 | <td class="section"><a name="system"></a>System Performance</td> |
|---|
| 1005 | </tr> |
|---|
| 1006 | <tr> |
|---|
| 1007 | <td><p>This calculator will give you one of three answers:</p> |
|---|
| 1008 | <ol> |
|---|
| 1009 | <li>If you leave distance blank it will apply the defined SAD factor |
|---|
| 1010 | (or default to 30%) to the Operating Margin and supply the max. |
|---|
| 1011 | distance (in Km and Miles) at which the Margin operates.</li> |
|---|
| 1012 | <li>If you enter the distance it will calculate the Operating Margin and the SAD factor.</li> |
|---|
| 1013 | <li>If you enter distance but leave RX or TX antenna gain (or both) |
|---|
| 1014 | blank it will apply the chosen SAD factor (or default it to 30% if none |
|---|
| 1015 | supplied) and generate the required antenna power. If both are left |
|---|
| 1016 | blank it will calculate a symmetrical antenna gain.</li> |
|---|
| 1017 | </ol> |
|---|
| 1018 | <p>To RESET any parameter just set it to BLANK before clicking 'Calculate'</p> |
|---|
| 1019 | <p><b>Notes:</b> RX Sensitivity is ALWAYS expressed as a negative dBm |
|---|
| 1020 | (- dBm) and is the lowest power of signal your radio can handle. Its |
|---|
| 1021 | buried somewhere in your radio spec and will be typically in the range |
|---|
| 1022 | of -70 to -110 dBm. Don't guess or 'fudge' this number.</p> |
|---|
| 1023 | <p><b>Note:</b> If you solve for TX antenna (you leave it blank) and |
|---|
| 1024 | define a specific SAD factor it is applied to the TX budget and any TX |
|---|
| 1025 | antenna value will include this factor. If you then click Calculate |
|---|
| 1026 | again without changing anything, the SAD factor will be calculated to <b>include</b> the supplied TX antenna value and thus may show a lower value than the original one.</p> |
|---|
| 1027 | <a href="#system_calc" class="t-db">Calculations and equations used.</a> |
|---|
| 1028 | <form name="calcfreeloss"> |
|---|
| 1029 | <table summary="" class="p-m-n" width="100%" border="0" cellpadding="4" cellspacing="0"> |
|---|
| 1030 | <tbody><tr valign="top"> |
|---|
| 1031 | <td class="g-h-n" width="120">Frequency</td> |
|---|
| 1032 | <td class="g-h-n" width="120">Distance</td> |
|---|
| 1033 | <td class="g-h-n" width="120"> </td> |
|---|
| 1034 | <td class="g-h-n" align="center">FS Loss</td> |
|---|
| 1035 | </tr> |
|---|
| 1036 | <tr valign="top"> |
|---|
| 1037 | <td><input id="spf" value="2400" size="10" type="text"><b> MHz</b></td> |
|---|
| 1038 | <td><input id="spk" size="6" type="text"><b> Km<br>OR</b><br> |
|---|
| 1039 | <input id="spm" size="6" type="text"><b> Miles</b></td> |
|---|
| 1040 | <td align="right"> </td> |
|---|
| 1041 | <td align="right"><input id="spfr" size="6" type="text"><b> dB</b></td> |
|---|
| 1042 | </tr> |
|---|
| 1043 | <tr valign="top"> |
|---|
| 1044 | <td class="g-h-n">TX Power</td> |
|---|
| 1045 | <td class="g-h-n">TX Cable</td> |
|---|
| 1046 | <td class="g-h-n">TX Antenna</td> |
|---|
| 1047 | <td class="g-h-n" align="center">Total TX</td> |
|---|
| 1048 | </tr> |
|---|
| 1049 | <tr valign="top"> |
|---|
| 1050 | <td><input id="sptxdbm" size="6" type="text"><b> dBm<br>OR<br></b> |
|---|
| 1051 | <input id="sptxmw" size="6" type="text"><b> mW</b></td> |
|---|
| 1052 | <td><input id="sptxc" size="6" type="text"><b> dBm</b></td> |
|---|
| 1053 | <td><input id="sptxa" size="6" type="text"><b> dB</b></td> |
|---|
| 1054 | <td align="right"><input id="sptxr" size="6" type="text"><b> dB</b></td> |
|---|
| 1055 | </tr> |
|---|
| 1056 | <tr valign="top"> |
|---|
| 1057 | <td class="g-h-n">RX Sensitivity</td> |
|---|
| 1058 | <td class="g-h-n">RX Cable</td> |
|---|
| 1059 | <td class="g-h-n">RX Antenna</td> |
|---|
| 1060 | <td class="g-h-n" align="center">Total RX</td> |
|---|
| 1061 | </tr> |
|---|
| 1062 | <tr valign="top"> |
|---|
| 1063 | <td><input id="sprxdbm" value="-89" size="6" type="text"><b> dBm</b></td> |
|---|
| 1064 | <td><input id="sprxc" size="6" type="text"><b> dB</b></td> |
|---|
| 1065 | <td><input id="sprxa" size="6" type="text"><b> dB</b></td> |
|---|
| 1066 | <td align="right"><input id="sprxr" size="6" type="text"><b> dB</b></td> |
|---|
| 1067 | </tr> |
|---|
| 1068 | <tr class="g-h-n" valign="top"> |
|---|
| 1069 | <td>Margin</td> |
|---|
| 1070 | <td>RX Power</td> |
|---|
| 1071 | <td>SAD Factor</td> |
|---|
| 1072 | <td align="center">Theoretical</td> |
|---|
| 1073 | </tr> |
|---|
| 1074 | <tr valign="top"> |
|---|
| 1075 | <td><input class="button" value="Calculate" onclick="op_margin()" type="button"></td> |
|---|
| 1076 | <td><input id="spomrx" size="6" type="text"><b> dBm</b></td> |
|---|
| 1077 | <td><input id="spomsad" size="6" type="text"><b> %</b></td> |
|---|
| 1078 | <td align="right"><input id="spomr" size="6" type="text"><b> dB</b></td> |
|---|
| 1079 | </tr> |
|---|
| 1080 | </tbody></table> |
|---|
| 1081 | </form> |
|---|
| 1082 | </td> |
|---|
| 1083 | </tr> |
|---|
| 1084 | </tbody></table> |
|---|
| 1085 | <p> </p> |
|---|
| 1086 | <table summary="" class="norm" width="450" align="center" border="1" cellpadding="4" cellspacing="0"> |
|---|
| 1087 | <tbody><tr> |
|---|
| 1088 | <td class="section"><a name="dbm"></a>milliWatts to dBm (and vice versa) |
|---|
| 1089 | </td> |
|---|
| 1090 | </tr> |
|---|
| 1091 | <tr> |
|---|
| 1092 | <td><p>Power in milliWatts to dBm (and vice versa) . Enter the 'Transmit Power' (<b>A or G above</b>) in <b>milliWatts</b> OR the 'Power Ratio' in <b>dBm</b> and click the appropriate 'Calculate' button. 1 Watt = 1000 milliWatts.</p> |
|---|
| 1093 | <a href="#db_calc" class="t-db">Calculations and equations used.</a> |
|---|
| 1094 | <form name="calcdbm" action="" method="get"> |
|---|
| 1095 | <table summary="" class="p-m-s" width="100%" border="0" cellpadding="4" cellspacing="0"> |
|---|
| 1096 | <tbody><tr valign="top"> |
|---|
| 1097 | <td class="g-h-n" width="150">Transmit Power</td> |
|---|
| 1098 | <td width="150"> </td> |
|---|
| 1099 | <td class="g-h-n" width="140" align="center">Result</td> |
|---|
| 1100 | </tr> |
|---|
| 1101 | <tr valign="top"> |
|---|
| 1102 | <td><input id="dbmmw" size="10" type="text"><b>mW</b></td> |
|---|
| 1103 | <td align="center"><input class="button" id="dbmcalc" value="Calculate" onclick='document.getElementById("rdbm").value = to_dbm(document.getElementById("dbmmw").value); return(0);' type="button"></td> |
|---|
| 1104 | <td align="right"><input id="rdbm" size="10" type="text"><b> dBm</b></td> |
|---|
| 1105 | </tr> |
|---|
| 1106 | <tr valign="top"> |
|---|
| 1107 | <td class="g-h-n">Power Ratio</td> |
|---|
| 1108 | <td> </td> |
|---|
| 1109 | <td class="g-h-n" align="center">Result</td> |
|---|
| 1110 | </tr> |
|---|
| 1111 | <tr valign="top"> |
|---|
| 1112 | <td><input id="udbm" size="10" type="text"><b> dBm</b></td> |
|---|
| 1113 | <td align="center"><input class="button" id="mwcalc" value="Calculate" onclick='document.getElementById("umw").value = from_dbm(document.getElementById("udbm").value); return(0);' type="button"></td> |
|---|
| 1114 | <td align="right"><input id="umw" size="10" type="text"><b> mW</b></td> |
|---|
| 1115 | </tr> |
|---|
| 1116 | </tbody></table> |
|---|
| 1117 | </form> |
|---|
| 1118 | </td> |
|---|
| 1119 | </tr> |
|---|
| 1120 | </tbody></table> |
|---|
| 1121 | |
|---|
| 1122 | |
|---|
| 1123 | |
|---|
| 1124 | <!-- end of calculators --> |
|---|
| 1125 | <h1><a name="budget_calc"></a>Power Budget Calculations</h1> |
|---|
| 1126 | <ol> |
|---|
| 1127 | <li><p>mW to dBm = 10Log<sub>10</sub>(Watts) + 30</p></li> |
|---|
| 1128 | <li><p>feet to meters = .3048</p></li> |
|---|
| 1129 | <li><p>meters to feet = 3.28</p></li> |
|---|
| 1130 | <li><p>Calculator normalises all distances to kilometers and meters</p></li> |
|---|
| 1131 | <li><p>Connectors loss = 0.10 * square root (frequency in GHz)</p></li> |
|---|
| 1132 | </ol> |
|---|
| 1133 | <h1><a name="free_calc"></a>Free Space Calculations</h1> |
|---|
| 1134 | <ol> |
|---|
| 1135 | <li><p>Free space loss = 36.56 + 20Log<sub>10</sub>(Frequency) + 20Log<sub>10</sub>(Distance in miles)</p></li> |
|---|
| 1136 | <li><p>Calculator normalises all distances to miles</p></li> |
|---|
| 1137 | <li><p>Miles to Kilometers = 1.609</p><p> |
|---|
| 1138 | </p></li><li><p>Kilometers to miles = 0.621</p></li> |
|---|
| 1139 | </ol> |
|---|
| 1140 | <h1><a name="fresnel_calc"></a>Fresnel Zone Calculations</h1> |
|---|
| 1141 | <ol> |
|---|
| 1142 | <li><p>Calculator normalises all distances to kilometers and meters</p></li> |
|---|
| 1143 | <li><p>Miles to Kilometers = 1.609</p><p> |
|---|
| 1144 | </p></li><li><p>Kilometers to miles = 0.621</p></li> |
|---|
| 1145 | <li><p>feet to meters = .3048</p></li> |
|---|
| 1146 | <li><p>meters to feet = 3.28</p></li> |
|---|
| 1147 | <li><p>1st Fresnel Zone radius (Km) = 17.3 x Sqr root ((Obstacle |
|---|
| 1148 | Distance x (Total Link - Obstacle Distance)) / (Frequency in GHz x |
|---|
| 1149 | Total Link))</p></li> |
|---|
| 1150 | <li><p>1st Fresnel Zone radius (miles) = 72.6 x Sqr root ((Obstacle |
|---|
| 1151 | Distance x (Total Link - Obstacle Distance)) / (Frequency in GHz x |
|---|
| 1152 | Total Link))</p></li> |
|---|
| 1153 | <li><p>Obstacle free radius = 0.6 x 1st Fresnel Zone radius</p></li> |
|---|
| 1154 | <li><p>Radius of nth Fresnel zone (meter) = sqr root ( (n x wave length |
|---|
| 1155 | x Obstacle distance x (Total Link - Obstacle Distance)) / Total Link )</p></li> |
|---|
| 1156 | <li><p>wave length (meters) = speed of light (299,792,458 m/s) / frequency in Hz</p></li> |
|---|
| 1157 | <li><p>Earth curvature calculation = (Total Link) <sup>2</sup> /(8 * effective earth radius)</p></li> |
|---|
| 1158 | <li><p>effective earth radius = 4/3 * Earth radius</p></li> |
|---|
| 1159 | <li><p>Earth radius = 3963 miles, 6378 Km</p></li> |
|---|
| 1160 | </ol> |
|---|
| 1161 | <h1><a name="system_calc"></a>System Performance Calculations</h1> |
|---|
| 1162 | <ol> |
|---|
| 1163 | <li><p>Calculator normalises all distances to miles and feet during calculations.</p></li> |
|---|
| 1164 | <li><p>Free space loss = 36.56 + 20Log<sub>10</sub>(Frequency) + 20Log<sub>10</sub>(Dist in miles)</p></li> |
|---|
| 1165 | <li><p>mW to dBm = 10Log<sub>10</sub>(milliWatts) + 30</p></li> |
|---|
| 1166 | <li><p>dBm to mW = 10<sup>(dBm/10)</sup></p></li> |
|---|
| 1167 | <li><p>RX Power = Margin - RX sensitivity</p></li> |
|---|
| 1168 | <li><p>Theoretical margin = TX power budget + RX power budget - free space loss</p></li> |
|---|
| 1169 | <li><p>SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.</p></li> |
|---|
| 1170 | </ol> |
|---|
| 1171 | <h1><a name="db_calc"></a>dBm to Watts Calculations</h1> |
|---|
| 1172 | <ol> |
|---|
| 1173 | <li><p>mW to dBm = 10Log<sub>10</sub>(Watts) + 30</p></li> |
|---|
| 1174 | <li><p>dBm to mW = 10<sup>(dBm/10)</sup></p></li> |
|---|
| 1175 | </ol> |
|---|
| 1176 | <hr> |
|---|
| 1177 | <p class="p-m-n"><br>Problems, comments, suggestions, corrections |
|---|
| 1178 | (including broken links) or something to add? Please take the time from |
|---|
| 1179 | a busy life to 'mail us' (at top of screen), the webmaster (below) or <a href="javascript:mailus('info-support','zytrax.com','Support%20Issue')" class="t-db">info-support at zytrax</a>. You will have a warm inner glow for the rest of the day.</p> |
|---|
| 1180 | </div> |
|---|
| 1181 | </div> |
|---|
| 1182 | |
|---|
| 1183 | |
|---|
| 1184 | <div class="l-f"> |
|---|
| 1185 | <div class="l-100"> |
|---|
| 1186 | <!-- standard footer full width --> |
|---|
| 1187 | <table align="center" border="0" cellspacing="0"> |
|---|
| 1188 | <tbody><tr valign="top"> |
|---|
| 1189 | <td class="p-f-s" align="left"> |
|---|
| 1190 | |
|---|
| 1191 | Copyright © 1994 - 2009 ZyTrax, Inc.<br> All rights reserved. |
|---|
| 1192 | <a href="http://www.zytrax.com/legal.html" class="p-f-s">Legal and Privacy</a> |
|---|
| 1193 | </td> |
|---|
| 1194 | <td align="center"><a href="http://www.zytrax.com/isp/web" target="_blank" class="p-f-s">site by zytrax</a><br> <a href="http://www.super.net.sg/" target="_blank" class="p-f-s"><img src="calc_files/super-net-s.gif" alt="Hosted by super.net.sg" border="0"></a></td> |
|---|
| 1195 | <td class="p-f-s" align="right"> |
|---|
| 1196 | <a href="javascript:mailus('web-master','zytrax.com','About%20Web%20site')" class="p-f-s">web-master at zytrax</a><br> |
|---|
| 1197 | Page modified: July 10 2009. |
|---|
| 1198 | </td> |
|---|
| 1199 | </tr> |
|---|
| 1200 | </tbody></table> |
|---|
| 1201 | </body></html> |
|---|