imqqmi / FloppyControl

DIY project for creating floppy disk images.
GNU General Public License v3.0
48 stars 5 forks source link

add an ADC to enable direct connection to floppy analog test points #9

Open cm68 opened 1 month ago

cm68 commented 1 month ago

every floppy disk has a test pin used to perform drive alignment. this pin is connected to an oscilloscope to see the raw, analog output of the head amplifiers. this analog signal is processed by the drive's filters and edge detection circuits to generate the digital flux pulses seen at the read data lines.

your project uses an an oscilloscope to grab this data; this sharply complicates the capture of real analog data. I've got one of these oscilloscopes, but it's not clear how to rig this all together.

imqqmi commented 1 month ago

I couldn't find a test pin on most floppy drives, only some of them have them as far as I know.

That part of the code that uses an oscilloscope can be considered alpha and is purely to explore if it's worth it to retrieve the analogue signal instead of letting the drive do the processing. As a result of my experiments I'm not convinced it's worth it to take the effort other than purely academic interest. The best and fastest way is still to use the arduino shield and an arduino Due with this project.

I've considered adding ADC but it has several issues. You'd need a mcu that has at least 2 channels that can capture ADC data simultaneously. Then there's the amount of data that needs to be transferred to the host PC. It takes about 6M samples per second per channel in 8 bits. That's 12MB/s. While most USB2 high speed devices should be able to reach that, bit's not guaranteed on many mcus. A Teensy would probably be able to do it but I haven't ported it to that platform. Feel free to do so. Then there's the effort vs value, which doesn't make too much sense to implement this.

But if you really want to hook up an oscilloscope here are the basic steps:

  1. Make sure you've installed national instruments oscilloscope driver. Not sure what version, you'll have to experiment
  2. I think ch1 is the index signal with trigger, ch2 the analogue flux signal and optionally ch3 for read data
  3. Connecting to the scope can be fiddly. If you have issues, try to install oscilloscope companion from Marcin Gosiewski and install the NI VISA drivers and connect to the scope with that and try if that works. If it works it should also work with FloppyControl.
  4. The software will mostly setup the oscilloscope automatically with the right settings (Rigol DS1054Z, not sure about other scopes). Hook it up to the network as the USB port option is 10x slower.
  5. In floppy control go to the network tab and set the track you want to capture. Then start the capture.
  6. When the capture is done I think it will switch to the waveform editor. You may have to adjust diff. gain number control to get a good signal, you'll see the scatterplot, if there's 3 clear bands then you're good. Click Proc R Data button. After it's done processing you can head to the Quick tab and click the histogram to set the thresholds. Then click the process Amiga or Process PC button to process the flux transition data to sector data.

That's about it.

I've included an example waveform so you can open it without needing an oscilloscope so you can play with this functionality.

cm68 commented 1 month ago

All floppy drives that I've looked at have analog test points. It's used in conjunction with alignment disks to set the head exactly over a reference track written precisely at a particular radial position. The stepper motor will have an interval set for the inter-track spacing, but the registration to a reference track needs to be adjusted.

The drive maintenance manual will have a detailed process for this, including what test points,and what oscilloscope settings to use. Look under radial alignment.

This is a standard adjustment for any repairable drive, and I would be shocked if any drive didn't have such a test point.

--curt

On Tue, Sep 17, 2024, 03:29 imqqmi @.***> wrote:

I couldn't find a test pin on most floppy drives, only some of them have them as far as I know.

That part of the code that uses an oscilloscope can be considered alpha and is purely to explore if it's worth it to retrieve the analogue signal instead of letting the drive do the processing. As a result of my experiments I'm not convinced it's worth it to take the effort other than purely academic interest. The best and fastest way is still to use the arduino shield and an arduino Due with this project.

I've considered adding ADC but it has several issues. You'd need a mcu that has at least 2 channels that can capture ADC data simultaneously. Then there's the amount of data that needs to be transferred to the host PC. It takes about 6M samples per second per channel in 8 bits. That's 12MB/s. While most USB2 high speed devices should be able to reach that, bit's not guaranteed on many mcus. A Teensy would probably be able to do it but I haven't ported it to that platform. Feel free to do so. Then there's the effort vs value, which doesn't make too much sense to implement this.

But if you really want to hook up an oscilloscope here are the basic steps:

  1. Make sure you've installed national instruments oscilloscope driver. Not sure what version, you'll have to experiment
  2. I think ch1 is the index signal with trigger, ch2 the analogue flux signal and optionally ch3 for read data
  3. Connecting to the scope can be fiddly. If you have issues, try to install oscilloscope companion from Marcin Gosiewski and install the NI VISA drivers and connect to the scope with that and try if that works. If it works it should also work with FloppyControl.
  4. The software will mostly setup the oscilloscope automatically with the right settings (Rigol DS1054Z, not sure about other scopes). Hook it up to the network as the USB port option is 10x slower.
  5. In floppy control go to the network tab and set the track you want to capture. Then start the capture.
  6. When the capture is done I think it will switch to the waveform editor. You may have to adjust diff. gain number control to get a good signal, you'll see the scatterplot, if there's 3 clear bands then you're good. Click Proc R Data button. After it's done processing you can head to the Quick tab and click the histogram to set the thresholds. Then click the process Amiga or Process PC button to process the flux transition data to sector data.

That's about it.

I've included an example waveform so you can open it without needing an oscilloscope so you can play with this functionality.

— Reply to this email directly, view it on GitHub https://github.com/imqqmi/FloppyControl/issues/9#issuecomment-2355238007, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJJUTK225UR2DMO5HL53I4LZXAAAXAVCNFSM6AAAAABOJ6AU6SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJVGIZTQMBQG4 . You are receiving this because you authored the thread.Message ID: @.***>