CnMemory Spaceloop externes USB 3.0 Festplattengehäuse – Revision 1.1

Views: 524

Hier freute ich mich noch darüber, wie gut ich die Gehäuse finde, allerdings gilt das leider nicht mehr so ganz. Ich habe ein paar nach bestellt, und leider eine neue Variante erhalten. Diesmal kamen sie von Pollin auch nicht in einer Retailpackung, sondern in Plastiktüten, aber das nur am Rande.

CnMemory hat ein paar Sachen geändert, statt eines KTec-Netzteils gibt es jetzt eins von Asian Power Devices. Aber vor allem gibt es eine andere Platine, die Revision 1.1.

Der große Unterschied ist, dass die alte Version Festplatten mit einer Sektorengröße von 512 Byte meldete, die neue aber Sektorengrößen von 4096 Byte nimmt. Damit ist die gesamte Plattengeometrie durcheinander, und auf der Platte befindliche Daten sind nicht mehr lesbar. Schon die Partitionierungsdaten sind nicht lesbar. Damit ist die neue Revision nicht nur nicht kompatibel zu Platten, die mit der alten Version genutzt wurden, sondern insbesondere auch nicht mit Platten, die am internen Festplattencontroller eines PCs genutzt wurden.

Nur um auszuschließen, dass es sich um spezifische Probleme mit Treibern oder Festplatten handelt, habe ich verschiedene Kombinationen probiert. Windows 7 / 8.1, Linux auf PC und Raspberry Pi, Festplatten von Western Digital, Toshiba und Seagate, mit Größen von 160 GB bis 3 TB: immer das Gleiche.

 

Ich habe heute versucht, den „Technischen Support“ zu erreichen. Auf der Webseite sind 2 Telefonnummern angegeben 01805 / 00251 sowie eine Festnetzdurchwahl. Die 01805-Nummer funktioniert nicht, kann sie auch nicht, da eine 01805-Nummer immer 6-stellig ist. Bei der Festnetzdurchwahl kommt sofort Musik, und nach längerer Zeit die Meldung, dass alle Serviceplätze belegt seien, ich solle es später versuchen, oder eine Email schreiben. Sechs (6!) mal habe ich es versucht… Ich glaube nicht daran, dass dort wirklich jemand erreichbar ist.

Auf meine Email kam eine automatische Antwort:
Betreff:
Abwesend: CnMemory Spaceloop USB 3.0 externes Festplattengehäuse
Inhalt:
Sehr geehrter Kunde,

Ihre E-Mail ist bei uns eingegangen und wird umgehend von uns bearbeitet.

Ich bin gespannt, wahrscheinlich muss ich die 3 Gehäuse als defekt zurück schicken.

Denon DRA-25 Reparatur: kein Mucks am Ausgang

Views: 383

Auf dem Flohmarkt habe ich einen Denon Receiver DRA-25 gekauft. Der Verkäufer meinte, es wäre ein Problem mit dem Netzschalter, aber ansonsten würde alles wunderbar funktionieren. Flohmärkte haben oft den Charme, dass Leute schwere Sachen gerne auch günstig los werden, Hauptsache, sie müssen sie nicht wieder nach Hause schleppen. Mit dem Wissen, und dem Argument, dass ich das im Moment nicht prüfen kann, kamen wir von 15 € auf 8 €. Im schlimmsten Fall hätte ich dann ein paar interessante Ersatzteile gekauft, im besten ein einfach zu reparierendes Gerät.

Es stellte sich dann heraus, dass natürlich der Stromschalter völlig in Ordnung war. Dennoch kam weder aus den Lautsprecheranschlüssen noch aus dem Kopfhörer auch nur ein Piep. Das kann viele Gründe haben, einer ist die Stromversorgung der Leistungstransistoren. Die Kühlkörper wurden allerdings warm, und die Spannung an den Kollektoren sah gut aus. Das Display funktionierte, und der Radioempfänger lieferte an den Ausgängen ein vernünftiges Signal.

Alle besseren Verstärker (und Denon gehört nun nicht wirklich zum Abschaum) haben Schutzmechanismen, wovon einer ein verzögerter Kontakt zu den Lautsprechern ist. Dafür wurde und wird ein Relais genommen, um jedes Einschaltknacken zu unterdrücken. Es wird gewartet, bis alle Komponenten einsatzbereit sind, damit auf die Lautsprecher nur klar definiert ein Tonsignal kommt. Allerdings konnte ich nach dem Einschalten nie das Klacken eines Relais hören, und auf der Platine war klar eins vorhanden. Der DRA-25 ist jetzt nicht so hochklassig, dass solche Geräusche aufwändig unterdrückt werden müssten, also dachte ich, das Relais könnte ein Problem sein.

Zum Glück war das Relais eine günstige Variante mit aufgestecktem Gehäuse, welches nur mit 2 Plastikklammern gehalten wurde. Nach Entfernen des Gehäuses lag das Relais offen, und ich konnte sehen, dass es sich nicht schloss. Messungen zeigten, dass sehr wohl nach ca. 10 Sekunden eine Spannung anlag.

Die Lösung war simpel: das Relais hatte sich verhakt, ein paar Mal den Mechanismus manuell betätigen löste das Problem. Der Denon funktioniert wieder, wenn auch die Schalter dank der üblichen Schmutzablagerungen noch etwas kratzen.

Im Kaiserschmarrn ist auch kein Kaiser drin

Views: 322

Okay, das mit dem Kaiserschmarrn versteh ich ja noch, aber Kalbfleischwurst…

Birkenhof Kalbfleischwurst vorneDass in Kalbsleberwurst nur ein gewisser Prozentsatz an Kalbfleisch ist, das weiß ich ja. Bei der Zutatenliste dieser Wurst musste ich aber dann doch Grübeln, was der Name des Aufschnitts mir sagen wollte.

Birkenhof Kalbfleischwurst hintenLaut dieser Liste, ist da genau kein Kalb drin. 0 ist zwar auch ein Prozentsatz, aber dennoch ein unerwartet niedriger. Und irgendwie glaube ich nicht, dass ein Produzent Kalbfleisch unter „(Schweine- und Rindfleisch)“ subsummiert.

Das stinkt für mich nun wirklich nach Verarschung. Guten Appetit!

Sir Terry, ich werde Sie vermissen!

Views: 308

Geniessen Sie Ihre Zeit mit unser aller Liebling TOD, Sir Terry Pratchett. Sie haben mir sehr viele wundervolle Stunden verschafft, seit ich „Colour of magic“ zum ersten Mal in den Händen hielt. Aber nicht nur die heitere Scherbenwelt, auch Ihre anderen Werke, darunter insbesondere die Nomen-Trilogie, haben mich stets innehalten und nachdenken lassen. Ich freue mich, all Ihre Werke gelesen zu haben, gleichzeitig bin ich traurig, dass es mit diesem Tag auch alle Werke für immer gewesen sein werden, und ich von Ihrer Beobachtungsgabe und dem scharfen Wortwitz keine Fortsetzung mehr sehen werde.

LED RGB Strip: wie arbeitet die daylite-Steuerung?

Views: 385

2 RGB-LED-Strips von daylite sind es derzeit, die ich besser steuern möchte. Dafür ist es natürlich schön zu wissen, wie die Original-Hardware das macht. Also habe ich die an mein Oszilloskop gehangen, und mal gemessen. Prinzipiell funktioniert das Dimmen bei dem Controller sehr simpel: volle Helligkeit ist durchgehend Strom, dann wird das ganze gepulst, und der Tastgrad wird dadurch eingestellt, dass die Aus-Zeiten länger werden, die An-Zeit bleibt gleich. Dadurch ändert sich auch die Frequenz, von ~470 Hz bis ~88 Hz, was dann auch erklärt, warum bei sehr niedrigen Helligkeiten das Licht sehr flackerig erscheint.

Ich war allerdings sehr erstaunt, als ich auf dem roten Kanal bei Einstellung „weiß“ folgendes Bild zu sehen bekam (hoher Pegel = aus, ich musste die Sonde verpolen…):

FHE_1164

Wenn die Farbe nur auf „rot“ (oder Mischungen mit „grün“ bis hin zu „gelb“) steht, ist bei 100% Helligkeit ein durchgehender Strom vorhanden, beim Dimmen dann entsprechende Aus-Zeiten. Aber wenn ich den roten Kanal bei „weiß“ messe, erscheint das Bild oben. Interessanterweise sind die hohen Pegel aber auch kein vollständiges Ausschalten, denn wenn eine Helligkeitsstufe niedriger geschaltet wird, passiert folgendes:

FHE_1165Da kommt neben dem reduzierten Signal noch ein volles „Aus“-Signal. Der grüne Kanal ist dabei übrigens Dauer-An (bei 100%) bzw. hat die gleichen vollen „Aus“-Zustände. Weiter runter gedimmt sieht das dann so aus auf dem roten:

FHE_1166FHE_1167
FHE_1168FHE_1169Ist dieses kurzzeitige Runterschalten dafür da, um die relative Helligkeit von rot gegenüber grün zu reduzieren? Wenn ja, dann ist das eine dämliche Idee, rot sieht bei dem Strip in der Mischung unterrepräsentiert aus.

So sieht der rote Kanal alleine aus, wenn er auf niedrigster Helligkeit läuft:

FHE_1149

 

Der lange Weg zur eigenen RGB-LED-Ansteuerung, Teil 4

Views: 345

Wie zu sehen war kann ein Arduino mit etwas Beschaltung schon etwas an LEDs antreiben. Bis zu LED-RGB-Strips mit 500 – 800 mA pro Farbe fehlt zwar noch etwas an Leistung, aber die Richtung ist schon mal korrekt. Also kommt langsam die Frage des Farbmischens und damit des Dimmens auf. Das kann man relativ einfach halt mit Pulsweitenmodulation (bzw. Pulse Width Modulation / PWM) machen, wobei man die LEDs halt nur eine bestimmte Zeit an- und eine andere Zeit ausschaltet. Zum simplen Überprüfen dieser Theorie schaltet der folgende Code das Signal am Pin 13 an und aus:

int pinId = 13;

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(pinId, OUTPUT);

  // initialize serial:
  Serial.begin(9600);
}

// the loop function runs over and over again forever
void loop() {
  for(float i = 1; i < 100; i+=0.1) {
    Serial.println(i);
    digitalWrite(pinId, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay((int)(100/i));         // wait for some time
    digitalWrite(pinId, LOW);    // turn the LED off by making the voltage LOW
    delay((int)(100/(101-i)));   // wait for some time
  }
  for(float i = 100; i > 1; i-=0.1) {
    Serial.println(i);
    digitalWrite(pinId, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay((int)(100/i));         // wait for some time
    digitalWrite(pinId, LOW);    // turn the LED off by making the voltage LOW
    delay((int)(100/(101-i)));   // wait for some time
  }
}

In der setup()-Funktion wird der Pin 13 als Ausgabe geschaltet, dazu noch die serielle Konsole gestartet, damit man auf dem PC mit lesen kann, bei welchem Wert der Arduino gerade ist.
In der Schleife loop() wird dann in sehr simpler Manier das Tastverhältnis gewechselt. Zunächst wird der Pin angeschaltet, und eine relativ lange Zeit (100 Millisekunden) gewartet, bis das Ausschalten kommt, dann wird sehr kurz (1 Millisekunde) gewartet. Da i nur in 0.1er Schritten erhöht wird, wird das Verhältnis von AN nach AUS langsam runter gedreht, bis der Pin schließlich 1 Millisekunde auf AN, und 100 Millisekunden auf AUS steht. Danach wird das dann umgedreht.
Damit werden die angeschlossenen LEDs langsam von fast 100% auf fast 0% und dann wieder auf fast 100% gedimmt.

Das ist schon ganz nett, allerdings ist mir danach aufgefallen, dass der Arduino (bzw. der Atmel-Mikroprozessor) auch Pins hat, die auf dem Board mit „DIGITAL (PWM~)“ markiert sind. Somit sind die Pins 3,5,6,9,10,11 und 13 von Hause aus schon PWM-fähig. Damit kann das Timing des Tastgrads von der Hardware übernommen werden, und ich muss mich damit gar nicht so genau beschäftigen.

Dieser Code dimmt verschiedene Farben von aus nach an und wieder aus. An Pin 9 habe ich da rote, an Pin 10 grüne und an Pin 11 blaue LEDs.

int pinRed = 9;         // Pin 9 is a PWM-'analog'-pin
int pinGreen = 10;      // Pin 10 is a PWM-'analog'-pin
int pinBlue = 11;       // Pin 11 is a PWM-'analog'-pin
int minValue = 0;
int maxValue = 255;
int delayValue = 10;

void setup() {
  // initialize the pins as an output.
  pinMode(pinGreen, OUTPUT);
  pinMode(pinBlue, OUTPUT);
  pinMode(pinRed, OUTPUT);
  analogWrite(pinRed, minValue);
  analogWrite(pinGreen, maxValue);
  analogWrite(pinBlue, minValue);
}

// Fades the PWM output of a pin from the minimum to the maximum
void slowlySwitchOn (int pinId) {
  for(int i = minValue; i <= maxValue; i++) {
    Serial.println(i);
    analogWrite(pinId, i);
    delay(delayValue);
  }  
}

// Fades the PWM output of a pin from the maximum to the minimum
void slowlySwitchOff (int pinId) {
  for(int i = maxValue; i >= minValue; i--) {
    Serial.println(i);
    analogWrite(pinId, i);
    delay(delayValue);
  }
}

// the loop function runs over and over again forever
void loop() {
  // Slowly switch on Green
  slowlySwitchOn(pinGreen);
  
  delay(delayValue * 50);

  // Slowly switch off Green
  slowlySwitchOff(pinGreen);

  delay(delayValue * 50);

  // Slowly switch on Blue  
  slowlySwitchOn(pinBlue);
  
  delay(delayValue * 50);

  // Slowly switch off Blue
  slowlySwitchOff(pinBlue);

  delay(delayValue * 50);

  // Slowly switch on Red  
  slowlySwitchOn(pinRed);
  
  delay(delayValue * 50);
  
  // Slowly switch off Red
  slowlySwitchOff(pinRed);

  delay(delayValue * 50);
}

Ebenso kann man die Farben langsam von einfarbig zu ‚weiß‘ gemischt faden lassen. Der wichtigste Unterschied zum Code davor ist natürlich nicht die Tatsache, dass ich da 3 unterschiedliche Pins und Farben steuer, sondern dass statt digitalWrite(pinId,HIGH|LOW) ein ‚analoger‘ Wert auf die Pins gegeben wird: analogWrite(pinId, value).

Was besonders in diesen beiden Beispielen sichtbar ist, ist der Fakt, dass lineares Dimmen für das menschliche Auge nicht linear ist. Insbesondere wenn es dunkler wird, sieht das Auge zwischen 2 Stufen einen viel größeren Unterschied, als in den helleren Zeiten. Das widerspricht natürlich meinem Wunsch, dass alles langsam und unauffälig passieren soll. Aber dazu dann später. Außerdem müssen die PWM-Signale auch noch an etwas mehr Strom übergeben werden.

Der lange Weg zur eigenen RGB-LED-Ansteuerung, Teil 3

Views: 397

Aufgebaut auf einem Breadboard (bzw. Steckplatine) sieht die Schaltung natürlich ganz anders aus. Für R1 musste ich 2 220 Ω-Widerstände in Reihe schalten (etwa 440 Ω, es sind 5%-Toleranz-Widerstände), ich hatte nichts passenderes, und das ist nah an den berechneten 480 Ω dran (Fehler von 8,3%…). Die LED (D1) ist eine orangene mit 1,8 Volt Vorwärtsspannung, womit dann auch R2 neu berechnet werden muss. Das sind in der Theorie (12 V – 1,8 V) / 0,02 A = 510 Ω. Auch hier wieder war nichts passendes dabei, also passen 220 Ω + 330 Ω = 550 Ω recht gut. Der Transistor ist wie schon erwähnt ein BC547C.

Eine LED ist aber recht lächerlich, insbesondere wo sich dann die Frage stellt, warum ein Transistor notwendig sein sollte. Ich habe hier 5 Module an superhellen (naja) weißen LEDs rum liegen, die nominal mit 12 V und 40 mA betrieben werden. Die Strombegrenzung ist in die Module eingebaut, somit sind dabei die Vorwiderstände nicht notwendig. 5 Stück parallel geschaltet ziehen in meinem Beispiel 154 mA, auch wenn es theoretisch 200 mA sein sollten.

Der lange Weg zur eigenen RGB-LED-Ansteuerung, Teil 2

Views: 2165

Da der Arduino nicht allzuviel Last an seinen IO-Ports erlaubt, brauchen wir eine Entkopplung, bzw. Verstärkung. Für niedrige Lasten ist das einfach mit einem Transistor als Schaltstufe zu regeln. Ich habe jetzt gerade nach einfachen Erklärungen für diese Schaltung gesucht, aber das klingt alles zu kompliziert. Um die Schaltungszeichnungen zu verstehen, sollte man die Schaltsymbole kennen. Natürlich sind die international nicht genormt, aber meistens stimmen die schon.

In der ersten Version, wo der Controller (hier ein Arduino, kann aber genauso gut ein Raspberry Pi sein) die LED direkt antreibt, sieht das Schaltbild so aus:

Schaltbild Arduino mit LEDD1 ist hier einfach eine LED. Eine LED ist eine Diode, und eine Diode wiederum lässt Strom nur in eine Richtung durch. An der Seite, wo der Strich ist, oder auch: in der Richtung, in die das Dreieck zeigt, muss der Minuspol (bzw. auch Masse) liegen. Einen Transistor anzutreiben ist genauso einfach, wie eine LED. Sehr vereinfacht ausgedrück besteht ein Transistor aus 2 Dioden. So ersetzen wir die LED mit einem Transistor:

Arduino mit Transistorschalter 1

Betrachten wir dabei nur den fett markierten Bereich (und ignorieren erstmal den Widerstand R1), sieht das sehr ähnlich aus. Auch im Transistor ist ein Dreieck, das Richtung Masse zeigt. Der Arduino ist am Anschluss „B“ (für Basis) mit seinen 0 (aus) oder 3,3 (an) Volt angeschlossen, der Stromkreis wird dann dadurch geschlossen, dass der Emitter (Anschluss „E“) an der Masse angeschlossen ist.

 

Der Widerstand ist zum Schutz des Controllers und des Transistors sinnvoll. Wenn der Controller den Pin anschaltet, läuft (fast) ungehindert Strom zwischen dem Controller-Pin und der Masse. Der Widerstand ist zur Begrenzung dieses Stroms da.

Nach dem Ohmschen Gesetz ist der zu berechnen. In dieser Erklärung geht es um grobe Berechnungen, um es nicht unnötig kompliziert zu machen (für absolute Genauigkeit gibt es hier auch noch keinen Grund), ignoriere ich ein paar unbdeutende Parameter. Demnach ist U / I = R (U = Spannung in Volt, I = Strom in Ampere, R = Widerstand in Ohm). Die Spannung ist bekannt, das sind U=3,3 Volt, der maximal akzeptable Strom für den Arduino kennen wir auch, der ist I = 40 mA = 0,04 A. Danach ist der minimale Widerstand R = 3,3 V / 0,04 A = 82,5 Ohm. Aber, weniger Strom ist immer besser, also sagen wir mal 10 mA wären nett. Also ist der Widerstand R1 = 3,3 V / 0,01 A = 330 Ohm. Ähnliche Werte, wie z.B. 300 sind hier völlig okay. Wir betreiben den Transistor als Schalter, also an oder aus. Je mehr der Controller und der Transistor geschützt werden können, desto besser, aber ein wenig Strom braucht der Transistor doch noch. Sehr simpel zusammen gefasst: ein Widerstand da ist prima, wenn der zu groß wird, schaltet der Transistor nicht, aber je größer, desto besser.

Natürlich sieht man erstmal nichts, wenn wirklich nur der Transistor vom IO-Pin des Arduino angesteuert wird. Dafür aber ist dann der Rest der Schaltung zuständig. Wenn der Transistor vom Arduino Strom kriegt, schaltet er auf „an“. Dann ist (quasi) die LED direkt an die Stromquelle angeschlossen (wieder nur der fett markierte Bereich):

Arduino mit Transistorschalter 2Der Strom fließt dann – gesteuert durch die Basis – von der Stromversorgung über die LED D1 und den Widerstand R2 durch den Transistor über den Anschluss „C“ (Kollektor) aus dem Anschluss „E“ (Emitter) zurück zum Minus-Pol der Stromversorgung. Das bedeutet dann übrigens auch, dass man die Stromversorgung für die LED recht frei wählen kann. Insbesondere können mit den 3,3 V des Arduino LED-Module geschaltet werden, die 12 V benötigen.

Auch hier ist wieder ein Widerstand eingezeichnet. Nehmen wir mal an, die Stromversorgung würde bei 12 Volt arbeiten, und wir würden nur eine LED dran betreiben, dann müsste der Widerstand R2 den Strom über die LED begrenzen. Wieder kommt das Ohmsche Gesetz daher, leicht modifziert allerdings. Die Berechnung des Vorwiderstands einer LED erfolgt folgendermaßen (oder durch dieses verlinkte Script): R2 = (US – ULED) / ILED = (12 V – 4 V) / 0,02 A = 400 Ohm (US = 12 V der Stromversorgung, ULED = 4 Volt für weiße LEDs, ILED = 20mA – ist ein Wert, den eigentlich jede LED aushalten können sollte). Realistisch ist auch das wieder eine konservative Schätzung, da wegen des Transistors nicht wirklich 12 Volt von der Stromversorgung einzurechnen sind.

Damit kommen wir dann zu dem Gesamtschaltbild:

Arduino mit Transistorschalter 3Es bleiben noch ein paar Fragen:

  • sind 0,01 A über die Basis okay?
  • wieviele LEDs, bzw. wieviel Last kann betrieben werden?

Diese Fragen werden durch den Typ des Transistors beantwortet. Grundsätzlich ist die Last erstmal darüber begrenzt, welchen Strom der Transistor schalten kann. Ich habe einen BC547C genommen, weil der hier rum lag. Was die Spannungen angeht, liegen wir hier locker in vernünftigen Bereichen. Zwischen Kollektor und Emitter („C“ und „E“) dürfen bis zu 50 Volt liegen (im Beispiel sind es 12 V), zwischen Emitter und Base („E“ und „B“) dürfen 6 Volt liegen (im Beispiel sind es 3,3 V). IC (Strom über dem Kollektor, oder auch „Collector Current Continuous“) darf dauerhaft nicht höher als 100 mA sein, also 5 LEDs.

Die Verstärkung (DC Current Gain) liegt bei der C-Version bei 400. Das wären bei 0,01 A an der Basis also 4 A. Da der Transistor das aber nicht aushält, ist das offensichtlich zu viel (die 4 Ampere werden natürlich nur erreicht, wenn eine entsprechende Last anliegt…). Um bei einer 400fachen Verstärkung auf nur 100 mA zu kommen, sollte der Basisstrom also theoretisch 0,1 A / 400 = 0,00025 A = 0,25 mA sein. Da wir den Transistor aber zum Schalten gerne in vollem Sättigungsbetrieb haben, wird die Basis eigentlich übersteuert (steht unter „Base Emitter Saturation Voltage“) mit 5 mA. Der Maximalstrom über die Basis liegt weit höher, aber wenn wir den Widerstand vor der Basis mit 5 mA berechnen, sind wir auf einem guten Wert. Um den genau zu berechnen nehmen wir jetzt U = UArduino – VBE (sat) = 3,3 V – 0,9 V = 2,4 V. Also R1 = U / I = 2,4 V / 0,005 A = 480 Ohm. Aber alles zwischen 330 Ohm (wie oben behauptet) und 480 Ohm (und auch jeweils ein wenig drüber hinaus) ist an dieser Stelle absolut okay. Wird der Widerstand zu hoch, kommt nicht die ganze Leistung an den LEDs an, wird er zu niedrig, kann der Transistor durchbrennen. Für Experimente ist da genügend Platz, insbesondere, wo diese Transistoren ein paar Cents kosten.