Au début de mon 'aventure'…..
J'avais commandé un emetteur-récepteur Beamit pour commander la lumière de ma salle HC.
Malheureusement, ma Philips Pronto n'arrivait pas à apprendre le code de la télécommande IR… En effet celle-ci a un fréquence 'porteuse' de 433kHz, alors que selon les datasheets de la Pronto, elle ne peut monter qu'à 56kHz…. Dommage!
Alors, le Beamit, retour à l'expéditeur… Exclu d'avoir 2 télécommandes!!!
Y'a plus qu'à me fabriquer moi-même mon récepteur IR !!!
D'abord, commencer par comprendre le code envoyé par la pronto. Il s'agit du code RC5, commun à beaucoup de télécommandes IR.
Le code de base RC5 est composé
- De 2 bits de départ
- 1 bit de basculement
- 5 bits d'adressage du système
- 6 bits d'instruction
La pronto permet de générer directement le code RC5 en IR. De ce fait, pas besoin d'avoir un émetteur pour lu faire apprendre un code! Ça me simplifie la tâche, je n'aurai besoin de fabriquer que le récepteur!!
Alors départ!!
Commender le récepteur IR chez Conrad (1,5Euro ). Comme la pronto envoie le signal avec une fréquence de 36kHz, j'ai commandé le récepteur 36kHz (normal…)
Faire le programme en Assembleur pour un PIC 12F629. Il est très modeste mais suffit amplement pour l'application.
Monter le tout sur un bout de veroboard avec une alim capacitive, un relais, un regulateur 5V….
Et là, ça MARCHE !! Bon c'est vite dit tout ça mais ça m'a pris pas mal de temps quand-même, surtout pour sychroniser la reception IR sur le PIC…
Autant continuer sur la lancée! Pourquoi pas un variateur de lumière, hummmm?
J'utilise un triac low current commandé directement par le PIC, je me fais un détecteur de passage par 0 pour sychroniser la commande du triac avec le 50Hz du réseau… et ça marche aussi!!!!!!!
Le 'seul' (HEM HEM...) problème que j'ai rencontré, c'est que le récepteur IR est sensible aux commutations du triac, alors il a fallu que j'implémente un filtre 'digital' dans le PIC pour ne trigger QUE sur des vrais codes IR envoyés par la PRONTO….
Ce qui est génial avec mon système c'est :
1. Le prix : par recepteur IR, je compte environ 15Euros..(boîtier/Pic/relais/triac/print…)
2. La modularité : je peux sur un même récepteur avoir 4-5-6 codes différents, chacun ayant un autre effet. Par exemple, un code ON – OFF – 50% - Plus – Moins , etc…..
3. Comme le nombre des adresses/commandes en RC5 et que certaines adresses ne sont jamais utilisées par les appareils du commerce, je peux avoir autant d'appareil que je souhaite…!
Je ne prétends pas avoir inventé la poudre, mais je suis très content du résultat!! Ça ne me coûte presque rien, et pour TOUTES mes prochaines application (stores, lumières, etc etc….) je vais pouvoir utiliser le même principe!!!
En passant, la pronto est la meilleure télécommande que j'ai jamais vue!!!
Merci à ceux qui m'auront lu, et si il y a des questions/remarques, dites toujours!!!!
Voilà quelque photos:
Voilà le montage (un peu foulli..) du récepteur avec simplement un relais ON/OFF
Voilà l'autre montage, déjà dans sa boîte, avec le variateur de lumière à triac. Le petit switch sert à faire un ON/OFF de la lumière (si on retrouve plus la télécommande par exemple!)
Le trou sur le devant est pour le récepteur IR...
Et enfin, voilà la pronto avec les 5 différentes fonctions possibles (que je peux augmenter à l'infini-1 ). Ici j'ai mis un ON-OFF-MAX-PLUS-MOINS....
[/b]
|
14 messages • Page 1 sur 1
|
Modérateurs: Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités
Tout l'univers de la domotique, du pilotage et des télécommandes, du multiroom, du stockage et réseau
J'ai fait mon propre récepteur IR pour Pronto...
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
Je suis tres tres TRES TRES interressé par tes montages
As tu prévu de nous en faire profiter en partageant les schemas et les sources du PIC ?
As tu prévu de nous en faire profiter en partageant les schemas et les sources du PIC ?
- OlivierG
- Messages: 411
- Inscription Forum: 07 Mai 2002 13:23
- Localisation: Toulouse-Blagnac, 31
C'est pile ce que je voudrais faire mais en 16 voies (pour 16 sources lumineuses).
En changeant le pic pour un plus gros (en memoire, en rapidité et en sortie).
Pourrais-tu partager le prog du pic et le shema pour me servir de base ?
J'ai un shema de "elctronique pratique" mais je prefere avoir plusieurs sources.
Merci d'avance
En changeant le pic pour un plus gros (en memoire, en rapidité et en sortie).
Pourrais-tu partager le prog du pic et le shema pour me servir de base ?
J'ai un shema de "elctronique pratique" mais je prefere avoir plusieurs sources.
Merci d'avance
- jbb31
- Messages: 10
- Inscription Forum: 12 Oct 2005 22:09
Passionnant tous ça ...
- chane
- Messages: 2339
- Inscription Forum: 06 Sep 2001 2:00
- Localisation: 91
Je suis content de voir que ça intéresse d'autres personnes!!
Merci pour les encouragements!!
Je suis désolé mais je ne trouve pas le moyen de joindre des fichiers....!!! Y'a pas de bouton "joindre fichiers" ...?!
Quelqu'un pour m'aider ??
Merci pour les encouragements!!
Je suis désolé mais je ne trouve pas le moyen de joindre des fichiers....!!! Y'a pas de bouton "joindre fichiers" ...?!
Quelqu'un pour m'aider ??
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
jbb31 a écrit:C'est pile ce que je voudrais faire mais en 16 voies (pour 16 sources lumineuses).
En changeant le pic pour un plus gros (en memoire, en rapidité et en sortie).
Pourrais-tu partager le prog du pic et le shema pour me servir de base ?
J'ai un shema de "elctronique pratique" mais je prefere avoir plusieurs sources.
Merci d'avance
Pour moi, il n'y a aucun problème d'avoir 16 sources lumineuses, même avec un seul PIC, si elle sont en ON/OFF.
Si tu veux avoir 16 variateur, il va falloir 16 timer pour commander les 16 triacs... et pour un seul PIC à 4MHz, c'est un peut beaucoup...
La solution que tu propose est la meilleur, augmenter la fréquence du PIC par 3-4, et là je pense que c'est faisable avec un seul récepteur...
Je mets volontier mon code en ligne, mais j'arrive pas à joindre un fichier.....
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
Bon, puisque j'arrive pas à poster des fichiers, voilà un print moche du schéma....
Et voilà le programme en assembleur :
SI jamais, je suis ouvert à toute remarque/amélioration etc!!!
Et voilà le programme en assembleur :
SI jamais, je suis ouvert à toute remarque/amélioration etc!!!
- ; dans les très TRES grandes lignes, voilà le principe:
; La commande du triac.
; Le triac est commandé avec une impulsion, et reste ouvert jusqu'au prochain passage par 0, ou il
; se bloque..
; Le programme va donc faire varier le moment dans l'alternance ou le triac va s'enclencher. Plus ce temps
; est long, plus la luminosité sera faible.
; Pour cela il va falloir synchroniser le temps à atttendre avant de donner cette impulsion avec le passage
; par 0 de la tension sur la Phase
; Puis, une fois le pasage par 0 détecté, on start un timer dans le PIC, puis une fois terminé, on enclenche le triac.
; Une fois un nouveau passage par 0, on RESET le timer, puis on le restart, et ainsi de suite...!
; La commande IR n'a donc besoin QUE de changer la valeur de de TIMER pour changer le temps d'enclenchement du triac, et
; donc de la luminosité de la Lampe!...
; La reception IR
; Voir plus bas pour les explications...
list p=12F629
#include <p12f629.inc>
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_ON & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT
;******************************************************************************
; Constants *
;*****************************************************************************/
;definition des ports
#define port_ir GPIO,0 ; IN
#define port_triac GPIO,1 ; OUT
#define port_nc1 GPIO,2 ; OUT
#define port_switch GPIO,3 ; IN
#define port_relais_1 GPIO,4 ; out
#define port_phase GPIO,5 ; IN
;configuration des ports pour l'état standard et pour le mode commande-relâche du triac
#define io_config_normal B'00101001' ; 0 = output, 1 = input
#define io_config_triac_on B'00101001' ; 0 = output, 1 = input
#define io_config_triac_off B'00101011' ; 0 = output, 1 = input
#define masque_byte_prefix B'11000111' ;c'est le code commun à tous les code envoyés, c'est l'adresse RC5
; RC5 : 7 - 0 : OFF
#define masque_1 B'00000000' ;c'est les données RC5 (6bits, les 2 derniers sont jamais utilisés
; RC5 : 7 - 1 : ON
#define masque_2 B'00000100'
; RC5 : 7 - 1 : MINUS
#define masque_3 B'00001000'
; RC5 : 7 - 1 : PLUS
#define masque_4 B'00001100'
; RC5 : 7 - 1 : MAX
#define masque_5 B'00010000'
#define ref_minimum_lampe .150
#define ref_maximum_lampe .3
;definition des flags nécesaires au programme principal
#define flag_analyse_reception flag, 0
#define flag_byte_1 flag, 1
#define flag_reception_en_cours flag, 2
#define flag_ancien_etat flag, 3
#define flag_config_ok flag, 4
#define flag_raz_impulse_triac flag, 5
#define flag_switch_bas flag, 6
#define flag_impulse_recue flag, 7
#define ref_nombre_bits .7
#define ref_compteur_switch_haut .200
#define ref_compteur_switch_bas .200
#define ref_compteur_boucle .7 ; = 7*2*72us = us
#define ref_compteur_boucle_1 .2 ; = 2*72us = 144us
#define bank_1 bsf STATUS,RP0
#define bank_0 bcf STATUS,RP0
;*******************************************************************************
; Variables *
;******************************************************************************/
cblock 0x20 ; debut du block de RAM
flag
nombre_bits
byte_1
byte_2
compteur_boucle
compteur_boucle_1
tempo_phase
ref_tempo_phase
old_ref_tempo_phase
compteur_switch_haut
compteur_switch_bas
endc
;*********************************************************************************************
;*********************************************************************************************
;*********************************************************************************************
ORG 0x00 ;Reset Vector Location
goto Initialize
;******************************************************************************
; Main Program *
;*****************************************************************************/
Initialize
bank_1
call 0x3FF ;Get the Calibration Value
movwf OSCCAL ;Calibrate
banksel CMCON
movlw B'00000111' ;Binary Version
; ||||||||
; |||||+++--- Comparator OFF
; ||||+------ not used
; |||+------- Output not inverted
; ||+-------- unimplemented
; |+--------- not used
; +---------- unimplemented
movwf CMCON ;Comparator Off, Pins Set for Digital // DOIT ETRE INITIALISE !!!!!
banksel TRISIO
movlw io_config_normal
movwf TRISIO
banksel GPIO
clrf GPIO ;// DOIT ETRE INITIALISE !!!!!
; Initialize TMR1
movlw B'00000000'
; ||||||||
; |||||+++---
; ||||+------
; |||+-------
; ||+--------
; |+---------
; +----------
banksel T1CON
movwf T1CON
; Initialize TMR0
movlw B'10000001'
; ||||||||
; |||||+++--- Prescaler 1:2 -->
; ||||+------ Prescaler assigned to TMR0
; |||+------- Increment at High->Low Trasition of GP2
; ||+-------- Use interal instruction clock cycle
; |+--------- interrupt on falling edge of GP2
; +---------- GPIO pull-up disabled
banksel OPTION_REG
movwf OPTION_REG
; Initialize Interrupts
movlw b'00000000' ; TMR= enable
; ||||||||
; |||||||+--- Port Change Interrupt Flag
; ||||||+---- External Interrupt Flag
; |||||+----- TMR0 Interrupt Flag
; ||||+------ Port Change Interrupt = OFF
; |||+------- External Interrupt
; ||+-------- TMR0 Interrupt
; |+--------- Peripheral Interrupt
; +---------- Global Interrupt
bank_1
movwf INTCON
movlw b'00000000'
; ||||||||
; |||||||+--- IOC0
; ||||||+---- IOC1
; |||||+----- IOC2
; ||||+------ IOC3
; |||+------- IOC4
; ||+-------- IOC5
; |+--------- -
; +---------- -
banksel IOC
movwf IOC
;******************************************************************************
; Initialisation des variables *
;******************************************************************************
bank_0
;initialisation des flags
movlw .0
movwf flag
movlw ref_nombre_bits
movwf nombre_bits
movlw ref_compteur_boucle
movwf compteur_boucle
movlw ref_compteur_boucle_1
movwf compteur_boucle_1
clrf byte_1
clrf byte_2
bcf port_relais_1
movlw .70
movwf tempo_phase
movwf ref_tempo_phase
movwf old_ref_tempo_phase
movlw ref_compteur_switch_haut
movwf compteur_switch_haut
movlw ref_compteur_switch_bas
movwf compteur_switch_bas
;******************************************************************************
; Début du programme principal, de la boucle continue *
;******************************************************************************
Main
; ******************************************
; detection du passage par 0
; la boulce principale fait 72us - 74us
; sur du 50hz, un passage par 0 intervient tous les 10ms, ce qui fait 139 boucles de 72us
; ce qui veut dire que une fois un passage par 0 identifié on a 139 boucle avant le suivant
; on va utiliser le passage par 0 pour sychroniser l'impulsion sur le Triac...
; P0 --- temps --- enclenchement triac ----- P0 - RAZ temps ------temps ----- etc...
btfss flag_raz_impulse_triac
goto fin_impulse_triac
banksel TRISIO
movlw io_config_triac_off
movwf TRISIO
banksel GPIO
bcf flag_raz_impulse_triac
fin_impulse_triac
; ******************************************
; test du switch. Ce switch sert à commander directement le triac en FULL ON ou FULL OFF
; il y a un anti-rebond de quelques MS pour éviter les ON/OFF intempestifs
btfsc port_switch
goto raz_test_switch_bas
attente_switch_bas
movfw compteur_switch_bas
btfss STATUS,Z
goto dec_compteur_switch_bas
movlw ref_compteur_switch_bas
movwf compteur_switch_bas
bsf flag_switch_bas
dec_compteur_switch_bas
decf compteur_switch_bas
goto fin_test_switch_bas
raz_test_switch_bas
movlw ref_compteur_switch_bas
movwf compteur_switch_bas
goto fin_test_switch_bas
fin_test_switch_bas
btfss flag_switch_bas
goto fin_test_switch_haut
btfss port_switch
goto raz_test_switch_haut
attente_switch_haut
movfw compteur_switch_haut
btfss STATUS,Z
goto dec_compteur_switch_haut
movlw ref_compteur_switch_haut
movwf compteur_switch_haut
bcf flag_switch_bas
movfw ref_tempo_phase
xorlw ref_minimum_lampe
btfsc STATUS,Z
goto allumer_switch
eteindre_switch
movlw ref_minimum_lampe
movwf ref_tempo_phase
goto fin_test_switch
allumer_switch
movlw ref_maximum_lampe
movwf ref_tempo_phase
goto fin_test_switch
fin_test_switch
goto fin_test_switch_haut
dec_compteur_switch_haut
decf compteur_switch_haut
goto fin_test_switch_haut
raz_test_switch_haut
movlw ref_compteur_switch_haut
movwf compteur_switch_haut
goto fin_test_switch_haut
fin_test_switch_haut
; ******************************************
; cette partie sert à mesurer le passage par 0.
; il y a un tout petit anti-rebond de 5-10us pour éviter de mesurer une perturbation
test_passage_0
btfss flag_ancien_etat
goto test_etat_haut
goto test_etat_bas
test_etat_haut btfss port_phase
goto fin_test_etat_haut
nop
nop
nop
nop
btfss port_phase
goto fin_test_etat_haut
bsf flag_ancien_etat
movfw ref_tempo_phase
movwf tempo_phase
bcf flag_config_ok
goto fin_test_etat_haut
fin_test_etat_haut
goto fin_test_passage_0
test_etat_bas btfsc port_phase
goto fin_test_etat_bas
nop
nop
nop
nop
btfsc port_phase
goto fin_test_etat_bas
bcf flag_ancien_etat
movfw ref_tempo_phase
movwf tempo_phase
bcf flag_config_ok
goto fin_test_etat_bas
fin_test_etat_bas
goto fin_test_passage_0
fin_test_passage_0
test_compteur_phase
movfw tempo_phase
btfss STATUS,Z
goto dec_tempo_phase
btfsc flag_config_ok
goto saut_init_config
banksel TRISIO
movlw io_config_triac_on
movwf TRISIO
banksel GPIO
bsf flag_config_ok
bsf port_triac
bsf flag_raz_impulse_triac
saut_init_config
goto fin_test_compteur_phase
dec_tempo_phase
decf tempo_phase
fin_test_compteur_phase
; ***********************************************
; la partie suivante est pour la réception du code RC5 de la pronto
; la base de temps est augmentée de 72us à 220us
boucle_3_tempo
movfw compteur_boucle_1
btfss STATUS,Z
goto dec_compteur_boucle_1
movlw ref_compteur_boucle_1
movwf compteur_boucle_1
; le test du port IR ne se fait qu'une fois toutes les 220us
; si il y a un état bas sur le port IR, il y a une réception de code
; MAIS si cette impulsion n'est plus là après 220us, il s'agissait d'une impulsion parasite...
; en effet, un VRAI code RC5 commence TOUJOURS par un bit d'au moins 1,7ms....
test_port_ir btfsc flag_reception_en_cours
goto boucle_10_tempo
btfsc port_ir
goto raz_flag_impulse_recue
btfss flag_impulse_recue
goto set_flag_impulse_recue
bsf flag_reception_en_cours
movlw .0
movwf compteur_boucle
goto boucle_tempo
set_flag_impulse_recue
bsf flag_impulse_recue
goto boucle_tempo
; **************** boucle tempo de lecture **************
; chaque bit sur le port IR est lu toutes les 1,787 ms.
; c'est là que la sychronisation joue un grand rôle!!
; chaque 1,78ms, le programme va venir lire l'état sur le port IR, et 'compléter' un byte
; dans sa mémoire.
; Si ce temps de 1,78ms est plus long ou plus court, il risque d'y avoir un décalage entre le code
; émis et reçu...
; Pour visualiser le moment ou le PIC vient lire la valeur sur le port IR, j'ai utilisé le
; port_relais_1. Ce port change d'état à chaque fois que la mesure est faite sur le port IR.
; Ainsi avec un oscillo, on voit tout de suite si il y a un décalage temporel entre l'état du port IR
; et la mesure du PIC!
; toute la durée de transmission doit durer 24,889 ms selon les données RC5
boucle_10_tempo
movfw compteur_boucle
btfss STATUS,Z
goto dec_compteur_boucle
movlw ref_compteur_boucle
movwf compteur_boucle
; *******************************
btfss flag_reception_en_cours
goto fin_test_port_ir
reception_en_cours
btfsc flag_byte_1
goto fin_reception_byte_1
reception_byte_1
bcf byte_1,0
btfss port_ir
bsf byte_1,0
call pointe_1
movfw nombre_bits
btfsc STATUS,Z
goto raz_reception_byte_1
rlf byte_1
decf nombre_bits
goto fin_test_port_ir
raz_reception_byte_1
movlw ref_nombre_bits
movwf nombre_bits
bsf flag_byte_1
movlw b'11011111'
andwf byte_1,1
goto fin_test_port_ir
fin_reception_byte_1
reception_byte_2
btfss flag_byte_1
goto fin_reception_byte_2
bcf byte_2,0
btfss port_ir
bsf byte_2,0
call pointe_1
movfw nombre_bits
btfsc STATUS,Z
goto raz_reception_byte_2
rlf byte_2
decf nombre_bits
goto fin_test_port_ir
raz_reception_byte_2
movlw ref_nombre_bits
movwf nombre_bits
bcf flag_byte_1
bsf flag_analyse_reception
goto fin_test_port_ir
fin_reception_byte_2
raz_flag_impulse_recue
bcf flag_impulse_recue
fin_test_port_ir
; **************** analyse des 2 bytes recus ************
; on a maintenant les 14bits RC5 transmis par la pronto
; il va falloir maintenent voir si ces code sont destinés au PIC (adresse)
; et si oui, quelle ordre il doit exécuter (commande)
; RC5 : 7 - 0 : OFF
;#define masque_1 B'00000000'
; RC5 : 7 - 1 : ON
;#define masque_2 B'00000100'
; RC5 : 7 - 1 : MINUS
;#define masque_3 B'00001000'
; RC5 : 7 - 1 : PLUS
;#define masque_4 B'00001100'
analyse_reception
btfss flag_analyse_reception
goto fin_analyse_port_ir
; le prefix est le byte_1
; il correspond au début de la transmission + l'adresse
analyse_byte_prefix
movfw byte_1
xorlw masque_byte_prefix
btfss STATUS,Z
goto fin_analyse_reception
; si l'adresse est bonne, le programme continue l'analyse du byte_2
; puis change la valeur du timer qui enclenche le triac, donc change la luminosité...!!
; éteindre
analyse_byte_1
movfw byte_2
xorlw masque_1
btfss STATUS,Z
goto analyse_byte_2
movlw ref_minimum_lampe ; minimum sur lampe
movwf ref_tempo_phase
bcf flag_analyse_reception
goto fin_analyse_reception
; allumer
analyse_byte_2
movfw byte_2
xorlw masque_2
btfss STATUS,Z
goto analyse_byte_3
movfw old_ref_tempo_phase ; chargement de l'ancienne valeur ON
movwf ref_tempo_phase
bcf flag_analyse_reception
goto fin_analyse_reception
; augmenter la luminosité
analyse_byte_3
movfw byte_2
xorlw masque_3
btfss STATUS,Z
goto analyse_byte_4
movfw ref_tempo_phase
xorlw ref_maximum_lampe
btfsc STATUS,Z
goto fin_dec_ref_phase
decf ref_tempo_phase
movfw ref_tempo_phase
movwf old_ref_tempo_phase
movfw ref_tempo_phase
xorlw ref_maximum_lampe
btfsc STATUS,Z
goto fin_dec_ref_phase
decf ref_tempo_phase
movfw ref_tempo_phase
movwf old_ref_tempo_phase
fin_dec_ref_phase
bcf flag_analyse_reception
goto fin_analyse_reception
; diminuer la luminosité
analyse_byte_4
movfw byte_2
xorlw masque_4
btfss STATUS,Z
goto analyse_byte_5
movfw ref_tempo_phase
xorlw ref_minimum_lampe
btfsc STATUS,Z
goto fin_inc_ref_phase
incf ref_tempo_phase
movfw ref_tempo_phase
movwf old_ref_tempo_phase
movfw ref_tempo_phase
xorlw ref_minimum_lampe
btfsc STATUS,Z
goto fin_inc_ref_phase
incf ref_tempo_phase
movfw ref_tempo_phase
movwf old_ref_tempo_phase
fin_inc_ref_phase
bcf flag_analyse_reception
goto fin_analyse_reception
; allumer au max
analyse_byte_5
movfw byte_2
xorlw masque_5
btfss STATUS,Z
goto analyse_byte_6
movlw ref_maximum_lampe ; chargement de la valeur max
movwf ref_tempo_phase
movwf old_ref_tempo_phase
bcf flag_analyse_reception
goto fin_analyse_reception
analyse_byte_6
fin_analyse_reception
clrf byte_1
clrf byte_2
bcf flag_reception_en_cours
bcf flag_analyse_reception
bcf flag_impulse_recue
goto fin_analyse_port_ir
dec_compteur_boucle
decf compteur_boucle
goto fin_dec_compteur_boucle
dec_compteur_boucle_1
decf compteur_boucle_1
goto fin_dec_compteur_boucle
;************************************************************************************
;************************************************************************************
;************************************************************************************
fin_dec_compteur_boucle
fin_analyse_port_ir
saut_test_ir
; cette boucle est la base de temps globale de tout le programme!
; cette façon de faire permet d'avoir un seul et unique TIMER pour TOUT le programme
; le PIC peut ainsi tout faire en même temps (passage par 0, test du port IR, test du switch, etc etc...)
boucle_tempo
movfw TMR0
addlw .240 ;
btfss STATUS,C
goto boucle_tempo
clrwdt ; cette boucle dure 72us.
clrf TMR0
nop
goto Main
; la subroutine ou on peut contrôler le moment ou le PIC fait une mesure su le port IR
pointe_1 btfsc port_relais_1
goto raz_relais_1
bsf port_relais_1
goto fin_pointe_1
raz_relais_1
bcf port_relais_1
fin_pointe_1
return
;*******************************************************************************
; Calibration Value for Simulation *
;******************************************************************************/
ORG 0x3FF ;Oscillator Calibration Value for Simulation
messg "Dummy Oscillator Calibration value for simulation."
messg "Please remove the following source code line when programming a device."
; retlw 0x00 ;Remove if using a real chip
;*******************************************************************************
END ;directive 'end of program'
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
je ne comprends rien mais qu'est ce que c'est chouette !!
Bravo.
Bravo.
- chane
- Messages: 2339
- Inscription Forum: 06 Sep 2001 2:00
- Localisation: 91
Bô boulot....
Mais..... si je puis modestement faire une remarque constructive... :
"Tu aurais pu optocoupler le signal de phase.... s'pece de fou...."
Comme dirais mon vieux prof d'éléctro...
A+
SebCestBien
Mais..... si je puis modestement faire une remarque constructive... :
"Tu aurais pu optocoupler le signal de phase.... s'pece de fou...."
Comme dirais mon vieux prof d'éléctro...
A+
SebCestBien
- dede_ii
- Messages: 94
- Inscription Forum: 05 Mar 2002 2:00
- Localisation: Vive lâ sûisse....
dede_ii a écrit:Bô boulot....
Mais..... si je puis modestement faire une remarque constructive... :
"Tu aurais pu optocoupler le signal de phase.... s'pece de fou...."
Comme dirais mon vieux prof d'éléctro...
A+
SebCestBien
Lequel?... c'lui du gate du triac?... comment tu ferais toâ?
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
mmm... j'sais pas trop ... mais p'têtre quelque chose come ça: http://jem.dhs.org/~ed/ece499/prof/schematic.pdf
Zero Cross Detection
Zero Cross Detection
- dede_ii
- Messages: 94
- Inscription Forum: 05 Mar 2002 2:00
- Localisation: Vive lâ sûisse....
dede_ii a écrit:mmm... j'sais pas trop ... mais p'têtre quelque chose come ça: http://jem.dhs.org/~ed/ece499/prof/schematic.pdf
Zero Cross Detection
Le problème à mon avis ne vient pas de ce côté... Beaucoup d'appareils que je développe pour l'industrie utilisent un diviseur capacitif, et de ce fait, il n'y a pas de séparation galvanique du côté de l'alimentation....
Par contre, c'est vrai que la commande du triac pourrait être séparée galvaniquement... Mais si je le fais, il faut utiliser un opto-diac, qui commande le triac... ça devient compliqué...
Le 'seul' problème avec mon système c'est que je coupe le retour sur le neutre, et pas la phase.. il faut donc obligatoirement 2 fils pour aller jusque à la lampe.
Si j'avais séparé galvaniquement la commande du triac, j'aurais pu tirer qu'un fil vers la lampe, vu que le neutre est commun dans toute la baraque...
Mais bon, ça marche comme ça! Que demande le peuple!
Et de toute façon, chez moi, la plupart des récepteurs seront en ON/OFF avec un relais.... et là plus de problème!
- tcholleybus
- Messages: 363
- Inscription Forum: 16 Fév 2005 16:27
- Localisation: Vers l'infini et au-delà..!
Un grand merci à tous,
J'ai quand meme du travail (surtout que je suis completement débutant en electronique) car c'est vraiment 16 gradateurs que je voudrais faire , avec un interface pc pour faire des sequences d'inctinction/allumage.
J'ai quand meme du travail (surtout que je suis completement débutant en electronique) car c'est vraiment 16 gradateurs que je voudrais faire , avec un interface pc pour faire des sequences d'inctinction/allumage.
- jbb31
- Messages: 10
- Inscription Forum: 12 Oct 2005 22:09
|
14 messages
• Page 1 sur 1
Retourner vers Intégration, Domotique, Stockage et Réseau
|