USB-Relaiskarte

#596658
Lesenswert?

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
#597248
Lesenswert?

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.
Angehängte Dateien:
#597262
Lesenswert?

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.
Persönliche Seite #597270
Lesenswert?

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
#597538
Lesenswert?

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
#597555
Lesenswert?

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
#597614
Lesenswert?

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.
Angehängte Dateien:
#597772
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren