Samedi, avril 13 2013

[Réparation] Et la lumière fut

Bonjour tout le monde !

Il y a quelques temps (une grosse semaine environ) ma "lampe loupe" d’atelier a rendu l’âme.
Bien sûr, comme il s’agit de ma lampe il a fallu que celle-ci crame de manière spectaculaire.
Juste s’éteindre sans se rallumer c’était trop lui en demander …

Du coup sans que je ne m’y attende le néon ET le starter (quitte à faire) ont explosé dans un ultime flash lumineux.

Comme certains diront que j’exagère un peu voici à quoi ressemble désormais le néon :

P1060331

L’étincelle (si on peut vraiment appeler ça une étincelle) a fait fondre le support en fer + plastique qui est maintenant complétement collé au verre du néon …

Et le starter ?
Ce truc made in chinois de mauvaise qualité ?

P1060332

Et bien lui aussi a décidé d’avoir une fin grandiose …

P1060335

Résistance cramée x1

P1060337

Résistance cramée x2 (juste derrière la broche centrale du transistor de puissance)

P1060339

Et bonus fusible fondu !
(Il servait franchement à rien ce fusible de 1A. Il a largement eu le temps de laisser tout le circuit cramer avant de fondre …)

Réparation

P1060340

Une fois la fumée et l’infâme odeur de plastique brulé dissipée j’ai tenté de réparer le starter.
Pour le néon … pas trop le choix je suis allé en acheter un neuf dans un magasin de bricolage.

J’ai donc testé le circuit : diodes ok, transistors ok, condo ok et bobinage ok.
En gros deux résistances de 11 et 13 ohms à remplacer … facile !

Le test

P1060343

Pour pouvoir tester ma réparation j’ai fait un truc HYPER DANGEREUX, que seul un abruti comme moi avec un Qi proche de celui d’un concombre de mer pourrait imaginer.
NE FAITE PAS ÇA CHEZ VOUS – non sérieux c’est dangereux !

En gros j’ai branché deux grippes-fils dans une prise, elle même reliée au 220v du secteur pour alimenter manuellement le circuit.
C’est l’idée de merde par excellence mais j’avais pas mieux sur le moment.

Et le résultat ?
Je vous laisse juger par vous même :

P1060346

Manifestement il y a eu comme un "petit" problème :)

La solution

Si j’ai décidé de faire un article sur ce fail monumental c’est que j’avais un truc à vous montrer ;)

La solution à mon problème de starter m’as été donné par NETeagle sur twitter :

@skywodd Tu peux le remplacer en récupérant un starter de puissance équivalente sur des lampes à économie d’énergie

— NETeagle (@t4nk8) 7 avril 2013

(désolé amis tweetos je ne peux pas inclure le jolie widget twitter sur mon wordpress)

Sur le coup j’étais un peu septique mais en fait c’est THE solution !

L’astuce consiste à prendre le starter d’une lampe néon à économie d’énergie.
Comme souvent le néon crame avant le starter (sauf chez moi bien sûr) on peut récupérer un starter dans une lampe HS de même puissance que la lampe qu’on veut sauver.

P1060351

Ça demande une scie et un peu de patience mais le résultat est là.

P1060352

J’ai démonté deux lampes HS de respectivement 10 et 12 watts.
Le circuit est similaire, pour ne pas dire identique, à celui de mon starter.

En cherchant sur le net j’ai même trouvé le schéma "type" de ce genre de starter électronique.
En fait c’est tout bête, le circuit est composé de 4 parties :
- un pont de diode pour redresser le 220v alternatif + un gros condensateur de lissage
- un auto-oscillateur à self
- un hacheur de tension réalisé avec deux gros transistors (bipolaires) de puissance
- un transformateur pour générer la haute tension qui alimente le néon

Si j’avais le temps j’aurai presque pu faire mon propre starter … mais bon c’est pas mon but.

P1060354

Pour tester j’ai câblé le starter de 12W sur mon néon de 22W.
Celui-ci s’est allumé sans problème mais pas à pleine puissance (ce qui est assez logique avec un starter de seulement 12W), qu’importe cela prouve bien que le principe marche.

P1060374

Du coup je suis allé acheter une lampe à économie d’énergie de 23W, cout total : un peu moins de 6€ !
Comparé aux 40€ d’une lampe neuve c’est une réelle économie d’argent ;)

P1060377

(montage définitif avec le starter de la lampe de 23w)

Remarque : le starter "hacké" est 2 voire 3 fois plus petit que celui de base … comme quoi la taille ne compte pas :)

Conclusion

Si vous avez une "lampe loupe" et des lampes à économie d’énergie HS (de même puissance) ne les jetez pas !
Gardez de côté le starter il vous sera peut être utile par la suite ;)

Bon WE et bon bidouillage à tous !


Classé dans:Corrigé, projet Tagged: hack, madeinfr

Jeudi, février 28 2013

[DIY + arduino] Alimentation d’atelier DIY – partie 2

Bonjour tout le monde !

Aujourd’hui j’ai le plaisir de publier la seconde partie de mon projet d’alimentation d’atelier DIY.
Pour ceux qui n’auraient pas suivi la première partie est disponible ici :
http://skyduino.wordpress.com/2012/09/04/bricolage-partie-1-alimentation-datelier-diy-a-partir/

Certains points ont évolué depuis la rédaction de cette première partie, en particulier concernant le schéma du montage que j’ai du entièrement revoir.
Trêve de bavardages, voici venu l’heure du DIY :)

Le matériel :

P1060038

Pour la réalisation de la carte mère j’ai utilisé :
1x carte arduino pro mini
1x écran LCD compatible HD44780
3x capteurs de courant ACS712
2x protoboards 3x7cm
3x prises banane (rouge)
3x prises banane (noir)
3x leds rouge 5mm
2x leds verte 5mm
1x buzzer
1x résistance de 100 ohms
3x résistance de 10K
5x résistances de 330 ohms
1x condensateur de 100µF
1x potentiomètre de 47K
1x capteur LM35 (optionnel)
+ des connecteurs tulipes mâles et femelles
+ des fils de câblages

Remarque : sur la photo vous pouvez voir un écran "POWERTIP PC1602-H", j’ai du changer d’écran après coup suite à un problème technique (j’en parlerai plus tard).

Le câblage :

Le montage est constitué de plusieurs parties qui une fois assemblées forment le montage final.

Les capteurs de tension :

diy_alim_voltage

Une des fonctionnalités de base d’une alimentation c’est de fournir un retour sur la tension réel en sortie.

Pour ceux faire j’ai utilisé 3 ponts diviseurs de tension, abaissant les 3 tensions de sortie de l’alimentation à un maximum de 5V pouvant être mesuré par la suite par l’arduino.
Les sorties +3v3 et +5v de l’alimentation sont mesurées au travers d’un pont diviseurs 1/2 pouvant donc accepter 10v maximum en entrée (j’ai vu large "au cas où").
La sortie +12v est mesuré au travers d’un pont diviseur 1/4 pouvant donc accepter 20v en entrée.

Les capteurs de courant :

diy_alim_current

Une autre fonctionnalité bien pratique pour une alimentation c’est de fournir une mesure du courant consommé sur chaque sortie.
Dans mon cas j’ai utilisé trois capteurs de courant intégrés du fabricant Alegro facilement disponible en breakout sur ebay ou dealExtreme : le ACS712.
Comme je ne sait pas encore très bien dans quelle fourchette de courant je vais me situer j’ai choisi de taper haut, j’ai donc pris une version x30A avec un maximum mesurable de 30A.
(autant dire qu’avec 30A j’ai de la marge)

Datasheet du ACS712-30A : http://www.allegromicro.com/~/Media/Files/Datasheets/ACS712-Datasheet.ashx

Les signaux de contrôle de l’alimentation :

diy_alim_signals

Pour pouvoir fonctionner correctement mon système à besoin de deux signaux reliés à l’alimentation d’ordinateur qui me sert de source de tension.

Un PSU d’ordinateur (= une alimentation à haut rendement) ce contrôle via deux signaux :
- PSU_ON (entrant, actif à l’état bas)
- POWER_OK (sortant, actif à l’état haut)
Ce sont tout les deux des signaux TTL, si PSU_ON est mis à GND l’alimentation démarre, de même quand POWER_OK passe à 5v cela signifie que la tension de sortie est stabilisé.

Vous remarquerez que j’ai mis la led du signal PSU_ON à l’envers (actuellement elle s’allume quand l’alimentation est arrêté).
Une fois le montage fini et testé je ferai une petite modification afin qu’elle s’allume quand PSU_ON = 0v, mais pour le moment je garde la configuration du schéma.

L’écran LCD :

diy_alim_lcd

Pour l’affichage j’ai pris un écran LCD 16×2 compatible HD44780, du classique disponible dans n’importe quelle boutique d’électronique.

J’ai cependant fait les frais d’une petite erreur d’inattention lors de ma commande !
J’avais commandé à l’origine un écran de la marque POWERTIP de référence : "PC1602-H".
Grosse boulette !

Le suffixe "-H" dans la référence signifie qu’il s’agit d’un écran pour une utilisation assujetti à de fortes températures (plein soleil, fours, …).
En dessous de 60° l’écran est totalement vierge, au dessus, miracle il est parfaitement lisible …
Pour pouvoir l’utiliser dans des applications "classique" (à 20-25°) il faut envoyer une tension négative dans la broche VO (contraste).
Dans mon cas cela n’était absolument pas envisageable …
J’ai donc du changer d’écran, au final j’ai pris un écran lcd 16×2 qui traînait dans un tiroir.

Les leds de statut :

diy_alim_leds

Mon alimentation DIY a une petite fonctionnalité bonus : chaque sortie est géré indépendamment.
Ainsi j’ai prévu 3 leds rouges qui s’allumeront pour prévenir d’une surcharge imminente sur une sortie.
Cela me permettra de savoir quelle sortie pose problème si l’alimentation se coupe par sécurité.

Le bouton start / stop / restart :

diy_alim_button

Pour l’allumage / arrêt / redémarrage de l’alimentation j’ai prévu un unique bouton.
Ainsi pour démarrer l’alimentation il suffira de presser le bouton, de même pour l’éteindre.
Et dans le cas où l’alimentation se couperait par sécurité il suffirait de presser ce même bouton pour redémarrer l’alimentation.

Afin d’éviter tout problème côté arduino j’ai inclus un anti-rebond matériel au niveau du bouton.
L’anti-rebond se résume à un condensateur de 100µF en parallèle de l’interrupteur, soit un anti-rebond de ~100ms (T = RxC, R = 10000, C = 10E-6 soit T = 0.1).

Le buzzer :

diy_alim_buzzer

Une bonne alimentation (surtout DIY !) se doit d’avoir un buzzer :)
C’est pourquoi j’ai prévu dans mon montage un buzzer avec une résistance de limitation de courant de 100 ohms.

Ce buzzer aura pour but d’alerter d’une coupure de l’alimentation, d’une surcharge ou de la stabilisation des tensions de sortie.
Ce sera aussi une bonne occasion d’inclure un "easter eggs" dans le code arduino :)

Le capteur de température :

diy_alim_temp

Après avoir fini mon montage je me suis rendu compte qu’il me restait une entrée analogique de libre …
Cela aurait été dommage de la laisser tel quelle, c’est pourquoi j’ai ajouté un capteur de température analogique LM35 au montage.
Celui ci permettra de surveiller la température des capteurs de courant qui risque de chauffer avec de fortes charges sur les sorties.

Montage sans câbles :

Voici quelques photos prisent durant le montage avant la mise en place des différents câbles.

La "carte mère", vue côté buzzer :

P1060041

(le potentiomètre sur la gauche est celui de l’écran lcd)

La "carte mère", vue côté capteurs de courant :

P1060043

Les différents morceaux constituant la "carte mère" :

P1060044

La base de la "carte mère" :

P1060046

Le support déporté pour l’écran lcd et les leds :

P1060049

(il s’agit de la première version, avant que je découvre le problème de l’écran lcd)

Petite parenthèse concernant l’écran lcd :

P1060051

Comme je vous le disait l’écran d’origine posait problème de part son alimentation négative pour le contraste.
Dans la première version de mon montage l’écran venait s’enficher dans un connecteur dédié comme vous pouvez le voir sur la photo.

C’était propre, mais bon … tant pis.
Refaire une commande pour prendre le même écran en version standard m’aurait coûté trop chère (surtout en frais de port), j’ai donc sacrifié mon montage "propre" au profit d’un montage fonctionnel.

Montage fini avec les câbles :

P1060080

Ça fait tout de suite beaucoup moins propre je vous l’accorde.

P1060083

Vous remarquerez que les broches A6 et A7 (disponibles uniquement dans la version CMS de l’ATmega328p) sont derrière le bouton reset, de même que A4 / A5 sont situés juste à coté du régulateur.
J’ai du jouer du cutter pour couper une piste reliée sur A5, cette version chinoise de l’arduino pro mini intégrant des résistances de pull-up pour l’I2C qui venaient fausser mes mesures analogiques.

P1060085

P1060087

(la colle chaude c’est la vie !)

P1060089

Astuce : les capteurs de courants que j’ai utilisé avaient déjà des borniers de base.
J’ai donc juste mis un câble pour "piquer" la tension au niveau du capteur de courant et l’injecter dans les ponts diviseurs mesurant la tension des sorties.

P1060092

Voici un exemple très parlant de l’expression : "cacher la merde sous le tapis" :)

P1060094

Annexe, le capteur de température :

P1060126

Comme je l’ai déjà dit j’ai ajouté un capteur de température LM35 au circuit.
Celui ci sera monté à terme sur une petite lame de métal qui recouvrira les trois capteurs de courant (avec de la patte thermique pour faire la liaison).
Cela permettra de dissiper la chaleur émise par les capteurs tout en la mesurant.

Premier essai du hardware :

Histoire de tester sommairement mon montage j’ai réalisé un petit code de test :

#include <LiquidCrystal.h>

/* Pin mapping */
static const byte LED_PIN[3] = {
  11, 12, 13
};
static const byte VOLTAGE_SENSOR_PIN[3] = {
  A0, A1, A2
};
static const byte CURRENT_SENSOR_PIN[3] = {
  A3, A6, A7
};
static const byte BUTTON_PIN = 2;
static const byte POWER_OK_PIN = 3;
static const byte PSU_ON_PIN = 4;
static const byte BUZZER_PIN = A4;
static const byte TEMP_PIN = A5;

/* LCD mapping */
LiquidCrystal lcd(10, 9, 8, 7, 6, 5);

/* PSU state */
static byte PSU_state;

void setup() {

  /* Setup pins */
  for(byte i = 0; i < 3; ++i) {
    pinMode(LED_PIN[i], OUTPUT);
    pinMode(VOLTAGE_SENSOR_PIN[i], INPUT);
    pinMode(CURRENT_SENSOR_PIN[i], INPUT);
  }
  pinMode(BUTTON_PIN, INPUT);
  pinMode(POWER_OK_PIN, INPUT);
  pinMode(PSU_ON_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  /* PSU_ON and button signals interrupt setup */
  attachInterrupt(0, buttonPressCallback, FALLING);
  attachInterrupt(1, powerOkCallback, CHANGE);

  /* Serial setup */
  Serial.begin(115200);

  /* LCD setup */
  lcd.begin(16, 2);

  /* Get current PSU state */
  PSU_state = digitalRead(POWER_OK_PIN);

  /* Test code */
  lcd.print("Hello World !");
  digitalWrite(LED_PIN[0], HIGH);
  digitalWrite(LED_PIN[1], HIGH);
  digitalWrite(LED_PIN[2], HIGH);
  tone(BUZZER_PIN, 440, 500);
}

void loop() {

  /* Test code */
  for(byte i = 0; i < 3; ++i) {
    Serial.print(i);
    Serial.print(": ");
    Serial.print(analogRead(VOLTAGE_SENSOR_PIN[i]));
    Serial.print(" , ");
    Serial.println(analogRead(CURRENT_SENSOR_PIN[i]));
  }

  static byte s = LOW;
  digitalWrite(PSU_ON_PIN, (s = !s));
  
  delay(500);
}

void buttonPressCallback() {

  /* Test code */
  tone(BUZZER_PIN, 440, 500);
}

void powerOkCallback() {

}

Il est vraiment basique mais il m’as permis de tester grossièrement chaque partie du montage et de concevoir un squelette de code pour la suite.

Test de la carte arduino :

P1060096

Test des leds :

P1060101

Test de l’écran lcd :

P1060102

Test des capteurs de courant :

P1060107

La suite ?

Il me reste encore à réaliser un boitier pour le montage, de même qu’une jolie façade (sérigraphié ça serait top).
Ensuite il me faudra faire le code est finir le câblage des prises banane et des sorties de l’alimentation.
J’ai encore du boulot pour un petit moment :)

Bon bidouillage et bon WE à tous ;)


Classé dans:arduino, Corrigé, programmation, projet Tagged: diy, hack, madeinfr

Vendredi, octobre 19 2012

Réparation et bidouillages, 3 hacks « quick and dirty »

Réparation d’un poste de radio / CD

Aujourd’hui, réparation d’un poste CD / Radio qui ne marche plus. Le poste s’allume mais le son est très faible, à peine audible. Soit c’est l’ampli soit le dispositif de réglage du son.

Je démonte la bête et inspecte visuellement la carte.

La bête

 

Rien a signaler, aucun composant à l’aspect dégradé. Le potentiomètre du volume ne me semble pas très « doux » à l’utilisation, peut-être que la panne vient de lui. Ayant assisté à un « cours » de circuit bending lors de Vivacités à Rennes, j’ai vu comment hacker les circuits audio en passant ses doigts sur la carte électronique ( ne faites pas ça avec des tensions > 12v… ). Du coup je promène mes doigts sur les pattes du potentiomètre de volume et le son revient nettement plus fort malgré une grande distorsion. Ça confirme mes doutes, le potentiomètre est fichu. Je le dessoude rapidement mais voilà, il a 7 pattes et les potentiomètres de volume que j’ai récupéré dans d’autres appareils n’en ont que 6.

Le fautif

 

Quelques minutes de reverse engineering et quelques shunts plus tard, le poste marche !

La modif

Je colle au pistolet à colle le nouveau potentiomètre au dos de la carte et remonte l’ensemble.

Un hack « quick and dirty » mais qui a le mérite de marcher et d’avoir sauvé de la poubelle ce malheureux poste de radio.

 

Modification d’une caméra Drift HD170

Sur ce genre de caméras embarquées, comme sur les célèbres Gopro, l’image est très belle mais la prise de son est nulle. Du coup, pourquoi ne pas remplacer le micro d’origine par une prise jack permettant de brancher tout type de micro ?

 

La modification ne nécessite que quelques minutes:

  • démontage de la caméra
  • découpe du joint
  • dessoudage du  micro (1)
  • soudage de la prise jack à la place (2)
  • Collage à la colle à chaud du jack
  • Remontage

Caméra

 

La prise jack

 

Le micro

 

La jack est soudée à la place du micro

 

Ce petit hack de rien du tout permet de placer le micro au bout d’une rallonge, dans son casque, sur le vélo… ou d’utiliser une autre source audio de meilleure qualité comme un micro Zoom H1.

 

 LabFab et BristleBot

Aujoud’hui, je suis passé au LabFab de Rennes. @Aristofor était en train de tester des « bristlebot » pour animer des ateliers avec les enfants. J’avais déjà vu ces bricolages de brosses à dents sur le net, mais je n’avais jamais essayé. C’est maintenant chose faite, j’ai fait mon prototype :-)

J’ai juste abaissé le centre de gravité en plaçant le vibreur entre les poils de la brosse et non sur le dessus. J’ai aussi ajouté des antennes qui le stabilisent et qui en vibrant aident à le guider le long des obstacles.

Bref, inutile mais amusant à faire avec les enfants !

BristleBot

 

Lundi, septembre 3 2012

Modification d’une lampe LED IKEA « NON » pour fonctionner en 12V

Afin de pouvoir être installée dans un bateau, nous allons modifier une lampe à LED ikea ( modèle NON ). Cette lampe a été choisie par rapport à d’autres en raison de son apparence ( bloc unique, interrupteur sur le dessus et faible prix ).

 

Extrait du site IKEA

 

La modification est très simple, il suffit de retirer le bloc d’alimentation 220v/12v et de remettre une résistance pour que les leds fonctionnent en 12v.

 

Sur la table d’opération

 

L’ouverture du bloc est facile, il suffit de retirer les quelques vis philips au dos de la lampe.

 

Les entrailles

 

Le bloc d’alimentation est dessoudé puis mis de côté pour d’autres projets.

 

Warranty void

 

Il va falloir retirer et récupérer la résistance limitant le courant dans les LED. Il s’agit de R13, une résistance de 8 ohms.

L’essentiel

 

La résistance est alors montée sur un petit morceau de plaque à bandes.

Sortez les fers à souder

 

 

La nouvelle carte, minimaliste

 

On isole le tout avec de la gaine thermo rétractable et on remonte la lampe.

Greffe

 

Ca fonctionne sans problème. L’éclairage est assez léger mais pour un bateau, largement suffisant. D’autant que la consommation est ridicule, 100mA en 12v.

 

Consommation

 

 

C’est tout pour aujourd’hui, l’article est un peu bref, mais il inaugure ma nouvelle grotte et puis je n’ai pas encore ma ligne ADSL et le mode modem en 3G du téléphone a ses limites même si ça marche très bien !

Mardi, juin 26 2012

Modification d'un régulateur de température STC-1000

3€ en brocante pour un régulateur de température, je n'allais pas passé à côté d'une telle affaire, ça me sera parfaitement utile pour faire quelques test avec le plateau chauffant de l'Ultimaker...

STC-1000

Ce régulateur acheté neuf reste tout de même assez abordable, il est disponible sur un grand site d'enchère en ligne aux alentours de 20€ sous les marques Elitech ou encore Lerway.

Il permet de commander un système de chauffe et un système de refroidissement à l'aide de 2 relais qui s'activent en fonction de la mesure du capteur de température fourni (de type CTN, résistance à coefficient de température négatif), sa plage de température va de -50°C à 99°C avec une précision d'environ 1°C, il permet de commuter des charges de 220V sous 10A, plus que suffisant pour l'utilité que j'en aurai.

Très pratique, on peut lui spécifier la différence de température entre la consigne et la valeur lue à partir de laquelle il faut commuter mais également le décalage entre la grandeur mesurée et la valeur effective, exemple, je veux m'assurer que le milieu de mon lit chauffant est à 60°C, bien sûr, je ne peux pas mettre mon capteur au milieu, du coup, je le mets au bord et je règle la différence entre les 2 températures.

Mais pour mon utilisation, il à tout de même un petit défaut, il est alimenté directement par du 220V, ça ne m'arrange pas vraiment car j'ai ajouté une alimentation de 12V sur Ultimaker pour le lit chauffant, je ne souhaite pas multiplier encore le nombre de prise 220V.

Un démontage rapide nous montre les entrailles de la bête, un simple transformateur 220V / 10V (en bordeau) apparait :
STC-1000

Dessoudage du transformateur :
STC-1000 STC-1000

On remplace le transformateur par 2 diodes, (2 1N4003 ont été utilisées), les 2 diodes ont pour fonction principale de faire chuter la tension de 12V aux environs de 10V (12V - 0.6 x 2), elles ne sont pas tout à fait indispensable, on pourrait les remplacer par de simples ponts, l'électronique en aval du transformateur (lui même ne générant pas un 10V précis) à une certaine tolérance.

STC-1000

Test et remontage, des fois que l'on prête l'appareil à quelqu'un ou qu'on le ressorte après des années d'inutilisation, on n'oublie pas d'indiquer clairement que le régulateur attend maintenant 12V et non plus 220V, sinon boum le régulateur...
STC-1000

Et voilà, un lit chauffant piloté par un STC-1000...
STC-1000 avec l'Ultimaker

Le manuel de l'engin.

Vendredi, janvier 27 2012

Hack d’une horloge low-cost, plein de bonne choses pour pas chére.

Bonjour tout le monde !

Ceux qui suivent mon twitter ont surement déja une idée de ce que je vais présenter, pour les autres voici l’histoire complète ;)

Suite à mon tutoriel sur le DS1307 plusieurs membres du forum arduino m’ont demandé comment utiliser un module DCF77 avec une carte arduino.
Du coup j’ai cherché un de ces modules chez mon fournisseur (watterott pour les intimes) chez lequel je devais faire une commande sous peu (commande passé hier, article de briefing prévu ce week end ou lundi suivant la date de livraison ;) ) histoire de faire un tutoriel sur le sujet, probléme il n’avait pas ce genre de modules en stock …

Du coup j’ai réfléchi, ou trouver un module DCF77 ?
Deux possibilités me sont venu à l’esprit :
- allez voir chez un autre fournisseurs (exemple lextronic),
- ou trouver une horloge contenant un module DCF77.

La 1er solution ne m’inspirai vraiment pas, le module, les frais de ports, … pas cool !

J’ai donc regardé du coté de la seconde possibilité, à savoir trouver une horloge avec un module DCF77.
J’ai regardé toute les horloges disponible en grande surface, en droguerie, … soit ils n’y en avait pas, soit elles étaient plus chère qu’une commande directe chez lextronic …
Puis miracle, en passage à castorama pour voir les soldes, je tombe sur une horloge / station météo, son prix 2€ … au 1er regard elle semble se mettre à l’heure toute seul et posséde un module température externe sans fils, intéressant, trés intéressant !

Je crack, claque 2€ et me retrouve avec mon horloge !

Jolie boite hein ? Bon le principal c’est ce qu’il y a dedans !

Comme ça rien d’extraordinaire … du moins de l’extérieur, tout ce que l’ont peut affirmer pour le moment c’est que le module extérieur utilise un systéme sans-fil 433MHz comme indiqué sur le boitier ! Les choses prennent une tournure intéréssante !

Niark! Niark! D é m o n t a g e !

Une fois le boitier ouvert toutes mes hypothèses ce confirme, tout ce déroule comme prévu, yes!

Pour 2€ j’ai donc :
un récepteur 433MHz,
un module DCF77 (enfin un équivalent made in china),
un capteur de température et un autre d'humidité,
un petit buzzer,
et un quartz 32KHz.

Analyse plus poussé du module DCF77 :

Analyse plus poussé du récepteur 433MHz :

Et une vrai fausse analyse pas poussé du circuit principal :)

Coté sonde extérieur c’est à peu prêt la même chose, un émetteur 433MHz, un quartz 32KHz, un capteur de température et un autre d’humidité, le tout soudé « à l’arrache » sur un pcb de qualité « made in china » …

Analyse de la sonde :

En résumé pour 2€ j’ai pu récupérer :
un lot émetteur/récepteur 433MHz,
un module DCF77 (enfin un équivalent made in china),
deux capteurs de température et deux autre d'humidité,
un petit buzzer,
et deux quartz 32KHz.
(+ composants cms, + mini écran lcd)

F*ck Yeah !

Conclusion : une fois mon tutoriel sur le PCF8583 (création du code d’exemple en cours) finit je pourrait faire un tutoriel sur le module DCF77. Elle est pas belle la vie ;)


Classé dans:projet Tagged: 433mhz, dcf77, hack, horloge, madeinfr

Samedi, septembre 3 2011

Ajout d’une liaison sans fil Xbee 802.15.4 sur une station météo La crosse Technology WS2305

Il y a 3 ans, j’avais branché ma station météo d’abord sur une Fonera, puis ensuite sur un routeur Netgear WL500 afin d’envoyer les données météo sur un serveur. Ce montage très simple a été remis en cause par une panne « définitive » du routeur et par l’utilisation de la Fonera sur un autre projet. De plus il y avait quelques inconvénients: la consommation électrique du routeur et la présence d’un transformateur, le câble série…

p30_lcf_72dpi_ws2305bla_alu.jpg

Souhaitant à nouveau brancher ma station sur internet, j’ai décidé de  changer de stratégie. Etant donné que je dispose d’un mini PC sous XBMC qui me sert de magnétoscope numérique, j’ai préféré envoyer les données météo sur ce PC. Il me fallait donc une liaison sans fil entre le PC et la station météo qui soit bi directionnelle et qui supporte la distance entre les 2 équipements.

J’ai à ma disposition 2 modules Xbee Pro 802.15.4 permettant le transport d’une liaison série TTL sur la bande des 2.4GHz.

Comme détaillé dans le précédent article sur la liaison avec la Fonera,  il faut localiser à l’aide d’un oscilloscope les signaux TTL de la liaison série de la station. La sortie sur le côté étant à la norme RS232, elle ne convient pas, il faut trouver les signaux en amont du convertisseur RS232 formé ici par des transistors.

IMG_1152_800x600.jpgOn localise sur la carte mère de la station météo 4 points: une masse (GND), une source de courant d’environ 3v (Vcc), le signal Tx et le signal Rx.

Les fils sont ensuite reliés à la carte supportant le module Xbee:

  • Xbee Vcc <-> WS2305 3v
  • Xbee GND <->  WS2305 GND
  • Xbee Tx <-> WS2305 Rx
  • Xbee Rx <-> WS2305  Tx

Le module Xbee normalement alimenté en 3.3v sera ici alimenté en 3.02 V, seule tension disponible sur la carte en dehors des 6v du bloc d’alim.

La carte mère de la station peut maintenant être réinstallée dans son boitier. Le module Xbee est relié par des fils d’une dizaine de centimètres, ce qui permettra de lui trouver une place dans la station.

Le seul emplacement disponible et accessible facilement pour y placer le module c’est le compartiment des piles. Celui-ci n’étant pas utilisé lorsque la station est alimentée par le secteur, le logement est un candidat parfait. La carte d’accueil du module Xbee est collée avec de la colle à chaud au fond du compartiment.

Le module Xbee nécessite juste de plier délicatement l’antenne pour pourvoir refermer le compartiment des piles.

Voilà pour la station météo. Côté PC, nous utilisons un autre module Xbee sur une carte fille (Xbee Explorer chez Sparkfun ) disposant d’un port USB.

Le module est alors vu comme un convertisseur USB / Série FTDI.

usb 4-5: FTDI USB Serial Device converter now attached to ttyUSB0

Afin de permettre aux deux modules de communiquer, il faut configurer quelques paramètres:

  • Les adresses des modules.
  • La puissance du signal.
  • La vitesse du port série.

La configuration se fait sous windows ( :-( ) à l’aide de l’utilitaire X-CTU.

Il faut d’abord régler les adresses des modules.

On paramétrera « Destination Address Low » à 1 pour le module de la station et « 16 bits source Address » à 2. Sur le module de réception du PC, il faut faire l’inverse c’est à dire « Destination Address Low » à 2  et « 16 bits source Address » à 1.

Les deux modules peuvent alors communiquer entre eux. On peut aussi utiliser une adresse de broadcast mais je n’en voie pas l’intérêt ici.

Ensuite il faut définir la puissance « Power Level » au maximum ( 4 ) ou non suivant vos besoins, ainsi que la vitesse du port série, identique à celle de la station météo (2400 Bps)

Nous avons terminé pour la partie électronique.

Côté logiciel, on va utiliser Open2300, un ensemble d’outils pour récupérer les données en provenance de la station. Il suffira de compiler les sources avec un simple « Make ». Si vous souhaitez stocker vos données dans Mysql, il faudra aussi faire un « Make mysql2300″ pour générer l’utilitaire mysql2300.

Si comme moi vous n’utilisez pas l’anémomètre, il vaut mieux patcher les sources à l’aide du fichier suivant: delay.patch afin de réduire le temps de récupération des données.

 

gzip -d delay.patch
cat delay.patch | patch -p1

Pensez aussi à paramétrer le fichier open2300.conf comme il se doit.

Lancé dans la crontab par exemple, cet utilitaire permettra de transmettre les données de la station sur un serveur Mysql. Un petit script perl pourra ensuite grapher les données à l’aide de RRDTools: graph.pl
Quelques lignes d’ HTML et l’on peut facilement mettre ces données en ligne

Jeudi, mai 26 2011

Quand la fraiseuse se met à jour – Episode 2

Vous vous souvenez, il y a quelques temps ma fraiseuse s’est « mise à jour » en s’auto fabricant un support de DREMEL en PEHD. Et bien voilà qu’elle remet ça. Je me suis décidé à remplacer ma table de fraisage en bois par une en PVC avec un système de réglage de l’assiette afin de pouvoir corriger d’éventuels défauts d’alignement ( oui, oui, il y en a un peu… ). Mais avant de remplacer cette table, il faut régler un problème avec les supports des barres de guidage. Les supports sont surélevés avec des rondelles pour permettre le passage des chariots sur douilles à billes. Seulement voilà, avec le poids de la machine, les rondelles commencent à s’enfoncer dans le bois qui n’est pas assez dur (MDF).

J’ai donc entrepris de fraiser des semelles en PEHD pour les supports. Après de longues minutes d’attente voilà mes 4 pieds prêts à poser.

 

Les semelles sont parfaitement ajustées et répartissent le poids de la machine sur le socle en bois.

 

Les bases sont posées, on peut remplacer la table de fraisage. C’est une plaque de PVC très rigide de 15mm d’épaisseur. Elle est montée sur 4 tiges filetées de 6mm afin de pouvoir ajuster précisément sa hauteur. Le pas d’une vis M6 étant de 1mm, ça signifie qu’en serrant l’écrou de réglage d’1 tour je pourrais monter ou descendre la table d’1mm. L’ajustement est donc particulièrement précis.

 

 

Ma table étant ajustable, il faut trouver un moyen précis pour calculer la hauteur requise au 4 coins en corrigeant d’éventuels problèmes d’ajustement de la machine. Pour cela j’ai mis au point un palpeur à monter sur la dremel. Ce n’est rien d’autre qu’un micro interrupteur qui servira à mesurer la hauteur de la table en différents points.

Un petit tour dans les boites à récup et me voilà avec une fiche CINCH, un interrupteur, un cable de souris, un bout de tube et un écrou / boulon de 3mm.

Un petit coup de fer à souder… un petit coup de perceuse pour passer le câble…

Et on assemble le tout à grand coup de colle cyanolite

La fiche CINCH est soudée sur le cable.

Le palpeur est terminé. Je l’installe sur le mandrin de la Dremel et je branche le câble sur l’entrée de la carte de commande servant habituellement au « Homing » de l’axe Z.

 

Le côté mécanique étant terminé, il faut s’attaquer à la partie logicielle. Nous allons utiliser un peu de langage G-CODE pour effectuer une grille de hauteur de la table de fraisage.

(Configuration section)
G21   (mm)
F80    (probe speed)

#1=0  (X start)
#2=50 (X increment)
#3=5 (X count)

#4=0
#5=50
#6=5 (Y count)

#7=2 (Z safety)
#8=-10 (Z probe)
(End configuration section)

(PROBEOPEN probe_table_map.txt)
#9=0 #10=0
G0Z#7
O1 while [#9 lt #6]
#10=0
G0 Y[#4+#5*#9]
O2 while [#10 lt #3]
O3 if [[#9/2] - fix[#9/2] eq 0]
G0X[#1+#2*#10]
O3 else
G0X[#1+#2*[#3-#10-1]]
O3 endif
G38.2Z#8
G0Z#7
#10=[#10+1]
O2 endwhile
#9=[#9+1]
O1 endwhile

(PROBECLOSE)
G0Z#7
G0X#1Y#4
M2

Ce code va lancer des mesures sur un carré de 200 x 200 mm en effectuant une mesure tous les 50mm. Les valeurs sont stockées dans un fichier texte probe_table_map.txt. (Je n’ai rien inventé, j’ai honteusement pompé un exemple proposé avec EMC)

Après quelques minutes, nous disposons d’un fichier texte avec les valeurs mesurées.

0.000000 0.000000 -1.434338 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 0.000000 -1.495669 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 0.000000 -1.619665 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 0.000000 -1.763661 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 0.000000 -1.894324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 50.000000 -2.024987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 50.000000 -1.916990 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 50.000000 -1.795660 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 50.000000 -1.696996 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 50.000000 -1.632998 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 100.000000 -1.766328 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 100.000000 -1.834326 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 100.000000 -1.944989 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 100.000000 -2.528971 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 100.000000 -2.115651 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 150.000000 -2.167649 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 150.000000 -2.086318 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 150.000000 -2.014320 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 150.000000 -1.939656 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 150.000000 -1.842325 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 200.000000 -1.882324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 200.000000 -1.975655 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 200.000000 -2.020987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 200.000000 -2.104984 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 200.000000 -2.187648 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Ce n’est pas très parlant, mais gnuplot peut nous aider. Nous allons créer un petit programme gnuplot utilisant les fonctions pm3d pour mettre en image l’assiette de la table.

set terminal png size 800,800
set output "heatmmap.png"
set xrange [0:200]
set yrange [0:200]
set cbrange [1:-2]
set view map
set dgrid3d 100,100,2
set palette model RGB
set palette defined
#unset surface
set pm3d at s
splot 'probe_table_map.txt' using 1:2:3  with pm3d at s  notitle

Le résultat avec une table non équilibrée.
On voit immédiatement le déséquilibre, le coin devant/gauche est plus haut de 1mm que le coin derrière/droite !

En ajustant légèrement la vis de réglage devant à gauche, on peut corriger l’assiette.

Le résultat est encore imparfait ( j’ai réglé la table au pif ) mais la méthode fonctionne. C’est long et empirique mais l’essentiel c’est d’obtenir un résultat à la hauteur de ses espérances…

- page 1 de 2