L293D and 2 Stepper Motors


I am working on a project where I am replacing a burned out microcontroller that drives 4 stepper motors using 2 x L239D 's
There's no information on the stepper motors. They run on 24 - 30 volts. The steppers have 4 wires. 2 of these 4 wires are common and connect together on all 4 motors. I assume this is ground ?

Somehow they are using the 2 motor outputs on each side of the L293D to make everything happen, forward, reverse, spin per stepper.

I've purchased some shields and 5v stepper motors as testers for this project but I am unable to control a 2 phase/4 wire stepper motor with only 2 pins. ?

Here is a Visio I made, following all the traces I could. The chip in the middle is the microcontroller I am replacing.
The blue lines come from a Master controller down below via SPI.

There is an external 16Mhz crystal is used, too for some reason.

Any idea how they did this?

Are you sure the motors are steppers? As far as I know you need all four 293 outputs to control a stepper, but you can control 2 dc motors from one 293.

Yes, I am sure they are steppers.

I looked again and found some markings and looked them up on Google.

They are:

Stepping Motor
Type 16HY001-18 L1

It turns out to be Smooth Motor.com I found data sheet... Attached.

It says wiring diagram A, that shows 2 coils, I could not make out the firing order.
Or still, how they made this work.

16HY Series2.pdf (277 KB)

I am not sure why, but this code makes things move... Not smooth, but it works...

const int Motor1a = 2;
const int Motor1b = 3;
const int Motor2a = 4;
const int Motor2b = 5;
const int Motor3a = 6;
const int Motor3b = 7;
const int Motor4a = 8;
const int Motor4b = 9;

void setup() {
pinMode(Motor1a, OUTPUT);
pinMode(Motor1b, OUTPUT);
pinMode(Motor2a, OUTPUT);
pinMode(Motor2b, OUTPUT);
pinMode(Motor3a, OUTPUT);
pinMode(Motor3b, OUTPUT);
pinMode(Motor4a, OUTPUT);
pinMode(Motor4b, OUTPUT);

  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Eddiie's test!");

void loop() {
  Serial.println("Step 1");
  digitalWrite(Motor1a, HIGH);
  digitalWrite(Motor1b, LOW);
  digitalWrite(Motor1a, HIGH);
  digitalWrite(Motor1b, HIGH);

  Serial.println("Step 2");
  digitalWrite(Motor1a, LOW);
  digitalWrite(Motor1b, HIGH);

  digitalWrite(Motor1a, LOW);
  digitalWrite(Motor1b, LOW);

You need to show how all the wires on the motor are connected, and find
out the internal winding configuration. Multimeter time.