mardi 8 octobre 2013

réparation d'un cat's meow

Ma soeur a acheté ce jouet pour son chat. Après un mois d'usage il est tombé en panne. Comme elle l'avais acheté usagé via l'internet, pas de garantie à faire valoir. Donc il s'est retrouvé entre mes mains pour réparation.

En le démontant j'ai constaté la simplicité du petit circuit électronique et j'ai compris rapidement qu'il s'agissait d'un MCU contrôlant le moteur via un pont H fabriqué avec 4 transistors Q1-Q4.

Le MCU était en surchauffe. Kaput! le MCU. IL n'étais pas identifié, le marquage ayant été effacé. Et de toute façon je n'aurais pas eu accès au firmware puisqu'il était kaput! et même s'il ne l'avait pas été... probablement protégé.

J'ai reconstitué le schéma-électronique à partir du circuit imprimé en remplaçant le MCU par celui que j'ai choisi.

J'ai remarqué que l'alimentation est sur les mêmes broches que sur un PIC12Fxxx. J'ai justement en main des PIC12F675 en format 8-SOIC. Pas de problème que je me dis je vais remplacé le MCU et faire ma propre version du Firmware.

J'ai ajouté un connecteur ICSP temporaire pour faire la programmation. Après avoir visionné le vidéo sur le site qui vend ce jouet, Je me suis dis ce que c'est très simple. Le moteur tourne dans une direction et ensuite dans l'autre. La seule variable est la durée de chaque rotation. Voici le code source, seulement 89 instructions machine.

Avant de brancher le moteur je le remplace par des LEDS back to back en série avec un résistance de 1Kohm. Test, tout semble fonctionner. Les LEDS allument en alternance avec une durée variable. Je remplace par un petit moteur. Ha! le moteur ne tourne que dans une seule direction. Un des transistors du pont est défectueux et ne conduit pas suffisamment pour faire tourner le moteur.

Finalement j'ai décidé de refaire aussi le circuit électronique.

J'ai récupéré mon PIC12F675 sur le vieux circuit imprimé et l'ai soudé en dead bug sur le nouveau circuit. J'ai aussi laissé le connecteur ICSP sur le nouveau circuit car il y avait de la place.

Maintenant tout fonctionne correctement. C'est le chat qui va être content, il paraît qu'il aime ce jeux au point de demander à sa maîtresse de le mettre en marche.

mise à jour 2013-10-10

J'ai été un peu cours dans cet article. Entre autre j'ai oublié de mentionner que lorsque j'ai pris la décision de refaire le circuit de contrôle, ce n'est pas tout à fait le circuit original, mis à part le MCU, les transistors ne sont pas les même et la valeur de R1 et R2. Pour Q1 et Q2 j'ai utilisé des ZTX649. Pour Q3 et Q4 j'ai utilisé des ZTX749. Les 4 transistors sont en boitier TO-92. J'ai augmenter la valeur de R1 et R2 à 300 ohm.

Description du schéma

Les 4 transistors forment ce qu'on appelle un H bridge, que j'ai traduit ci-haut par pont en H. En aucun cas GP0 et GP1 ne doivent être à VoH (V output High) en même temps sinon les 4 transistors seront en conduction et on obtient un court-circuit. C'est pour ça que dans le firmware j'arrête le moteur avant de le redémarrer dans l'autre direction. J'ajoute en plus un délais de 20msec avant de repartir le moteur pour laissé le temps à l'énergie accumulé dans le moteur de se dissiper. Donc Lorsque GP1 est à VoH, GP0 est à VoL et vice-versa. Lorsque GP0 est à VoH le transistor Q1 entre en conduction et son collecteur tombe VoL. A partir du collecteur de Q1 la résistance R3 alimente la base de Q3. Puisqu'il s'agit d'un transistor PNP dont l'émetteur est branché au V+ de la batterie, lorsque sa base est à VoL il entre en conduction. On a donc un circuit établi entre V+bat. et v-Bat. en passant par Q3ce le moteur et finalement Q1ce à v-bat. Si on met GP0 à VoL et GP1 à VoH, le même principe s'applique mais cette fois le courant circule de V+bat par Q4ce à travers le moteur et enfin à travers Q2ce. Le courant circule maintenant dans le moteur dans la direction opposé à la situation précédente donc la rotation du moteur est inversée.

Retenez la configuration de ce montage, elle est fréquemment utilisée pour contrôler la direction de rotation d'un moteur.

A noter aussi la présence de R5 et C1. La fonction de ces 2 composants est de filtrer le bruit électronique généré par le moteur qui autrement pourrait nuire au bon fonctionnement du MCU.

J'ai augmenter la valeur des résistances R1 et R2 à 300 ohm en faisant le calcul suivant. Le moteur consomme 150mA (mesuré). le courant dans la base du transistor doit-être de Ice/Hfe. Ice est le courant qui circule entre le collecteur et l'émetteur du transistor et Hfe est le gain DC du transistor. Les transistors utilisés ont un gain minimum de 100. Donc pour obtenir un courant Ice de 150mA il suffit d'injecter 1,5mA dans la base. Ça c'est dans le pire des scénario car le gain typique de ces transistors est en fait de 200. Il suffit donc de calculer R1 et R2 pour que le courant fourni par les sorties GP0 et GP1 soit d'au moins 1,5mA pour que ça fonctionne. On peut se donner une marge de sécurité mais il est inutile d'exagérer. Trop de courant dans la base de Q1 et Q2 n'aurait que pour conséquence de drainer la pile inutilement et de faire chauffé le MCU puisque le courant qui alimente les bases de Q1 et Q2 passe par celui-ci. Il ne faut pas oublier non plus que plus il passe de courant à travers le MCU plus la chute de voltage aux bornes de R5 augmente. Chaque fois que le moteur est démarré le courant à travers le MCU augmente, la chute de voltage à travers R5 aussi et le Vdd du MCU diminue d'autant. Avec 300 ohm pour R1 et R2 le courant qui circule dans la base est approximativement de (4,5-VbeSat-0,7)/(300+47). D'après les spécifications du transistor VbeSat=0,9 et d'après les spécifications du PIC12F675 VoH=Vdd-0,7. Donc (4,5-0,9-0,7)/347=8,3mA. 8,3mA c'est 5 fois plus qu'il n'en faut pour mettre Q1 et Q2 en saturation à 150mA. Ces calculs sont des approximations suffisantes pour cette utilisation.

2013-10-11, Une cliente satisfaite

Ma sœur viens de me téléphoner pour me dire que le cat's meow fonctionne mieux que lorsqu'elle l'a reçu. Il paraît qu'il est plus speedy!!! C'était pas prévu dans la réparation mais si elle le dit :-)

Aucun commentaire:

Enregistrer un commentaire