EQFocuser Description
The EQFocuser started as a DIY project powered by Arduino and ASCOM. It is completely compliant with ASCOM and so far this is the focuser that I’m using with my telescopes. I have a couple of variations that are using different types of motor depending on the need. The project is open source and you can download the drivers and sketch files here https://github.com/EverettQuebral/EQFocuser
Supported Stepper Motor Controller
- ULN2003 Motor Driver https://www.amazon.com/4-phase-Stepper-28byj-48-Atomic-Market/dp/B01DLDW9S8/ref=sr_1_23?s=electronics&ie=UTF8&qid=1509427016&sr=1-23&keywords=uln2003+driver+board
- Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit – v2.3 https://www.adafruit.com/product/1438
- Easy Driver http://www.schmalzhaus.com/EasyDriver/
- Big Easy Driver http://www.schmalzhaus.com/BigEasyDriver/
Hardware Parts
- 1 Arduino (Nano – $5.00, Uno – $8.00)
- 1 Telescope specific bracket (I 3D printed mine)
- Set of screws for your focuser
- Aluminum Flexible Shaft Coupling ($1.50) (Please select the size for your focuser)
- 2 Pull Up Switch (Optional)
- 1 Variable Resistor (Optional)
- 1 DHT11 (Temperature/Humidity) Sensor (Optional)
For EasyDriver or Adafruit Motor/Stepper/Servo Sheild
- 1 EasyDriver ($7) or Adafruit Motor Controller ($19)
- 1 Dual Shaft Nema 17 Stepper Motor 1.8deg 26ncm/37oz.in 12v 0.4a 42x42x34mm 4-wire ($15)
- 1 Nema 17 Bipolar Stepper 12V 0.4A 56.7oz.in/40Ncm Hybrid Stepper ($13) [This is what I’m using because of high torque]
For ST35 or 28BYJ-48
- 1 ULN2003 Motor Driver ($3)
- 1 ST35 ($15) or
- 1 28BYJ-48 ($5)
Diagrams
Diagram Using ULN2003 Motor Driver

Diagram Using EasyDriver

The video above shows the NEMA 17 0.4AMP with 56.7oz.in torque
Github Location
https://github.com/EverettQuebral/EQFocuser
Driver Download
You can download the latest Driver at the Release section https://github.com/EverettQuebral/EQFocuser/releases
3D Model Files
Available under the Resources folder
Also available at Thingiverse
If i start this project will you be there for the little hangups?
Sure, just let me know and that will allow me to improve the instructions
Hi. Can you share the diagram of your connections using the Adafruit Moto shield ? Additionally, I have an issue which is the EQFocuser driver never picks up the Com port. In device manager I have it there as Com9. I am using Windows 10 the latest update. Thanks in advance and for sharing this for us starting. Ago
Sure, let me draw that again and share the diagram to you. For the EQFocuser driver, I have an update that you allows the driver to Re-Scan the COM ports for convenience.
https://github.com/EverettQuebral/EQFocuser/releases/tag/1.0.8
Hi again,
Also, which dht library you used for the Adafruit shield ino?
Thanks,
ago
I’m using the DHT sensor library by Adafruit, version 1.3.0
You should be able to see that on the Arduino IDE (1.8.5) via Sketch -> Include Library -> Manage Library and seach for the DHT sensor library
What size potentiometer do you recommend for the speed control?
Thanks!
After installing all the required libraries, I have come to a stumbling block that I have been unable to resolve even with the help of google. I am encountering this error when uploading the sketch:
Arduino: 1.8.5 (Windows 10), Board: “Arduino/Genuino Uno”
C:\Users\dan.doyle\Documents\Arduino\EQFocuser\EQFocuser.ino: In function ‘void humidityTemperatureReport()’:
EQFocuser:278: error: expected primary-expression before ‘.’ token
chkSensor = DHT.read11(DHT11_PIN);
^
EQFocuser:280: error: ‘DHTLIB_OK’ was not declared in this scope
case DHTLIB_OK:
^
EQFocuser:282: error: expected primary-expression before ‘.’ token
Serial.print(DHT.temperature, 1);
^
EQFocuser:286: error: expected primary-expression before ‘.’ token
Serial.print(DHT.humidity, 1);
^
EQFocuser:290: error: ‘DHTLIB_ERROR_CHECKSUM’ was not declared in this scope
case DHTLIB_ERROR_CHECKSUM:
^
EQFocuser:298: error: ‘DHTLIB_ERROR_TIMEOUT’ was not declared in this scope
case DHTLIB_ERROR_TIMEOUT:
^
exit status 1
expected primary-expression before ‘.’ token
Invalid version found: 1.04
Invalid version found: 1.04
This report would have more information with
“Show verbose output during compilation”
Any assistance would be greatly appreciated!
Thanks!
FYI, I’m not a programmer and have never worked with Arduinos before, so I’m surprised I’ve gotten this far.
That is great Dan, sure will be happy to help you. Let me review the code and get back to you.
What sketch file are you using?
EQFocuserStepper-MotorShield-NEMA17.ino?
EQFocuserStepper-EasyDriver-NEMA17-Geared.ino?
EQFocuser2Stepper.ino?
EQFocuserStepper.ino?
I’m assuming that you are using either one of the last 2 because they are using the DHT library.
Great work, many thanks for your efforts!
Managed to compile EQFocuserStepper.ino and upload it to Arduino Uno, DHTLib library did the trick with the DHT part of the code instead of the Adafruit library.(https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib).
With the temperature & humidity part I however hit another speed bump – there’s no temperature & humidity values visible in the 1.0.8 driver window. Using the “k” command through the Arduino IDE serial monitor returns correct values in the serial monitor, and connection to motors works fine through the 1.0.8 driver. But there’s no temperature nor humidity values coming through. Also hitting the “advanced” button in the driver results only “444” being displayed in the humidity value window in the driver, but won’t open any further settings. Would you be able to help with any pointers how to get the temperature & humidity part working as well?
Sorry about that, I just saw your message. Will take a look on what was the problem. Thanks, will keep you posted
Hi, I’m finishing your focuser for my newton.
I also use stellarmate (raspberry), could it also work with INDI?
Yup, I’m still working on it, as testing as hampered me due to the weather. Will post an update
I am na amateur astronomer and have this website http://www.meteorito.com.br
First I would like to say thnk you for providing the very nice EQFocus project.
I was able to have an Arduino nano working fine with your firmware. I was also able to connect into my desktop (Win10) and could have the ASCOM driver working with APT.
But I am not able to make it work with both of my notebooks (Win10). Same thing happens with both notebook when I try to test using the ACOM Device Connecton Tester (both 32 and 64 bits).
I am doing the following:
1. Run ASCOM Diagnostics
2. Chose Device->Chose and connect to Device
3. Select Device Type->Focuser
4. Click “Choose” and select “ASCOM Focuser Driver for EQFocuser”
5. When I click Properties and the Device Connecton Tester hangs.
My environment configuration
• Windows 10
• ASCON 6.4 SP1 (also tried newar and older version)
What may be happen? Can you please help?
Hello Everett,
Thanks a lot for this amazing project. I am trying using in my newtonian 200 f4.
I was able to run the EQFocus ASCOM driver on a PC with success but I am having problems with 2 notebooks. Is there any means to debug what is going on with the EQFocus driver? I am trying to test using the ASCOM Connection Tester 32 and 64 bit. The tester hangs when I click on the “Properties” button at the ASCOM Focuser Chooser dialog.
Hope you can help me.. I have done the hardware and firmware part of the project but having problems to use the ASCOM driver.
Thank you!
One issue might be the conflict in the bluetooth devices in your 2 notebooks. Try to disable and see if it works. Again thanks for using this project. Grad to help you out here.
Hello, Everett! Awesome project.
I was able to run EQFocuser with a ULN2003 just fine! But when I try to use the “EQFocuserStepper.ino”, with DHT11, I stuck.
First of all, the file come with:
#include
But the library I have is:
#include
Is this correct?
Well, I change the dht.h to DHT.h, but there are a lot of new erros, like:
“error: ‘dht’ does not name a type
dht DHT;”
or:
“In function ‘void humidityTemperatureReport()’:
arduinotemperatura:278:18: error: expected primary-expression before ‘.’ token
chkSensor = DHT.read11(DHT11_PIN);”
Am I using the wrong library?
I tryed with “DHT sensor library” from Adafruit with versions 1.3.0, 1.3.9 and 1.3.10.
Yes you can remove the DHT sensor or just comment out the code if you are not using it.
Hi Everett…
Let me ask you a question. I was able to EQFocuser with DHT11, all ok, but I had to change the stepper motor to a strong one.
Now I am using Nema17. I Tried the code stated in the website….for Nema with DHT11 but DHt11 stopped work ! I checked the code comparing to the other one that was working… (DHT part of the code) It appears to be ok, but not working….
is that possible to check what could be wrong?
I am using Nema17 with A4988 and an arduino nano
I’ll update the code, I can remove the DHT11 as most doesn’t want that temperature feature of the focuser.
Well I have a focuser to motorize. I’ve done this in the past with a stepper and an arduino but it was cumbersome, the motor was crap and there were other issues. So over the years I gradually moved to dc motors and in the end hobby servos. Way simpler.
But this time, I got a new setup and build a permanent post so I want to have proper and precise motorization. I could code everything myself, the firmware, the client and the ASCOM driver. But….I’m way too lazy so I hope you don’t mind if I take your code and adapt everything to my needs :p
Hello Everett! I have been using this focuser for more than10 months. Unfortunately last night I could not connect in APT. When running an ASCOM diagnostics, this message came out: “Connected Disconnecting from device
Error System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
em ASCOM.EQFocuser.Focuser.set_Connected(Boolean value)
em CallSite.Target(Closure , CallSite , Object , Boolean )
em System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
em ASCOM.DriverConnect.ConnectForm.btnConnect_Click(Object sender, EventArgs e) na C:\ASCOM Build\Export\ASCOM.DriverConnect\ConnectForm.cs:linha 369
Dispose Disposing of device
Dispose Completed disposal
ReleaseComObject Releasing COM instance
GC Collect Starting garbage collection
GC Collect Completed garbage collection”
I was running ASCOM 6.4 when the error happened, before was working pefectly. I tryed to unninstall and install the eqfocuser driver again, but it didn’t help. Now I installed ASCOM 6.5 SP1 platform version, but the error persist. Any clue how this can be fixed?
Thanks for using it. Let me investigate more as I haven’t updated the code in a while. Been trying to get back to astrophotography too.
Hi Everett ,
at first, nice project and realy nice results. I´m doing astrophotography aswell, and i´m using your focuser sketch. But i´ve got a question for you, cause it´s not working quite well. I do not have any programmer knowlege but i´m slowly learning. I´m using the one Stepper solution with a 28BYJ Motor. Mostly everything works well, even with the Ascom driver via APT. But when the motor is driving, for example 1000 steps, ist stocks every few seconds for a very short time. I can see that the RX/TX Led is flashing in this moment on the Arduino Nano. What could be this case ?
Cheers Freddy
One thing that I know for sure is the 28BYJ is a very small motor comparing to the NEMA stepper motors. At least that’s what I have learned when I was experimenting with the 28BYJ.
Any way to switch temp from Celsius to Fahrenheit?
Would this work if coding is changed
Serial.print(DHT.temperature*1.8+32, 1);
just added conversion to this line.
Thanks
Nino
Hi Nino,
Thanks, you can submit a PR on the code. Appreciate your help
Hello Everett,
I have built the EQFocuser based on the info you have loaded to Github.
I am running the EQFocuserStepper.ino code for the Arduino, and I have disabled the code regarding the DHT sensaor, which I do not use.
I have some issues regarding the ASCOM driver: I do not get up the focuser settings window. If I enable “Show Controller” option, it will open the window, but not show any values, and the driver hangs. I have tested this on two different PC’s and same problem on both. Both run Windows10.
But If I do not enable “Show Controller”, then I am able to connect to the EQFocuser from NINA ok.
There are a couple of issues here: Everytime I connect to the focuser in NINA (after the power has been off on the Arduino), the Focuser Position resets to ‘0’. Is the focuser position supposed to be taken care of in EQFocuser or by the ASCOM driver? If not, is there any option to set the Focuser Position in the ASCOM driver?
Next is the max Focuser Position. Right now, this is 10000 in NINA. Is this a setting I can change in the ASCOM driver? (I was wondering if this may be an option in the “Advanced Settings” in the ASCOM PC driver, but I don’t get this up as mentioned earlier).
Other than this, it is working nicely, and thanks very much for posting the info on Git for others to benefit from your work.
Best regards,
Geir Valsvik
Hi Everett, Thanks for sharing such great project.
I downloaded library DHT sensor library version 1.3.0 using Arduino 1.8.16 library management but i still get errors below
First error was the dht.h i replaced to DHT.h than now i get followin errors:
EQFocuserStepper:44:1: error: ‘dht’ does not name a type
dht DHT;
^~~
C:\Users\luizo\AppData\Local\Temp\Rar$DIa14804.3611\EQFocuserStepper\EQFocuserStepper.ino: In function ‘void humidityTemperatureReport()’:
EQFocuserStepper:279:18: error: expected primary-expression before ‘.’ token
chkSensor = DHT.read11(DHT11_PIN);
^
EQFocuserStepper:281:8: error: ‘DHTLIB_OK’ was not declared in this scope
case DHTLIB_OK:
^~~~~~~~~
EQFocuserStepper:283:21: error: expected primary-expression before ‘.’ token
Serial.print(DHT.temperature, 1);
^
EQFocuserStepper:287:21: error: expected primary-expression before ‘.’ token
Serial.print(DHT.humidity, 1);
^
EQFocuserStepper:291:8: error: ‘DHTLIB_ERROR_CHECKSUM’ was not declared in this scope
case DHTLIB_ERROR_CHECKSUM:
^~~~~~~~~~~~~~~~~~~~~
EQFocuserStepper:299:8: error: ‘DHTLIB_ERROR_TIMEOUT’ was not declared in this scope
case DHTLIB_ERROR_TIMEOUT:
^~~~~~~~~~~~~~~~~~~~
exit status 1
‘dht’ does not name a type
Any idea how to fix this?
Hi Everett Thanks for sharing such reat project
I tried ddownloading on Arduino UNO following code
EQFocuserStepper.ino
I am using the motor 28BYJ-48 with uln2003 driver.
I used DHT sensor lib v1.3.0 as stated above but got error library not found so I replaced #include to #include but I still get some errors like below. can yuo please help?
EQFocuserStepper:44:1: error: ‘dht’ does not name a type
dht DHT;
^~~
C:\Users\luizo\AppData\Local\Temp\Rar$DIa14804.3611\EQFocuserStepper\EQFocuserStepper.ino: In function ‘void humidityTemperatureReport()’:
EQFocuserStepper:279:18: error: expected primary-expression before ‘.’ token
chkSensor = DHT.read11(DHT11_PIN);
^
EQFocuserStepper:281:8: error: ‘DHTLIB_OK’ was not declared in this scope
case DHTLIB_OK:
^~~~~~~~~
EQFocuserStepper:283:21: error: expected primary-expression before ‘.’ token
Serial.print(DHT.temperature, 1);
^
EQFocuserStepper:287:21: error: expected primary-expression before ‘.’ token
Serial.print(DHT.humidity, 1);
^
EQFocuserStepper:291:8: error: ‘DHTLIB_ERROR_CHECKSUM’ was not declared in this scope
case DHTLIB_ERROR_CHECKSUM:
^~~~~~~~~~~~~~~~~~~~~
EQFocuserStepper:299:8: error: ‘DHTLIB_ERROR_TIMEOUT’ was not declared in this scope
case DHTLIB_ERROR_TIMEOUT:
^~~~~~~~~~~~~~~~~~~~
exit status 1
‘dht’ does not name a type
Hi Everett. thanks for sharing such great project. Have you tried using with N.I.N.A software? I tested with APT and works fine but with N.I.N.A the eqfocuser app opens but keeps thinking and opening won´t complete