Génération sonore 8bits/8Khz
Avec PIC16F88 et mémoire 24LC256


Bienvenue à toutes et à tous,

    inspiré par 2 montages, de Mr Alain REBOUX, publiés dans le magazine "Electronique Pratique" :
-Un PIC qui parle (EP n°277 / Septembre 2003)
-Conversion analogique/numérique à l'aide la MLI... (EP n°295 / Juin 2005)  
   j'ai eu envie de les réaliser dans mon environnement, cad de les porter sur PIC16F88 et sous MikroBasic...
La restitution sonore se fait en 8 bits et à 8Khz, via la sortie PWM...
Pour "remplir" la mémoire, avec un fichier .wav 8 bits/8Khz de 4 secondes (dans le cas d'une 24LC256), j'ai utilisé l'interface RS232-I2C et le logiciel de Pierre Coll [link] ...
Pour créer le fichier wav, j'ai utilisé, alternativement, le magnétophone de windows, Audacity et SoundForge.
Le  programme en MikroBasic "émule" le protocole I2C, et n'utilise donc aucune librairie "propriétaire", et il n'utilise pas non plus les modules I2C intégrés à certains pics (SSP, MSSP), tout ceci facilite son portage (dans un autre PIC ou dans un autre IDE ou dans un autre langage)... Vous noterez l'extrême simplicité du schéma et du code...

schema

Le signal en sortie PWM OUT est directement, mais trés légérement, audible, avec un écouteur type piézo... Pour une écoute "parfaite", il faut ajouter un étage amplificateur, en sortie... J'ai donc mis en ligne un exemple de schéma d'étage d'amplification,  à base d'un amplificateur opérationnel type LM386 [link]...

Nomenclature :
R1, R2, R3 2.2K à 4.7K
C1 220 à 1000µF chimique polarisé
C2 100 à 220nF céramique ou milfeuil
C3, C4 22 à 47pF céramique
X Quartz 20Mhz
U1 PIC16F88
U2 24LC256 ou 24LC512
U3 Rég. 5V type 78L05, LM7805,....

Connexions :
- +9V   = 9v continu redressé et fitré!!!
- GND  = masse

Le  Projet MikroBasic :  vedeplayer.rar
(avec dedans le .hex directement chargeable dans un PIC16F88, le
fichier .pbas en basic, ouvrable avec n'importe quel éditeur, trés commenté,
et le projet .pbp pour recompiler le tout aisément avec MikroBasic...)...

Fichier .wav pour tests :
- dtmf.wav
("joue" les chiffres de 0 à 9)

Lectures :
- Datasheet du 16F88
- Datasheets 24LC256 - 24LC512

Logiciels :
- MikroBasic
- WinPic (pour programmer les pics)
- Kicad (schémas, pcb...)

Programmateur :
- JDM

_______________________________________
Infos et aperçu du code MikroBasic :

Lignes 0 à 20 > initialisation
Lignes 20 à 50 > programme principal
Lignes 50 à 130 > sous-programmes I2C

Si vous utilisez une mémoire 24LC512 (8 secondes de son), remplacer 32700 par 64500, à la ligne 43..
La fréquence approximative de 8Khz est obtenue grace à la temporisation, à la ligne 37... Théoriquement, il faut que le PIC lise et restitue un octet toutes les 125µs...Je travaille actuellement à une "reprogrammation," en utilisant l'interruption du TIMER0....ce qui "précisera" la fréquence...

code
_______________________________________