[Autopilot-website] CVS: htdocs pcm.html,1.2,1.3
Status: Alpha
Brought to you by:
tramm
From: Trammell H. <tr...@us...> - 2003-02-03 19:42:47
|
Update of /cvsroot/autopilot/htdocs In directory sc8-pr-cvs1:/tmp/cvs-serv765 Modified Files: pcm.html Log Message: Added more details and some section headers Index: pcm.html =================================================================== RCS file: /cvsroot/autopilot/htdocs/pcm.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pcm.html 3 Feb 2003 19:25:56 -0000 1.2 +++ pcm.html 3 Feb 2003 19:42:41 -0000 1.3 @@ -1,3 +1,102 @@ +<!-- START OF HEADER --> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" +"http://www.w3.org/TR/REC-html40/loose.dtd"> +<html> +<head> + <title>autopilot: Futaba PCM decoding</title> + <meta + http-equiv = "Content-Type" + content = "text/html; charset=utf-8" + > + <meta + name = "Description" + content = "Autopilot for model helicopters, with 3 axis IMU/INS+GPS" + > + <meta + name = "Keywords" + content = "autopilot,pcm,futaba,pcm1024,futaba pcm,helicopter,heli,model heli,model helicopter,remote control,uav,unmanned aerial vehicle,rpv,remotely piloted vehicle,aerial robot,ins,imu,gps,inertial measurement unit,inertial navigation system,attitude reference,ahrs,stabilization,automatic flight control system,afcs,linux,avr,microcontroller,pcb,servo,transmitter,telemetry,automatic stabilization system,source code,ins mechanization,strap down,strap down ins,strap down imu,strapdown ins,strapdown,strapdown imu,autonomous,automatic,automation,rotorcraft,rotor craft,rate integration,navigation,tactical,strategic" + > + <link + rev = "$Id$" + > +<style type="text/css"> +<!-- +body { + margin: 0 0 0 0; + background: #FFFFFF + url(images/rotomotion.background.png) + no-repeat + fixed + bottom + right +} +--> +</style> +</head> + +<body + bgcolor = "#FFFFFF" + text = "#000000" + alink = "#00FF00" + vlink = "#AF00A0" + link =" #0000FF" + background = "images/rotomotion.background.png" +> + +<table + width = "100%" + border = 0 +><tr +><td + width = 300 + height = 100 +><a + href = "index.html" +><img + src = "images/clouds-banner.jpg" + width = 300 + height = 100 + align = "left" + alt = "[ Concept 60 hovering ]" + border = 0 +></a></td> +<td> +<h2>autopilot: Do it yourself UAV</h2> +<hr> +<a + href = "index.html" +>Home</a> +| +<a + href = "download.html" +>Download</a> +| +<a + href = "lists.html" +>Mailing lists</a> +| +<a + href = "gallery.html" +>Gallery</a> +| +<a + href = "faq.html" +>FAQ</a> +| +<a + href = "systems.html" +>Systems</a> +<hr> +</td> +</tr> +</table> + +<br clear="all"> + +<!-- END OF HEADER --> + +<!-- TITLE= autopilot: Futaba PCM decoding --> + <h1>PCM vs PPM</h1> <p> @@ -59,6 +158,8 @@ PCM model. Screen shots are of the Tek TDS2012 scope used to analyze the bit stream. + +<h2>Frame protocol</h2> <p> The PCM frame consists of four fields, each 28 ms long. Each field starts with a 2.7 ms sync pulse of either high or low polarity, follwed @@ -72,6 +173,63 @@ natural representation. <p> +On the wire, the frame is transmitted like this (with sync pulses +between each of the fields): + +<p> +<table + border = 1 +> +<tr> +<td> 0</td> <td> 1</td> <td> 2</td> <td> 3</td> <td> 4</td> +<td> 5</td> <td> 6</td> <td> 7</td> <td> 8</td> <td> 9</td> +<td>10</td> <td>11</td> <td>12</td> <td>13</td> <td>14</td> +<td>15</td> <td>16</td> <td>17</td> <td>18</td> <td>19</td> +<td>20</td> <td>22</td> <td>22</td> <td>23</td> <td>24</td> +<td>25</td> <td>26</td> <td>27</td> <td>28</td> <td>29</td> +<td>30</td> <td>32</td> <td>32</td> <td>33</td> <td>34</td> +<td>35</td> <td>36</td> <td>37</td> <td>38</td> <td>39</td> +<td>40</td> <td>42</td> <td>42</td> <td>43</td> <td>44</td> +<td>45</td> <td>46</td> <td>47</td> <td>48</td> <td>49</td> +<td>50</td> <td>52</td> <td>52</td> <td>53</td> <td>54</td> +<td>55</td> +</tr> +<tr> +<td colspan=56>PCM Frame</td> +<tr> +<td colspan=2>Sync</td><td colspan=12>Field 1</td> +<td colspan=2>Sync</td><td colspan=12>Field 2</td> +<td colspan=2>Sync</td><td colspan=12>Field 3</td> +<td colspan=2>Sync</td><td colspan=12>Field 4</td> +</tr> +<tr> +<td colspan=2>LOW</td> +<td colspan=3>1A</td> +<td colspan=3>1B</td> +<td colspan=3>1C</td> +<td colspan=3>1D</td> + +<td colspan=2>LOW</td> +<td colspan=3>2A</td> +<td colspan=3>2B</td> +<td colspan=3>2C</td> +<td colspan=3>2D</td> + +<td colspan=2>HIGH</td> +<td colspan=3>3A</td> +<td colspan=3>3B</td> +<td colspan=3>3C</td> +<td colspan=3>3D</td> + +<td colspan=2>HIGH</td> +<td colspan=3>4A</td> +<td colspan=3>4B</td> +<td colspan=3>4C</td> +<td colspan=3>4D</td> +</tr> +</table> + +<p> The bit clock is 150 us. There does not appear to be any syncronization mechanism other than the accuracy of the onboard clock. Bits are sampled roughly 25 us after a transition and there never appears to be a single @@ -88,11 +246,15 @@ sync pulse fields (3 and 4) which are nominally logical inversions of the first two fields. + +<h2>Data packets</h2> + <p> The data packet format consists of 2 bits of type selectors, 4 bits of position delta, 10 bits of absolute position and 8 bits of checksum. Bit zero is transmitted first: +<p> <table border = 1 > @@ -122,27 +284,68 @@ The checksum appears to be a sum of the position and other bits; I have not fully analyzed it yet. + +<h2>Checksum computation</h2> +<p> +To be written + + +<h2>Channel assignment</h2> <p> As mentioned before, each field has four data packets that we're calling A, B, C and D. The first packet in field 1 is 1A and so on. The position and delta channels for each normal data packet appear to be: <pre> -1A: Select=2 Channel 1 absolute, Channel 2 delta -1B: Select=0 Channel 3 absolute, Channel 4 delta -1C: Select=2 Channel 5 absolute, Channel 6 delta -1C: Select=0 ??? -1D: Select=0 Channel 7 absolute, Channel 8 delta +1A: + Select=0 ??? + Select=1 ??? + Select=2 Channel 1 absolute, Channel 2 delta + Select=3 ??? +1B: + Select=0 Channel 3 absolute, Channel 4 delta + Select=1 ??? + Select=2 ??? + Select=3 ??? +1C: + Select=0 ??? + Select=1 ??? + Select=2 Channel 5 absolute, Channel 6 delta + Select=3 ??? +1D: + Select=0 Channel 7 absolute, Channel 8 delta + Select=1 ??? + Select=2 ??? + Select=3 ??? -2A: Select=2 Channel 2 absolute, Channel 1 delta -2B: Select=0 Channel 4 absolute, Channel 3 delta -2C: Select=2 Channel 6 absolute, Channel 5 delta -2C: Select=0 ??? -2D: Select=0 Channel 8 absolute, Channel 7 delta +2A: + Select=0 ??? + Select=1 ??? + Select=2 Channel 2 absolute, Channel 1 delta + Select=3 ??? +2B: + Select=0 Channel 4 absolute, Channel 3 delta + Select=1 ??? + Select=2 ??? + Select=3 ??? +2C: + Select=0 ??? + Select=1 ??? + Select=2 Channel 6 absolute, Channel 5 delta + Select=3 ??? +2D: + Select=0 Channel 8 absolute, Channel 7 delta + Select=1 ??? + Select=2 ??? + Select=3 ??? </pre> <p> -To be added: Fail safe select values, checksum algorithm, more screen shots. + +<h2>Fail safe frames</h2> +<p> +To be written. + <hr> @@ -217,3 +420,56 @@ '0000001100' => 0x3E, '0000000111' => 0x3F, </pre> + +<!-- START OF FOOTER --> +<p> +<!-- END OF LAYOUT --> +<br clear="all"> + +<table + width = "100%" + border = 1 + bgcolor = "#A0A0A0" +> +<tr> +<td + width = "100%" +> +<a href="index.html" +><IMG + src = "images/logo-clear.gif" + width = "88" + height = "31" + border = "1" + alt = "Autopilot Logo" + align = "right" +></A> +<A href="http://sourceforge.net" +><IMG + src = "http://sourceforge.net/sflogo.php?group_id=36164" + width = "88" + height = "31" + border = "1" + alt = "SourceForge" + align = "right" +></A> +<a href="http://validator.w3.org/check/referer" +><img + src = "http://www.w3.org/Icons/valid-html40" + alt = "HTML 4.0!" + height = "31" + width = "88" + border = "1" + align = "right" +></a> + +<h6><a + href = "/cgi-bin/history" +>$Id$</a></h6> +</td> +</tr> +</table> + +</html> + +<!-- END OF FOOTER --> |