<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.satnogs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chrisethompson</id>
	<title>SatNOGS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.satnogs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chrisethompson"/>
	<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/Special:Contributions/Chrisethompson"/>
	<updated>2026-04-20T17:34:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=SatNOGS_Rotator_Controller&amp;diff=3777</id>
		<title>SatNOGS Rotator Controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=SatNOGS_Rotator_Controller&amp;diff=3777"/>
		<updated>2021-09-02T00:55:36Z</updated>

		<summary type="html">&lt;p&gt;Chrisethompson: /* DC motor driver */ Warning to not accidently solder in the 100uF capacitors as these can fail with the DC motors.  On mine they shorted the power supply.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Development&lt;br /&gt;
|Name= SatNOGS Rotator Controller&lt;br /&gt;
|image= Rotator controller v2.jpg&lt;br /&gt;
|type= Rotator Controller for SatNOGS rotator.&lt;br /&gt;
|cost= 60-80€&lt;br /&gt;
|status= Working&lt;br /&gt;
|latest-release-name= -&lt;br /&gt;
|latest-release= v2.3&lt;br /&gt;
|source-repo= [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller satnogs-rotator-controller - GitLab]&lt;br /&gt;
[https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller-encoder satnogs-rotator-controller-encoder - GitLab]&lt;br /&gt;
|documentation= https://wiki.satnogs.org/index.php?title=SatNOGS_Rotator_Controller SatNOGS wiki&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
SatNOGS Rotator Controller refers to the set of electronics designed to operate a SatNOGS Rotator. There have been multiple iterations of the rotator controller design, but the modularity of the approach enables operations between different versions of the controller and the rotator.&lt;br /&gt;
Since the start of 2016, the rotator controller design is able to facilitate a DC-motors or stepper-motors rotator design. We intend to keep this modularity for the electronics and firmware design to facilitate the variety of build by our community.&lt;br /&gt;
&lt;br /&gt;
==Rotator Controller v2==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Pcb_schema_v2_revC.png&lt;br /&gt;
Pcb_board_v2_revC.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The PCB are tested in this [https://network.satnogs.org/stations/9/ ground station]. &lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
*It is designed to fit the entire electronics needed to control rotator in Euroboard 80x50 mm.&lt;br /&gt;
*Main micro-controller is [https://store.arduino.cc/arduino-pro-mini Arduino pro-mini], [https://github.com/sparkfun/Arduino_Pro_Mini_328 SparkFun's Arduino Pro Mini 328] dev-board with ATmega328p.&lt;br /&gt;
*The modular design includes plug-in either [https://www.pololu.com/product/2133 DRV8825]/[https://www.pololu.com/product/1182 A4988] or [https://www.pololu.com/product/1213/resources DC motor drivers] (MC33926).&lt;br /&gt;
*The power supply in embed in the same board in contrast with previous version.&lt;br /&gt;
*Filtered power supply of micro controller.&lt;br /&gt;
*An I2C multiplexer is used to connect I2C encoders AS5601 (same ID) to get position feedback for each axis.&lt;br /&gt;
*A temperature sensor TC-74 monitoring the temperature inside the controller box in order to protect them from over-heating.&lt;br /&gt;
*There are some spare dev-pins in order to connect other peripherals like IMU or an LCD display.&lt;br /&gt;
*Pins with integrated RC-Low Pass filter for end-stops connection.&lt;br /&gt;
*Default communication interface is RS-485 but it can also be used as a UART.&lt;br /&gt;
*Using different paths for digital and power (motors) GND.&lt;br /&gt;
*Electrolytic capacitor and TVS-diode in PSU input&lt;br /&gt;
*Flashed either by using UART or ISP header&lt;br /&gt;
&lt;br /&gt;
===Build sequence===&lt;br /&gt;
&lt;br /&gt;
*Make sure you have a [[SatNOGS Rotator v3|mechanical assembly]] of the rotator constructed and ready&lt;br /&gt;
*Buy the PCB.  [https://oshpark.com OshPark],[https://www.seeedstudio.com/fusion_pcb.html Seeed Fusion][https://www.pcbway.com PCBWay.com], [http://dirtypcbs.com DirtyPCBs.com], [https://www.elecrow.com/ Elecrow], [https://www.makerfabs.com Makerfabs] have been used in the past with good results.&lt;br /&gt;
**You can order the v2.2 of the board directly using [https://oshpark.com/shared_projects/w0s8d4OJ this OSHPark link]&lt;br /&gt;
**You can order the v1.0 of the rotary encoder board using [https://oshpark.com/shared_projects/I3b8SCci this OSHPark link]&lt;br /&gt;
**You can order PCB as well as [https://www.seeedstudio.com/prototype-pcb-assembly.html PCB Assembly service] from Seeed Studio&lt;br /&gt;
*Get all the necessary components according to BOM from latest tag (or the version that you want to build), [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller/tags Gitlab Tags]&lt;br /&gt;
*Assemble the PCB, by soldering the components&lt;br /&gt;
*Burn the firmware&lt;br /&gt;
*Using the wiring diagram, connect the controller to the Rotator&lt;br /&gt;
*You are ready! Proceed with testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Assembly Guide====&lt;br /&gt;
&lt;br /&gt;
[[File:C1000-1 enclosure pcb mount.png|thumb|center|800x420px|alt=|FDM-3Dprinted, Material: ABS, Layer height: 0.4 mm, Perimeters: 2, Top/bottom solid layers: 3, Fill density: 20%, Fill pattern: Honeycomb, Fan speed: [35, 100], No support material]]&lt;br /&gt;
[[File:H1000_aluminium_enclosure.png|thumb|center|800x420px|alt=|Rotator Controller - Drill holes]]&lt;br /&gt;
[[File:Rotator_controller_sheet1.png|thumb|center|800x420px|alt=|Rotator Controller sheet 1/2]]&lt;br /&gt;
[[File:Rotator_controller_sheet2.png|thumb|center|800x420px|alt=|Rotator Controller sheet 2/2]]&lt;br /&gt;
&lt;br /&gt;
====Microcontroller====&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;250px&amp;quot;&amp;gt;&lt;br /&gt;
Uc.png|Microcontroller&lt;br /&gt;
Uc_orientation.png|Microcontroller Orientation&lt;br /&gt;
I2c_pullup.png|I2C pull-up resistors&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;!-- changed at feb.25th 2018&lt;br /&gt;
{|&lt;br /&gt;
[[File:Uc.png|thumb|320x240px|Microcontroller]]&lt;br /&gt;
|&lt;br /&gt;
[[File:Uc_orientation.png|thumb|320x240px|Microcontroller Orientation]]&lt;br /&gt;
|&lt;br /&gt;
[[File:I2c_pullup.png|thumb|320x240px|I2C pull-up resistors|left]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The main micro-controller of the board is arduino pro-mini 5V@16MHz, ATmega328P.&lt;br /&gt;
The +5V of the controller are produced from arduino pro-mini.&lt;br /&gt;
Some clones do not use correct parts in LDO, like the original one, with&lt;br /&gt;
result, when it powers up with +12V, burned.&lt;br /&gt;
&lt;br /&gt;
Some examples, &lt;br /&gt;
&lt;br /&gt;
*[https://community.libre.space/t/v2-controller-board-magic-smoke/1878 SatNOGS Community]&lt;br /&gt;
*[http://westsideelectronics.com/blew-up-a-cheap-arduino-pro-mini-clone/ West Side Electronics]&lt;br /&gt;
&lt;br /&gt;
One Solution is not use clones, use [https://www.sparkfun.com/products/11113# Sparkfun's arduiuno pro-mini 5V@16MHz, ATmega328P]. &lt;br /&gt;
The second solution is to add a LDO, like [https://gr.mouser.com/datasheet/2/268/mic5205-778789.pdf MIC5205] (maybe in a new revision of v2).&lt;br /&gt;
&lt;br /&gt;
The power consumption in +5V is:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!-&lt;br /&gt;
!QTY.&lt;br /&gt;
!VCC(V)&lt;br /&gt;
!IDD(mA)&lt;br /&gt;
!Total(mA)&lt;br /&gt;
|-&lt;br /&gt;
|AS5601&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|6.5&lt;br /&gt;
|13&lt;br /&gt;
|-&lt;br /&gt;
|PCA9540B&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|0.1&lt;br /&gt;
|0.1&lt;br /&gt;
|-&lt;br /&gt;
|SN65HVD485E&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|TC74&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|0.35&lt;br /&gt;
|0.35&lt;br /&gt;
|-&lt;br /&gt;
|arduino pro mini&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|20&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
|MC33926&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|0.2&lt;br /&gt;
|0.4&lt;br /&gt;
|-&lt;br /&gt;
|DRV8825&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|0.1&lt;br /&gt;
|0.2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The LDO MIC5205 guaranteed 150mA output, for Stepper motors ~35-40mA, for DC motors ~35-40mA.&lt;br /&gt;
&lt;br /&gt;
====Motor Drivers====&lt;br /&gt;
=====Stepper motor driver=====&lt;br /&gt;
[[File:Stepper_2.png|thumb|320x240px|Stepper motor driver]]&lt;br /&gt;
[[File:Stepper_1.png|thumb|320x240px|Jumpers]]&lt;br /&gt;
[[File:Stepper_orientation.jpg|thumb|320x240px|Orientation]]&lt;br /&gt;
&lt;br /&gt;
For the stepper motor driver 2 options have been tested, [https://www.pololu.com/product/2133 DRV8825] and [https://www.pololu.com/product/1182 A4988].&lt;br /&gt;
For both options it is necessary to solder:&lt;br /&gt;
&lt;br /&gt;
*2 electrolytic capacitors C3, C4 100uF&lt;br /&gt;
*4 single 0.1&amp;quot; male connectors for U3, U4&lt;br /&gt;
*2 fixed terminal blocks P7, P8, Amphenol-VI0421550000G&lt;br /&gt;
*6 jumpers to adjust the micro-step, '''default option is Full Step'''&lt;br /&gt;
&lt;br /&gt;
Note: [https://hackaday.com/2016/08/29/how-accurate-is-microstepping-really/ Guide for microstepping selection]&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot; |'''JP3/JP6'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot; |'''JP2/JP5'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot; |'''JP1/JP4'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot; |'''Microstep Resolution'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f000;&amp;quot; align=&amp;quot;center&amp;quot; |'''Low'''|| style=&amp;quot;background:#f0f000;&amp;quot; align=&amp;quot;center&amp;quot; |'''Low'''|| style=&amp;quot;background:#f0f000;&amp;quot; align=&amp;quot;center&amp;quot; |'''Low'''|| style=&amp;quot;background:#f0f000;&amp;quot; align=&amp;quot;center&amp;quot; |'''Full step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''Half step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''1/4 step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''1/8 step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''1/16 step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''1/32 step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''Low'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''1/32 step'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''High'''|| align=&amp;quot;center&amp;quot; |'''1/32 step'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Do'''NOT''' solder 2 resistors 100k, R4, R7 in default configuration (full step)&lt;br /&gt;
*If you have A4988 for stepper motor drive and you want to use micro stepping, when the MS1 is HIGH&lt;br /&gt;
&lt;br /&gt;
it is necessary to solder R4, R7 according to [https://www.pololu.com/product/1201 A4983 Stepper Motor Driver Carrier, Step (and microstep) size].&lt;br /&gt;
&lt;br /&gt;
In case of DRV8825, all pins MS1, MS2, MS3 have internal pull-up resistor.&lt;br /&gt;
&lt;br /&gt;
Also it is necessary to update the definitions in [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware/blob/master/stepper_motor_controller/stepper_motor_controller.ino firmware], according to microstepping selection.&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
*Step Angle: 1.8 deg&lt;br /&gt;
*Microstep: 1/8 step&lt;br /&gt;
*Steps per Revolution: (360/1.8)*8 = 1600&lt;br /&gt;
&lt;br /&gt;
That means:&lt;br /&gt;
&lt;br /&gt;
 #define MICROSTEP          8     ///&amp;lt; Set Microstep&lt;br /&gt;
 #define MAX_SPEED          6400  ///&amp;lt; In steps/s, consider the microstep&lt;br /&gt;
 #define MAX_ACCELERATION   1600  ///&amp;lt; In steps/s^2, consider the microstep&lt;br /&gt;
 #define SPR                1600L  ///&amp;lt; Step Per Revolution, consider the microstep&lt;br /&gt;
&lt;br /&gt;
It is necessary to change the maximum speed and acceleration according to new SPR.&lt;br /&gt;
&lt;br /&gt;
An example:&lt;br /&gt;
&lt;br /&gt;
The speed = 300steps/s and acceleration = 100steps/s^2 with&lt;br /&gt;
&lt;br /&gt;
*1.8 deg/step stepper motor&lt;br /&gt;
*full step&lt;br /&gt;
*gear ratio 54&lt;br /&gt;
&lt;br /&gt;
means speed = 10deg/s and acceleration = 3.3deg/s^2 according to this [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware/blob/master/stepper_motor_controller/stepper_motor_controller.ino#L224 function]. &lt;br /&gt;
&lt;br /&gt;
Be careful:&lt;br /&gt;
&lt;br /&gt;
*[http://reprap.org/wiki/Pololu_stepper_driver_board adjust the current (current limiting) for stepper motors]&lt;br /&gt;
*add a heat-sink.&lt;br /&gt;
*plug the stepper motor drivers&lt;br /&gt;
&lt;br /&gt;
The stepper motor that is used, is [https://www.omc-stepperonline.com/hybrid-stepper-motor/nema-17-bipolar-59ncm-84ozin-2a-42x48mm-4wires-w-1m-cable-and-connector-17hs19-2004s1.html Nema 17 Bipolar 59Ncm], &lt;br /&gt;
&lt;br /&gt;
*Size: &amp;amp;#9649;42 x 48 mm&lt;br /&gt;
*Weight: 390 g&lt;br /&gt;
*Shaft diameter: 5 mm&lt;br /&gt;
*Step Angle: 1.8 deg&lt;br /&gt;
*Nominal speed @ 12V: 720deg/s&lt;br /&gt;
*Rated Current/phase: 2.0A&lt;br /&gt;
*Stall torque @ 12V: 0.59Nm&lt;br /&gt;
&lt;br /&gt;
=====DC motor driver=====&lt;br /&gt;
[[File:Dc_motor_driver.png|thumb|320x240px|DC motor driver]]&lt;br /&gt;
&lt;br /&gt;
It is necessary to solder: &lt;br /&gt;
&lt;br /&gt;
*Solder U6 with 0.1&amp;quot; female connectors as shown in picture&lt;br /&gt;
*Solder 2 pads in yellow circle by using ~1mm diameter wire&lt;br /&gt;
*Solder 2 2-pin 3.5mm terminal blocks for 2 DC motors&lt;br /&gt;
&lt;br /&gt;
Make sure you have not soldered the 2 electrolytic capacitors C3, C4 100uF.  Those are only needed for the stepper motors.  They can be destroyed by the DC motors and cause a short circuit of the power supply.&lt;br /&gt;
&lt;br /&gt;
The DC motor controller is [https://www.pololu.com/product/1213 Dual MC33926 Motor Driver Carrier]&lt;br /&gt;
&lt;br /&gt;
*Motor driver: MC33926&lt;br /&gt;
*Motor channels: 2&lt;br /&gt;
*Minimum operating voltage: 5V&lt;br /&gt;
*Maximum operating voltage: 28V&lt;br /&gt;
*Operating voltage: 12V&lt;br /&gt;
*Continuous output current per channel: 2.5A&lt;br /&gt;
*Current sense: 	0.525 V/A&lt;br /&gt;
*Maximum PWM frequency: 	20 kHz&lt;br /&gt;
*Operating PWM frequency: 3921.5Hz (~4kHz)&lt;br /&gt;
*Minimum logic voltage: 	2.5V&lt;br /&gt;
*Operating logic voltage: 5V&lt;br /&gt;
*Maximum logic voltage: 	5.5V&lt;br /&gt;
&lt;br /&gt;
The DC motor that we use is [https://www.pololu.com/product/1104 50:1 Metal Gearmotor 37Dx54L mm], &lt;br /&gt;
&lt;br /&gt;
*Size: 37D x 54L mm&lt;br /&gt;
*Weight: 195 g&lt;br /&gt;
*Shaft diameter: 6 mm&lt;br /&gt;
*Free-run speed @ 12V: 200 rpm&lt;br /&gt;
*Free-run current @ 12V:	300 mA&lt;br /&gt;
*Stall current @ 12V: 5000 mA&lt;br /&gt;
*Stall torque @ 12V: 1.2Nm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Communication====&lt;br /&gt;
Note: For both options the firmware is the same.&lt;br /&gt;
&lt;br /&gt;
{{Warning |When the power supply (or PoE) of Raspberry Pi isn't good isolated (R ~7MΩ) with the main PSU (48V@1A) and the RS-485/UART loses packages, the ground of Raspberry Pi must be connected to the main ground of rotator (ground star).}}&lt;br /&gt;
&lt;br /&gt;
=====''UART''=====&lt;br /&gt;
[[File:Jumper.png|thumb|320x240px|UART Jumpers]]&lt;br /&gt;
[[File:Rs 485.png|thumb|320x240px|Pin Header]]&lt;br /&gt;
&lt;br /&gt;
To use UART:&lt;br /&gt;
&lt;br /&gt;
*solder JP7 and JP8&lt;br /&gt;
*solder pin header 0.1&amp;quot; female connector&lt;br /&gt;
*not solder C1, U2, R18, R19 R9, R8, R1, D3&lt;br /&gt;
*A is TX and B is RX&lt;br /&gt;
&lt;br /&gt;
=====''RS-485''=====&lt;br /&gt;
[[File:RS485_solder.png|thumb|320x240px|RS485]]&lt;br /&gt;
[[File:Missing_rs485_r19.png|thumb|320x240px|RS485]]&lt;br /&gt;
&lt;br /&gt;
To use RS485:&lt;br /&gt;
&lt;br /&gt;
*solder pin header 0.1&amp;quot; female connector&lt;br /&gt;
*solder C1, U2, R18, R19 R9, R8, R1, D3&lt;br /&gt;
*not solder JP7 and JP8&lt;br /&gt;
&lt;br /&gt;
If you use PCB without R19 footprint, you can add it in arduino pro-mini UART header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Power Supply====&lt;br /&gt;
[[File:Psu.png|thumb|320x240px|Power Supply]]&lt;br /&gt;
&lt;br /&gt;
Recommended power supply for rotator controller is: 48V @ 1A DC.&lt;br /&gt;
A good choice is the [https://gr.mouser.com/ProductDetail/709-LRS50-48 MEAN WELL  LRS-50-48]&lt;br /&gt;
&lt;br /&gt;
The switching power supply could get as input voltage, 19-60V DC.&amp;lt;br&amp;gt;&lt;br /&gt;
In different input voltages, must be change the components like D4 and F1.&amp;lt;br&amp;gt;&lt;br /&gt;
Default PCB components works at 48VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Endstops====&lt;br /&gt;
[[File:Endstop_part.png|thumb|320x240px|Endstop Specification]]&lt;br /&gt;
[[File:Endstop.jpg|thumb|320x240px|Endstop]]&lt;br /&gt;
&lt;br /&gt;
In reference design, mechanical endstops (the [https://www.aliexpress.com/item/10PCS-MICROSWITCH-LIMIT-SWITCH-3pin-N-O-N-C-MICRO-SWITCH-free-shipping/32692144896.html?spm=2114.search0104.8.13.2f3c2457pmCyFH&amp;amp;transAbTest=ae803_5&amp;amp;priceBeautifyAB=0 P/N SS0505] of endstop is specified in [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator satnogs rotator BOM]) , are used.&lt;br /&gt;
&lt;br /&gt;
The controller has the capability to accommodate optical or magnetic endstop which connected to&lt;br /&gt;
P2 header with silkscreen, SW1, SW2, +5V and GND.&lt;br /&gt;
&lt;br /&gt;
Mechanical endstops are connected to&lt;br /&gt;
&lt;br /&gt;
*SW1 and GND for azimuth axis&lt;br /&gt;
*SW2 and GND for elevation axis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Encoders====&lt;br /&gt;
Source files: [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller-encoder satnogs-rotator-controller-encoder - GitLab] Firmware: [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware/blob/master/libraries/as5601.h satnogs-rotator-firmware - GitLab]&lt;br /&gt;
&lt;br /&gt;
For stepper motor setup is optional (AS5601 encoder).&lt;br /&gt;
&lt;br /&gt;
For DC motor setup is necessary.[[File:Encoder_sheet1.png|thumb|center|800x420px|alt=|Rotary Encoder sheet 1/2]][[File:Encoder_sheet2.png|thumb|center|800x420px|alt=|Rotary Encoder sheet 2/2]]Fabrication files are placed in latest tag of [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller-encoder satnogs-rotator-controller-encoder - GitLab].&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Encoder-case-3DP.png|center|thumb|583x583px|'''Parts''': C1010-1_encoder_case, C1011-1_encoder_case FDM-3Dprinted, C1012-1_magnet_mount, C1013-1_encoder_gear, '''Material''': ABS, '''Layer height''': 0.4 mm, '''Perimeters''': 2, '''Top/bottom solid layers''': 3, '''Fill density''': 20%, '''Fill pattern''': Honeycomb, '''Fan speed''': [35, 100], '''Generate support materia'''l (options of it depends of 3D printer).]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Firmware and Pin Assignments===&lt;br /&gt;
&lt;br /&gt;
=====Firmware=====&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware For stepper motors] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware For DC motors, thanks to] [https://github.com/ph4as ph4as]&lt;br /&gt;
&lt;br /&gt;
=====Pins Configuration=====&lt;br /&gt;
This configuration is from the latest release in [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller/tags Rotator Controller repository] &lt;br /&gt;
&lt;br /&gt;
*M1IN1 10, Step or PWM1&lt;br /&gt;
*M1IN2 9, Direction or PWM2&lt;br /&gt;
*M1SF  7, Status flag&lt;br /&gt;
*M1FB  A1, Load measurment&lt;br /&gt;
&lt;br /&gt;
*M2IN1 11, Step or PWM1&lt;br /&gt;
*M2IN2 3, Direction or PWM2&lt;br /&gt;
*M2SF  6, Status flag&lt;br /&gt;
*M2FB  A0, Load measurment&lt;br /&gt;
&lt;br /&gt;
*MOTOR_EN 8, Enable/Disable motors&lt;br /&gt;
&lt;br /&gt;
*SW1 5, Endstop for axis 1&lt;br /&gt;
*SW2 4, Endstop for axis 2&lt;br /&gt;
&lt;br /&gt;
*RS485_DIR 2, RS485 Half Duplex direction pin&lt;br /&gt;
&lt;br /&gt;
*SDA_PIN 3, Data I2C pin&lt;br /&gt;
*SCL_PIN 4, Clock I2C pin&lt;br /&gt;
&lt;br /&gt;
*PIN12 12, Digital output pin&lt;br /&gt;
*PIN13 13, Digital output pin&lt;br /&gt;
*A2    A2, Analog input pin&lt;br /&gt;
*A3    A3, Analog input pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pre-Flight Check===&lt;br /&gt;
&lt;br /&gt;
[[File:Pcb_testing_points.png|thumb|center|800x420px|alt=|Testing Points]]&lt;br /&gt;
&lt;br /&gt;
*Power your PCB with 48VDC, without plug-in arduino pro-mini and motor drivers, measure with multimeter the voltage in point 1. Expected voltage +12V (reference to GND).&lt;br /&gt;
*Plug arduino pro-mini and measure with multimeter the voltage in point 2. Expected voltage +5V (reference to GND).&lt;br /&gt;
*Plug motor drivers (for steppermotors ensure the current is adjusted properly)&lt;br /&gt;
*Connect all peripheral devices like motors, sensors, endstops&lt;br /&gt;
&lt;br /&gt;
If the two first steps fail, something is wrong (maybe there is a short circuit) in PCB. Check the connections with a multimeter.&lt;br /&gt;
&lt;br /&gt;
Then the board is ready to run the firmware, [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware/blob/master/README.md satnogs-rotator-firmware].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wiring===&lt;br /&gt;
&lt;br /&gt;
The silkscreen of PCB shows where the end-stops, rotary encoders, motors and communication interface are connected. For example SW1 is referred to azimuth end-stop, I2C-1 to elevation rotary encoder and M1 to azimuth motor. An example of wiring with [https://wiki.satnogs.org/SatNOGS_Rotator_v3#Cover_Box_-_Cabling SatNOGS Rotator v3].&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting hints===&lt;br /&gt;
&lt;br /&gt;
As soon as the board is powered up or reset, it will auto-home, on first build you can trigger a reset multiple time or move the homing ring to get it &amp;quot;home&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware/blob/master/README.md Connecting directly to the Arduino pro-mini] you will need to use 19200 bauds and &amp;quot;newline&amp;quot; line ending.&lt;br /&gt;
&lt;br /&gt;
Here is some commands (took from [https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware#easycomm-implemantation]) you can issue in the terminal emulator of your choice to test things:&lt;br /&gt;
&lt;br /&gt;
*'''VE''', it will returns something like &amp;quot;SatNOGS-v2.0&amp;quot;&lt;br /&gt;
*'''RESET''', move to home position&lt;br /&gt;
*'''AZxx''', '''ELxx''', move to specified position (number)&lt;br /&gt;
&lt;br /&gt;
Nothing moves ? Look at the status and error register :&lt;br /&gt;
&lt;br /&gt;
*'''GS''', status register : 1 idle, 2 moving, 4 pointing, 8 error&lt;br /&gt;
*'''GE''', error register : 1 no error, 2 sensor, 4 homing, 8 motor, 12 over temperature, 16 watch dog timer interrupt&lt;br /&gt;
&lt;br /&gt;
By example, at first start, you might be in '''GS8''' and '''GE4''' until you get a good homing position for the rotator to start working.&lt;br /&gt;
&lt;br /&gt;
If you using an unreleased version of the board (the board that has fuse holder), in [https://community.libre.space/t/stepper-motor-issue/2438/2 community post] you can find pin configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Rotator Controller v1==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Rotator]]&lt;/div&gt;</summary>
		<author><name>Chrisethompson</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Omnidirectional_Station_How_To&amp;diff=3775</id>
		<title>Omnidirectional Station How To</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Omnidirectional_Station_How_To&amp;diff=3775"/>
		<updated>2021-08-01T20:00:56Z</updated>

		<summary type="html">&lt;p&gt;Chrisethompson: /* Setting the gain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|WARNING: Information on this page may be outdated! Cross-check with individual 'Build' pages as well.}}[[File:Omnidirectional VHF Turnstile Antenna.jpg|alt=VHF Turnstile Antenna|thumb|VHF Turnstile antenna, [https://network.satnogs.org/stations/23/ SatNOGS Station 23]]]&lt;br /&gt;
This How-To is written to get you quickly receiving satellite data with an Omnidirectional antenna (an antenna that does not move).&lt;br /&gt;
&lt;br /&gt;
==Prerequisites/Background==&lt;br /&gt;
I'm assuming that you are a bit familiar with amateur radio, or linux in general, or you already have a Raspberry Pi. &lt;br /&gt;
&lt;br /&gt;
===Expectation Management===&lt;br /&gt;
First off, I'd like to set some expectations around a SatNOGs station with an omnidirectional antenna. Yes, you will be able to hear satellites, Morse code beacons, maybe even some voice contacts on a FM transponder. But for CubeSats with 1 watt transmitters at 9600 baud, it's going to be really difficult to actually decode any data with an omni antenna. You'll definitely see squiggly lines on the waterfall plot, but demodulating the signal and extracting satellite telemetry is going to be pretty difficult.&lt;br /&gt;
&lt;br /&gt;
The only way to get more signal is a better antenna. And a better antenna with more gain is going to be more directional, which means you will need a way to point that antenna at the satellite, and this How-To just got a lot more complicated. So we're not going there.&lt;br /&gt;
&lt;br /&gt;
A better preamp helps a bit, see the LNA section below.&lt;br /&gt;
&lt;br /&gt;
===Hardware Required===&lt;br /&gt;
This is a list of the hardware for indoor/testing purposes:&lt;br /&gt;
&lt;br /&gt;
*Raspberry Pi&lt;br /&gt;
**Power supply + cable (see note below)&lt;br /&gt;
**Up to 16 GB Micro SD card&lt;br /&gt;
**Ethernet cable&lt;br /&gt;
*RTL SDR Blog v3 dongle&lt;br /&gt;
*Various short lengths of coax&lt;br /&gt;
*Preamp/LNA - Or not if your coax is short, see LNA section below&lt;br /&gt;
*Omnidirectional antenna - just a dual mag-mount on a cookie sheet will work OK for stronger satellites&lt;br /&gt;
&lt;br /&gt;
==Setting up the Raspberry Pi==&lt;br /&gt;
I chose the [https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ Raspberry Pi 3 Model B] for my station. SatNOGS is known to work on the RPi 3B, 3B+ and 4 models. &lt;br /&gt;
&lt;br /&gt;
===Downloading/Writing the SD image===&lt;br /&gt;
The SatNOGS team has done a great job creating a Raspbian image with all the required software. Simply navigate over to the [https://gitlab.com/librespacefoundation/satnogs/satnogs-pi-gen/tags latest tag on Gitlab], and click on the &amp;quot;Zipped image&amp;quot; link under the latest tag. It's about 650 MBytes.&lt;br /&gt;
&lt;br /&gt;
For linux:&lt;br /&gt;
&lt;br /&gt;
#Unzip the downloaded file: '''unzip image_&amp;lt;latest_image_date&amp;gt;-Raspbian-SatNOGS-lite.zip'''&lt;br /&gt;
#Figure out which device is the SD card. SD cards are usually start with mmcblk. '''sudo lsblk'''&lt;br /&gt;
#Write the image. This will take a while. Make sure you don't overwrite your host OS: '''sudo dd if=&amp;lt;latest_image_date&amp;gt;-Raspbian-SatNOGS-lite.img of=/dev/mmcblk0'''&lt;br /&gt;
&lt;br /&gt;
===Power notes===&lt;br /&gt;
Thinking I could save a few bucks, I used a no-name generic 2.4 amp &amp;quot;tablet&amp;quot; USB power supply I got as a freebie, and a micro-USB cable I use for charging my phone. What a mistake! The Micro-USB cable wire gauge was too small, so there was too much voltage drop on the cable, so the Raspberry Pi reported power problems every time it was doing anything.&lt;br /&gt;
&lt;br /&gt;
Power problems are indicated by either a lightning bolt in the upper right of the monitor, or the red power LED flashes on the board itself. If The Raspberry Pi processor itself is pretty forgiving of power droops because it runs at 3.3 volts. But the 5v USB ports are directly tied to input power, so undervoltage conditions will cause problems for USB devices, such as the RTL SDR dongle.&lt;br /&gt;
&lt;br /&gt;
==Software Configuration==&lt;br /&gt;
&lt;br /&gt;
===Creating a SatNOGS Network account===&lt;br /&gt;
There are several different websites to be aware of and sign in to. As of 12/2018, most of our websites use a unified login provided by Auth0, so when you create an account on one of these sites it will work across the others as well:&lt;br /&gt;
&lt;br /&gt;
*Required: [https://network.satnogs.org/ Network]: for registering your station and adding data to the network.&lt;br /&gt;
*Recommended: [https://community.libre.space Forums]: for asking questions.&lt;br /&gt;
*Optional: [https://db.satnogs.org/ Database]: Only if you want to add satellites/modes. Not necessary for receiving satellite data.&lt;br /&gt;
&lt;br /&gt;
===Registering the station===&lt;br /&gt;
Log in to your Network account, and click the &amp;quot;+ Add Ground Station&amp;quot; button, or click [https://network.satnogs.org/stations/edit/ here] Fill out the short form, and your station will be added to the database. For &amp;quot;Antenna&amp;quot;, pick something that encompasses the frequency range of your antenna. For wideband reception, use VHF Discone 26-1200 MHz.&lt;br /&gt;
&lt;br /&gt;
The important info you'll need later on is the Station ID number, lat/lon/altitiude. I would also use a Minimum Horizon of 30 degrees or so, this will keep your station from allowing low-elevation passes to be scheduled. Make sure to keep the &amp;quot;Testing&amp;quot; flag checked, as this lets people know that your station isn't quite ready for real use.&lt;br /&gt;
&lt;br /&gt;
To help your fellow operators please consider placing the following information into the &amp;quot;Description&amp;quot; field for your station: Antenna gain and location, preamp info (if any), SDR device, some kind of contact info perhaps [[Get_In_Touch#Chat_with_us_on_our_Matrix_room |irc/matrix]] or [https://community.libre.space/ community forum] username or email address.&lt;br /&gt;
&lt;br /&gt;
===Booting and Configuring Raspbian===&lt;br /&gt;
After you have the image burned onto a Micro-SD card, boot it! I would recommend hooking up a keyboard and HDMI monitor, you can watch the boot process. If it doesn't boot at all, double check that you wrote the SatNOGS Raspbian image correctly.&lt;br /&gt;
&lt;br /&gt;
After a successful boot, log in with username '''pi''' and password '''raspberry'''&lt;br /&gt;
&lt;br /&gt;
#Change your password! '''passwd'''&lt;br /&gt;
#Run '''sudo raspi-config''' to set up the base OS. ''Tab'' switches between the options and ''select''.&lt;br /&gt;
##4 Localisation Options: I1 Change Locale: en_US.UTF-8 UTF-8&lt;br /&gt;
##4 Localisation Options: I2 Change Timezone: None of the above: UTC&lt;br /&gt;
##4 Localisation Options: I3 Change Keyboard Layout:&lt;br /&gt;
##7 Advanced Options: A1 Expand Filesystem &amp;lt;br /&amp;gt;This will expand the ~2GB Micro-SD card partition to fill the entire SD card.&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi needs to reboot to expand the filesystem, so do this now. It might take a while. '''sudo reboot''&lt;br /&gt;
&lt;br /&gt;
====Disabling WiFi and Bluetooth====&lt;br /&gt;
To disable WiFi and Bluetooth, edit the /boot/config.txt file, and add the following lines at the bottom:&lt;br /&gt;
&lt;br /&gt;
 # Disable WiFi and Bluetooth&lt;br /&gt;
 dtoverlay=pi3-disable-wifi&lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Then reboot again. To make sure that it worked, run '''ifconfig''' and make sure that ''wlan0'' isn't listed. I'm not sure how to tell if bluetooth is turned off.&lt;br /&gt;
&lt;br /&gt;
Note: Newer versions of Raspbian may require the following lines instead of the above.&lt;br /&gt;
&lt;br /&gt;
 # Disable WiFi and Bluetooth&lt;br /&gt;
 dtoverlay=disable-wifi&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
====Additional software====&lt;br /&gt;
I like to install this additional software with '''sudo apt install bmon''' ...&lt;br /&gt;
&lt;br /&gt;
*bmon - a graphical network usage analyzer.&lt;br /&gt;
*vnstat - keeps track of your bandwidth usage&lt;br /&gt;
*vim - the world's best text editor ;)&lt;br /&gt;
*irssi - a terminal IRC client, for chatting on the #satnogs IRC channel&lt;br /&gt;
&lt;br /&gt;
If you can't tell by now, I'm always a big fan of rebooting. It certainly doesn't take that long... '''sudo reboot'''&lt;br /&gt;
&lt;br /&gt;
===Configuring the satnogs-client===&lt;br /&gt;
Once you have the base Raspbian Strech OS installed, updated, and looking good, you can configure SatNOGS. Plug in your RTL SDR if you haven't already.&lt;br /&gt;
&lt;br /&gt;
First thing to do is update the satnogs-setup program. Run '''sudo satnogs-setup'''. This will probably take a while, then '''Update''', which will also take a while. Per usual, after the update I like to reboot the raspberry pi just to make sure everything was updated and is actually running the new code.&lt;br /&gt;
&lt;br /&gt;
====Basic Configuration====&lt;br /&gt;
Then the actual configuration of the station:&lt;br /&gt;
&lt;br /&gt;
#Run '''sudo satnogs-setup''' again.&lt;br /&gt;
#Use the up/down and TAB keys to navigate, and Enter to select an option.&lt;br /&gt;
#Basic Configuration:&lt;br /&gt;
##SATNOGS_API_TOKEN: After logging in to network.satnogs.org, this is in the upper right under &amp;quot;API Key&amp;quot; [no longer exsists? Add direct link]&lt;br /&gt;
##SATNOGS_SOAPY_RX_DEVICE: driver=rtlsdr&lt;br /&gt;
##SATNOGS_RX_SAMP_RATE: 2.048e6&lt;br /&gt;
##SATNOGS_RX_GAIN: Refer &amp;quot;Setting the gain&amp;quot; section below.&lt;br /&gt;
##SATNOGS_STATION_ELEV: station elevation in meters&lt;br /&gt;
##SATNOGS_STATION_ID: The ID number of your station.&lt;br /&gt;
##SATNOGS_STATION_LAT and LON: Latitude and Longitude in decimal degrees&lt;br /&gt;
&lt;br /&gt;
Then back to the main menu and ''Apply'' to save the configuration. Ansible will run and update the system. If you want to quit, just keep pressing cancel to exit.&lt;br /&gt;
&lt;br /&gt;
====Setting the gain====&lt;br /&gt;
The next step is to set the gain on the RTL SDR. The aim here (in the majority of cases) is to set the gain of your station to maximise sensitivity (best noise figure), but without limiting the available dynamic range of your station due to your local noise floor. This can be achieved in a fairly simple manner, by watching the level of the receivers noise floor as you slowly increase the receiver gain. At some point the noise floor will start to rise - at this point increasing the gain any further will of no use - you will only increase the noise level, and eat into your receiver's available dynamic range (for a RTLSDR, theoretically only 48 dB).&lt;br /&gt;
&lt;br /&gt;
There may be situations where strong local interferers may require the use of a lower gain setting to avoid intermodulation products appearing in the passband, though these cases would be better solved with a suitable bandpass filter somewhere in the receive chain.&lt;br /&gt;
&lt;br /&gt;
First, it is good to know the available gain range of your SDR. This can be accomplished by running &amp;lt;code&amp;gt;SoapySDRUtil --probe&amp;lt;/code&amp;gt;, which provides a considerable amount of information about the connected SDR:&lt;br /&gt;
 pi@satnogs:~ $ SoapySDRUtil --probe&lt;br /&gt;
 ######################################################&lt;br /&gt;
 ## Soapy SDR -- the SDR abstraction library&lt;br /&gt;
 ######################################################&lt;br /&gt;
 &lt;br /&gt;
 Probe device&lt;br /&gt;
 &lt;br /&gt;
 Found Rafael Micro R820T tuner&lt;br /&gt;
 [INFO] [UHD] linux; GNU C++ version 8.2.0; Boost_106700; UHD_3.13.1.0-3&lt;br /&gt;
 Found Rafael Micro R820T tuner&lt;br /&gt;
 &lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
 -- Device identification&lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
   driver=RTLSDR&lt;br /&gt;
   hardware=RTLSDR&lt;br /&gt;
   origin=&amp;lt;nowiki&amp;gt;https://github.com/pothosware/SoapyRTLSDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   rtl=0&lt;br /&gt;
 &lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
 -- Peripheral summary&lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
   Channels: 1 Rx, 0 Tx&lt;br /&gt;
   Timestamps: NO&lt;br /&gt;
   Other Settings:&lt;br /&gt;
      * Direct Sampling - RTL-SDR Direct Sampling Mode&lt;br /&gt;
        [key=direct_samp, default=0, type=string, options=(0, 1, 2)]&lt;br /&gt;
      * Offset Tune - RTL-SDR Offset Tuning Mode&lt;br /&gt;
        [key=offset_tune, default=false, type=bool]&lt;br /&gt;
      * I/Q Swap - RTL-SDR I/Q Swap Mode&lt;br /&gt;
        [key=iq_swap, default=false, type=bool]&lt;br /&gt;
 &lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
 -- RX Channel 0&lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
   Full-duplex: YES&lt;br /&gt;
   Supports AGC: YES&lt;br /&gt;
   Stream formats: CS8, CS16, CF32&lt;br /&gt;
   Native format: CS8 [full-scale=128]&lt;br /&gt;
   Stream args:&lt;br /&gt;
      * Buffer Size - Number of bytes per buffer, multiples of 512 only.&lt;br /&gt;
        [key=bufflen, units=bytes, default=262144, type=int]&lt;br /&gt;
      * Ring buffers - Number of buffers in the ring.&lt;br /&gt;
        [key=buffers, units=buffers, default=15, type=int]&lt;br /&gt;
      * Async buffers - Number of async usb buffers (advanced).&lt;br /&gt;
        [key=asyncBuffs, units=buffers, default=0, type=int]&lt;br /&gt;
   Antennas: RX&lt;br /&gt;
   Full gain range: [0, 49.6] dB&lt;br /&gt;
     TUNER gain range: [0, 49.6] dB&lt;br /&gt;
   Full freq range: [23.999, 1764] MHz&lt;br /&gt;
     RF freq range: [24, 1764] MHz&lt;br /&gt;
     CORR freq range: [-0.001, 0.001] MHz&lt;br /&gt;
   Sample rates: 0.25, 1.024, 1.536, 1.792, 1.92, 2.048, 2.16, 2.56, 2.88, 3.2 MSps&lt;br /&gt;
The above output is for a RTLSDR, and we can see that there is information on the 'Full gain range', and 'TUNER' gain. The Full gain setting is an 'abstracted' gain range, which in this case just directly links to the 'TUNER' gain, as that is the only gain setting presented by the RTLSDR driver. Other SDRs (e.g. AirSpy) may present more gain controls. Anyway, we can see that the gain range is 0 through 49.6 dB. It's quite possible that there are only discrete gain steps within this range (and this is very true for the RTLSDR), but SoapySDR will hide that from us and automatically use the nearest valid setting.&lt;br /&gt;
&lt;br /&gt;
Next up, we want a way of seeing a live spectrum from the SDR. This might be difficult, especially if you're just gone and mounted a RTLSDR in a metal box up a pole! Well, SoapySDR comes to the rescue again with SoapySDR Server - this allows us to serve up the SDR on the network, and access it with a client.&lt;br /&gt;
&lt;br /&gt;
Note: SoapySDR Server is not currently installed by default. It can be installed by running the commands:&lt;br /&gt;
 $ sudo apt-get install soapyremote-server&lt;br /&gt;
By default, SoapySDR Server may be configured to startup on boot. We probably don't want this, so run the following commands to ensure it is stopped, and will not startup on boot:&lt;br /&gt;
 $ sudo systemctl stop soapyremote-server&lt;br /&gt;
 $ sudo systemctl disable soapyremote-server&lt;br /&gt;
&lt;br /&gt;
(These commands may result in errors indicating that the server wasn't running and/or enabled. This is OK! &lt;br /&gt;
&lt;br /&gt;
[https://cubicsdr.com/ CubicSDR] is a good cross-platform client that can connect to a SoapySDR Server, and you can [https://github.com/cjcliffe/CubicSDR/releases download the latest release by clicking here].  &lt;br /&gt;
&lt;br /&gt;
On the RPi, you can manually start SoapySDR Server by running: &amp;lt;code&amp;gt;SoapySDRServer --bind=&amp;quot;0.0.0.0:55132&amp;quot;&amp;lt;/code&amp;gt;  Leave this running. &lt;br /&gt;
&lt;br /&gt;
Note: If you need to use the Bias-T option of an RTLSDR, you will need to activate this manually prior to running SoapySDRServer. This can be accomplished by [[Software Defined Radio#Using RTL-SDR.com V3 Dongle.27s Bias-T Power Supply|compiling the rtl_biast utility]], and running it with &amp;lt;code&amp;gt;./rtl_biast -b 1&amp;lt;/code&amp;gt; .  ('''NOTE: This advice may be outdated - need to confirm how to set the RTLSDRs bias on more recent SoapySDR versions)''' &lt;br /&gt;
&lt;br /&gt;
Open up CubicSDR on another computer, on the same network as your SatNOGS station. It will pop up a window asking you to select a SDR device. With any luck, it will have auto-detected your SoapySDR Server, and it will show up in the 'Local Net' list. If not, you will need to select 'Remote', click 'Add', and then enter the IP address of your station. You should then have a SDR showing up in the list.&lt;br /&gt;
[[File:Screen Shot 2020-03-19 at 10.41.52 pm.png|alt=CubicSDR SDR Devices List|none|thumb|600x600px|CubicSDR SDR Devices List]]&lt;br /&gt;
You should now be able to click 'Start', and end up with a waterfall display. If the waterfall appears to glitch, or show a 'lumpy' pattern near the centre of the display, then this indicates packet loss between the SatNOGS station and your client. Try and connect via a direct LAN connection if possible. &lt;br /&gt;
In the settings menu of CubicSDR, disable &amp;quot;Automatic Gain&amp;quot; if it is set. This will allow manual control over the gain settings via sliders that will show up at the top left of the window.&lt;br /&gt;
[[File:CubicSDR Main Window.png|alt=CubicSDR Main Window (Annotated)|none|thumb|900x900px|CubicSDR Main Window (Annotated)]]&lt;br /&gt;
The above Figure shows the CubicSDR window, with the spectrum area, frequency selection, and gain settings annotated. Set the frequency to something suitable for your station. For example, if you are setting up a 70cm station, set a frequency of 437 MHz (437000000 Hz). For a 2m station, try 146 MHz.&lt;br /&gt;
Drag the gain slider so that the gain (visible at the bottom of the slider) is set to zero. Then, slowly drag it up until you see the noise floor start to rise. The gain at which this occurs is the gain you should set in SATNOGS_RF_GAIN.  &lt;br /&gt;
&lt;br /&gt;
To set the gain in satnogs go back to the RPI and stop the soapy remote server with ctrl-c.  Run satnogs-setup, open the 'Advanced' menu, then the Radio settings.  Set the gain in the SATNOGS_RF_GAIN variable.&lt;br /&gt;
[[File:SATNOGS RF GAIN.png|center|frame|Setting SATNOGS_RF_GAIN]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some SDRs may present more than one gain slider. In these situations, you will need to configure SatNOGS with each gain set individually. [[Software Defined Radio#E4000 Tuner Gain Settings|Refer here]] for more information on how to do this.&lt;br /&gt;
&lt;br /&gt;
As an example, the following figure shows the noise floor observed on a station with a RTLSDR and a ~25dB masthead preamplifier, as gain levels on the RTLSDR are increased:&lt;br /&gt;
[[File:RTLSDR Noise Floor Variation with Gain Adjustment.png|alt=RTLSDR Noise Floor Variation with Gain Adjustment|none|thumb|900x900px|RTLSDR Noise Floor Variation with Gain Adjustment]]&lt;br /&gt;
We can see that between 0 db and 20 dB of gain there is essentially no change in the noise floor - this indicates the receive system is limited by the noise figure of the RTLSDR. As the gain increases through 30 dB, the noise floor starts to lift, indicating that we are now most likely limited by either the noise figure of the preamplifier, or the local noise environment. Any increase in gain past this point just results in reduction of the available receiver dynamic range.&lt;br /&gt;
&lt;br /&gt;
CubicSDR DOES NOT autorange its waterfall, in contrast, satnogs DOES autorange its waterfall.  When you adjust the gain in CubicSDR the waterfall background will dramatically change, but when you adjust the gain in satnogs the waterfall background will not change color.  See the web page documenting  autoranging waterfalls:&lt;br /&gt;
&lt;br /&gt;
https://docs.satnogs.org/projects/satnogs-client/en/stable/userguide.html#satnogs-waterfall-autorange&lt;br /&gt;
&lt;br /&gt;
'''Important Note: While CubicSDR is connected to the SDR, your SatNOGS ground station cannot run observations! Make sure to close CubicSDR when you have finished setting the gain.'''&lt;br /&gt;
===Hardware Configuration===&lt;br /&gt;
Basic hardware configuration is Antenna &amp;gt; Short coax &amp;gt; LNA &amp;gt; Coax &amp;gt; RTL SDR -&amp;gt; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===LNA===&lt;br /&gt;
The way to measure the performance of an antenna is using a figure of merit called the Antenna gain-to-noise-temperature (G/T). It's a positive unitless number, higher the better.&lt;br /&gt;
&lt;br /&gt;
G/T is comprised of antenna gain (in dB) on the top, and the system noise temperature (in Kelvins) on the bottom. There's a lot of somewhat-hard math involved, but here's the bottom line: to make your system perform better, you either need to increase the antenna gain or decrease the system noise temp. [https://en.wikipedia.org/wiki/Antenna_gain-to-noise-temperature Wikipedia]&lt;br /&gt;
&lt;br /&gt;
Increasing the antenna gain is difficult, only because we decided on an omnidirectional antenna as the basis for this How-To. Omnidirectional antennas top out at maybe 4-6 dBi gain or so, and that's just from pushing the radiation pattern up to the sky away from the ground. Any more gain than that and it's not an omni antenna; it's got a direction that the antenna needs to be pointed in. And we want to stay away from pointing antennas for now.&lt;br /&gt;
&lt;br /&gt;
Reducing the system temperature is the the way forward then. The RTL-SDR dongle has a noise figure of 6dB or so, depending on frequency, which is pretty horrible. But it turns out that the system noise temperature is largely determined by the first device in the receive chain. Since we can't change the antenna, adding a low-noise amplifier helps quite a bit. See this [https://www.youtube.com/watch?v=snifc_x_2sE youtube video] from Adam 9A4QV on how a LNA helps. (Also check out his other videos about the RTL SDR dongle, and SDR in general)&lt;br /&gt;
&lt;br /&gt;
More info on SDR noise figures:&lt;br /&gt;
&lt;br /&gt;
*[https://gitlab.com/librespacefoundation/sdrmakerspace/sdreval/-/raw/master/Report/pdf/Evaluation_of_SDR_Boards-1.0.pdf Evaluation of SDR Boards and Toolchains] from the [https://sdrmaker.space/ SDR Makerspace]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More info on noise and preamps:&lt;br /&gt;
&lt;br /&gt;
*[https://en.wikipedia.org/wiki/Noise_temperature System noise from wikipedia], pretty high-level&lt;br /&gt;
*[https://www.rtl-sdr.com/tutorial-on-properly-positioning-a-preamp-lna-in-a-radio-system/ Where to put an LNA], from rtl-sdr.com&lt;br /&gt;
*[[SPF1589 LNA measurements|SPF5189 LNA measurements]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adding a LNA can also add its own set of problems, in that it may amplify strong local signals which may overload your SDR. When adding a LNA, you will likely need to back off the gain on your SDR to avoid this. It's also possible that the strong local signals may cause distortion to occur in the LNA itself, in which case you should consider the use of a filter between the LNA and the antenna. Some example products:&lt;br /&gt;
&lt;br /&gt;
*If you are experiencing issues with FM broadcast stations, a [https://www.rtl-sdr.com/rtl-sdr-com-broadcast-fm-band-stop-filter-88-108-mhz-reject-now-for-sale/ FM band-stop filter] may help.&lt;br /&gt;
*[https://www.minikits.com.au/electronic-kits/rf-amplifiers/rf-preamplifiers MiniKits masthead preamps] include fairly low-loss bandpass filters for their target bands (2m, 70cm).&lt;br /&gt;
&lt;br /&gt;
All filters will have some inherent loss, which adds to the system noise figure (or temperature, as discussed above), but this is a compromise that may need to be made to avoid distortion issues.&lt;br /&gt;
&lt;br /&gt;
Finally, using a LNA near the antenna means that we can accept some losses from a long coaxial cable run between the LNA and the receiver, allowing us to situate the antenna away from sources of local noise that may impact overall performance.&lt;br /&gt;
&lt;br /&gt;
As briefly discussed above, it's the first device in the receive chain which dominates the overall system noise temperature (or noise figure). In brief, as long as the losses in the coaxial cable are less than the gain of the LNA, your overall system noise figure won't degrade too much. As an example a 20m run of RG58 has a loss of ~10dB at 434 MHz. Using a LNA with a gain of 20dB and a noise figure of 1dB, the overall system noise figure is still only ~1.4 dB, and acceptable degradation.&lt;br /&gt;
&lt;br /&gt;
===Antenna===&lt;br /&gt;
For testing on the bench, pretty much any antenna will do, however set your expectations accordingly:&lt;br /&gt;
&lt;br /&gt;
*A vertical antenna (e.g. the telescopic whips that come with many RTLSDRs) will not receive high-elevation passes well, as they have a 'null' in their antenna pattern directly overhead. When a satellite is at a lower elevation it is further away, and so will be weaker.&lt;br /&gt;
*A dipole antenna (be it a straight, or a v-dipole) will have similar issues, though where the null is located will depend on how you orient the dipole. Either way, there will be some portions of a satellite pass with poor performance.&lt;br /&gt;
*If your antenna is located inside, near to your house mains wiring, or near other electrical devices, it may end up being swamped by lots of local electrical noise and end up being 'deaf' - in this situation a LNA will only make the situation worse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refer to the [[Antennas|Antennas page]] for more information on antennas which are well suited to satellite observations.&lt;br /&gt;
&lt;br /&gt;
==Testing the station==&lt;br /&gt;
[[File:Pass predictions.png|300px|right]]&lt;br /&gt;
Now that you have the hardware and software up and running, go ahead and schedule some passes. Navigate to your station page, and click on the Schedule button on the right side of some promising passes. The green and red bars beneath the satellite name is a quick visual indication of the number of Good and Bad passes on the network. Unfortunately, this data is not time-stamped at all, so a satellite that had a lot of Good observations a long time ago, but recently died, would still show as Green.&lt;br /&gt;
&lt;br /&gt;
===Recommended Satellite Transmitters for Station Performance Benchmarking===&lt;br /&gt;
A few known-good satellite transmitters to test with with (as of November 2020) are:&lt;br /&gt;
&lt;br /&gt;
*For a station operating on the VHF Band:&lt;br /&gt;
**NOAA 15, 18, 19- The APT transmitters (very strong signals - considered to be the 'hello world' of satellite observations)&lt;br /&gt;
**ISS - If operating, the APRS transmitter is very strong, but may only transmit intermittently throughout a pass.&lt;br /&gt;
**CAS4A / CAS4B - Continuous CW and GMSK transmitters - a good example of a 'weaker' cube-sat signal.&lt;br /&gt;
**Max Valier Sat - Another weaker CW signal.&lt;br /&gt;
*For a station operating on the UHF band:&lt;br /&gt;
**FalconSat3 - The FSK downlink transmits continuously, and is an excellent benchmark for overall station performance. A high performing station may receive upwards of 600 data packets in a single pass.&lt;br /&gt;
**SpooQy-1 - Regular GMSK packets.&lt;br /&gt;
**OPS-SAT - Regular GMSK packets, fairly strong.&lt;br /&gt;
**ARMADILLO - A higher data rate signal, requiring a fairly good SNR to be able to decode the (hillarious) 19.2kbps GFSK packets.&lt;br /&gt;
**LUSAT - CW Signal Generator in space. Continuous, strong signal.&lt;br /&gt;
&lt;br /&gt;
===Rating an Observation===&lt;br /&gt;
[[File:Waterfall Vetting Buttons.png|right|frameless]]&lt;br /&gt;
After each observation, you should rate it. More information [https://wiki.satnogs.org/Operation#Rating_observations here], but the bottom line is rate the observation:&lt;br /&gt;
&lt;br /&gt;
*'''Good''' if the satellite is seen in the waterfall at all. Different modulations appear differently in the waterfall, but will appear&lt;br /&gt;
*'''Bad''' if the satellite is not seen.&lt;br /&gt;
&lt;br /&gt;
Observations which do not produce any artefacts (Waterfall, audio, data packets) will automatically be considered as failed, and will eventually be deleted.&lt;br /&gt;
&lt;br /&gt;
For a more detailed guide on testing, see [[Operation]]&lt;br /&gt;
&lt;br /&gt;
===Calibrating frequency offset (PPM)===&lt;br /&gt;
If your observations result in signals which appear to be 'off centre' of the waterfall, then you may need to set a frequency offset correction. Guides on how to determine this correction via a few different methods are available here: [[Adjusting the SatNOGS Client#Frequency Offset Calibration]]&lt;br /&gt;
&lt;br /&gt;
===Mitigating Local Noise===&lt;br /&gt;
If you are finding the signal-to-noise of your observation seems a bit low, or you aren't seeing any signals from the known-good satellites listed above, then your station may be limited by local electrical noise. A more comprehensive guide on how to identify sources of noise is being developed, but as a starting point:&lt;br /&gt;
&lt;br /&gt;
*Turn on/off nearby electrical devices while an observation is running (or while looking at a waterfall using CubicSDR as described further above).&lt;br /&gt;
*Common sources of electrical noise include:&lt;br /&gt;
**LED lightbulbs or floodlights&lt;br /&gt;
**USB Chargers (or really any switch-mode power supply)&lt;br /&gt;
**Power-over-Ethernet systems&lt;br /&gt;
**Unshielded ethernet cables (or even shielded cables)&lt;br /&gt;
**HDMI and DVI cables, and computer monitors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Next Steps==&lt;br /&gt;
Now that you've got this station working on the bench, what's next?&lt;br /&gt;
&lt;br /&gt;
*Buy/Build an antenna suited to satellite observations. Check out the [[Antennas|Antennas page]] for ideas.&lt;br /&gt;
*Mount your antenna away from obstructions, and ideally away from sources of electrical noise like ethernet cables, LED lights, and other electronic equipment.&lt;br /&gt;
*Situate your SDR and Raspberry Pi (or other computer) as far away as practical from your antenna. If you absolutely must mount it on the mast beneath the antenna and use a metal box, and run a separate DC power supply instead of using PoE (which can produce considerable amount of RF noise)&lt;br /&gt;
&lt;br /&gt;
===Building a Box===&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.satnogs.org/No_rotator No-Rotator setup]  (Note the warning at the top of this page)&lt;br /&gt;
&lt;br /&gt;
[[ Category:Build ]]&lt;br /&gt;
[[ Category:Hardware ]]&lt;br /&gt;
[[ Category:Antenna ]]&lt;/div&gt;</summary>
		<author><name>Chrisethompson</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=File:SATNOGS_RF_GAIN.png&amp;diff=3774</id>
		<title>File:SATNOGS RF GAIN.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=File:SATNOGS_RF_GAIN.png&amp;diff=3774"/>
		<updated>2021-08-01T19:58:39Z</updated>

		<summary type="html">&lt;p&gt;Chrisethompson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Settings the gain in satnogs setup&lt;/div&gt;</summary>
		<author><name>Chrisethompson</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.satnogs.org/index.php?title=Main_Page&amp;diff=3773</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.satnogs.org/index.php?title=Main_Page&amp;diff=3773"/>
		<updated>2021-08-01T01:17:26Z</updated>

		<summary type="html">&lt;p&gt;Chrisethompson: Fixed typo he -&amp;gt; the&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;__NOTOC__&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:SatNOGS_explanation.png|right|300x300px]][[File:Station-1000.jpg|alt=S-Band dish on AZ/EL rotator.|right|thumb|Ground Station with S-Band dish on AZ/EL rotator. [https://network.satnogs.org/stations/1000 SatNOGS Station #1000]]]&amp;lt;p&amp;gt;&amp;lt;big&amp;gt;[https://satnogs.org SatNOGS]&amp;lt;/big&amp;gt; is an integral part of the [https://libre.space &amp;lt;big&amp;gt;Libre Space Foundation&amp;lt;/big&amp;gt;]. The project aims to build a global network of satellite ground stations. It is designed as an open source participatory project based on the users operating a ground station that is accessed via a web page for all of the network users. A basic ground station can be made up of commercial off the shelf components that are commonly available with a static [[Omnidirectional Station How To|omnidirectional antenna]], to more complex stations with multiple movable antennas.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:AZ EL Ground Station.png|alt=AZ/EL Ground Station with VHF and UHF Antennas|left|thumb|Yaesu G-5500 Az/El Rotator w/ M2 VHF/UHF Antennas. [https://network.satnogs.org/stations/2 SatNOGS Station #2]]]&lt;br /&gt;
&amp;lt;p&amp;gt;If you would like to build your own ground station and have limited knowledge then it is recommended that you follow a [[Omnidirectional Station How To|non-rotator build]] with a simple RTL-SDR dongle and a [[Raspberry Pi]]. This will get you on to the network quickly and allow you to start scheduling observations. There are a few choices to be made but the community are available to help if you need it. More complex, movable, antenna systems can be steered with either the SatNOGS designed rotator or a commercial unit such as the Yaesu G-5500, Spid XY or similar. It is recommended that these types of builds are for more experienced operators but there is no reason why these can not be put into operation, they just require more work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The reference design uses a Raspberry Pi + RTL-SDR dongle + either a VHF or UHF antenna. A [[Raspberry Pi]] image is available to make software installation simpler. Much of the decision making is down to personal choice but sometimes additional hardware is needed to help filter out local noise, such as strong broadcast stations. Both the community and Matrix / IRC offer support and assistance.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Build]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Operate]]&lt;br /&gt;
[[Category:Main]]&lt;br /&gt;
[[Category:Develop]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Satellite]]&lt;/div&gt;</summary>
		<author><name>Chrisethompson</name></author>
		
	</entry>
</feed>