360 Degree Platform for Microscope

A platform that can rotate 90 degrees along the X axis, and 360 degrees along the Z axis.
1
2
0
26
updated May 4, 2025

Description

PDF

Inspired by Steve mould's latest video, except the same effect is achieved mechanically rather than with optics.
 


Some 28byj-48 drivers may not fit into the screw holes. If they dont, use super glue to attach.
I suggest using an arduino nano without pins and desoldering IN1 to IN4 on the stepper driver. Solder all wires together instead.

The arduino nano attaches with glue, along with the thin elecronics cover.

When assembling the white screw, drill/ream the hole with 5mm. Hammer in screw with the spacer installed. I used a small amount of CA glue too 

How to use:

1. Record a video of the target doing a 360 degree spin. I suggest leaving a few seconds extra
2. In an editing software, rotate the whole video 360 degrees in the opposite direction to cancel the spin.
3. Add a circular mask (optional)

 Hardware:

  • 28byj-48 Stepper motor
  • 28byj-48 Stepper driver
  • Arduino nano
  • 10k potentiometer
  • 2mm*12mm pin x6
  • m3*6 machine screw x16
    m3*(12 to 20) machine screw x2
  • m3*4 heatset insert x18
     

Wiring:

Potentiometer wiper → A7
IN1 → D8
IN2 → D9
IN3 → D10
IN4 → D11
Connect together all GNDs and VCCs.

Code:

//28byj-48 Controller by Magmabow
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;

const int potPin = A7;


const int steps[8][4] = {
  {1, 0, 0, 0},
  {1, 1, 0, 0},
  {0, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 0},
  {0, 0, 1, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  int potValue = analogRead(potPin); 
  int center = 512;                

  int diff = potValue - center;

  if (abs(diff) < 20) {
    return;
  }


  int direction = diff > 0 ? 1 : -1;
  int speed = map(abs(diff), 20, 511, 10, 1); 

  static int stepIndex = 0;
  stepIndex = (stepIndex + direction + 8) % 8; 

  stepMotor(stepIndex);
  delay(speed);
}

void stepMotor(int stepIndex) {
  digitalWrite(IN1, steps[stepIndex][0]);
  digitalWrite(IN2, steps[stepIndex][1]);
  digitalWrite(IN3, steps[stepIndex][2]);
  digitalWrite(IN4, steps[stepIndex][3]);
}

 

Tags



Model origin

The author marked this model as their own original creation.

License


Highlighted models from creator

View more