• How do I power this drive?

    Jacob Hahn01/20/2023 at 18:42 0 comments

    In my last log, I discussed how I could design a USB 5.25-inch floppy drive using a Raspberry Pi Pico or a similar RP2040 board, along with a 3D printed enclosure, but one of the challenges I discovered was powering the drive over a USB cable. A 5.25-inch drive requires both 5V and 12V inputs to function, and according to this datasheet can use a maximum of 9.28W of power. The USB 3.1 specification only supports 4.5W of power at 5V, so even if I were to step the voltage up, the USB port couldn't provide enough power to run the drive under seek, read, or write conditions. My proposed solution was to have separate power and data ports, but that would need an external 12V power adapter and a wall outlet, making the drive less accessible. The goal here is to use a single port to power the drive and transfer data.

    Luckily, USB ports that provide enough power do exist and are found on many computers in the form of USB-C ports with Power Delivery. These PD ports can support up to 100W or higher, and could be the perfect way to power the drive and transfer data at the same time. Both laptops I own are fitted with these ports and more devices are beginning to support them.

    The bigger challenge here is now figuring out how to implement USB-C PD into my project. The PD specification is complicated, and I've done little research into it in the past. To choose a power level the two devices have to communicate, so implementing PD is more advanced than just setting some resistors values and requires a controller chip. Making a PD board myself would take a lot of research and time that I don't have, but luckily Sparkfun makes a board that does exactly what I need. Unfortunately, it's out of stock and looks like it will be for months, and I can't seem to find any other board that has PD and breaks out the USB 2.0 data lines. So, as a temporary solution, I'm going to rig together some breakout boards and adapters to hopefully get a test unit working.

    Firstly, I'll use a female to male USB C cable to provide a USB C input port, which will then connect to a USB C breakout board with passthrough. I'll plug a 15V USB PD trigger into the passthrough port, from which I'll use a stepdown to 12V and 5V. Why 15V? 12V is optional on PD, but 15V is standard, so 15V is much more likely to work consistently. With the breakout pins, I'll connect the USB 2.0 data pins to the USB port on the Pico (probably by cutting up an old Micro USB cable), with the 5V from the stepdown for USB power. The 12V and 5V power rails will also be used to power the floppy drive itself.

    This setup is a lot of different parts and is therefore slightly expensive and prone to failure, but it should work as a test until I can find a better option that's in stock. I may also choose new parts or change the design before I implement it, but that's the rough idea.

    As I am a college student, it might take me a while to design and iterate my ideas here, but I'll write another project log when I hopefully make some good progress.

  • Floppy Drive Experiments

    Jacob Hahn12/18/2022 at 22:31 0 comments

    Last summer, I was doing some research on how I could connect a floppy drive to a computer over USB, and I ran into a couple of interesting projects. The first is David Hansel's ArduinoFDC, which allows an Arduino Uno to control a floppy drive. This design is technically USB connected, but not exactly what I'm looking for. How it works is that it you operate the drive over a serial terminal, manually giving it commands to write or read. You can also use the XModem protocol to send or receive larger amounts of data, like a disk image. I actually got this software to work with a 3.5" drive, a 5.25" drive, and even an 8" drive (but not really).

    ArduinoFDC is very cool, but I'm looking to create a device that acts like a USB-connected 3.5" floppy drive, in the sense that it shows up on your computer similarly to a USB drive or some other form of removable storage. As far as I know, the Arduino UNO itself doesn't support this functionality. So, onto a different solution.

    I then came across Adafruit's Adafruit Floppy library. This looks closer to what I need. Making use of a microcontroller that can present itself as a mass storage device, such as an RP2040, it can act like a regular USB 3.5" floppy drive, as seen here, and could also be connected to a 5.25" drive and potentially even an 8" drive.

    If I were to create a USB 5.25" drive, I would most likely end up using the Adafruit Floppy library and a RP2040, and 3D print an enclosure for it to make it an all-in-one unit. The one issue would be powering the drive, as 5.25" drives use a 12v line along with the 5v line, and so powering it from just a USB port wouldn't be possible. I would probably just have power and data separate, using a 12v barrel jack power supply input for power (internally stepped down to 5v) and a USB cable for data.

    Unfortunately, while I do have a plan in place, I don't have the time to continue with this project right now, and so I'm marking it as "shelved". However, I plan on pursuing it in the future, so keep an eye out!