DTMF routine ...

jojojo

Senior Member
Hello !
Sur un projet d'alarme domestique, je dois implanter une interface téléphonique. Autant partager.
Donc, une petite routine à adapter, et un schéma de filtrage.
Be happy.

Code:
'DTMF Picaxe 14M2  4Mhz
'Ports B.2 et B.4



'**************************************  			1209	1336	1477	1633
'Colones
'pwmout pwmdiv4, B.2, 206, 414	1209 Hz	697	  1	  2	  3	  A
'pwmout pwmdiv4, B.2, 186, 374	1336 Hz		
'pwmout pwmdiv4, B.2, 168, 33		1477 Hz	770	  4	  5	  6	  B
'pwmout pwmdiv4, B.2, 152, 306	1633 Hz
'								852	  7	  8	  9	  C
'Lignes
'pwmout pwmdiv16, B.4, 89, 179     	697 Hz	941	  *	  0	  #	  D
'pwmout pwmdiv16, B.4, 80, 162	770 Hz
'pwmout pwmdiv16, B.4, 72, 147	852 Hz
'pwmout pwmdiv16, B.4, 65, 133	941 Hz
'**************************************
#picaxe14M2
Setfreq m4
Chiffre1:
pwmout pwmdiv4, B.2, 206, 414
pwmout pwmdiv16, B.4, 89, 179
Return
Chiffre2:
pwmout pwmdiv4, B.2, 186, 374
pwmout pwmdiv16, B.4, 89, 179
Return
Chiffre3:
pwmout pwmdiv4, B.2, 168, 33
pwmout pwmdiv16, B.4, 89, 179
Return
ChiffreA:
pwmout pwmdiv4, B.2, 152, 306
pwmout pwmdiv16, B.4, 89, 179
Return
Chiffre4:
pwmout pwmdiv4, B.2, 206, 414
pwmout pwmdiv16, B.4, 80, 162
Return
Chiffre5:
pwmout pwmdiv4, B.2, 186, 37
pwmout pwmdiv16, B.4, 80, 162
Return
Chiffre6:
pwmout pwmdiv4, B.2, 168, 33
pwmout pwmdiv16, B.4, 80, 162
Return
ChiffreB:
pwmout pwmdiv4, B.2, 152, 306
pwmout pwmdiv16, B.4, 80, 162
Return
Chiffre7:
pwmout pwmdiv4, B.2, 206, 414
pwmout pwmdiv16, B.4, 72, 147
Return
Chiffre8:
pwmout pwmdiv4, B.2, 186, 374
pwmout pwmdiv16, B.4, 72, 147
Return
Chiffre9:
pwmout pwmdiv4, B.2, 168, 33
pwmout pwmdiv16, B.4, 72, 147
Return
ChiffreC:
pwmout pwmdiv4, B.2, 152, 306
pwmout pwmdiv16, B.4, 72, 147
Return
ChiffreEtoile:
pwmout pwmdiv4, B.2, 206, 414
pwmout pwmdiv16, B.4, 65, 133
Return
Chiffre0:
pwmout pwmdiv4, B.2, 186, 374
pwmout pwmdiv16, B.4, 65, 133
Return
ChiffreDiese:
pwmout pwmdiv4, B.2, 168, 33
pwmout pwmdiv16, B.4, 65, 133
Return
ChiffreD:
pwmout pwmdiv4, B.2, 152, 306
pwmout pwmdiv16, B.4, 65, 133
Return



'le return :
Pause 100
pwmout B.2,off
pwmout B.4,off
VueSimu.jpg

Bon, comme d'hab, mon code est "à l’arrache" . On fait ce que l'on peut, hein ...

Bonne soirée.
Georges.
 

PieM

Senior Member
Salut Georges,

sympa ton truc.
Vu la gamme de fréquence, un simple passe bas en sortie du PWM ne suffit pas ?
Coté code, on peut simplifier effectivement avec une table et une petite macro, mais rien de critique...
 

jojojo

Senior Member
Hello, Piem.
Pour le simple passe bas, non.
Il faut deux filtres du troisième ordre, fréquence de coupure (-3db), respectivement à 1000Hz, et 2000 Hz.

Trois raisons à cela:
- Obtenir un taux de distorsion harmonique suffisamment faible (<4% dans la norme DTMF).
- Obtenir deux sinusoïdes d'amplitudes égales, ET constantes, indépendamment de la fréquence.
- "Sortir" le signal avec une IdS compatible téléphonie (600 ohms), pour l'attaque de l'interface ligne.

J'ai câblé vite fait les deux filtres, et le picaxe, ce matin, sur ma plaque d'exp. Les sinusoïdes sont très belles, tout à fait conformes à la simu.

Georges.
 

PieM

Senior Member
Ah OK, je ne savais pas que le taux de distorsion exigé était aussi faible.
C'est vrai qu'il y a aussi le pb d'impédance !
Bravo pour ta réalisation ...
 
Top