TellStick et UM3750

De MicElectroLinGenMet.

(Retour Accueil ou Liste des articles)

Sommaire

Description

Suite à cet article, le Tellstick (Emetteur USB RF 433.92MHz) peut aussi être utilisé pour piloter des appareils à base de CI encodeur/décodeur UM3750 très utilisé dans diverses télécommandes RF, IR ...


En réponse à une question si il était possible de piloter se type d'appareils avec le Tellstick, j'ai repris les timing donnés dans le datasheet du CI et j'ai fini par générer des fichiers trames à envoyer par le Tellstick pour récepteur à base de UM3750.



Récepteur testé

Test d'envoie par le Tellstick de 2 trames ON/OFF codés sur les 12 bits de l'UM3750. Ces trames commanderont un ancien kit Ermes à base de récepteur Aurel et un UM3750 en décodeur pilotant un relais. Un code sur 12 bits passe le relais ON et un autre modifié de 1 bit le passe OFF.



Kit Ermes KIER203, UM3750 avec RC=100k/150pF ou shéma équivalent à droite (fonctionne avec 150pF bien que les timing soient pour 180pF).



Fonctionnement du CI UM3750

L'UM3750 en mode codeur génère une trame en fonction des niveaux présents sur les broches A1 à A12 et aussi des valeurs du circuit RC. Trame qui sera modulée par la porteuse RF 433,92MHz.

Codage du signal présent en sortie OUT (17) du CI

UM3750/MM53200 (RC=100k/180pF), T=960us
Entête (Space) de ~12.52ms à '0' entre trame.

-+                    +------+      +------------+            +------+      ...---+      +------------+            +------+
 |                    |      |      |            |            |      |            |      |            |            |      | 
 |        11.52ms     | 320us|320us |   640us    |    640us   | 320us|            | 320us|    640us   |   640us    | 320us|      
 +---------...--------+      +------+            +------------+      +----...     +------+            +------------+      +--
 |<----- Entete ---- >|<Sync>|<------- 0 ------->|<-------- 1 ------>|            |<------- 0 ------->|<-------- 1 ------>|
 |      Broches UM3750 ==>   |<------ A1 ------->|<------- A2 ------>|            |<----- A11 ------->|<------ A12------->|      

Trame qui faudra faire reproduire par le Tellstick


Utilisation avec le TellStick

Le chronographe ci-dessus permet de générer les codes pour le Tellstick (Voir description du protocol utilisé par le Tellstick sur http://developer.telldus.se ou ici).


Codage suivant protocol Tellstick

640us  = 0x40 (64 x 10us)
320us  = 0x20 (32 x 10us)

Un '0' logique sera codé 0x20 0x40
Un '1' logique sera codé 0x40 0x20


Codes à envoyer au Tellstick

Commande ON: Broches 1, 4, 6, 11 à la masse (0) et les autres broches en l'air (1).

52('R') 08	Repeat trame 8 fois

50('P') OB	Pause entre trame 11ms (pour 11.52ms)                                

53('S')		Send command

20		Bit de sync à 1

 A1     A2     A3     A4     A5     A6     A7     A8     A9     A10    A11    A12
  0      1      1      0      1      0      1      1      1      1      0      1 		Code ON 
20 40  40 20  40 20  20 40  40 20  20 40  40 20  40 20  40 20  40 20  20 40  40 20

20		Bit de fin à 0

2B('+')		Fin trame

Commande OFF: Broches 1, 4, 6 à la masse (0) et les autres broches en l'air (1) 
(La brochee 11 change d'état en fonction de la commande ON/OFF).

52('R') 08	Repeat trame 8 fois

50('P') OB	Pause entre trame 11ms (pour 11.52ms)                                

53('S')		Send command

20		Bit de sync à 1

 A1     A2     A3     A4     A5     A6     A7     A8     A9     A10    A11    A12
  0      1      1      0      1      0      1      1      1      1      1      1 		Code OFF 
20 40  40 20  40 20  20 40  40 20  20 40  40 20  40 20  40 20  40 20  40 20  40 20

20		Bit de fin à 0.

2B('+')	Fin trame


Fichiers binaires obtenu pour émettre ces codages

dan@alix:~/bin/tellstick$ hexdump -C UM3750_1-4-6-11_Tellstick.bin		# Commande ON relais.				
00000000  52 08 50 0b 53 20 20 40  40 20 40 20 20 40 40 20  |R.P.S  @@ @  @@ |
00000010  20 40 40 20 40 20 40 20  40 20 20 40 40 20 20 2b  | @@ @ @ @  @@  +|
dan@alix:~/bin/tellstick$ hexdump -C UM3750_1-4-6_Tellstick.bin			# Commande OFF relais.  
00000000  52 08 50 0b 53 20 20 40  40 20 40 20 20 40 40 20  |R.P.S  @@ @  @@ |
00000010  20 40 40 20 40 20 40 20  40 20 40 20 40 20 20 2b  | @@ @ @ @ @ @  +|


Emission avec le TellStick:

$ tdtool --raw UM3750_1-4-6-11_Tellstick.bin
Sending raw command: Success


Script pour générer le codage UM3750 pour Tellstick

Script shell (bash) générant les codes en fonction des broches de l'UM3750 à la masse. (Les tempos restent pour l'instant figés aux composants RC=100k/180pF)


#!/bin/bash
### '''mk_UM3750_Tellstick.sh''' ###
# Genere fichier binaire trame UM3750 pour Tellstick (RC=100k/180pF)
if [ -z "$1" ]
then
        echo "Make UM3750 code binary file for Tellstick (RC=100k/180pF) => UM3750_Pinx-Piny-Pinz_Tellstick.bin"
        echo "    Usage:   $0 Pin1 Pin2 Pinx (Pins grounded)"
        echo "    Example: $0 1 4 7"
        exit 1
fi
PINGNDLIST="$*"
TRAMEFILE="UM3750_$(echo "$PINGNDLIST" | sed 's/ /-/g')_Tellstick.bin"
REPEATVAL="\x08"
# Valeurs liées au circuit RC
SPACE="\x0B"
SYNCBIT="\x20"
PINHIGHT="\x40\x20"
PINLOW="\x20\x40"
ENDBIT="\x20"
echo -en  "R${REPEATVAL}P${SPACE}S${SYNCBIT}" > "$TRAMEFILE"
for PIN in 1 2 3 4 5 6 7 8 9 10 11 12
do
        PINGNDED=0
        for PINGND in $PINGNDLIST
        do
                if [ $PIN = $PINGND ]
                then
                        PINGNDED=1
                fi
        done
        if [ $PINGNDED -eq 1 ]
        then
                # PIN grounded
                echo "Broche A${PIN} = 0"
                echo -en "$PINLOW" >> "$TRAMEFILE"
        else
                echo "Broche A${PIN} = 1"
                echo -en "$PINHIGHT" >> "$TRAMEFILE"
        fi
done
echo -en "${ENDBIT}+" >> "$TRAMEFILE"
echo "File $TRAMEFILE create."
exit 0


$ ./mk_UM3750_Tellstick.sh       
Make UM3750 code binary file for Tellstick (RC=100k/180pF) => UM3750_Pinx-Piny-Pinz_Tellstick.bin
    Usage:   ./mk_UM3750_Tellstick.sh Pin1 Pin2 Pinx (Pins grounded)
    Example: ./mk_UM3750_Tellstick.sh 1 4 7
$ ./mk_UM3750_Tellstick.sh  4 7 9
Broche A1 = 1
Broche A2 = 1
Broche A3 = 1
Broche A4 = 0
Broche A5 = 1
Broche A6 = 1
Broche A7 = 0
Broche A8 = 1
Broche A9 = 0
Broche A10 = 1
Broche A11 = 1
Broche A12 = 1
File UM3750_4-7-9_Tellstick.bin create.
$ hexdump -C UM3750_4-7-9_Tellstick.bin
00000000  52 08 50 0b 53 20 40 20  40 20 40 20 20 40 40 20  |R.P.S @ @ @  @@ |
00000010  40 20 20 40 40 20 20 40  40 20 40 20 40 20 20 2b  |@  @@  @@ @ @  +|


Montage de test du script

Essais avec différents codages générés par le script sur ce montage.

Récepteur RF Aurel / UM3750 pilotant une led


Modification de la commande rfcmd

...


9/10/2010