¡Hola!
Tengo una máquina (no es una computadora) de entrada de datos que, entre otras cosas, llegados ciertos momentos vuelca información en un diskete de 3,5". Lo que quiero hacer es reemplazar la disketera por un módulo de tarjeta SD o micro SD. Para eso se me ocurrió que tal vez se pueda interceptar la información que es enviada a la disketera y grabarla en la tarjeta de memoria.
¿Es esto posible? ¿Se les ocurre alguna otra manera de hacerlo?
Muchas gracias.
Tienes una máquina que no es PC.
Reemplazar la diskettera por algo con un Arduino mas SD es viable, si, pero de fácil elaboración no lo creo.
Yo vería que hace la máquina, tomaría todo lo que constituye las placas analógicas de datos y ahi si lo volcaría a un Arduino y éste haría el trabajo de logger de datos.
Interfacear la disketera es problemático, no imposible.
He buscado en google: arduino floppy disk drive interface y salen posible cosas pero del 2009 y eso dice mucho.
Este es uno de los mejores que leí Controlling Floppy Disk Drive with Arduino
Pero ahora me doy cuenta que sería un proceso que requiere del floppy no que lo intercepta como tu pretendes.
Hola, surbyte.
He leído por ahí y algunos dicen que la comunicación con la disketera es serie y otros dicen que es paralelo. De cualquier manera, ya creo que meter un arduino en esa comunicación, al menos hasta el nivel que tengo, es imposible, ya que no sé qué protocolo usa.
Voy a probar lo que sugerís acerca de ver cómo recolecta y produce los datos y ver si puedo tomar la información desde allí (y cómo hacerlo, sobre lo cual no tengo ni una sospecha).
Muchas gracias.
Veo dos caminos: 1. ya te lo describí. Usar la parte analógica del logger que has descripto y conectarlo al arduino. Eso es muy fácil y te aseguro que MUCHO y lo enfatizo, más fácil que la segunda opción.
Si esto es un trabajo universitario, entonces por el placer de aprender haría un EMULADOR de floppy drive con el Arduino porque eso tienes que hacer. Debes emular su comportamiento y mas alla que no grabe, los datos en la diskettera tendras que devolver señales digitales para que la máquina sepa que la operacion de escritura/lectura ha terminado.
The interface is brutally simple and fairly tolerant of variations in implementation. Basically, all signals are open-collector with pullups. Early implementations used 150 ohm pullups at the endpoints furthest from the driver for a given line; later ones use 2K and late drives use tristate drivers instead open-collector. Logic is all 5V and you should be okay with 24-48 ma drive capability and all disk-side drivers are gated on the appropriate drive-select signal. All signals are active-low, naturally.
The data signal going to the drive inverts every time a pulse is to be written; the signal coming from the drive is a pulse around 400 nsec. wide when a pulse is read. Low-density clock is 250KHz; high-density is 500KHz. To move the head, you supply a pulse on the STEP line with the DIRECTION line indicating movement toward the spindle (low) or toward the outside edge (high). To write, assert WRITE GATE and wiggle WRITE DATA. If the medium is write-protected, the WRITE PROTECT line will be low when the drive is selected.
If you're using a 5‘¼" 1.2M drive, pin 2 indicates the recording density that the drive should use. On both 5¼" 1.2M and 3½" 1.44M drives, pin 34 is asserted by the drive on being selected if the disk has been changed. The signal is cleared by stepping at least one cylinder toward the hub. On some 5¼" 360K drives, this pin is a DRIVE READY signal. Every revolution, the INDEX signal is pulsed for somewhere around 2-4msec--use the front end of the pulse, as it's quite precise.
Use any encoding scheme that you'd like, but be aware that speed variations do occur to the tune of several percent on some drives. These come in two flavors--long-term (i.e. difference in average rotational speed) and short-term, or ISV, so-called "instantaneous" speed variation, mostly caused by frictional effects between the head and the media. You should have some sort of error-checking scheme to pick up errors.
I've seen a simple USART used to record data and recover data. Heck you could use a floppy to record PWM encoded audio.
Your biggest obstacle is going to be how to get the data out of the µC to the host. You could hold a track at a time, but that requires SRAM, so you'd have to use a µC with enough of that scarce resource (such as an AVR32, which seems like overkill) or an 8-bit µC with an external RAM interface, such as ATS8515, ATMega162 or ATMega128. I suppose you could use an Atmel 89xx µC as those do have external RAM interfaces as well. Just be sure you have enough I/O pins left over to do what you need.
That should be enough to get you started.
Another approach would be to use the µC as a USB host and just plug in a USB floppy. Be cautioned that USB floppies recognize a very limited set of formats, however--they're basically SCSI-type devices, so there's simply no mechanism in the protocol to deal with all of the variables in floppy schemes.
Justamente había estado mirando el enlace cuya foto me mostraste.
Voy a seguir tu consejo y tomar por la opción 1.
Seguramente en el camino venga a a pedirte auxilio.
No es un trabajo universitario. Es una máquina que uso para trabajar y quiero "modernizarla" porque ya los disketes me están trayendo problemas. Se ve que es por la calibración de la disketera que graba y por la disketera USB que uso para leer, luego, los datos. Además, me siento de la prehistoria usando disketes.
Muchas gracias nuevamente.
Vi la última edición de tu post.
Me voy a quedar con las ganas de aprender a hacerlo yo mismo, pero es una solución seguramente mucho mejor y más rápida. Y hoy en día necesito resolverlo cuanto antes.
¡Muchas gracias!