satnogs-rotator-firmware/doxygen_files/html/index.html

219 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>satnogs-rotator-firmware: SatNOGS Rotator Firmware</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">satnogs-rotator-firmware
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">SatNOGS Rotator Firmware </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Firmware <a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware">SatNOGS Rotator Controller</a>.</p>
<p>Repository includes all source files for the SatNOGS rotator controller Firmware.</p>
<p>Electronics can be found on <a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller">satnogs-rotator-controller</a></p>
<h2>Instructions</h2>
<p>In order to use this code, you need to install</p><ul>
<li><a href="http://www.airspayce.com/mikem/arduino/AccelStepper/index.html">AccelStepper library</a></li>
<li><a href="https://github.com/br3ttb/Arduino-PID-Library">PID_v1 library</a></li>
<li>Wire library</li>
</ul>
<p>You need to choose the version of the Firmware you will be utilizing based on your controller and rotator setup. Namely we have two different versions (one for DC motors and one for Stepper motors).</p>
<h5>Steps</h5>
<ul>
<li>Download arduino IDE (tested with 1.8.5)</li>
<li>Add these lines in /arduino-1.8.5/hardware/arduino/avr/boards.txt</li>
</ul>
<div class="fragment"><div class="line">##############################################################</div><div class="line">satnogs.name=SatNOGS</div><div class="line">satnogs.upload.tool=avrdude</div><div class="line">satnogs.upload.protocol=buspirate</div><div class="line">satnogs.upload.maximum_size=32256</div><div class="line">satnogs.upload.maximum_data_size=2048</div><div class="line">satnogs.upload.speed=115200</div><div class="line"></div><div class="line">satnogs.bootloader.tool=avrdude</div><div class="line">satnogs.bootloader.low_fuses=0xFF</div><div class="line">satnogs.bootloader.high_fuses=0xDE</div><div class="line">satnogs.bootloader.extended_fuses=0xFD</div><div class="line">satnogs.bootloader.unlock_bits=0x3F</div><div class="line">satnogs.bootloader.lock_bits=0x0F</div><div class="line">satnogs.bootloader.file=optiboot/optiboot_atmega328.hex</div><div class="line"></div><div class="line">satnogs.build.mcu=atmega328p</div><div class="line">satnogs.build.f_cpu=16000000L</div><div class="line">satnogs.build.board=AVR_SATNOGS</div><div class="line">satnogs.build.core=arduino</div><div class="line">satnogs.build.variant=eightanaloginputs</div><div class="line">##############################################################</div></div><!-- fragment --><ul>
<li>Install <a href="https://github.com/sudar/Arduino-Makefile">Arduino-Makefile</a></li>
</ul>
<div class="fragment"><div class="line">ARDUINO_DIR – Directory where Arduino is installed</div><div class="line">ARDMK_DIR – Directory where you have copied the makefile</div><div class="line">AVR_TOOLS_DIR – Directory where avr tools are installed</div><div class="line">USER_LIB_PATH – Directory where arduino libraries are installed</div><div class="line">AVRDUDE – Directory where avrdude are installed</div><div class="line">AVRDUDE_ARD_BAUDRATE – Serial Baudrate (uncomment to use 57600 for FTDI)</div><div class="line">include – Directory where Arduino.mk are installed</div></div><!-- fragment --><ul>
<li>Build the code</li>
</ul>
<div class="fragment"><div class="line">make</div></div><!-- fragment --><ul>
<li>Upload using ISP<ul>
<li>Connect <a href="https://www.arduino.cc/en/Tutorial/ArduinoISP">arduino</a> or buspirate for ISP programming<ol type="1">
<li>Pin 13 (SCK) to Pin 13 of arduino pro mini, ISP connector</li>
<li>Pin 12 (MISO) to Pin 12 of arduino pro mini, ISP connector</li>
<li>Pin 11 (MOSI) to Pin 11 of arduino pro mini, ISP connector</li>
<li>Pin 10 (RESET) to Pin RST of arduino pro mini, ISP connector</li>
<li>5+ (Vcc) to Pin VCC of arduino pro mini, ISP connector</li>
<li>Gnd (Gnd) to Pin GND of arduino pro mini, ISP connector</li>
</ol>
</li>
</ul>
</li>
<li>BusPirate</li>
</ul>
<div class="fragment"><div class="line">satnogs.upload.protocol=buspirate (in board.txt)</div><div class="line">ISP_PROG = buspirate (in Makefile)</div></div><!-- fragment --> <div class="fragment"><div class="line">make ispload</div></div><!-- fragment --><ul>
<li><a href="https://www.arduino.cc/en/Tutorial/ArduinoISP">Arduino</a></li>
</ul>
<div class="fragment"><div class="line">satnogs.upload.protocol=arduino (in board.txt)</div><div class="line">ISP_PROG = arduino (in Makefile)</div></div><!-- fragment --><div class="fragment"><div class="line">make ispload</div></div><!-- fragment --><ul>
<li>Upload using FDTI, but is necessary to uninstall arduino pro-mini from board</li>
</ul>
<p>Connect <a href="https://learn.sparkfun.com/tutorials/using-the-arduino-pro-mini-33v">FTDI</a></p>
<div class="fragment"><div class="line">satnogs.upload.protocol=arduino (in board.txt)</div></div><!-- fragment --> <div class="fragment"><div class="line">make upload</div></div><!-- fragment --><ul>
<li>Burn optiboot</li>
</ul>
<p>Only with ISP programming </p><pre class="fragment">* Arduino as ISP
* BusPirate as ISP
</pre><div class="fragment"><div class="line">make burn_bootloader</div></div><!-- fragment --><h2>Easycomm implemantation</h2>
<ul>
<li>AZ, Azimuth, number - 1 decimal place [deg]</li>
<li>EL, Elevation, number - 1 decimal place [deg]</li>
<li>SA, Stop azimuth moving</li>
<li>SE, Stop elevation moving</li>
<li>RESET, Move to home position</li>
<li>PARK, Move to park position</li>
<li>IP, Read an input, number<ul>
<li>Temperature = 0</li>
<li>SW1 = 1</li>
<li>SW2 = 2</li>
<li>Encoder1 = 3</li>
<li>Encoder2 = 4</li>
<li>Load of M1/AZ = 5</li>
<li>Load of M2/EL = 6</li>
<li>Speed of M1/AZ (DPS) = 7</li>
<li>Speed of M2/EL (DPS) = 8</li>
</ul>
</li>
<li>VE, Request Version</li>
<li>GS, Get status register, number<ul>
<li>idle = 1</li>
<li>moving = 2</li>
<li>pointing = 4</li>
<li>error = 8</li>
</ul>
</li>
<li>GE, Get error register, number<ul>
<li>no_error = 1</li>
<li>sensor_error = 2</li>
<li>homing_error = 4</li>
<li>motor_error = 8</li>
<li>over_temperature = 12</li>
<li>wdt_error = 16</li>
</ul>
</li>
<li>VL, Velocity Left ,number [mdeg/s]</li>
<li>VR, Velocity Right, number [mdeg/s]</li>
<li>VU, Velocity Up, number [mdeg/s]</li>
<li>VD, Velocity Down, number [mdeg/s]</li>
<li>CR, Read config, register [0-x]<ul>
<li>Gain P for M1/AZ = 1</li>
<li>Gain I for M1/AZ = 2</li>
<li>Gain D for M1/AZ = 3</li>
<li>Gain P for M2/EL = 4</li>
<li>Gain I for M2/EL = 5</li>
<li>Gain D for M2/EL = 6</li>
<li>Azimuth park position = 7</li>
<li>Elevation park position = 8</li>
<li>Control mode (position = 0, speed = 1) = 9</li>
</ul>
</li>
<li>CW, Write config, register [0-x]<ul>
<li>Gain P for M1/AZ = 1</li>
<li>Gain I for M1/AZ = 2</li>
<li>Gain D for M1/AZ = 3</li>
<li>Gain P for M2/EL = 4</li>
<li>Gain I for M2/EL = 5</li>
<li>Gain D for M2/EL = 6</li>
<li>Azimuth park position = 7</li>
<li>Elevation park position = 8</li>
<li>This reg is set from Vx commands control mode (position = 0, speed = 1) = 9</li>
</ul>
</li>
<li>RB, custom command to reboot controller</li>
</ul>
<h2>Controller Configurations</h2>
<ul>
<li>Stepper Motor<ul>
<li>Endstops</li>
<li>Encoders, optional</li>
<li>UART or R485 (For both options the firmware is the same)</li>
</ul>
</li>
<li>DC Motor<ul>
<li>Endstops</li>
<li>Encoders</li>
<li>UART or RS485 (For both options the firmware is the same)</li>
</ul>
</li>
</ul>
<h2>Pins Configuration</h2>
<div class="fragment"><div class="line">M1IN1 10, Step or PWM1</div><div class="line">M1IN2 9, Direction or PWM2</div><div class="line">M1SF 7, Status flag</div><div class="line">M1FB A1, Load measurment</div><div class="line"></div><div class="line">M2IN1 11, Step or PWM1</div><div class="line">M2IN2 3, Direction or PWM2</div><div class="line">M2SF 6, Status flag</div><div class="line">M2FB A0, Load measurment</div><div class="line"></div><div class="line">MOTOR_EN 8, Enable/Disable motors</div><div class="line"></div><div class="line">SW1 5, Endstop for axis 1</div><div class="line">SW2 4, Endstop for axis 2</div><div class="line"></div><div class="line">RS485_DIR 2, RS485 Half Duplex direction pin</div><div class="line"></div><div class="line">SDA_PIN 3, Data I2C pin</div><div class="line">SCL_PIN 4, Clock I2C pin</div><div class="line"></div><div class="line">PIN12 12, Digital output pin</div><div class="line">PIN13 13, Digital output pin</div><div class="line">A2 A2, Analog input pin</div><div class="line">A3 A3, Analog input pin</div></div><!-- fragment --><h2>Testing with hamlib - rotctl or with Serial Monitor</h2>
<p>Connect the PC with contreller via UART to USB or RS485 to USB by using the right converter (as described in <a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller/blob/master/satnogs-rotator-controller-bom.ods">rotator controller BOM</a>). For both options must be soldered the suitable components as descrided in <a href="https://wiki.satnogs.org/SatNOGS_Rotator_Controller">rotator controller wiki page</a>.</p>
<p>Use commands of rotctl:</p>
<div class="fragment"><div class="line">rotctl -m 204 -s 19200 -r /dev/ttyUSB1 -vvvvv</div></div><!-- fragment --><p>Replace the /dev/ttyUSB1 with the device which is connected to PC.</p>
<p>Use commands of easycomm 3:</p>
<p>Send directly commands of easycomm 3 as described in Easycomm implemantation section.</p>
<h2>Contribute</h2>
<p>The main repository lives on <a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware">Gitlab</a> and all Merge Request should happen there.</p>
<h2>License</h2>
<p><a href="https://librespacefoundation.org/"></a></p>
<p>Licensed under the [GPLv3](LICENSE) </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>