Skip to the content
2 layers68.6 × 53.3 mmStupidDogFocuserPCB, the printed circuit board in 3D

As open-source electronic telescope focuser

Size
68.6 × 53.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
26
Pads
107
Tracks, vias
153, 15
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
2 Jun 2019
Updated
26 Mar 2020

Overview

StupidDogFocuserPCB is an open-source printed circuit board by jeff-voight, from the jeff-voight/StupidDogFocuser repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 68.6 × 53.3 mm with 21 parts on 26 nets, routed with 153 tracks and 15 vias.

It is built around the ARDUINO UNO R3, DHT11 and SN74HC14N, with the OSTTC062162 among its other parts. Its parts include 8 resistors, 6 capacitors, 2 ICs, 1 connector and 1 switch. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

StupidDogFocuser

Open-source electronic telescope focuser

The StupidDogFocuser is a work-in-progress prototype electronic focuser. It shall eventually comply with ASCOM and INDI and should operate on Linux, Windows, or Mac.

Goals

The goal of this project is to develop an electronic focuser that is compact, free of airwires, capable of being mounted to a variety of telescope focusers controllable via a PCB-mounted knob, serial commands, and INDI and ASCOM software. It should be inexpensive, easy to build at home, and only use components that are easy to acquire.

Ultimately, I want somebody to be able to have a neat, compact focuser for under $100 and their time and solder.

Size and Shape

The PCB is a shield for an Arduino UNO R3. I hope to be able to etch and solder the board at home, but it should also be designed in such a way that one could order a commercially manufactured board. The KiCad design files will be included. The initial builds will be geared toward a commercial board house.

The board is approximately the same shape as the UNO. It receives the 12V power directly from the Arduino. That means that you need to plug the Arduino into a 12V 1A power supply. These are available where you bought the Arduino. We could get more torque and speed if we went with a higher voltage, but we don't really need more torque or speed.

On one end is an optional temperature/humidity sensor. During assembly, the legs of the package need to be bent so that the sensor can be layed flat extended out in space beyond the board. This, hopefully, keeps the sensor far enough away from the driver that it isn't affected and it provides a way to extend the sensor out of an enclosure to give it access to the outdoor air.

The board features a mounted rotary encoder for handheld use. In fact, if one were so inclined, one wouldn't necessarily need to enclose this focuser. One could very easily just put the hat on the arduino, wire up the motor, plug it into 12V, and hold the thing bare and be up and running without an enclosure.

Heck, you could hot glue the whole thing right on your observatory wall or telescope mount and be fine. Maybe clean the spiders out from time to time. I mean, don't let it rain on it, but you weren't going to let it rain on your telescopes, right?

The encoder has 30 detents, but something I didn't realize at first was that the encoder counts two steps per detent. At first I fretted about this, but at 5400 steps per rotation on a 27:1 geared stepper running at half-stepping (for torque and performance), two steps per detent seemed like an acceptable trade-off. If you're running a 200 step stepper, you should still be okay on a refractor or reflector. I can't say for an SCT.

Enclosure

Included is a 3d-printable set of STL files that worked for me. It even has a knob.

I printed mine in glow-in-the-dark. It has never helped.

I hope to find a more professional enclosure, but I'm not actively looking.

Along with the enclosure, I haven't included the panel-mount electrical connector because I haven't found a 6 pin connector that I like.

I'm currently using a 4-pin aircraft something something. If you have a 6-pin (2 pins for the limit switch) connector that you love and you can find it on digikey, feel free to fork the code and submit a pull request.

Assembly

The PCB is designed to use the same resistors and the same capacitors throughout. You can't go wrong. Just solder the resistors in wherever you see a resistor footprint and the same for the capacitors.

The DHT11 or DHT22 needs to be layed flat if you want it to stick out of an enclosure. This bend needs to be done before soldering.

The motor screw terminals should probably face in the same direction as the wires are going to go. There should be enough space to flip it around.

The Schmidtt Trigger footprint includes a dot and a little slanty line to indicate the dotted end of the chip. Make sure you get the orientation correct.

Likewise, the DRV8825 footprint includes a white rectangle on the same end that the chip of the DRV8825 daughterboard has. Make sure those line up, too.

The DRV8825 ABSOLUTELY needs the heatsink that comes with it. Make sure you put that thing on. It didn't take me but a few minutes to roast one of mine during development because I was being lazy.

The DRV8825 ABSOLUTELY needs to be adjusted before plugging in your first stepper. The steppers that I've been getting have been running best at about .8A per coil. But, the motor gets HOT.

DIY disclaimer

I'm not opposed to through-hole parts, but I personally find drilling boards to be the most difficult part of home manufacture of PCB, I'd rather keep the drill-file to a minimum. Consider that you're going to be drilling all of the Arduino header pins and all of the component pins. It's probably safest to order the boards from a board house. However, if you only drill out the holes you need, you can save a whole bunch of the arduino pin holes. You technically only need one ground pin. Make sure you carry the 12V and 5V pins through.

The KiCad PCBs will be done for my convenience for now. That means tiny traces and silkscreen that I wouldn't dare do at home and drill holes galor and if I feel like throwing in a via collection that carries signals and looks like a moose, that's my prerogative.

I mean, I probably won't, but just in case I do.

Calibration and limit switches

Another goal is a limit switch and a reset routine. Upon hard reset (if there is such a thing), on power-up, it would store it's current position, rack the focuser IN until it touched the limit switch, reset everything such the limit switch is the low limit and the original position gets restored to it's whatever position it was before. I've included the pins for the limit switch, but I haven't yet worked out a homing routine. When it happens, you'll probably need to build a focuser for each telescope you want to drive because the results of the homing and length of focus will get stored in EEPROM.

One way or another, I feel like I need some type of security such that my cameras never fall to the floor or I end up stripping a gear on the focuser.

That said, it hasn't been a problem yet.

Power-Off Conditions

For the time being, all is lost on reset/power-off. We start the focuser in the 20,000s. That should be enough to give a couple of inward turns of a knob.

A limit switch would solve this.

As it is

As it is, we communicate at 115,200 baud. We depend on AccelStepper and a high performance encoder library, so I don't want to slow either of those down with slow serial performance. Our signal is only going a few feet, and unless you've got outrageous amounts of noise, 115,200 will be fine.

Commands

Serial commands are as follows:

CommandDescriptionResponseDefaultsComments
<HA>HaltHA!N/Aas quickly as possible
<GE>Is enabled?[T|F]!TrueMotor Driver
<GR>Is reversed?[T|F]!FalseMotor direction
<GM>Microsteps[1-32]!_(1/)_1Denominator (not yet functional)
<GH>High limitMAXINT!108000Distance from initial
<GL>Low limit[0!032 bit int
<GS>Speed[0-255]!255Stepper motor dependent
<GT>Temperature%f.2!N/ADHT11/22 precision
<GP>Position0-MAXINT!0Previous focus position
<IM>Moving?[T|F]!FTrue during movement
<AM%d>Absolute Move%d! (target)N/ATarget position
<RM%d>Relative Move%d! (target)N/ATarget position
<RD[T|F]>Reverse Motor[T|F]!N/AResponse is new is reversed
<SY%d>Sync Motor%d! (same as param)N/A
<EN>Enable motorEN!N/A
<DI>Disable motorDI!N/A
<SM[1-32]>Set Microstepping 1/1 - 1/32%u!1New microstep mode (not yet functional)
<SP%u>Set Speed 200-4000%d!New speed1000
<SH%d>Set high limit%d!32767Response is new high
<SL%d>Set low limit%d!-32768Response is new low limit

Any error will trigger ERROR(optional message)#

Parts

21
QtyValueFootprintReferences
81kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8
64.7uFCapacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC1, C2, C3, C4, C5, C6
1Arduino_UNO_R3Module:Arduino_UNO_R3A2
1DHT11Sensor:Aosong_DHT11_5.5x12.0_P2.54mmU1
1LOGOkicad_logo:Stupid_dog_logo_smallG1
1OSTTC062162digikey-footprints:Term_Block_1x6_P5.08mmJ1
1Pololu_Breakout_DRV8825Module:Pololu_Breakout-16_15.2x20.3mmA1
1Rotary_Encoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW1
1SN74HC14Ndigikey-footprints:DIP-14_W3mmU2

Similar boards

  • 4 layers131 × 89.5 mmMecha pico mcb, the printed circuit board in 3D

    Mecha pico mcb

    wubneh/MCTR260-pico-firmware

    Raspberry Pi Pico W robot controller firmware for MCTR 260 Mechatronics Design. Dual-core BLE architecture with mecanum drive, stepper/DC motor support, and configurable motion profiles.

    85 parts1MIT
  • 2 layers96.5 × 68.6 mmBackdash v1.5, the printed circuit board in 3D

    Backdash v1.5

    PhoenixRacing/Sensing2017

    Arduino code for tach, speedometer, CVT temp, dash, etc.

    23 parts7
  • 2 layers25 × 25 mmKiwiEFI Hall 0.1, the printed circuit board in 3D

    KiwiEFI Hall 0.1

    Neil427/Speeduino-Hall-Trigger-Conditioner

    Speeduino Hall sensor conditioner board with buffering

    38 parts4GPL-3.0
  • 2 layers200 × 100 mmOpenSpritzer2, the printed circuit board in 3D

    OpenSpritzer2

    MaximeZimmermann/OpenSpritzer-V2

    OpenSpritzer v2 An Open hardware pressure ejection system for reliably delivering picolitre volumes. developed by M.J.Y. Zimmermann

    82 parts2GPL-3.0
  • 4 layers85 × 90 mmLoad UI MCU, the printed circuit board in 3D

    Load UI MCU

    hiramrodriguez14/Load-UI_MCU

    Load and UI MCU Hardware Design Repository.

    116 partsMIT
  • 2 layers100 × 140 mmFULL PC, the printed circuit board in 3D

    FULL PC

    Iluhaprog/IN-machine

    Homemade computer architecture. Schemes, model and tools.

    97 parts
  • 4 layers39 × 82 mmDks1837 shield, the printed circuit board in 3D

    Dks1837 shield

    olsch01/DoorKing1837-ColorDisplay

    Software and Hardware solution to modernize the 8 line LCD Character display of a Doorking DKS 1837 Access Control System.

    13 partsMIT
  • 2 layers170 × 105 mmSsio check, the printed circuit board in 3D

    Ssio check

    paulbruneau/ssio-check

    A bench tester for the Bally/Midway MCR Sound I/O family: the 90908 Sound I/O and the 90913 / 91483 / 91657 Super Sound I/O (Z80, two AY-3-8910s, and all of the game's input ports).

    72 parts

Questions

How big is the StupidDogFocuserPCB PCB?

It measures 68.6 × 53.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the StupidDogFocuserPCB use?

21 parts, built around the ARDUINO UNO R3, DHT11, SN74HC14N and OSTTC062162. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the StupidDogFocuserPCB KiCad files?

From the jeff-voight/StupidDogFocuser repository on GitHub, at the commit this page was made from: the board is hardware/StupidDogFocuserPCB/StupidDogFocuserPCB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the StupidDogFocuserPCB design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).