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...
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...
_______________________________________
|