

Nema23Driver
Open Source Astrophotography Hardware and Software
- Size
- 56.4 × 56.4 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 60
- Nets
- 78
- Pads
- 261
- Tracks, vias
- 494, 113
- Pours
- 10
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 29 Sep 2023
- Updated
- 27 Mar 2025
Overview
Nema23Driver is an open-source printed circuit board by neatstranger, from the neatstranger/Dagerro repository on GitHub. It is a 4-layer board of 56.4 × 56.4 mm with 60 parts on 78 nets, routed with 494 tracks and 113 vias.
It is built around the RP2040, MT6701CT-STD-R and TPS54360BDDAR, with the W25Q128JVSIQ TR, SM03B-SRSS-TB(LF)(SN)(P) and B560C-13-F-MS among its other parts. Its parts include 26 capacitors, 11 resistors, 8 ICs, 2 connectors and 2 switches. It belongs with the RP2040 boards of this library.
Main components
10RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)MT6701CT-STD-R
SOP-8-40℃~+125℃ 0°~360° 1.75mm 10mA 3.3V~5V 3.9mm 5mm I2C、SSI Magnetic rotary position sensor No Programmable transmission、Zero position programming、Fault diagnosis SOP-8 Position Sensors ROHSNOVOSENSEPosition SensorsTPS54360BDDAR
SOIC-8-EP-40℃~+150℃@(TJ) 1 146uA 2.5MHz 3.5A 4.5V~60V 800mV~58.8V Adjustable Buck Buck Built-in No SOIC-8-EP DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersW25Q128JVSIQ TR
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware Write Protection、Software Write Protection、Write enable latch、Absolute Write Protection、Power lock protection SPI SOIC-8-208mil NOR FLASH ROHSWinbond ElecNOR FLASHSM03B-SRSS-TB(LF)(SN)(P)
-- Lack of specifications ROHSJSTUncategorisedB560C-13-F-MS
SMC-65℃~+125℃ 1 Independent 175A 500uA@60V 5A 60V 850mV@5A SMC Schottky Diodes ROHSMSKSEMISchottky DiodesDS-08BLP
插件,P=2.54mm-20℃~+70℃ 2.54mm 24V 25mA 3,000 Cycles 8 Blue PC Pin SPST Slide, Rocked 插件,P=2.54mm DIP Switches ROHSXKB ConnectionDIP SwitchesFXL1040-8R2-M
SMD,11.5x10mm27mΩ 8.2uH 8A 9A Molded inductor ±20% SMD,11.5x10mm Molding Power Inductors ROHScjiangPower InductorsR-RJ45R10P-B000
弯插0℃~+70℃ 1 13.35mm 15.8mm 18.4mm Gold Harpoon Contact (Plastic) Non-LED Non-PoE Phosphor Bronze RJ45 Jack Right Angle Shielded Push-Pull Ethernet Connectors / Modular Connectors (RJ45 RJ11) ROHSCkmtwEthernet Connectors / Modular Connectors (RJ45 RJ11)SRE-24VDC-SL-2C
插件,22.6x17mm1.28kΩ 100mΩ 10ms 10ms 2 Form C: 2C (DPDT-CO) 24V 250V@AC 450mW 5A 8 Non-Polarized - Single Coil 插件,22.6x17mm Power Relays ROHSNingbo Songle RelayPower Relays
README
README.mdDagerro
The first known attempt at astronomical photography was by Louis Jacques Mandé Daguerre, inventor of the daguerreotype process which bears his name, who attempted in 1839 to photograph the Moon. Tracking errors in guiding the telescope during the long exposure meant the photograph came out as an indistinct fuzzy spot. Source
Guide Timing
Some notes for myself as well as anyone reading. We need to move the steppers about 8 times per second and the Real Time Clock(RTC) doesn't allow for time resolution greater than 1 second. The RTC(DS3231) outputs 32,768 pulses per second on the 32K pin. We attach an interrupt to that pin with the following line.
attachInterrupt(digitalPinToInterrupt(interruptPin), countCycles, CHANGE);
Note the use of the CHANGE for activation. This means that we will capture one interrupt for each rise, and one for each fall.
With our second now divided up into 65,536 segments.
1 Degree = 60 ArcMinutes
1 ArcMinute = 60 ArcSeconds
1 Degree = 3600 ArcSecondsHow fast does the earth rotate? My previous assumption of 1ArcSecond/Second is wrong. Let's do the math.
360° = 24 Hours
15° = 1 Hour or 60 Minutes or 3600 Seconds
1° or 3600 ArcSeconds = 4 Minutes or 240 Seconds
Math = 3600(ArcSeconds-Angle)/240 (Seconds-Time)
15 ArcSeconds(Angle) = 1 Second(Time)The arduino receive exactly 1,658,880 pulses every 25.3125 seconds. During this period of time, we need to take exactly 1500 steps.
python function to solve the problem.
x = 1
maxcount = 1500
xmult = 1105
ymult = 1107
while x <= maxcount:
y = maxcount - x
if (xmult*x)+(ymult*y) == 1658880:
print(x)
print(y)
print((xmult*x) + (ymult*y))
x+=1I used this script, changing the values for xmult and ymult, until I got a result that looks like this:
810
690
1658880Which means that if we take a step every 1105 interrupts, 810 times. Followed by taking a step every 1107 interrupts, 690 times. We will have taken 1500 steps in exactly 25.3125 seconds.
1500 Steps * 0.253125 ArcSeconds Per Step = 379.6875 ArcSeconds
379.6875 ArcSeconds / 25.3125 Seconds
15 ArcSeconds / SecondParts
60| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 0.1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C11, C12, C15, C16, C17, C20, C21, C22, C23, C24, C25, C26 |
| 4 | 5k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R8, R9, R10, R11 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_5.3mm_M5 | H1, H2, H3, H4 |
| 2 | 10K | Resistor_SMD:R_0805_2012Metric | TH1, TH2 |
| 2 | 15p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C13, C14 |
| 2 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5, R7 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C18, C19 |
| 2 | 2.2u | Capacitor_SMD:C_1206_3216Metric | C1, C2 |
| 2 | 47u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C6, C7 |
| 2 | Conn_01x03_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J1, J2 |
| 1 | 0.022u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8 |
| 1 | 0.22u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C9 |
| 1 | 0.47u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C10 |
| 1 | 10.2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4 |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6 |
| 1 | 13k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2 |
| 1 | 162k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 31.6k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3 |
| 1 | 39p | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C5 |
| 1 | 6800p | Capacitor_SMD:C_1206_3216Metric | C4 |
| 1 | ABM8-272-T3_C20625731 | PARTS:CRYSTAL-SMD_4P-L3.2-W2.5-BL | U5 |
| 1 | AO3400_C2938367 | PARTS:SOT-23_L2.9-W1.3-P1.90-LS2.4-BR | Q1 |
| 1 | B560C-13-F | PARTS:SMC_L7.1-W6.2-LS8.1-RD | D1 |
| 1 | DRV8434SPWPR | PARTS:HTSSOP-28_L9.7-W4.4-P0.65-LS6.4-BL-EP-5 | U2 |
| 1 | DS-08BLP | PARTS:SW-TH_16P-L21.9-W9.9-P2.54-LS7.6 | SW1 |
| 1 | FXL1040-8R2-M | PARTS:IND-SMD_L11.5-W10.0_FXL1040 | L1 |
| 1 | MT6701CT-STD-R | PARTS:SOP-8_L4.9-W3.9-P1.27-LS6.0-BL | U4 |
| 1 | PTVS6V0S1UR_C18723426 | PARTS:SOD-123_L2.7-W1.6-LS3.7-RD | U3 |
| 1 | R-RJ45R10P-B000 | PARTS:RJ45-TH_R-RJ45R10P-B000 | RJ1 |
| 1 | RP2040 | PARTS:LQFN-56_L7.0-W7.0-P0.4-EP | U6 |
| 1 | SM03B-SRSS-TB(LF)(SN)(P) | PARTS:CONN-SMD_SM03B-SRSS-TB-LF-SN-P | U8 |
| 1 | SRE-24VDC-SL-2C | PARTS:RELAY-TH_SRE-12VDC-SL-2C | K1 |
| 1 | Stepper_Motor_bipolar | PARTS:CONN-TH_DB125-2.54-4P-GN | M1 |
| 1 | TPS54360BDDAR | PARTS:SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL-EP2.0 | U1 |
| 1 | W25Q128JVSIQTR | PARTS:SOIC-8_L5.3-W5.3-P1.27-LS8.0-BL | U7 |
More from neatstranger/Dagerro
5- 2 layers177.8 × 127 mm

- 4 layers194.1 × 115.6 mm

- 2 layers

- 2 layers35.6 × 33 mm

- 2 layers35 × 30 mm

Similar boards
- 6 layers80.9 × 63 mm

- 4 layers120 × 130 mm

- 2 layers30 × 30 mm

- 4 layers449.2 × 272.9 mm

Board v4 pre v5
lolz0r/Williams-WPC-Power-Driver-Board-A-12697-3
Untested, unverifed, AI created design.
415 parts2 - 4 layers180 × 160 mm

PCE colorlight carrier
supermomo31/PCE_colorlight_carrier
console PCE depuis un FPGA format SODIMM : colorlight i5
258 parts - 2 layers42 × 15 mm

Throttle Module
ninemind/aeromax-throttle-module
Unofficial, open-source DIY throttle module for the VIRPIL CDT-AEROMAX, with 3D-printable parts, KiCad PCB files, and assembly documentation.
7 parts3CERN-OHL-S-2.0 - 4 layers100 × 100 mm

Amod b
gallicchio/AMOD-and-RFMOD
The tutorial's 2x12 adapter (/mudd/133electronics/icepi-zero-dac-adc/adapterboard/) with a 2 x 6 right-angle Pmod socket on a 15 mm extension of its right-hand end, so an Icepi Zero can drive AMOD-A's and RF-MOD's Pmod…
147 parts - 6 layers100 × 53.8 mm

Questions
How big is the Nema23Driver PCB?
It measures 56.4 × 56.4 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Nema23Driver use?
60 parts, built around the RP2040, MT6701CT-STD-R, TPS54360BDDAR and W25Q128JVSIQ TR. 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 Nema23Driver KiCad files?
From the neatstranger/Dagerro repository on GitHub, at the commit this page was made from: the board is Electronics/Nema23Driver/Nema23Driver.kicad_pcb and its schematic Electronics/Driver/Driver.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Nema23Driver design in my own project?
Its repository states no licence, so its author keeps all rights: ask neatstranger before reusing the design.