Hallo allerseits, ich ärgere mich darüber, dass meine externen Festplatten sich per SCSI-Befehlen nicht ausschalten lassen. Daher die Frage: Hat jemand von Euch schon einmal eine USB-Relaiskarte (für > 8 Relais) entworfen und kann das Design zur Verfügung stellen? Ansonsten müsste ich mich wohl selbst daransetzen und das Rad vermutlich zum x. Mal erfinden (bzw. bauen). Ich habe hier noch ein paar PICs herumliegen, die USB sprechen, damit ließe sich das umsetzen. Wollte aber vorher klären, ob ich mir die Arbeit eventuell sparen kann. Grüße, Florian
Da die Resonanz nicht allzu groß war, hier einmal mein erster Wurf. Ich würde mich freuen, wenn jemand einmal einen Blick darauf werfen könnte und evtl. Probleme bekanntgibt. Die zweite Seite ist noch nicht fertig (ich war zu faul, ein Relais in Kicad zu zeichnen). An den ULN2803 würden dann die Relais geschaltet und wohl LEDs mit Vorwiderstand entspr. parallel. Die Spannungsversorgung bereitet mir am meisten Kopfzerbrechen. Die Frage ist, ob sich das Ein- und Ausschalten der Relais nicht ggf. störend auf die 5V-Versorgung auswirkt.
Du willst SCSI-Festplatten abschalten, aber am Bus angeschlossen lassen? Bist Du Dir sicher, daß das eine gute Idee ist?
Hat schon jemand erfunden, www.google.de und nach "avr usb" suchen. http://www.obdev.at/products/avrusb/automator.html
Das Problem mit dem 'Automator' ist, dass dort fest 8 Relais untergebracht sind. Ich würde das Ganze aber gerne skalierbar haben. Übrigens frage ich mich gerade, ob das von denen eine gute Idee ist, die LEDs direkt an die Eingänge des ULN2803 zu hängen. Da ich die genauen Werte des ULN2803 jetzt ad hoc nicht parat habe, möchte ich nicht behaupten, dass das Unsinn ist.
Unter anderen* Betriebssystemen funktioniert das softwaregesteuerte Abschalten von Festplatten, die an USB-IDE-Bridges angeschlossen sind. Vielleicht wäre es eine sinnvollere Lösung, die Powermanagementunterstützung des verwendeten Linux in dieser Hinsicht weiter zu untersuchen? Ich kann mir kaum vorstellen, daß das nicht schon gelöst wurde bzw. bin überrascht davon, daß das nicht selbstverständlich geht. *) ganz böses Zeug aus Nordwestamerika
Prinzipiell funktioniert das wohl auch unter Linux, aber wohl nicht mit den billigen Gehäusen/Controllern, die ich hier habe. Die Menschen, die sich um das Projekt openslug kümmern, behaupten zumindest, dass es klappt. Vermutlich würde es mit dem ausländischen Betriebssystem auch mit meinem Setup Probleme geben.
Gast wrote: > Guck mal nach dem "IO Warrior". 14,80 EUR bzw. 11,75 EUR pro Stück ist leider zu teuer. Der PIC 18F2550 kostet um die 8 EUR das Stück. Rumliegen hätte ich die so oder so.
Sehe gerade, dass ich die Pull-Ups zwischen '373 und ULN2803 vergessen habe. Werde morgen mal den vervollständigten Schaltplan veröffentlichen.
Hab hier 4 verschiedene USB-Platten getestet, drei davon liessen sich softwaremässig ausschalten, eine nicht. Lustigerweise funktionierts grad bei den "billigen" USB-Only Platten, die USB+Firewire Platte weigert sich. Ich verwende das sg_start Utility aus dem sg3_utils Paket. je nach Platte gehts mit > sg_start 0 /dev/$disk oder > sg_start 0 -pc=2 /dev/$disk Hier ein kleines Shellscript, dass die Platte nach 10Minuten Inaktivität runterfährt:
1 | #!/bin/sh
|
2 | |
3 | disk=$1 |
4 | interval=600 |
5 | |
6 | state=`grep " $disk " /proc/diskstats` |
7 | count=$interval |
8 | up=1 |
9 | |
10 | while sleep 10; do |
11 | count=$(($count-10)) |
12 | newstate=`grep " $disk " /proc/diskstats` |
13 | if [ "$state" = "$newstate" ]; then |
14 | if [ $count -lt 0 ]; then |
15 | count=$interval |
16 | if [ $up = 1 ]; then |
17 | echo -e "spin-down\t$disk\t" `date` |
18 | sync
|
19 | state=`grep " $disk " /proc/diskstats` |
20 | sg_start 0 -pc=2 /dev/$disk |
21 | sg_start 0 /dev/$disk
|
22 | up=0 |
23 | fi
|
24 | fi
|
25 | else
|
26 | echo -e "drive $disc is up\t" `date` |
27 | count=$interval |
28 | state="$newstate" |
29 | up=1 |
30 | fi
|
31 | done
|
start mit ./scsi_idle.sh sdh & ./scsi_idle.sh sdi & etc. Schau mal ob das bei dir evtl auch funktioniert, vielleicht kannst du dir die Relais-Karte ja sparen. /Ernst
Genau so habe ich das ausprobiert. Ich habe hier dummerweise ein paar von den Gehäusen mit dem oben genannten Chip. Damit geht es leider nicht.
Ok. dann wohl die Hardwarelösung. Wenns statt dem PIC auch ein Tiny2313 o.ä. sein darf, hätt ich hier vielleicht was passendes für dich. Läuft hier um die Türsprechanlage mit Asterisk zu koppeln, liest ein paar Portpins ein und schaltet zwei Relais. Relativ simple Firmware auf USBtiny Basis, und ein kleines libusb-program für den Zugriff. Leider kein Schaltplan oder Layout, ist auf die schnelle auf ner Streifenraster-Platine zusammengelötet. /Ernst
So, jetzt sollte die Schaltung komplett sein und nun wirklich genug Relais ermöglichen. Ich habe mich darüber geärgert, dass ich 8 Adressleitungen verwendet habe und daraus nur eine ausgewählt habe. Da ich nicht alles umzeichnen wollte, habe ich ein paar Bauteile hinzugefügt und kann nun tatsächlich 256 * 8 Relais ansprechen, auch wenn dann der 7805 bestimmt abrauchen würde. Ich frage mich zwar, ob das nicht ein wenig übertrieben ist (mit dem Hammer die Erdnuss öffnen), aber vermutlich werde ich das testweise so aufbauen. Die Platine mit den Relais ist so gedacht, dass auf beiden Seiten 2x10-polige Anschlüsse sind, die durchgeschliffen werden und man mit den Jumpern oder Mäuseklavieren (mal schauen) jeweils pro Platine eine Adresse auswählt. Vielleicht könnte man den 74LS04 noch durch einen Transistor (oder müssen es vielleicht sogar zwei sein...) und ein paar Widerstände ersetzen, aber die LS-Familie verheißt keinen guten Stromfluss (eigentlich nur einen negativen) bei High-Pegel. Ich hatte jetzt allerdings keine Lust, das Rechnen anzufangen.
RELAIS- UND EINGANGSKARTE MIT USB-INTERFACE http://bascom-forum.de/index.php/topic,105.msg315.html#msg315
Florian Demski wrote: > habe ich ein paar Bauteile hinzugefügt und kann nun tatsächlich > 256 * 8 Relais ansprechen, Ich hätte eine kaskadierbare Schiebregisterkette ala 595 genommen 595 -> 2803 -> Relais Die Adressierung ergibt sich aus der Anordnung der Module am Schieberegister-'Bus'
Karl heinz Buchegger wrote: > Ich hätte eine kaskadierbare Schiebregisterkette ala 595 genommen > > 595 -> 2803 -> Relais > > Die Adressierung ergibt sich aus der Anordnung der Module > am Schieberegister-'Bus' Dafür müsste die Controller-Platine allerdings wissen, wie viele Schieberegister angeschlossen sind. Das Schieben selbst ist ja unkritisch, da es im MHz-Bereich stattfinden kann. Ich überlege gerade: Die Controller-Platine könnte sogar feststellen, wie lang das gesamte Schieberegister ist, in dem einfach eine einzelne 1 durchgeschoben wird und man den Ausgang des letzten SR wieder auf einen Eingang des µC zurückführt. Man könnte natürlich auch I2C nehmen und mit PCF8574 arbeiten. Der Vorteil bei den seriellen Lösungen (also auch I2C) wäre der geringere Leitungsbedarf (Takt, Daten, GND, +5V, +12V, [für 595 zusätzlich noch /MR und /OE, evtl. DS]) und die geringere Anzahl an Bauteilen (vermutlich dadurch auch der geringere Preis). Die Idee gefällt mir. Ich werde das gleich einmal umzeichnen.
nobody wrote: > RELAIS- UND EINGANGSKARTE MIT USB-INTERFACE > http://bascom-forum.de/index.php/topic,105.msg315.html#msg315 Für über 100 EUR finanziell uninteressant.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.