Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-basierter Amiga-Floppy-Lesegerät: Günstige Open-Source-Datenrettung

Komponenten und Materialien

Komponente Menge Hinweis
Widerstand 1 kΩ 1
Steckbrett (Breadboard) 1
Steckbrücken (Jumper Wires) 1 Set
Breadboard-Stromversorgung 5V/3.3V (SparkFun) 1
Arduino UNO (oder Pro Mini) 1 Pro Mini funktioniert ebenfalls

Software und Online-Dienste

Projektziel

Entwicklung einer einfachen, günstigen und Open-Source-Lösung zum Auslesen von Amiga-DD-Disketten (Double Density) unter Windows 10 und anderen Betriebssystemen. Ziel ist die langfristige Datensicherung und Nostalgie.

Hintergrund

Der Autor verdankt seine Karriere dem Amiga 500+. Damals wurden Spiele programmiert (AMOS), heute sollen die alten Disketten gesichert werden. Herkömmliche PC-Laufwerke können Amiga-Disketten nicht lesen (anderes Encoding: MFM). Professionelle Lösungen wie KryoFlux oder Catweasel sind teuer und oft Closed Source.

Forschung und Herausforderungen

Amiga-DD-Disketten drehen mit 300 RPM, haben 80 Tracks, 11 Sektoren/Track, 512 Bytes/Sektor, MFM-kodiert. Erforderliche Abtastrate: 500 kHz – anspruchsvoll für einen 16 MHz Arduino.

Versuch 1: Schieberegister (74HC594)

Zwei 8-Bit-Schieberegister sollten die Abtastrate um Faktor 8 reduzieren. Daten per USART mit 2 Mbaud an PC senden. Funktionierte, aber keine sinnvollen Daten.

Versuch 2: Interrupt-basiert (ISR)

Direktes Einlesen per Interrupt bei 500 kHz. ISR-Overhead und langsame digitalRead() zu langsam. Selbst Port-Manipulation reichte nicht.

Versuch 3: Hardware-Counter (Timer/Counter)

Nutzung des ATMega328 Hardware-Counters (Timer0) zum Zählen der Floppy-Pulse. Timer2 generiert 500 kHz, wird bei jedem Pulse zurückgesetzt (Phasen-Synchronisation).

Versuch 4: Software-PLL (Phase Locked Loop)

Dynamische Anpassung der Taktrate an Frequenzdrift des Laufwerks. Timer-Counter wird bei Pulse-Erkennung auf festen Phasenwert gesetzt (Resynchronisation). Funktionierte gut, aber Checksummen-Fehler blieben.

Versuch 5: Optimierter ISR mit ISR_NAKED

Interrupt Service Routine auf Minimum reduziert (5 Instruktionen, ~0,3 µs). Nutzung von INT0 (höchste Priorität) für Pulserkennung. Assembler-Optimierung für maximale Geschwindigkeit.

Versuch 6: Schmitt-Trigger (74HCT14)

Signalbereinigung durch Hex-Schmitt-Trigger und Pullup-Widerstand (1 kΩ). Keine signifikante Verbesserung.

Versuch 7: MFM-Fehlererkennung

Regeln der MFM-Kodierung genutzt: keine zwei '1' nebeneinander, max. drei '0' nebeneinander. Erkennung und Korrektur von Bitfehlern.

Dekodierung und ADF-Format

Ausblick (V2)

Schaltplan und Aufbau

Die Schaltpläne zeigen die Verbindung von Floppy-Laufwerk (34-polig IDE-Kabel) zum Arduino. Wichtige Signale: /DIR, /STEP, /TRK00, /SIDE1, /RDATA. Stromversorgung nur 5V (12V nicht benötigt).

Herstellungsprozess

  1. Die Entwicklung und Kunst der Animation
  2. Die Entwicklung der Disketten: Von magnetischen Medien zu optischer Speicherung
  3. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  4. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  5. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  6. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  7. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  8. Optimierte Stromversorgungslösungen für Arduino-Projekte
  9. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  10. Arduino-basierter Amiga-Floppy-Lesegerät: Günstige Open-Source-Datenrettung