Forum: PC Hard- und Software XY Ablenkeinheit aus alten Maxtor HDDs


von Martin G. (Firma: http://www.gyurma.de) (martin_g)


Lesenswert?

Hallo die Damen und Herren!

Ich habe vor einen Laserstrahl in 2 Dimensionen abzulenken, und hatte 
früher erst die Idee einen xy-Galvo vom Ebay zu benutzen.
Hab ich ausprobiert, leider hatte ich das Problem, daß es eine Hysterese 
gab, wodurch der Laserstrahl nie richtig genau die Positionen getroffen 
hat. Eine Kreislinie ist ein flach eingedellter Kreis geworden. Somit 
ist die Anwendung für ein Laserbelichten von Platinen fast undenkbar, 
denn da können dadurch Kurzschlüsse übrigbleiben.
Woran kann das liegen? Ist es der Analoge Servo der das Ablenken nie 
genau macht?

Idee also verworfen.

Kam nächste Idee:
In HDD-s sind ja bekannterweise perfekte Servos für das 
Cylinder-Tracking schon eingebaut. Also wenn ich sage lese auf sektor 
12345689, dann geht er auf den Track, wo dieser Sektor auch ist, und 
zwar in ein paar ms.
Ein paar Maxtor HDDs sind glücklicherweise so aufgebaut, daß man die 
Servoachse auch ohne Öffnung des Gehäuses sehen und als Spiegelhalterung 
benutzen kann. Wenn man also 2 davon benutzt, hat man die perfekte 
Ablenkeinheit.
OK, hab ich getan, aber da kam das, was Linux so schnell macht... Read 
cache. Dadurch werden nicht mehr alle Punkte angefahren, die ich 
verlange...
Wie schalte ich dieses Helferlein ab, so daß die HDDs immer zum 
gewünschten Track springen müssen?

Die HDD habe ich mit einem USB zu IDE Converter angeschlossen.

Irgend welche weiteren Ideen?

Ziel ist der perfekte Digitale Galvo Servo :D

LG,
Martin

von (prx) A. K. (prx)


Lesenswert?

O_DIRECT schon probiert?

von Martin G. (Firma: http://www.gyurma.de) (martin_g)


Lesenswert?

A. K. schrieb:
> O_DIRECT schon probiert?

Ja, da gibts aber immer einen Fehler "invalid Argument" Obwohl die 
Argumente OK sind, wenn keine O_DIRECT benutzt wird...

von (prx) A. K. (prx)


Lesenswert?

Wenn Kernel alt genug, dann such mal nach "raw device". Ist veraltet und 
soll rausfliegen, aber zumindest der 2.6er hat den Driver noch. Wenn
  modprobe raw
funktioniert, dann ist er noch drin.

von (prx) A. K. (prx)


Lesenswert?

Martin G. schrieb:
> Ja, da gibts aber immer einen Fehler "invalid Argument"

Beim open oder beim read? Read muss nämlich aligned sein.

von Martin G. (Firma: http://www.gyurma.de) (martin_g)


Lesenswert?

Fehlermeldung beim Read.

Python code.

WIe sage ich dem Python wo die variablen sein sollen?

von (prx) A. K. (prx)


Lesenswert?

Gute Frage... Ich nix Python.

Ich hoffe freilich, dass wenigstens die Daten blitzsaubere Blöcke sind 
und nicht 13 Bytes vom Nirgendwo. Denn das geht mit Python zweifellos.

von (prx) A. K. (prx)


Lesenswert?

Ruf hdparm auf. Das kann O_DIRECT und kann auch Sektoren lesen.

von (prx) A. K. (prx)


Lesenswert?

Ach ja: So macht man das beispielsweise in jeder Sprache, in der Arrays 
nach dem Start am gleichen Platz im Speicher bleiben: Man alloziert 
einmal 1023 Bytes und liest 512 Bytes, einen Offset von 0..511 
durchprobierend. Kann auch sein, dass es nicht 512 sondern 4096 sein 
muss.

von Gerd E. (robberknight)


Lesenswert?

Die Platten haben normal auch einen Read-Cache eingebaut. Auf den hat 
Dein Linux keinen Einfluss.

Ich würde daher zuerst per hdparm den Write-Cache der Platte abschalten. 
Das geht im Gegensatz zum Read-Cache. Ich weiß aber nicht ob der Befehl 
durch deinen USB-IDE-Umsetzer durchgeht, manche können nicht alle 
Befehle umsetzen.

Danach dann immer Schreibbefehle senden um die Position zu setzen.

Bei was für Maxtor-Modellen geht das mit dem Anzapfen der Kopfposition 
von außen?

von Martin G. (Firma: http://www.gyurma.de) (martin_g)


Lesenswert?

Gerd E. schrieb:
> Die Platten haben normal auch einen Read-Cache eingebaut. Auf den hat
> Dein Linux keinen Einfluss.
>
> Ich würde daher zuerst per hdparm den Write-Cache der Platte abschalten.
> Das geht im Gegensatz zum Read-Cache. Ich weiß aber nicht ob der Befehl
> durch deinen USB-IDE-Umsetzer durchgeht, manche können nicht alle
> Befehle umsetzen.

Recht hat er... Nicht alle Befehle gehen durch. Nicht mal
hdparm --read-sector ...

Muß ich wohl doch eine alte Mainboard direkt dafür zweckentfremden...

Warum geht eigentlich nicht alles durch? ist doch nichts anderes als ein 
Schreiben auf Register, oder wie spricht man mit einer Festplatte? Da 
wär vielleicht ein kleines Projekt in Sichtweite, wenn man direkt die 
IDE Schnittstelle ankitzeln könnte, und einen Mbed oder Arduino drauf 
loslassen könnte :D

>
> Danach dann immer Schreibbefehle senden um die Position zu setzen.
>
> Bei was für Maxtor-Modellen geht das mit dem Anzapfen der Kopfposition
> von außen?

Die dünnen 20GB Gurken, da muß man die Folie neben der Platine abziehen 
und viola da ist die Achse... (vorsicht, nicht die Folie mit dem 
Staubfilter drunter...)

Oder die Fireball 3 mit 40 GB. (code vam51jj0)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.