jeudi 3 janvier 2013

sonnette d'entrée

Je voulais remplacer la sonnette d'entrée que je trouve trop bruyante, j'ai donc décidé d'en fabriquer une électronique. Étonnant tout ce qu'on peut faire avec le PIC10F322 qui n'a que 3 entrée/sortie et 1 entrée, 512i de flash et 64 Octets de RAM. Malgré tout on peut lui faire jouer un fichier WAV à condition de lui donner de la mémoire supplémentaire. Microchip fabrique justement le type de mémoire eeprom dont j'avais besoin. Il s'agit des eeprom à interface I2C. Ce type de mémoire à interface sérielle ne nécessite que 2 E/S. Il me restait donc 1 sortie pour le son et 1 entrée pour le bouton de la sonnette.

Schéma électronique



Ce schéma peut semblé un peut compliqué mais j'y ai dessiné 2 options pour la partie analogique (sortie audio). Si on ne garde que l'option B c'est plutôt simple. J'utilise le transformateur existant dont je branche la sortie 14VAC sur un pont redressseur. Les condensateurs C4 et C5 filtrent les ondulations et le régulateur de tension U4 donne 5VDC pour alimenter le circuit. Le PIC10F322 est interfacé avec l'eeprom par RA1 et RA2 et la sortie PWM1 sur RA0 est la sortie audio. L'entrée RA3 est utilisée pour le bouton de la sonnette. Le signal PWM est à 22Khz.

Si on regarde la partie analogique maintenant. Commençons par l'option B la plus simple. C'est l'option que j'ai utilisé pendant le développement car je n'avais pas en main tous les composants pour l'option A. Finalement ce circuit simple fonctionne si bien que je crois que je vais le garder au montage final. Le transistor Q1 est simplement monté en emetteur follower ou si vous préférez en collecteur commun. le condensateur C3 sert à atténuer la fréquence de la porteuse PWM et les autres bruits haute fréquence générés par le procédé de numérisation.

L'option A est un peut plus sophistiquée. J'utilise un amplicateur opérationnel double MCP6002 de Microchip comme filtre passe-bas avec un atténuation de 12DB/octave. L'opamp A est utilisé pour créer un virtual ground à mi-chemin entre Vdd et Vss et l'opamp B est configuré en filtre Butterworth.
La sortie audio est assurée par l'amplificateur LM386. tous les circuits intégrés de ce projet sont disponible en format PDIP8 et l'ensemble peut-être fabriqué à faible coût.

Firmware PIC10F322

Seulement 253 instructions et 9 octets de RAM. Le plus complexe étant l'interface I2C générée en bitbang puisqu'il n'y a pas de périphérique i2c intégré. Cette partie du logiciel est une copie presque conforme de celle que j'ai programmée dans le projet précédent. Ce sont les mêmes macros et les sous-routines ee_set_address, ee_send_byte, ee_rcv_byte n'ont étées que légèrement modifiées car il n'y pas pas d'utilisation d'une pile pour les arguments.

l'opération est la suivante:

  1. Attendre que le bouton de la sonnette soit enfoncé.
  2. appeller playsound` qui initialise le PWM et l'eeprom. Le PWM fonctionne à 22050Hz alors que le fichier WAV utilisé est à 11025. Donc on ne remplace la valeur dans les registres PWM1DCH, PWM1DCL qu'aux 2 cycles. Le timer 2 est configuré pour générer une interuption à la fin de chaque cycle. La routine d'interruption bascule l'indicateur F_RATE2 à chaque cycle et ne charge le PWM que le lorsque le bit est à 1. Ce faisant elle indique à la routine playsound qu'il est temps de lire l'échantillon suivant en mettant l'indicateur F_NEXT à 1. la routine playsound est responsable de lire les échantillons dans l'eeprom et de les compter. Lorsque tous les échantillons ont été lus l'interruption est désactivée ainsi que le PWM et on retourne à la procédure principale.
  3. Pour éviter une lecture en boucle de l'enregistrement, la procédure principale attend que le bouton soit relâché avant de retourner à l'étape 1. Pas de désagrément au cas ou le bouton resterait collé.

code source
L'ensemble des fichiers est disponible ici. Çi trouve une version modifiée du programme i2cprog.py. Si vous utilisez i2cprog.py pour programmer une eeprom dans le but de fabriquer cette sonnette seule cette version enregistre correctement le fichier .WAV dans l'eeprom.
Choisissez un fichier WAV monophonique non compressé encodé en 8 bits PCM non signé avec un taux d'échantillonnage de 11025. Le logiciel open source Audacity permet de transformer un fichier WAV d'un autre format en celui-là en l'exportant. Voici une procédure au format open office 3.

Mise à jour 2013-01-05
J'ai reçu ce qui me manquait pour faire le montage final. C'est maintenant fait et la sonnette est en fonction. J'ai modifié le circuit électronique.



matériel requis
  • 1 MCU PIC10F322
  • 1 eeprom 64k/i2c 24LC512
  • 1 ampli audio LM386
  • 1 haut-parleur 6cm/8ohm/0,5Watt
  • 1 platine de montage seeed studio STR125C2B
  • 4 diodes 1N4004
  • 1 fusible picofuse 1A/fastblow
  • 1 régulateur de tension 12Volt LM7812
  • 1 régulateur de tension 5Volt LM7805
  • 1 LED vert 3mm
  • 1 résistance 10 ohm/0,25Watt
  • 3 résistances 510 ohm/0,25Watt
  • 2 résistances 2Kohm/0,25Watt
  • 1 résistance 33Kohm/0,25Watt
  • 1 potentiomètre PC mount 10Kohm
  • 1 condensateur céramique 22nF
  • 2 condensateurs céramique 47nF
  • 3 condensateurs céramique 100nF
  • 1 condensateur électrolytique 220mF/16Volt
  • 1 condensateur électrolytique 1000uF/25Volt
  • 1 bornier à vis 4 positions PC mount, espacement 100mil.
  • 1 petit bouton momentané.
  • 3 embases pour IC au format DIP 8

1 commentaire:

  1. Ce montage est très sympa, bravo! Un bel exemple de minimalisme.

    Je vous ai vu grâce à hackaday, je vais suivre votre blog!

    RépondreSupprimer