Forum: Mikrocontroller und Digitale Elektronik Mal wieder ne Festplatte an nen MC


von Ich H. (balu47877)


Lesenswert?

Mahlzeit Jungs,
hab hier ein paar alte festplatten und würde die gern als servomotoren 
zweckentfremden. Kommt nicht auf die kraft an sondern viel mehr auf die 
geschwindigkeit und das die positionen exakt angefahren werden.

Gedacht habe ich da an den schreib/lese-kopf. Ich weiss, ist ein 
tauchspulenmotor, brauche die platten als "wegmesser". die ansteuerung 
ist dann recht komplex, daher war meine idee über einen avr die platte 
in die einzelnen stellungen fahren zu lassen.
Quasi wie ein IDE-AVR-Interface aus dem MP3-Bastel-Bereich nur das ich 
die Daten gar nicht auslesen muss.
In den Deckel der Platte - über dem lager des Kopfes - will ich ein loch 
bohren das groß genug ist eine kleine welle auf den Kopf zu kleben um 
die Drehung nach außen zu bekommen.
Soweit ja auch kein großes Problem.

Angesteuert soll das ganze dann über eine analoge Spannung werden. Also 
einfach an den ADC dran, und je nach anliegender Spannung einen 
bestimmten Zylinder anfahren lassen.

Seht ihr bis hier irgendwelche Probleme?

Mein Problem liegt im moment nur an der umsetzung. Hab zwar schon ne 
menge hier dazu gelesen aber noch nicht so den richtigen Durchblick...

Achso, eins noch: Einige Fehlermeldungen der platte sollen auch 
ausgelesen werden um reagieren zu können falls der "servo" sich nicht 
bewegt hat.

So, wie verbinde ich den AVR nun am einfachsten/kostengünstigsten mit 
der Platte und wie muss der Code in etwa aussehen?

Ich weiss, ist viel verlangt, aber vielleicht gebt ihr mir ja ein paar 
Tips ;)

Gruß,
der Tobi

von Hmm... (Gast)


Lesenswert?

> So, wie verbinde ich den AVR nun am einfachsten/kostengünstigsten mit
> der Platte und wie muss der Code in etwa aussehen?

Oder anders gefragt: Wer macht den Schaltplan und schreibt mir auch 
jemand den Code dazu? ;)

Was willst du denn auf diese Weise bewegen? Ich glaube nicht dass der 
"Motor" der Leseköpfe in einer Festplatte jetzt so viel Power hat, um 
etwas damit zu bewegen.

Erzähl doch erstmal etwas über die Anforderungen an deinen 'Motor' (Was 
soll bewegt werden? Wieviel Kraft kostet das?Wie genau muss eine 
Position angefahren werden?Wie schnell muss die neue Postion erreicht 
werden? Welcher Weg muss überbrückt werden?)

von Ich H. (balu47877)


Lesenswert?

nachdem ich mir den beitrag grad nochmal durchgelesen hab hab ich schon 
befürchtet das ihr mich falsch versteht ;)
Ich will NATÜRLICH keinen fertigen Schaltplan oder eine programmierung!
Hab schon ein paar pläne zusammen gewurschtelt in denen die Verbindung 
zwischen AVR und Festplatte beschrieben ist, das wird wohl klappen.
Was ich aber zB nicht gefunden habe ist ein eindeutiges beispiel wie ich 
die festplatte zu einem bestimmten zylinder schicken kann. Und zB sowas 
erhoffe ich mir von euch zu bekommen ;)

Zum Projekt und vielleicht erstmal zu mir, das hab ich nämlich auch 
vergessen zu erwähnen:
Bin 23 Jahre jung und studiere Mechatronik (dipl.ing) und E-Technik (BA) 
in Krefeld/Venlo. Behaupte mich ziemlich gut mit PCs auszukennen und hab 
auch schon (in der Uni) verschiedene MCs programmiert. Ne ganze 
schaltung hab ich zwar noch nicht aufgebaut, also quasi ein MC-Board von 
grund auf, aber was ich bisher so gelesen und gehört habe brauch ein AVR 
ja nicht gerade viel drumherum....

Und nu was ich damit vorhab: habe hobbymäßig recht viel mit PA- und 
Lichttechnik zu tun und habe grade vor mir einen "mini-show-laser" zu 
bauen. Nichts wildes, größe ist auch egal, nur halt erstmal was zum 
anfangen :)
Wie einige ja bestimmt wissen wird der Laserstrahl bei solchen Systemen 
durch zwei spiegel abgelenkt und so ein Bild gezeichnet. Für diese 
Ablenkung werden in der regel Galvometer benutzt (closed-loop), aber die 
kosten schon ne stange geld. Und als armer Student bin ich auf die Idee 
mit den HDDs gekommen. Auf die Welle kommt also nur ein kleiner Spiegel 
(ca. 5 mal 10mm) der schnell und präzise bewegt werden soll.
Weg ist somit nur der "original-weg" der Köpfe, kommt ja nur auf den 
Winkel an.

Welche geschwindigkeit und genauigkeit man nu mit so einem system 
erreichen kann würd ich gern mal testen. Vielleicht gehts ja ganz gut, 
dann freu ich mich und wahrscheinlich einige Foren-Mitglieder hier und 
da auch, wenns nichts wird kommen die platten in die tonne und der AVR 
wird zu nem testboard zum spielen.

Hoffe das hilft weiter ;)

von Michael U. (Gast)


Lesenswert?

Hallo,

kommt auch auf das Alter der Platten an...

Die Cylinder/Track/Sector-Werte sind Rechenwerte der HD-Hersteller.
Benutzt wird intern stattdessen Zone-Recording, es sind also auf den 
inneren Spuren weniger Sektoren als auf den äußeren.

Die Umrechnung erledigt die HD-Firmware, der tatsächliche Aufbau der 
Struktur ist kaum in Erfahrung zu bringen.

Eine IDE-HD mit Deinen Anforderungen an einen kleinen AVR zu bekommen, 
ist dagegen relativ einfach. Kostet 2 Ports (16Bit-Bus) und rund 1 Port 
für Steuerleitungen/Adressen (bin jetzt zu weit weg von den Unterlagen).

Dann eben nur den Zylinder/Track/Sektor/Kopf in ein Seek zur Platte.

Interessant dürfte für Dich nur Zylinder sein, evtl. noch Sektor, wenn 
die Struktur ungünstig ist. Die Platte läßt normalerweise die Köpfe auf 
der letzten Position. Internes cachen kann stören, wenn die Platte mehr 
lesen will und dabei die Spur wechselt.

Vielleicht doch einen kleinen Basslautsprecher mit halbwegs Hub nehmen 
und den Spiegel an die Membran kleben...

Gruß aus Berlin
Michael

von Benedikt K. (benedikt)


Lesenswert?

Die Idee mit der Platte ist garnichtmal schlecht, aber leider auch nicht 
neu. An der Umsetzung scheitert es aber nahezu immer. Das fängt schon 
bei den Suchzeiten von teilweise >100ms bei alten Platten an, und geht 
beim Cachen von Zusatzsektoren weiter. Da die Positionierung per 
Software gemacht wird, ist das ganze nicht schnell.

Ich würde versuchen irgendein zusätzliches Feedback einzubauen. Entweder 
wie auf elm-chan.org kapazitiv, oder optisch ähnlich einer alten Maus.

von jemand (Gast)


Lesenswert?

Dies hier dürfte so ziemlich sein, was du willst.

http://hackedgadgets.com/2006/04/25/top-5-uses-for-a-dead-hard-drive/2

Die Ansteuerung ist etwas einfacher, da hier die Lesekopfablenkung 
direkt angesprochen wird, ohne die Plattenelektronik. Damit wird das 
natürlich wesentlich unkoodinierter. Man müsste, wie Benedikt bereits 
erwähnt hat, noch ein Feedback verwenden, oder testen, mit welcher 
Ansteuerungsspannung man welche Ausschläge erreicht, und das dann aus 
ner Lookuptabelle rauslesen.
Wobei ich persönlich wohl die Feedbackvariante verwenden würde, oder 
aber eine Kombination aus beidem, a la extrem beschleunigen und kurz vor 
Endpunkt wieder abbremsen...

von jack (Gast)


Lesenswert?

Das mit den Festplatten kannst Du vergessen,
So wirds gemacht:

http://elm-chan.org/works/vlp/report_e.html

von Benedikt K. (benedikt)


Lesenswert?

jemand wrote:
> Die Ansteuerung ist etwas einfacher, da hier die Lesekopfablenkung
> direkt angesprochen wird, ohne die Plattenelektronik. Damit wird das
> natürlich wesentlich unkoodinierter. Man müsste, wie Benedikt bereits
> erwähnt hat, noch ein Feedback verwenden, oder testen, mit welcher
> Ansteuerungsspannung man welche Ausschläge erreicht, und das dann aus
> ner Lookuptabelle rauslesen.

Das kann man auch vergessen.
Ich habe da schon Tagelang dranrumgebastelt. Das Problem ist, dass der 
Kopf nicht ganz leichtgängig ist, und je nachdem wo er gerade steht, 
auch noch das Kabel zum Kopf als Feder arbeitet.
Am Ende habe ich es soweit hinbekommen, dass der Kopf zumindest AC 
gekoppelt einigermaßen funktioniert (mit einer Feder in der Mitte 
aufgehängt)

von Ich H. (balu47877)


Lesenswert?

Jepp, die seite mit den selbstgebauten galvos kenn ich, aber ich will ja 
mal was neues probieren ;)

Klar, das mit dem Caching könnt ein problem werden, kommt aber auch 
drauf an wie groß der cache ist und ob mans hinterher wirklich sieht.... 
oder gehen die platten nach dem lesen wieder in die parkposition?
die seite mit dem laser-oszi ist zwar auch gut, aber leider nicht das 
was ich suche. es geht darum den lesekopf in eine bestimmte position zu 
fahren und da zu halten.

Die platten hier sind zwischen 2gb und 30gb groß, also noch nicht sooo 
alt, maximum seek time liegt bei knapp 10ms im mittel der platten, das 
aber dann bei vollen geschätzeten 60°, also auch noch nicht soooo 
langsam.
Cache hat die platte die ich grad nachgeschaut hab nur 256kb, das könnte 
also durchaus klappen.

Bliebe die frage wie schnell die steuerung ist. die steuerbefehle 
sollten wohl mit minimum 500Hz an die platte geschickt werden. Wenn ich 
überleg das der AVR mit zB 8MHz takt läuft sollte das doch wohl auch 
machbar sein, oder?

von nem lautsprechersystem halt ich nicht soooo viel, ist zwar auch ne 
nette spielerei fürn anfang, aber halt open loop. für ein paar linien 
und kreise sicherlich ok, aber wenn man mal ne grafik zeichnen will wars 
das schon.

von jack (Gast)


Lesenswert?

>Jepp, die seite mit den selbstgebauten galvos kenn ich, aber ich will ja
>mal was neues probieren ;)

Hast Du Dir die Rechteckpulse (unter 'Adjustment') mal angesehen?

Die Anstiegszeit liegt bei ca. 1ms.

von jemand (Gast)


Angehängte Dateien:

Lesenswert?

>Das kann man auch vergessen.
>Ich habe da schon Tagelang dranrumgebastelt. Das Problem ist, dass der
>Kopf nicht ganz leichtgängig ist, und je nachdem wo er gerade steht,
>auch noch das Kabel zum Kopf als Feder arbeitet.

Soso, gut zu wissen, dann kann ich mir das selbst zu probieren sparen, 
danke.^^
Demnach wäre dann wohl ein "Chan-Galvo" noch einfacher als sowas.

Oder aber der schon erwähnte Lautsprecherscanner. Hatte ich auch schon 
probiert, aber der Hub war recht gering, und damit nur geringe 
Winkelvariationen möglich.
Ich hatte auch schon probiert, nur das Lautsprecherprinzip zu nutzen:
Das ganze sah dann so aus, dass eine Spule an einen an 2 Drähten 
hängenden Spiegel geklebt wurde, und sich halb in einem Magnet befand. 
Damit wurde der Auslenkungswinkel grösser, präzisionsmässig ist es aber 
auch nicht das wahre.
Wobei der Aufbau natürlich auch nicht sehr hochwertig war, siehe Bild...

Nun liegt mal wieder ne Achse mit drangeklebten Magneten rum, und wartet 
darauf, zu nem Galvo zu werden.

Aber back to Topic: Würd mich wirklich interessieren, ob das mit der 
Plattenansteuerung über IDE so was wird, wobei die 10ms immernoch recht 
lang sind.

von Ich H. (balu47877)


Lesenswert?

stimmt, aber bei 8°, das sollte man nicht vergessen ;) wenn das wirklich 
60° sind bei der platte dann komm ich auf knappe 1,3ms für 8°....

von Benedikt K. (benedikt)


Lesenswert?

Eine Festplatte macht etwa 20-30°, mehr nicht.
Ohne closed loop wird das nichts, da man mit dem Magnetfeld die 
Beschleunigung bestimmt, und nicht die Position.

von Ich H. (balu47877)


Lesenswert?

grade bei zwei platten nachgemessen, sind bei beiden exakt 45°.
Bei ner mittleren zugriffszeit von 10ms ergibt das 1,6ms für 8°.

aber wie gesagt: ich glaube ja das die selbstbau galvos von chan besser 
sind, aber willst halt unbedingt mal so versuchen. kost ja nichts, und 
ob ich die nu direkt in den müll werf oder vorher noch ein bißchen 
bastel ;)

Und wieso messen die platten mit dem magnetfeld die beschleunigung? ist 
klar das durch das magnetfeld beschleunigt wird, aber die position des 
kopfes wird über die gelesenen daten bestimmt, ist also closed loop.

nochdazu sind die werte für die zugriffszeit inkl. dem lesen. ist die 
frage was die platte macht wenn man ihr wärend des lesens nen neuen 
befehl schickt obwohl sie noch nicht ready ist. VIELLEICHT fährt er ja 
dann direkt den neuen punkt an, dann könnte man da evt ja noch ein paar 
ms rausholen.... ;)

aber das ist feintuning. im moment ist der weg das ziel, wie schnell und 
exkt das ding hinterher ist ist ja erstmal zweitrangig

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.