Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

working on a floppy music design project, and we intend to use 32 floppies for t

ID: 3599991 • Letter: W

Question

working on a floppy music design project, and we intend to use 32 floppies for the design.To control a floppy drive, we need three signals to feed into the floppy drive. The first signal, /STEP, will be a square wave at a certain frequency to play that note. The second signal, /DIR, controls the direction the head moves.The third signal, /EN, turns the floppy drive and it’s LED.

I'm looking for ways to reduce the number of wires required to control the floppies through logical or analog circuitry. will love to reduce the number of wires on each floppy from 3 wires to possibly 2 or 1. This reduction will increase the number of floppies on a microcontroller, thereby minimizing cost of production. I'm looking into the possibilities of using a 555 timer IC or a frequency divider. Any ideas ideas with circuitry will be greatly appreciated.

Basically the FPGA/microcontroller will control which floppy drive will play what note. The reduction of wires is an attempt to reduce the number of wires required to control the floppy drive by manipulating the square wave (or possibly other wave) fed to the floppy drive.

Thanks very much!

Computer communicates with the FPGA via serial communication. Inside the serial commands is an ID tag. This ID tag tells the FPGA which pin it should pulse. That pin is connected to one floppy drive. Using the RWP(reduced wire protocol) the floppy will then come to life and play the frequency that the FPGA is feeding it. The computer will read the MIDI file which, yes, will tell which floppy to play and at which frequency, but only in software. We have to convert that software into hardware.

Explanation / Answer

Step 1: Prepare your power supply.

Again, it depends on you. You can use any 5-volt power supply available but since an ATX power supply is just lying around the house, it would be pretty convenient to use it here. However, if you just have the power supply (without a motherboard), to activate it you need to short two wires, BLACK andGREEN as shown on the image. Connect these two wires and your power supply is then activated.

Step 2: Determine the needed pins for your floppy drives.

Like what I said earlier, you only need to determine 3 pins to make the floppy drive sing. If you look at the back of your floppy drive you would see these 34 pins. Just check on the image to determine which is pin 1 and so on. The top pins are the even pins the bottom pins are the odd pins which is the ground. The even-numbered pins are activated by grounding them. Basically, computers have up to two floppy drives A and B. Doesn’t really matter which drive you connect your wires to. If you want to set your floppy drive to drive B, then connect wires to pins 12, 11 for the ground. If you want to set your floppy drive to drive A, then connect wires to pins 14, 13 for the ground. But to avoid further complications, just select drive B, pin 12 and 11.

Step 3: Test your floppy drives.

Connect your floppy to your power supply and test the stepper motor. Notice that if you connect your floppy drive to the power supply nothing is happening, that is because you need to connect pins 11 and 12 to activate it. To activate your floppy, you need to permanently connect the drive select pins 11 and 12, so you can go on twist those wires or solder them. You can easily determine if you have the wires connected. Once you connect the wires attached to pins 11 and 12, the light of the floppy drive should turn on.

You can control about 6 low voltage motors under 5v using this code and you adjust the timing for each of them by changing the code, or you can use the led as an output to signal 6 other relay for whatever timing you want. For higher power you might want another power source beside that, pretty simple to do it this way, hope it works for you.

using the Timer1 library:

#include <TimerOne.h>

void test()
{
digitalWrite(5,HIGH);
delayMicroseconds(100);
digitalWrite(5,LOW);
}

void setup()
{
Timer1.attachInterrupt(&test,100000);
}

void loop()
{
}
This will cause digital pin 5 to go high then low once every 100,000µS - you see there is nothing in the main loop at all. Just replace the two digitalWrite() calls with the code to step your motors once. You do not need to specify any inter-step delay in that part of the code - that delay is set by the value of 100000 in the Timer1