Monorailcat

Autoradio Tuner List (3) : Intégration

icon 08/01/2017 - Comments are closed

Le chargeur de téléphone est placé juste devant le levier de vitesse, et le câble peut s'enrouler autour, ce qui peut devenir gênant en roulant.

Pour éviter tout ça, il doit être possible d'intégrer le chargeur de téléphone dans l'autoradio (dans lequel il reste la place du lecteur de cassettes).

Câblage
L'autoradio est alimenté par le +12V_Permanent (pin A4), et le +12V_Contact (pin A7) ne sert qu'à l'activer à la mise du contact.
DIN/ISO 10487 pinouts

Il y a deux gros pads à proximité d'une capa de découplage sur le PCB, l'empreinte ressemble à celle d'une capa chimique SMD, sauf qu'ils sont reliés au +12V_Permanent, et qu'on ne veut pas que notre chargeur vide la batterie.
Tuner list full PCB

En jouant un peu à l'Ohm-mètre (les pistes sont dures à suivre avec un PCB multi-couches), on arriver à trouver un pin relié au +12V_Contact. Les pistes sont fines, mais semblent correctes pour 500mA (<500mΩ, mon Ohm-mètre n'est pas plus précis).
+12V_Contact

Une fois les pads repérés, on peut souder sur la carte à LM2596 du chargeur de téléphone, sans oublier de mettre un fusible de 1A.

On peut aussi profiter que l'autoradio soit ouvert pour mettre les selfs différentielles à l'intérieur. En pratique, avec des selfs toriques, les fuites sont tellement faibles qu'on peut se permettre de les placer n'importe comment sans qu'il n'y ait de couplage avec d'autres selfs ou les circuits voisins.

Mécanique
On peut utiliser des vis/entretoises M3 pour fixer l'alimentation. Il faut faire attention à ce que les vis ne touchent rien d'autre que la masse, j'ai dû ajouter une rondelle isolante pour une vis proche du rail d'entrée.
Mounted PSU with

Comme c'est installé dans une voiture, il ne faut pas oublier qu'il y a beaucoup de vibrations et des cycles thermiques assez larges, du coup ce n'est pas une mauvaise idée d'ajouter des contre-écrous en plus du taraudage des trous.
Jammed Nuts on standoffs

Pour les vibrations, il faut aussi sceller tout ce qui peut bouger : fils, fusible, nappes, selfs. Les zip-ties sont moches, mais bien adaptés à ce genre de choses.
Zipties as strain reliefs

Une fois que tout est fait, on n'oublie pas de vérifier à l'Ohm-mètre qu'il n'y a rien de mal câblé, et que rien ne bouge en secouant le bloc. Avec un fusible de 15A dans la voiture, il y a de quoi faire des dégats sans même que ça ne coupe.

Une fois testé, on peut vérifier que le chargeur ne fonctionne que lorsque la clé est insérée.
Blue LEDs show the charger is powered

icon Tags de l'article : , ,

Autoradio Tuner List (2) : Bruit

icon 30/12/2016 - Comments are closed

En ayant pu (enfin) utiliser la voiture, j'ai remarqué qu'on entendait un bruit dépendant du régime moteur dans l'autoradio (probablement l'allumage).
En investiguant un peu, j'ai remarqué qu'en utilisant le chargeur de téléphone avec le moteur allumé, le téléphone avait aussi un bruit audible.

Identification et réparation
Ça suppose soit un PSRR immonde pour le chargeur du téléphone, soit du bruit de mode commun (rayonné ou bien conduit).

Du coup la solution miracle est arrivée après quelques secondes de réflexion : des selfs différentielles.

Avec quelques tours de câble enroulé autour d'un tore de ferrite sur les câbles d'entrée analogique et d'alimentation ont complètement réglé le problème.

common-mode ferrite inductors


Principe
Le but est de filtrer un courant parasite qui circule dans une boucle. Un simple filtre LC sur chaque fil de signal filtrerait le signal utile, sans beaucoup atténuer le signal parasite.
common-mode noise

Avec une self sur chaque signal, y compris la masse, c'est le même problème, on filtre le signal utile.
En couplant ces selfs entre elles, le signal de mode différentiel n'est pas perturbé. Le sens du bobinage fait que l'inductance est faible (le champ est nul) tant que le courant qui rentre par les fils de signaux est égal au courant qui retourne par la masse. Par contre en cas de perturbation de mode commun, le courant entrant et le courant sortant tendent à ne pas être égaux (soit par une boucle de masse, soit par des capacités parasites), du coup il commence à y avoir un champ magnétique dans la self, qui présente une inductance (et atténue ces courants).

common-mode vs differential inductors

Références

icon Tags de l'article : , , ,

Autoradio Tuner List : Entrée Aux

icon 30/10/2016 - Comments are closed

J'ai un autoradio Tuner List (Renault/VDO, modèle 22DC259/62T), avec un lecteur cassettes qui m'est inutile, mais je voulais ajouter une entrée analogique pour y brancher un smartphone ou un lecteur audio.

/!\ Danger
La tension maximale n'est que de <15V, mais tout est sous tension, même lorsque le contact n'est pas mis, ou que l'autoradio est éteint. Le fusible permet de sortir 15A, largement de quoi tout casser et se blesser avant qu'il ne fonde.
/!\ Warning
The maximum voltage is only <15V, however, the radio is always powered, even when switched off or when the engine is turned off. The fuse is rated for 15A, more than enough to blow the radio and hurt yourself before it melts.


Démontage
Sur les Renault Mégane, la face avant de l'autoradio est plus large que celle des autres voitures, mais les fixations sont à peu près au même standard.
Il suffit d'insérer deux clous de 4mm dans les deux trous en bas sur les côtés, pousser les clous vers l'extérieur, et de faire bouger l'autoradio sur les côtés en le tirant. Deux mains sont nécessaires, mais c'est faisable sans outils spéciaux.
Removing the radio from the car's front panel

Une fois l'autoradio tiré, il y a un connecteur DIN/ISO (parfois séparé en deux parties) à gauche, puis un connecteur (jaune dans ce cas), pour relier les commandes au volant et l'afficheur (I²C). Il y a aussi parfois aussi un connecteur (bleu) dans le cas où un chargeur de CD serait présent. Le câble d'antenne (Coax à droite) est aussi à débrancher. Il est souvent clipsé à l'arrière de l'autoradio.

Code
Quand l'alimentation de l'autoradio a été débranchée, il est nécessaire d'entrer un code (normalement fourni, sinon trouvable à partir du numéro de série).
Quand l'autoradio affiche "0000", avec le premier '0' clignotant et qu'il faut entrer le code "1234", il faudra taper une fois sur la touche "1", une fois sur la touche "2" pour choisir le 2nd caractère (qui doit clignoter), puis deux fois sur cette touche (l'écran doit afficher "1200"), idem avec les touches 3 et 4 pour les derniers digits.
Une fois le code complet, il faut maintenir la touche 6 appuyée jusqu'à ce que l'autoradio fonctionne normalement.

Teardown
Le haut de l'autoradio se démonte simplement en déclipsant 4 clips avec un tournevis plat.

Il faut retirer deux connecteurs Würth WR-MM et dévisser 4 vis Torx T8 pour démonter le lecteur de cassettes en le tirant vers l'arrière (il faut retirer la cassette présente avant de retirer le lecteur).

La carte n'a de composants que sur la face, le PCB vertical à l'arrière contient uniquement le tuner FM/AM, et le PCB vertical à l'avant supporte des boutons poussoirs et des LEDs.

Il y a 3 composants qui nous intéressent :
  • TEA0676T : Préampli de cassette, à proximité du connecteur WR-MM à 4 pins des têtes du lecteur de cassette
  • SAA7708H : ADC + DSP + DAC + MUX + décodage RDS + décodage SPDIF, ASIC "magique" conçu pour les autoradios
  • 93CW44DF : Microcontrôleur OTP ou ASIC custom, sans documentation, semble tout contrôler

Les autres gros circuits intégrés concernent le tuner, l'ampli de puissance ou de la glue logique.
VDO/Renault Tuner List taken apart

Sur cet autoradio, il est possible d'utiliser l'entrée SPDIF (disponible sur le connecteur du chargeur de CD), mais le périphérique doit communiquer avec l'autoradio (RS232 0-12V, 9600, 8N1).

Entrée
Le circuit SAA7708H supporte 3 entrées analogiques (phone, tape, CD), mais elles sont contrôlées par le chip 93CW44DF (contrôle par un bus I²C).
Comme le lecteur de cassettes ne me sert pas, je vais câbler l'entrée à la place de celui-ci.

Au niveau des têtes de lecture, le niveau est très faible (~1mV), et surtout le signal est remis en forme (filtres, égaliseur). Il est nettement plus simple de récupérer le signal en sortie du préampli (signal déjà égalisé, filtré et amplifié), à environ 1V (compatible avec une sortie casque/ligne au volume maximal).

En regardant entre la sortie du TEA0676T l'entrée du SAA7708H, on voit des capacités pour bloquer une composante DC, et un filtre passe-haut (entrée d'ADC). On va donc câbler l'entrée juste à la sortie du TEA0676T.

Adding an analog input to the VDO tuner list
Adding an analog input to the VDO tuner list

Les pins 1 et 16 sont dessoudés et isolés de leurs pastilles, et le câble d'entrée est soudé sur des points de test et la masse sur un plan.

Après un test, l'entrée fonctionne uniquement si le lecteur de cassettes (connecteur à 10 pins) est branché et si une cassette est présente (il n'y a pas besoin de brancher le câble à 4 pins).

Lecteur de cassettes
Par un peu de rétro-ingéniérie, il est possible d'identifier chaque signal du connecteur WR-MM à 10 pins :
PinFonction
1Auto-reverse switch
2GND
3Presence switch (C)
4Presence switch (T)
5Motor (+)
6Mute switch
7Solenoid
8Solenoid
9NC
10CrO2 switch
Avec quelques tests, seulement les fils en gras sont utiles pour activer le lecteur de cassette.
Le pin 6 (Mute switch) est à relier au pin 2 (GND). Les pins 2 et 3 (presence switch) sont à relier entre eux.
fooling the cassette deck controls on the VDO tuner list


Remarques
Attention, il y a très peu de place entre le volant et le levier de vitesse, un faux mouvement fait vite des dégâts. En pratique, il faut isoler le mécanisme de cassette et le PCB de contrôle avec des sachets antistatiques, et aussi débrancher le connecteur WR-MM à 10 pins avant chaque modification.

À la moindre erreur, il peut y avoir de gros dégâts :
what happens when you're not careful enough

L'autoradio est soumis à de larges cycles de température et doit supporter des vibrations. Pour cela, tous les câbles ont été isolés avec de la gaine thermo-rétractable ou plusieurs couches de ruban de kapton ou de vinyl.
Il faut aussi prendre en compte le fait que le jack peut être tiré depuis l'extérieur. Un simple noeud permet d'éviter de casser les soudures.
careful wiring

Les boutons eject et avance/retour rapide ont été fixés par des morceaux de PVC pris en sandwich entre la face avant et le haut du boitier. Il a été nécessaire de percer les boutons pour laisser passer le câble.
Front face of the modded Tuner List. One could barely tell it has been deeply modified.

Tests
Une fois toutes les modifications testées in-situ, puis faites de façon définitive, on a gagné un jack 3.5mm (de quoi faire des envieux chez les propriétaires d'iPhones 7)

Avec mon lecteur audio Sandisk Sansa et mon smartphone HTC Desire X, le volume doit être au maximum pour avoir le même volume que le tuner FM, mais le son est bien en stéréo et de bonne qualité.


Références

icon Tags de l'article : , , ,

Chargeur de téléphone

icon 28/10/2016 - Comments are closed

J'ai eu besoin d'un adaptateur fonctionnant sur un allume-cigare de voiture, pour charger un téléphone, et occasionellement d'autres objets.
Comme mon appareil photo ne se charge qu'à 250mA, je vais mettre deux ports, un câblé pour autoriser une charge rapide à 1.5A (smartphone), et un autre limité à 250mA.

Solutions
J'ai récupéré un chargeur de Motorola T205 avec un connecteur allume-cigare. Le problème, c'est que le circuit du chargeur est incompatible avec n'importe quel périphérique USB (5.8V à vide + limite de courant à 150~200mA).

Pour cela, on ne gardera que le boitier compatible avec un connecteur allume-cigare, mais on devra changer le convertisseur pour qu'il puisse fournir du 5V, avec quelques contraintes :
  • Tension d'entrée : 7~16V, tension bruitée
  • Courant d'entrée : <2A, fusible
  • Tension de sortie : 5.0V, peu bruitée
  • Courant de sortie : 2A

J'ai quelques régulateurs de la famille LM25xx (ici des LM2596 donnés pour 3A) et des connecteurs USB dessoudés d'une carte-mère de PC, ça devrait pouvoir s'adapter sans aucun problème.
buck psu as a car smartphone charger

Câblage
Régulateur
Pour éviter les problèmes avec le régulateur ajustable, le potentiomètre permettant de régler la tension d'alimentation va être remplacé par des résistances fixes de 2.2k et 6.8k (le potentiomètre peut facilement être dérêglé par des vibrations, et rentre mal dans le boitier).
replacing the pot by two fixed resistors

Ici, j'ai utilisé une résistance traversante et une 1206 pour optimiser le routage (et parce que les pastilles du PCB Made in China sont parties en dessoudant le potentiomètre).

USB
J'ai uniquement regardé les spécifications des ports USB concernant les périphériques "universels" (je n'utilise pas de périphériques Apple).
Le port USB Rapide est câblé avec les deux pins D+ et D- reliés (<200Ω d'après les specs) et une résistance de pulldown de 1MΩ pour ne pas s'éloigner des specs.
Le port USB Lent est câblé avec uniquement des résistances de pulldown de 12kΩ.
pulldown resistors on the USB connector

Les résistances de pulldown sont rarement présentes dans les chargeurs cheap, mais laisser les pins de données flottants pose un risque d'ESD (surtout dans une voiture isolée de la terre).

Assemblage
Le boitier d'origine est légèrement trop petit, il a fallu le fraiser, puis le refermer avec du duct-tape et des zipties. L'arrière du port USB est protégé par de la colle chaude et du duct-tape.
duct-taped and ziptied smartphone charger

J'ai remarqué une fois l'assemblage terminé qu'une LED visible depuis l'extérieur aurait été utile.

Il est indispensable d'isoler proprement les pins en entrée de l'alimentation.
dangerous Chinese wiring


Références

icon Tags de l'article : , , ,

Sandisk Sansa Clip+

icon 31/07/2016 - Comments are closed

J'utilise un balladeur Sandisk Sansa Clip+ sans avoir eu le moindre problème depuis 2010.

Il y a quelques jours, le bouton poussoir de mise en marche ne fonctionnait plus, la partie extérieure du bouton bougeait sans actionner les contacts.

Démontage
C'est la partie la plus délicate, la face arrière est clipsée sur la face avant (sans colle).
Seuls le haut et le bas ont des gros clips faciles à actionner, mais j'ai décidé de l'ouvrir par le haut pour éviter de toucher les fils de la batterie (un court-circuit ferait beaucoup de dégâts).

La solution qui semble la plus pratique est d'enfoncer une lame de cutter (attention aux doigts), entre la face avant et l'arrière, au niveau du bouton d'alimentation, puis de faire levier.
Une fois qu'un ou deux clips ont bougé, on peut glisser la lame un peu plus loin sur les côtés et le bas. Il faut un peu forcer, la batterie est légèrement collée à la coque arrière et au PCB.

Le PCB est vissé à la face avant, mais l'écran est collé sur la face avant, j'ai décidé de ne pas y toucher pour garder l'écran aligné et fonctionnel.

Identification
Sandisk Sansa Clip plus system board
Le dos du PCB est assez simple :
  1.  SoC Sandisk (ASIC custom?) en boitier BGA
  2.  Mémoire Flash Sandisk 2Gio, (probablement 32nm)
  3. Radio FM RDA5802E
  4. Batterie Li-po BAK 323036 (dimensions L l e en mm et dixièmes de mm), 290mAh

Réparation
J'ai trouvé les soudures du bouton poussoir arrachées, et le bouton poussoir entre la batterie et le SoC.
Un test avec un tournevis à permis de vérifier qu'aucune piste n'a été arrachée, et la re-soudure du bouton poussoir à réglé le problème.
Sandisk Sansa Clip plus broken switch solder joints

Dans le doute, j'ai aussi refait quelques autres soudures peu chargées en étain.
Sandisk Sansa Clip plus repaired switch solder joints


Références

icon Tags de l'article : , ,

Alimentation HP ESP135

icon 22/07/2016 - Comments are closed

Description
J'ai récupéré une alimentation HP ESP-135 qui vient d'un HP Proliant DL-380 G4 et fabriquée par Lite-On (modèle PS-3601-1C).
Ces alimentations peuvent se monter par paire et sont "hot swap". Par contre, je n'ai pas récupéré la carte d'interconnection entre les alimentations et la carte mère et qui permet de contrôler l'alimentation. Du coup il faudra faire un peu de reverse-engineering pour la faire fonctionner.

D'après l'étiquette, l'alimentation a un rail +5V (standby) sortant 7A, et un rail +12V capable de sortir 47A (600W).

Mesure
Le soucis, c'est que la connectique n'est pas documentée et ne respecte aucun standard, on peut trouver les lames de gauche qui sont reliées à la masse, et celle de droite au +12V (reliées par des busbars à l'intérieur).

Alimentation branchée, mais arrêtée :
  1. +5V
  2. +5V
  3. +5V
  4. 3~5V
  5. 0V
  6. 4.6V
  7. 0.2V
  8. 0V
  9. 0,2V
  10. 4.6V
  11. 1.5V
  12. 0V

Les pins en rouge sont des rails d'alimentation et ceux en bleu sont des signaux logique ou de feedback (forte impédance)

En identifiant un peu et en regardant le marquage sur le PCB, on peut trouver quelques signaux :

Identification :
  1. +5V SB
  2. +5V SB
  3. +5V SB
  4. FAN_V (out)
  5. -12V
  6. PS_ON_1?
  7. 12V FB?
  8. GND
  9. GND_FB?
  10. PS_ON_2?
  11. ?
  12. 5V_FB?
Uniquement les signaux en vert sont écrits explicitement sur le circuit imprimé. Les autres ont été "devinés" en mesurant et en testant.

Si on relie les deux signaux PS_ON à la masse (pins 6, 8 et 10), l'alimentation démarre.

Alimentation démarrée :
  1. +5V
  2. +5V
  3. +5V
  4. 3~12V
  5. -12V
  6. 0V_
  7. 12V
  8. 0V
  9. 0.2V
  10. 0V_
  11. 1.5V
  12. 4.5V

Câblage
Comme avoir des câbles qui pendent autour du connecteur n'est pas très pratique, j'ai voulu avoir un interrupteur en façade de l'alimentation.
switch wiring

Le PCB de connectique est relié à la carte principale de l'alimentation par des busbars et quelques câbles. Le connecteur CN8 est relié à un autre PCB de contrôle de l'alimentation.
Les signaux qui nous intéressent, PS_ON_1 et PS_ON_2, sont respectivement sur les pins 3 et 6 du connecteur CN8. On peut trouver un point de masse sur le connecteur de la LED D910.
ground signal

Pour éviter que l'alimentation ne fonctionne dans un serveur, on va enlever les fils 3 et 6 du connecteur CN8 et les câbler directement sur l'interrupteur.
J'ai utilisé un interrupteur bipolaire pour limiter la casse (je ne sais pas comment la carte-mère commande l'alimentation), mais on peut voir d'autres montages où les deux signaux PS_ON_1 et PS_ON_2 sont reliés en permanence.
modified PSU


Notes
La vis située à côté des busbars est l'unique point qui relie la masse du secondaire au le châssis de l'alimentation. Il faut noter que les transistors Q300 et Q302 (PFC?) chauffent avec l'alimentation à vide, lorsque la masse est isolée. Dans le cas où on voudrait mettre plusieurs alimentations en série (ce qui n'est pas une bonne idée), c'est ce point-là qu'il faut isoler.
Secondary ground point

Références
Convert HP server PSU for RC use - TjinTech

icon Tags de l'article : , ,

Onduleur APC CS 500

icon 20/07/2016 - Comments are closed

J'avais récupéré un onduleur dont l'autonomie est devenue de plus en plus courte jusqu'à ce que la LED Replace Battery soit allumée et que la batterie soit gonflée.
Une remarque curieuse était le non-fonctionnement avec certaines alimentations (Enermax à PFC actif) et les bruits audibles (couinement) avec certaines alimentations Antec (CWT) et HP, toutes à PFC actif (aucun problème avec des alimentations sans PFC).

Démontage
La batterie s'enlève par la trappe dessous, ensuite les deux vis à l'arrière permettent de déclipser la face arrière vers le haut et le côté droit.

APC CS 500 screws
Tous les câbles basse-tension ont des cosses Faston et les couleurs des câbles sont indiquées sur le PCB. Les câbles en 230V ont des connecteurs AMP/Molex "idiot-proof" qui rendent difficiles les erreurs de câblage.

Le PCB de protection RJ11 est clipsé sur la face arrière, et le PCB qui contient tout l'onduleur est déclipsable du côté gauche une fois le transformateur déposé (sans vis).

Tous les PCB ont la référence 640-0287_Rev08 (probablement lié à un fonctionnement 230V 50Hz).

Architecture
L'onduleur a une structure off-line, typique des onduleurs cheap.
Off-line inverter

En voyant les deux enroulement symétriques du transformateur et deux MOSFETs de puissance, on identifie une structure push-pull.
Plutôt que de commander les transistors en PWM à quelques kHz pour avoir une sortie quasi sinusoïdale (l'inductance du transformateur et une capacité de 100nF suffisent à filtrer les harmoniques), cet onduleur commande les transistors en tout ou rien à 50Hz.
Ce qui explique les incompatibilités avec certaines alimentations à PFC actif.
Voltage output waveform

En plus de l'onduleur, une petite alimentation Flyback est présente pour charger la batterie.
APC BK-500 board overview

Transformateur
Le transformateur à 3 enroulements :
  1. 230V (10.5 Ohm, 18.5H)
  2. 2×7.8V (<100mOhm, 20mH)
  3. 15V (~100mOhm, 40mH)
APC BK-500 transformer

L'enroulement (2) est alimenté en 12V à 50Hz (signal carré retardé) pour que l'enroulement (1) fournisse une tension de 350V en crête (230V efficace en prenant le retard en compte).
L'enroulement (3) est commandé par la basse tension pour annuler le flux du transformateur pendant les temps morts (technique "active clamp").
APC BK-500 transformer

Dimensionnement
L'onduleur est donné pour 500VA en sortie d'onduleur (600W consommés sur la batterie est un bon ordre de grandeur).

La batterie Plomb-Acide étanche est donnée pour 7Ah, sans aucune mention "high-current" comme une batterie de véhicule. Les batteries Yuasa NP7-12 sont souvent données comme équivalentes, et ont une autonomie de 2min à leur courant maximum de 6C (soit 42A, 440W en fin de décharge).

Le fusible protégeant la batterie est donné pour 60A (600W en fin de décharge), les MOSFETs du demi-pont de l'onduleur (HFR3205/IRF3205) sont donnés pour 80A (continu) et 8mOhm et sont montés sur un radiateur de ~12.5°K/W (à la louche). En considérant une moyenne de 30A par transistor (demi-pont), on obtient 7.2W dissipés et une différence de température package/air de 90°C (soit 115°C avec une température ambiante de 25°C).

Je n'ai pas mesuré la saturation du transformateur (mais celui de mon alim de labo de 100W est plus volumineux), du coup il n'est pas possible de conclure.

Par contre les 500VA sont probablement atteignables en pic, lors du branchement d'alimentations à découpage (chargement "brutal" de capacités), mais l'onduleur est plus réaliste pour fournir 50 à 150W pendant 10 à 30min...

Protections
Le transformateur CT1 et les AOPs IC8 renvoient une mesure du courant, et les réseaux de résistances R40-R71 et les AOPs IC10 renvoient une mesure de la tension du secteur et de celle en sortie d'onduleur.

Toutes les mesures arrivent sur les canaux analogiques du microcontrôleur IC1 (ST72F63BK-4, 8-bit à 24MHz, USB, ADC...), qui a des sorties pour commander les MOSFETs push-pull et de clamp de l'onduleur.

Références

icon Tags de l'article : ,

Réparation de disques durs

icon 07/07/2016 - Comments are closed

Il y a quelques semaines, un de mes disques durs s'est arrêté de fonctionner. Ça a été l'occasion de tenter de le réparer, et de voir s'il était possible de réparer d'autres disques en stock.

Hitachi Deskstar 7K3000
J'ai acheté deux disques identiques, de modèle HDS723020BLA642 (2To, 7200rpm, SATA 6Gbit/s) en août 2011.
Jusqu'en juin 2013, les deux disques fonctionnaient 24h/24 dans mes deux serveurs, dont les données étaient synchronisées quotidiennement.
Après 2013, un des deux disque n'a servi que pour des sauvegardes plus ou moins régulières.
En juin 2016, j'ai démarré le disque pour une sauvegarde, mais il n'a jamais fonctionné, même après plusieurs tests.

Curieusement, c'est le disque qui a le moins servi (< 200 start-stop, < 20 000 heures, température < 40°C) qui ne fonctionne plus.

Identification
Comme il n'y a pas de rotation du moteur ni de mouvement des têtes (d'habitude audibles), et que le disque n'est pas détecté par le PC, je suppose que le problème vient de l'électronique et pas de la mécanique ou du stockage.
Il y a quelques marquages sur le PCB (référence : 110 0A90302 01), mais aucune documentation, datasheet ou schéma n'est accessible, il y a quelques forums qui montrent des points de tests, mais ce n'est pas forcément facile à tester (le PCB est face contre le disque) ni fiable (certaines infos se contredisent).

Hitachi Deskstar 7K3000 0A90302 PCB
Un cas typique à l'air de venir de fusibles sur les rails 5V et 12V à proximité de diodes transil (TVS), mais tout est en bon état de ce côté là, et le disque consomme un peu sur le rail 5V. En testant le non-court-circuit des capacités, transistors/MOS et diodes, et la continuité de toutes les inductances, résistances de puissance, diodes et fusibles, je suis arrivé à un composant ressemblant beaucoup à un fusible (ou une capacité en mica, peu probable ici) ouvert.
Hitachi 7K3000 fuse replacement

Réparation
Après l'avoir remplacé par un fusible 2A temporisé (il n'y avait aucun marquage clair d'origine, mais ça devrait se couper en cas de court-circuit franc), il n'y a toujours aucun fonctionnement, et le fusible est encore conducteur.
FAIL!
Si quelqu'un a un disque Hitachi Deskstar 7K3000 Hors-service avec le même PCB 110 0A90302 01, vous pouvez me contacter, je serais curieux de faire quelques tests.
If anyone has a non-working Hitachi Deskstar 7K3000 with a 110 0A90302 01 PCB, feel free to contact me, I would be interested to perform a few more tests.


Update (07.2016) :
Le fusible n'en est pas un. Il s'agit d'un accéléromètre piezo (d'où une capacité de quelques centaine de pF et pas de résistance parallèle quand je l'ai mesuré) et sert à détecter les chocs (probablement pour la garantie). Son remplacement par un fusible n'a rien dû changer...



IBM (HP) Ultrastar 36LZX
J'avais récupéré un array RAID de disques DDYS-T18350 (18.4Gio, 10krpm, SCSI Ultra 3) dans un serveur HP, et l'un d'eux ne fonctionnait pas. Je l'avais remplacé sans me poser de questions il y a plusieurs mois, mais je l'avais mis de côté pour une autopsie.

Identification
Le disque avait un comportement curieux, avec des temps d'accès très lents, quelques redémarrages, et la carte RAID qui affichait un problème pour ce disque.
J'ai supposé un problème mécanique, mais j'ai commencé par démonter le disque de son rack, et j'ai trouvé une capacité 0402 au fond du rack...

Réparation
Avec une soudure un peu grosse, mais faite avec du matériel accessible (panne de fer de 1.2mm, pas de flux, étain au plomb, pince à épiler), il y a quand même de quoi replacer proprement quelques composants en boitier 0402.
IBM Ultrastar capacitor replacement

Résultat
Le disque est détecté par la carte SCSI, mais renvoie l'erreur "Disk not ready", et le système d'exploitation renvoie un timeout pendant la detection des disques. L'absence de capacité a peut-être causé d'autres dégâts, ou alors c'est une coïncidence (probablement un choc durant le transport).
IBM Ultrastar still fails
FAIL!

Références

icon Tags de l'article : , ,

Ventilation silencieuse pour serveurs

icon 01/07/2016 - Comments are closed

Dans la majorité des cas, le refroidissement des serveurs est conçu pour un fonctionnement 24h/24 dans un environnement défavorable, typiquement, avec 10 à 40 serveurs empilés dans une baie, avec une température ambiante de 50°C.
Dans ce cas-là, il est nécessaire d'avoir une ventilation performante pour que la température de tous les composants reste acceptable (typiquement, <70°C pour les gros circuits intégrés, <85°C pour les composants de puissance et <55°C pour les disques durs).

Mais pour utiliser un serveur seul, dans une maison, ou bien pour le réutiliser en tant que workstation, la ventilation est inutilement performante, et reste très bruyante.

HP Proliant ML-350 G1
J'ai eu ce serveur dans ma chambre en 2010, du coup j'ai rapidement changé sa ventilation.
Sur ce serveur, il y a un ventilateur de 120mm qui extrait l'air du boitier, un ventilateur de 90mm qui refroidit le processeur et les disques durs, et un ventilateur de 80mm dans l'alimentation.

L'alimentation est proche de la norme ATX (avec un connecteur propriétaire de plus). Il est possible de remplacer le ventilateur simplement en recâblant le connecteur, en sachant que le fil du tachymètre n'est pas câblé.

Dans mon cas, j'ai décidé de me passer du ventilateur de 120mm (rouge) et de remplacer celui de 90mm (vert).
HP ML350 replaced fans

Sauf que si la majorité des ventilateurs ont un connecteur à 3 pins, les HP Proliant ont un câble propriétaire :
  1.  GND
  2. GND (sense)
  3. 12V
  4. NC (détrompeur)
  5. Tach

Ce câble a plusieurs ruses : le pin 2 est court-circuité par le câble du ventilateur, ce qui permet de remarquer si un ventilateur n'est pas branché et Le pin 3 est utilisé par le tachymètre du ventilateur.
Dans les deux cas, la carte-mère renvoie une erreur si un ventilateur n'est pas branché, ou bien s'il tourne trop lentement.

Si c'est clairement utile pour prévenir les erreurs dans un serveur en production, ça force à utiliser un ventilateur d'origine HP, ou bien à copier le câble et à avoir un ventilateur rapide.

Modification
Pour se passer de la première erreur, les pins 1 et 2 de chaque ventilateur sont reliés par un jumper pour leurrer la détection de ventilateur.
La seconde erreur va être contournée en leurrant la carte-mère en lui faisant croire qu'il y a un ventilateur tournant au moins à 3000rpm (vitesse du plus lent des ventilateurs originaux).

Les ventilateurs de PC ont un moteur brushless à deux phases, et du coup le signal du tachymètre renvoie deux impulsions par tour, avec un transistor monté en collecteur ouvert, qui vient se fermer pendant quelques ms.

Les circuits intégrés NE555 peuvent se monter en oscillateur astable pour générer un signal avec un rapport cyclique d'environ 1/2, et une fréquence de 150Hz (4500rpm).
555 fake fan tach signal

On utilise deux transistors, un pour chaque ventilateur. Il aurait été possible de relier les deux signaux sur cette carte-mère, mais il est possible que le signal du tachymètre n'ait pas le même niveau logique partout (typiquement le cas de ventilateurs branchés sur des cartes différentes dans un même PC).

555 fake fan tach signal on stripboard
Sur le montage réel, je pense que j'avais oublié de relier le point entre les R1 et R2 au pin 6 (Threshold), du coup le réseau de résistances (internes au 555) chargait C1 et la fréquence et le rapport cyclique devaient être incorrects. J'avais aussi oublié C2 et C3 pour découpler le pin 5 (CV) et l'alimentation.

Le montage final est emballé dans un sachet antistatique et collé à la carte SCSI.
fake fan tach signal HP ML350

Références

icon Tags de l'article : , ,

Préampli : Affichage et contrôle (bas-niveau)

icon 14/05/2016 - Comments are closed

J'avais récupéré un KVM qui avait quelques défauts (image bruitée sur certains canaux, clavier non-fonctionnel avec certains PC) et ne m'était pas utile. De ce fait, je n'ai gardé que le boîtier en acier et la face avant pour l'utiliser dans un projet de préampli.

reverse engineered KVM switch

Face avant
Il y a un PCB avec 2 latches 74HC273 et un latch 74HC374, 9 boutons poussoirs, 16 LEDs et un buzzer. Chaque groupe de boutons et de LEDs est relié à un latch, relié à un bus 8 bits.
Le second bus sert au contrôle des latches, du buzzer et du switch de droite.

Pinouts
Control_bus :
  • BUZ: 0
  • SWI: 1 (input)
  •  !CLR: 2 (active low)
  • CLKG: 3 (green)
  • CLKR: 4 (red)
  •  !OE: 5 (active low)
  • CLKS: 6 (switches)
  • NC: 7
  • Vdd: 8 (+5V)
  • Vdd: 9 (+5V)
  • Vdd: 10 (+5V)

Data_bus :
  • DATA: [0..7] (TTL in/out)
  • Vss: 8 (GND)
  • Vss: 9 (GND)
  • Vss: 10 (GND)

Interface bas-niveau
Pour commencer, j'ai utilisé un Arduino Mega en reliant le bus de données sur le port F ([A0..A7]), et le bus de contrôle au port K ([A8..A15]).

La fonction ledOut() permet d'allumer les LEDs vertes et rouges en fonction des variables ledG et ledR (uint8_t).
void ledOut(void) {
  //set bus out
  DDRF = 0xFF;
  // clear latches
  PORTK &= ~_CLR;
  ndelay();
  PORTK |= _CLR;
  // reset bus
  PORTF = 0x00;
  //write bit
  PORTF |= ledG;
  ndelay();
  //write CLK up
  PORTK |= CLKG; //1st row
  ndelay();
  //write CLK down
  PORTK &= ~CLKG;
  //reset bus
  PORTF &= ~ledG;

  //write bus
  PORTF |= ledR;
  ndelay();
  //write CLK up
  PORTK |= CLKR; //2nd row
  ndelay();
  //write CLK down
  PORTK &= ~CLKR;
  //reset bus
  PORTF &= ~ledR;
}
La fonction swIn() écrit l'état des interrupteurs dans les variables swstatus et oldswstatus.
void swIn(void) {
  // save old value
  oldswstatus = swstatus;
  //set bus in
  DDRF = 0x00;
  //write CLK (up)
  PORTK |= CLKS;
  ndelay();
  PORTK &= ~CLKS;
  ndelay();
  //write !OE
  PORTK &= ~_OE;
  ndelay();
  ndelay();
  ndelay();
  //read bus
  swstatus = ~PINF;
  //write OE
  PORTK |= _OE;
  //set bus out
  //DDRF = 0xFF;
  //Serial.print(swstatus);
}
Ici, la macro ndelay() est équivalente à un NOP, soit 1 cycle à 16MHz (62.5ns). Le latch 74HC374 est donné pour supporter un temps de transition de 45ns, en pratique, la transition entre !OE et les sorties donne quelques glitches lorsqu'on attend que 125ns, et le fonctionnement est correct avec une pause de 187.5ns (3 NOPs à la suite).

Références

icon Tags de l'article : , , ,