FASTLED_clock_ALL_feed_V6_2023_01_22_FINAL_ONLY_CLOCK DOWNLOAD ARDUINO PROGRAM FILE
Xmas star door/ window hanger Arduino nano and WS2812 LEDS with LDR
The latest arduino code WITH LDR is HERE:
The LDR is to be soldered between A0 and GND.
The data output is D5 and this must be connected to Data-in of the WS2812 (B) string. 5V and GND goes to the power source, which is also connected to the Arduino Nano.
The STL file for the star parts is HERE. Print this x5 in semi-transparant white.
The small Xmas- star measures 50cm in diameter from left- tip to right-tip. I printed it with glow in the dark ABS, white. It glows in very faint green, it is just enough to glow a little and keeps your eyes focused on the star when it is not lit.
If you make the star legs watertight with silicon sealant, the star can easily be attached to an outside wall, door or fence.
ou can use a long 3-wire cable between the Nano and the Xmas star to keep the electronics mounted inside the house and the star outside, or as I did: hang the star inside, in front of any window. I have the star hanging in my front door window, which gives amazing effect due to the non-transparant glass.
The programming can be altered to make the light effects behaviour any way you like. I usually have a non-stroboscopic fluent scene running.
You need to print 5 star points, feed the LEDs through them and then have the wires come out somewhere. You can glue the points together with hotglue or transparent silicone sealant after assembly and testing.
If you don’t have the Arduino IDE yet, download the app from the Microsoft website (Arduino IDE) nor from the Arduino cummunity forum.
Make sure you download my Arduino code and open it with the Arduino IDE APP. Probably the APP will have to move the arduino INO file to a new directory but that should do the trick. If not, start the Arduino app, open my code in notepad and copy/paste it as fully new code into Arduino: Replace the example code that automatically opens when you open the Arduino program/app with my code. Save it and rum it to see wether you need to add any library. For adding libraries, find general help in the Arduino forum. In my code, you can find the names of the required libraries.
In the Arduino IDE select the right microprocessor (Arduino Nano). Then select the correct processor version (large or small memory) and the old or new bootloader. These choices depend on the type of Nano you bought or still had lying around. Then you choose the right port (USB) for your Nano.
To test if you have connection between IDE and Nano , you can ask if the Arduino IDE can read your Nano. Only then you can start loading the Nano with the complicated program.

The Arduino programming file is HERE.
The latest arduino code WITH LDR is HERE:
The STL file for the big star is HERE.
Afterthougts: I also made circular designs, dual oval crossing designs and a lot of designs that I tied to existing shapes like a steel star, some Xmas animals and so on. The light design I made varies per application, A star typically requires a specific design due to its shape. A cicular design needs more of a scattered design and a straight string or a balcony-wrapped design all require specific patterns of LED programs.
I will also try to implement an auto-scanner in the setup part of the code to identify the number of LEDS that is used, since this is required to get good petterns to the string used. (set NUMPIXELS automatically)
Mamiya RZ67 downloads
RZ67_Pro_v4 original user manual
Mamiya-RZ67-pro- repair_manual
A complete Mamiya RZ67 Pierre-Gilles guide to the Mamiya RZ67 Pro part one deep system overview
A complete guide to the Mamiya RZ67 part two film holder system
A complete guide to the Mamiya RZ67 part 3 lenses filters and accessories
A complete guide to the Mamiya RZ67 part 4 maintenance and miscellaneous accessories
A complete guide to the Mamiya RZ67 part 5 conclusion and Pierre Gilles’s personal stories
Mamiya_RZ67_AE_Prism_Finder_II_Product_Sheet
Mamiya_RZ67_AE_Prism_Finder_Product_Sheet
Mamiya RZ67 Pro II Electrical Contact Cover
Mamiya RZ67 Teleconverter 1.4x
Mamiya_RZ67_140mm_Macro_MLA_Product_Sheet
Mamiya_RZ67PRO IID_Instructions
Mamiya RZ67 Pro II Instructions
mamiya_rz67_250_apo_lens_repair_diagram
mamiya_rz67_37mm_fisheye_lens_repair_diagram
Mamiya-RZ67-repair-manual-part1
Mamiya-RZ67-repair-manual-part2
Mamiya_RZ67_Z_Interchangeable_Lenses_Product_Sheet
Pierre Gilles’s emulsive pages
Description Leaf_Raw_Converter_1_2_6 PDF only
Leaf_Raw_Converter_1_2_6_installer_PC ZIP_file
STL files RZ67 CAPS, and a lot more for 3D printing
Circular clock WS2812 & Arduino nano
LEES DIT ARTIKEL IN HET NEDERLANDS
In the above video you see all required parts for the elctronics. An arduino Nano, a time module LS3231 with battery back-up and a 4-parts ring each with 15 WS2812 LED’s that provide a 160mm 60 LED units clock. You can build it as an open built unit as shown above with wire strings or in a 3d printable slim case that I developed. See the pictures below.
For building this nice precise clock, you can use my design files for the housing on any 3d printer that has a horizontal bed size of at least 165x165mm.
Grab both the print STL’s . HERE. from the Prusa shared site where I uploaded these designs. (If the link breaks, search on the prusa site for ws2812 circular arduino clock).
OR get the STL file for the clock’s FRONT from my website HERE
AND get the STL file for the clock’s REAR from my website HERE
One STL is for the rear and includes the Nano box, the other is for the front face of the clock. Position the rear STL 180 degrees (so up goes down) in your slicer, so both the box and the LED housing are at Z-0 level, i.e. facing down at the same horizontal level. The front can best be printed with the flat side down. ABS is not recommended since it has less stiffness, but will probably also work. For me PETG or PLA works best.
Use white filament for the front part, the rear can be any color you like.
In the circle the 4 WS2812 LED segments are positioned in 1 full circle of about 160mm.
Once you have the rear electronics connected, the front will slide snug over it. No glue required. But the LED ring can best be glued in 4 places with a drop of hotglue to the base of the rear housing. Best to do this after you are sure everything works OK.
The LED parts are available on a.o. banggood , aliexpress and so on, search for 60LED circle WS2812 that has the 160 mm outer diameter.
Each LED represents a dot either for seconds, minutes or as hour indicator.
The colors detemine the function. Blue is also used as Quarter indicator with less intensity, to have a feeling of positioning for the other LEDS when it is dark.
Please look at the video above of the ‘open’ demo model to understand how it works.
Below you can find the Arduino code for the used Nano3, as-is. it works for me, and in the code you will also find all required electrical connections and the used Time module’s spec.
When connected to your PC, you can program the Arduino and via the serial interface you can afterwards change special settings of the clock like brightness, special quarter dimlit indicators, et cetera. it’s all in the code below.
The controls can be sent via a serial interface with the usb input of the Arduino, via a terminalprogram like YAT or with the Arduino IDE program’s interface.
The commands are:
- f; fader OFF
- F; fader ON
- m (number); dim the 4 blue marker LED’s with value (number)
- S; sync to RTC time
- s; sync to System time (computer)
- t (time); change system time to:
- b; brightness of all non-marker LEDs
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
Hope you will have a good build!
Cheers,
jan
The Arduino code, to be used for programming the Arduino Nano3 is available at the bottom of this post as plain text to be imported in an empty arduino file (with copy and paste).
Take care to use only the libraries and time module that are specified in the code! The used time module is of the better generation that holds the time very well, also on standby.
When connecting the wires between the neopixel segments, the arduino and the time module, use a temperature-regulated soldering tool. Use a fan when you are soldering and don’t inhale the toxic gases while soldering.
The Arduino code is shown below, to be imported in Arduino in an .ino file. With Arduino, you must compile the code to get the Arduino flashed with the program. If you want to do this easier, you can make use of the binary file I already compiled for both Arduino nano versions (with full memory and with half memory). Both Arduino nano types will be OK to use for this build, but they each require specific firmware.
The last part of this post is the Arduino program for the clock:
/**
* NeoClock
*
* Clock using 60 WS2812B/Neopixel LEDs and DS3231 RTC
* Small changes and updates made by jan Griffioen, Amsterdam Europe 2018-2021
* Libraries needed:
* * Adafruit NeoPixel (Library Manager) – Phil Burgess / Paint Your Dragon for Adafruit Industries – LGPL3
* *
* * Arduino Timezone Library (https://github.com/JChristensen/Timezone) – Jack Christensen – CC-BY-SA
* * Time Library (https://github.com/PaulStoffregen/Time) – Paul Stoffregen, Michael Margolis – LGPL2.1
*/
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#if defined(ESP8266)
#include <pgmspace.h>
#else
#include <avr/pgmspace.h>
#endif
/* for software wire use below
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
#include <RtcDS3231.h>
SoftwareWire myWire(SDA, SCL);
RtcDS3231<SoftwareWire> Rtc(myWire);
for software wire use above */
/* for normal hardware wire use below */
#include <Wire.h> // must be included here so that Arduino library object file references work
#include <RtcDS3231.h>
RtcDS3231<TwoWire> Rtc(Wire);
/* for normal hardware wire use above */
#include <TimeLib.h> //http://www.arduino.cc/playground/Code/Time
#include <Timezone.h> //https://github.com/JChristensen/Timezone
#include <EEPROM.h>
//Central European Time (Frankfurt, Paris)
TimeChangeRule CEST = {“CEST”, Last, Sun, Mar, 2, 120}; //Central European Summer Time
TimeChangeRule CET = {“CET “, Last, Sun, Oct, 3, 60}; //Central European Standard Time
Timezone CE(CEST, CET);
TimeChangeRule *tcr; //pointer to the time change rule, use to get the TZ abbrev
time_t utc;
#define PIN 5
unsigned long lastMillis = millis();
byte dimmer = 0x88;
byte hmark = 0;
byte ohour=0;
byte ominute=0;
byte osecond=0;
boolean fader=true;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(57600);
strip.begin();
strip.setBrightness(50);
// Some example procedures showing how to display to the pixels:
// colorWipe(strip.Color(255, 0, 0), 50); // Red
//colorWipe(strip.Color(0, 255, 0), 50); // Green
//colorWipe(strip.Color(0, 0, 255), 50); // Blue
//colorWipe(strip.Color(0, 0, 0, 255), 50); // White RGBW
// Send a theater pixel chase in…
//theaterChase(strip.Color(127, 127, 127), 50); // White
theaterChase(strip.Color(127, 0, 0), 50); // Red
//theaterChase(strip.Color(0, 0, 127), 50); // Blue
//rainbow(20);
rainbowCycle(2);
//theaterChaseRainbow(50);
strip.clear();
strip.show(); // Initialize all pixels to ‘off’
Rtc.Begin();
Rtc.Enable32kHzPin(false);
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);
if (!Rtc.GetIsRunning())
{
Serial.println(“Rtc was not actively running, starting now”);
Rtc.SetIsRunning(true);
}
if (!Rtc.IsDateTimeValid())
{
// Common Cuases:
// 1) the battery on the device is low or even missing and the power line was disconnected
Serial.println(“Rtc lost confidence in the DateTime!”);
}
byte eechk = EEPROM.read(0);
if(eechk == 0xAA) { //Assume this is our config and not a fresh chip
dimmer = EEPROM.read(1);
hmark = EEPROM.read(2);
fader = EEPROM.read(3);
}
timeSync();
}
void calcTime(void) {
utc = now();
CE.toLocal(utc, &tcr);
ohour = hour(utc);
ominute = minute(utc);
if(osecond != second(utc)) {
osecond = second(utc);
lastMillis = millis();
if(ominute == 0 && osecond == 0) {
//Every hour
timeSync();
}
}
}
void addPixelColor(byte pixel, byte color, byte brightness) {
color *= 8;
uint32_t acolor = brightness;
acolor <<= color;
uint32_t ocolor = strip.getPixelColor(pixel);
ocolor |= acolor;
strip.setPixelColor(pixel, ocolor);
}
void drawClock(byte h, byte m, byte s) {
strip.clear();
addPixelColor(m, 1, dimmer);
if(hmark > 0) {
for(byte i = 0; i<12; i++) {
addPixelColor((5*i), 2, hmark);
}
}
h %= 12;
h *= 5;
h += (m/12);
addPixelColor(h, 2, dimmer);
// 0x RR GG BB
if(fader) {
byte dim_s1 = dimmer;
byte dim_s2 = 0;
byte px_s2 = s+1;
if(px_s2 >= 60) px_s2 = 0;
unsigned long curMillis = millis()-lastMillis;
if(curMillis < 250) {
dim_s2 = 0;
dim_s1 = dimmer;
}else{
dim_s2 = map(curMillis, 250, 1000, 0, dimmer);
dim_s1 = dimmer – map(curMillis, 250, 1000, 0, dimmer);
}
// Add blue low intensity dots for 12(0),3, 6 and 9 O’çlock to verify where the clock is positioned..
addPixelColor(15, 128, 10);
addPixelColor(30, 128, 10);
addPixelColor(45, 128, 10);
addPixelColor(0, 128, 40);
addPixelColor(s, 0, dim_s1);
addPixelColor(px_s2, 0, dim_s2);
}else{
addPixelColor(s, 0, dimmer);
}
// add a background color
// setBrightness(Serial.parseInt());
// uint16_t j;
// for(j=0; j<60; j++) { // 1 cycles of colors on wheel
// strip.setPixelColor(j, Wheel(((j * 256 / strip.numPixels()) + j) & 255));
// }
strip.show();
}
byte rounds = 0;
void loop() {
calcTime();
if(rounds++ > 100) {
Serial.print(ohour);
Serial.print(“:”);
Serial.print(ominute);
Serial.print(“:”);
Serial.print(osecond);
Serial.println(“(C)JG-2020”);
rounds = 0;
}
//rainbow(21);
if (osecond == 59){theaterChase(strip.Color(0, 0, 127), 40); }// Blue; }
//if (ominute == 59 AND osecond == 59){theaterChase(strip.Color(0, 127, 0), 50); }// Green}
//if (ohour == 11 AND ominute == 59 AND osecond == 59){theaterChase(strip.Color(127, 127, 0), 50); }// Green}
else {drawClock(ohour,ominute,osecond);}
delay(10);
chkSer();
}
void timeSync(void) {
RtcDateTime dt = Rtc.GetDateTime();
setTime(dt.Hour(),dt.Minute(),dt.Second(),dt.Day(),dt.Month(),dt.Year());
Serial.print(“Synced to: “);
Serial.print(dt.Year());
Serial.print(“-“);
Serial.print(dt.Month());
Serial.print(“-“);
Serial.print(dt.Day());
Serial.print(“-“);
Serial.print(dt.Hour());
Serial.print(“-“);
Serial.print(dt.Minute());
Serial.print(“-“);
Serial.println(dt.Second());
}
void timeSave(void) {
utc = now();
RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));
Rtc.SetDateTime(store);
Serial.print(“Synced to: “);
Serial.print(year(utc));
Serial.print(“-“);
Serial.print(month(utc));
Serial.print(“-“);
Serial.print(day(utc));
Serial.print(“-“);
Serial.print(hour(utc));
Serial.print(“-“);
Serial.print(minute(utc));
Serial.print(“-“);
Serial.println(second(utc));
}
void setBrightness(byte brightness) {
dimmer = brightness;
}
void chkSer(void) {
unsigned int iy;
byte im,id,iH,iM,iS;
if(!Serial.available()) return;
switch(Serial.read()) {
case ‘b’:
setBrightness(Serial.parseInt());
Serial.print(F(“Brightness changed to: “));
Serial.println(dimmer);
EEPROM.put(0, 0xAA);
EEPROM.put(1, dimmer);
break;
case ‘t’:
iy = Serial.parseInt();
im = Serial.parseInt();
id = Serial.parseInt();
iH = Serial.parseInt();
iM = Serial.parseInt();
iS = Serial.parseInt();
setTime(iH,iM,iS,id,im,iy);
Serial.println(F(“System time changed”));
break;
case ‘f’:
fader = false;
EEPROM.put(0, 0xAA);
EEPROM.put(3, 0);
Serial.println(F(“Fader off”));
break;
case ‘F’:
fader = true;
EEPROM.put(0, 0xAA);
EEPROM.put(3, 1);
Serial.println(F(“Fader on”));
break;
case ‘m’:
hmark = Serial.parseInt();
EEPROM.put(0, 0xAA);
EEPROM.put(2, hmark);
Serial.println(F(“HMark changed”));
break;
case ‘s’:
timeSync();
Serial.println(F(“Synced RTC to System”));
break;
case ‘S’:
timeSave();
Serial.println(F(“Synced System to RTC”));
break;
default:
Serial.println(‘?’);
}
}
// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 25));//255
}
strip.show();
delay(wait);
}
}
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<4; j++) { //do 4 cycles of chasing
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();
delay(wait);
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}
//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on
}
strip.show();
delay(wait);
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r – g – b – back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 – WheelPos;
if(WheelPos < 85) {
return strip.Color(255 – WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 – WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 – WheelPos * 3, 0);
}
STL files for Minimill WMD16LV CNC conversion direct drive CNC adapters downloads with NEMA23 steppers
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
Click on the URL(s) to download the appropriate STL-file(s)
MINIMILL_BF16L CNC_Y_adapter direct 2022_07_25_V1_5-jantec.nl
MINIMILL_BF16L CNC_X_adapter direct drive 2022_07_25_V1_5-jantec.nl

MINIMILL_BF16L CNC_Z_adapter direct drive 2022_07_25_V1_5-jantec.nl
Minimill CNC conversion WMD16LV Z-axis adapter for NEMA23 direct drive
While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.
DOWNLOAD:
MINIMILL_BF16L CNC_Z_adapter direct drive 2022_07_25_V1_5-jantec.nl
I am therefore also making direct drive adapter parts, to try this out.
This is the third piece I make for direct drive, for the Z-axis.
This pice is fairly simple: First a good fit is needed to mount the adapter to the top of the Z-column, and the holes for the 4 bolts need to be acactly correct. Also, the same for the leadscrew hole of the bearing holder.
Then, on top of this, the Nema23 holder/mounting is projected. Including all needed boltholes, nutholes and a side hole for tightening the coupler.
The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 10mm for Z. The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.
If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be placed in the coupler. If the thread is too long, grind some off.
Then, put the rubber (with centerhole) back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.
Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler. Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!
Should you want to have a handwheel as well, this is possible but you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.]
GOTO the X-axis Direct Drive adapter
GOTO the Y-axis Direct Drive adapter
Minimill CNC conversion WMD16LV X-axis adapter for NEMA23 direct drive
While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.
DOWNLOAD:
MINIMILL_BF16L CNC_X_adapter direct drive 2022_07_25_V1_5-jantec.nl
I am therefore also making direct drive adapter parts, to try this out.
This is the second piece I make for direct drive, for the X-axis.
The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 8mm. The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.
If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be placed in the coupler. If the thread is too long, grind some off.
Then, put the rubber (with centerhole) back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.
Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler. Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!
Should you want to have a handwheel as well, this is possible but you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.
GOTO the Direct Drive Y-axis adapter
GOTO the Direct Drive Z-axis adapter
DOWNLOAD the latest version of the STL printfiles
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
Minimill CNC conversion WMD16LV Y-axis adapter for NEMA23 direct drive
While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.
DOWNLOAD:
MINIMILL_BF16L CNC_Y_adapter direct 2022_07_25_V1_5-jantec.nl
I am therefore also making direct drive adapter parts, to try this out.
This is the first one, starting with the most difficult one. The rest will be added soon.
Version 1.2 which is 15 mm shorter and much more robust:
The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 8mm. The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.
If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be place in the coupler. If the thread is too long, grind some off.
Then, put the rubber (with centerhole) back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.
Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler. Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!
Should you want to have a handwheel as well, you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.
OR- my latest design works a bit different: first put a couple of 10mm rings on the leadscrew’s 10mm axle, and then screw a threaded RVS tube with an outer diameter of 12mm, 25 mm long and internal 8mm thread on the axle. This goed into a 12 to 8mm coupler and this coupler connects to a NEMA23 stepper motor with an 8 mm axis. It does get a bit lengthy but it works very well. Just threadlock the RVS threaded tube to the leadscrew’s 8mm threaded end and it will run OK!
This is the last version, based on the above setup:
GOTO the Dirext Drive X-adapter
GOTO the Direct Drive Z-adapter
DOWNLOAD the latest version of the STL printfiles
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
CNC conversion of my Toolmania WBM16LV (TM BF 16) mill with NEMA23 steppers, 3dprinted adapters, teethed wheels and teethed belts
Before My Toolmania WBM16LV milling machine was delivered I already had plans to convert it to a CNC milling machine.
I do have some experience with 3d printing, and I have 2 CNC routers up and running, like the Indymill. So, the conversion of this mill will not be difficult in the Technical sense. But- making the perfect designs for the adapter plates of the Y- and X- axes proved to be a lot more work than I expected.
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
The column cutter is already equipped with glass scales with digital readout. Furthermore, there is a gas spring mounted on the Z-column so that not all the weight is in the way when moving back and forth. Also an automatic lubrication system for the slides of X, Y and Z-axis will be mounted.)
DOWNLOAD ALL MY CNC TEETHED ADAPTER DESIGNS as .STL files
The electronics will become OpenCNC + wifi + wireless controlbox. I received the kit and will put it together the coming weeks. For now I am going to set the mill up with my all-in one USB-CNC-MDK2 board. I use this for all of my routers and mills to get it set up in first instance since it is very simple and sturdy. And- you can run it instantaniously without any PC or programming, just with the handwheel or from SD card. And from the laptop, of course.
DOWNLOAD MY CNC ADAPTER DESIGNS as .STL files
LATEST NEWS:
After this all worked well, I also made designs for NEMA direct drive adapters on my Toolmania MiniMill:


Above: Direct drive adapter for the Z-axis

What makes it tricky is the choice to make: Will I replace the spindles with ball bearing spindles or not? Not for the time being, first let’s make everything on CNC and then I’ll see how it performs.
Minimill CNC conversion WMD16LV Z-axis adapter for NEMA23 and M3 teethed belt
New stronger version V2 made, also including a top cover 2025,04-24. Will update with pictures after install on the minimill.
MINIMILL_BF16L CNC_Z_adapter belt driven 2025_05_24_V2 Jantec.nl
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download
:

The mount on the Z-column needed to get UP so the NEMA23 teethed wheel gets at the same level as the wheel that is mounted on the leadscrew.
Required hardware:
- 3d printed Z-axis adapter
- Nema23 stepper 76 mm length with enough torque, 8mm axle diameter
- 48teeth M3 teethed wheel of 11mm width, 10mm hole with collar for the leadscrew
- 24 teeth M3 teethed wheel 11mm width , 8mm hole with collar for the Nema23 stepper motor
- new M6 40mm length bolts flathead for the top connection to the Z column
- 4 bolts and nuts M5 to mount the Nema 23 stepper
- teethed belt 300mm M3 (100 teeth) 9 or 10mm
OR, use the 72 teethed wheel on the leadscrew and get a larger length belt of (I estimate) 330-350 mm
OR.. another way to mount the Nema23stepper is at the rear of the Z column, BUT I don’t want it to stick out at the rear, that’s why I decided to mount the stepper at the left of the Z-column…

DOWNLOAD THE CNC ADAPTER DESIGNS as STL
Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download