CONTROLLO RELÈ A DISTANZA

Schema per Controllare a Distanza un Relè Grazie ai Moduli Wireless MX-05V e MX-FS-03V…


 
 
 
 




 

INTRO

Il seguente schema sfrutta i moduli MX-05V e MX-FS-03V per attivare un relè a distanza o disattivarlo. I moduli usati hanno un problema molto grave, il rumore va a corrompere il dato, quindi anche usando una comunicazione con codice Manchester non sempre si riesce ad avere una informazione utile. Questo schema utilizza un segnale PWM sempre acceso per evitare errori, inoltre per migliorarlo è consigliabile utilizzare le antenne come mostrato nella guida precedente.

Questo schema ha un solo relè perché utilizza due livelli di duty cycle, ovvero relè acceso e relè spento. Utilizzando 4 livelli di duty cycle si può pensare ad un possibile miglioramento del circuito e controllare 2 relè.

 




 

CODICE

Il codice del trasmettitore è:

#define pulsante PORTC.F1

char dutycycle;
bit onoff;

void main() {

PR2 = 0b11111111;       //valore 256 nel registro PR2
CCPR1L = 0b01000000;    //Valore di comparazione setting DC
CCP1CON = 0b00000000;   //30% del valore max
TRISC.F2 = 0;           //Pin 13 uscita
TRISC.F0 = 0;           //Pin 11 uscita
T2CON = 0b00000111;     //TMR2 on, prescaler 16
CCP1CON = 0b00001111;   //pwm on

onoff = 0;

   while(1){                                      //ciclo infinito
    if(pulsante == 1){                            //Se si preme pulsante
      onoff = ~onoff;                             //inverti stato
      delay_ms(300);                              //Delay antirimbalzo
    }
    
    if(onoff == 1){                               //Se acceso e DC diverso da 75%
      if(dutycycle != 0xC0) CCPR1L =  0xC0;       //impongo DC = 75%
      dutycycle = 0xC0;
    }
    else{
      if(dutycycle == 0xC0) CCPR1L =  0x40;       //Se spento e DC diverso da 30%
      dutycycle = 0x40;                           //impongo DC = 30%
    }
    
    PORTC.F0 =  onoff;
  }
}

Prima di tutto si definisce dove è connesso il pulsante di accensione e si inizializzano due variabili.

Nel programma principale si inizializza il PWM in modo tale che abbia una frequenza di 244Hz con un quarzo da 4MHZ e si inizializza il duty cycle ad un valore del 30% circa che equivale alla informazione di relè spento.

Nel ciclo infinito si controlla lo stato del pulsante e in caso si inverte lo stato di on e off.

Se si è appena premuto il pulsante viene aggiornato il valore del duty cycle, se il duty cycle era per relè spento ma viene acceso il duty cycle diventa 75% mentre ritorna al 30% in caso contrario.

Inoltre viene aggiornata l’uscita che rappresenta lo stato del relè.

Il codice del ricevitore è:

#define RELAYS PORTC.F1                    //Relè connesso a PORTC.F1

unsigned int cont;

void main() {                             //Programma principale
  TRISC.F0 = 1;                           //PORTC.FO ingresso
  TRISC.F1 = 0;                           //PORTC.F1 uscita
  cont = 0;                               //conteggio = 0
  RELAYS = 0;                             //Relè spento

  while(1){                               //Ciclo infinito
    if(PORTC.F0 == 1){                    //Se ingresso segnale == 1
      cont = 0;                           //conta ogni 10uS
      while(PORTC.F0 == 1){cont++;
        Delay_us(10);
      }
    }
    
    else if(cont>120){                   //Se il conteggio > 120 (DC=75%)
      RELAYS = 1;                        //Accendi relè
      }
    else{
      RELAYS = 0;                        //Altrimenti mantieni spento
    }
  }
}

Prima di tutto si inizializzano ingressi e uscite e si inizializza spento il relè.

Nel ciclo infinito, se il segnale ricevuto è a livello alto inizia un conteggio nella variabile cont che viene incrementata ogni 10uS. Il valore contato serve a comprendere il valore del duty cycle, se il valore contato è maggiore di 120 allora il duty cycle sarà 75% e il relè viene acceso. Se il valore contato è minore di 120 allora il relè viene spento.
 




 
SCHEMA

Lo schema del circuito trasmittente è:

Mentre lo schema del circuito ricevente è:

In tutti e due i casi la tensione di alimentazione è 5V con il positivo connesso al pin 20 del microcontrollore e GND connesso ai pin 19 e 8. Il circuito di risonanza è formato da due condensatori da 22pF e da un cristallo di quarzo da 4MHz. La resistenza da 10K connessa tra il pin 1 e VCC evita il reset del microcontrollore.

Il trasmettitore ha come uscite un LED di controllo e il segnale inviato al modulo radio trasmittente. Il pulsante porta un livello alto di tensione sul pin 12 quando premuto mentre si usa la R1 è una resistenza di pull down.

Il circuito ricevente riceve il dato sul pin 11 e controlla il relè grazie al pin 12. Il relè è acceso dal transistor che fa da buffer di tensione mentre D1 è un diodo di ricircolo.

I moduli riceventi e trasmittenti sono alimentati a tensione 5V e hanno un antenna esterna.
 
DOWNLOAD

Potete scaricare la simulazione con PROTEUS al seguente LINK!!!





 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *