Elige tu idioma

Google-Translate-Spanish to English Google-Translate-Chinese (Simplified) BETA Google-Translate-Spanish to French Google-Translate-Spanish to German Google-Translate-Spanish to Italian Google-Translate-Spanish to Japanese BETA Google-Translate-Spanish to Korean BETA Google-Translate-Spanish to Russian BETA
Usa este widget!

Visitas

Contador Web
Contador Web WAU_classic('65kdjd2sjoxp')

visitantes

Calendario Ideas&Tecnologia

Marzo 2010
L M X J V S D
« Ene    
1234567
891011121314
15161718192021
22232425262728
293031  

Archivos

Meta

CATEGORIAS

Entradas recientes

Nube de Etiquetas

VIDEO

Ultimos comentarios

Enlaces

Count per Day

Directorios

Radiocontrol con el TLP434 y RLP434

Por: Ideas&Tecnologia



En esta oportunidad Ideas&Tecnologia les presenta este proyecto consiste en utilizar los módulos de radiofrecuencia de 434Mhz (TLP y RLP 434) para comunicar dos circuitos, en este caso un transmisor TX y un receptor RX.

Los módulos empleados solo nos permiten realizar una comunicación simplex, existes en el mercado mejores módulos que cuentan con modulación FSK (más inmune al ruido) y full dúplex.

En el transmisor esta una botonera que al momento de ser presionada hace que el micro en el transmisor envié un dato cuyo valor será validado en el receptor, esta comunicación se realiza gracias a los módulos de radio frecuencia mencionados. A continuación mostramos los datos de conexionado y polarización de los módulos empleados y el código utilizado para que el proyecto funcione.


DIAGRAMA DE CONECCION DE LOS MODULOS TLP-434

Y RLP-434

Estos módulos de radio frecuencia nos permiten hacer aplicaciones inalámbricas de radio control.

El rango de Vcc en el TLP-434 esta entre 2 – 12 V.

El TXD-PIC va conectado al pin TX del pic, para usar la comunicación UART.

La antena debe medir un cuarto de la longitud de onda (L/4)

L=c/f=300.000.000m/434.000.000Hz=0.69m

Long Ant = L/4 = 17cm

112

tx

El rango de Vcc en el RLP-434 esta entre 4.5 – 5.5 V.

El TXD-PIC va conectado al pin RX del pic, para usar la comunicación UART.

Long Ant = L/4 = 17cm

214

rx

SIMULACION DE LA COMUNICACIÓN ENTRE LOS MICROS

En la simulación basta con unir los micros (PIC’s) con un cable representando así la comunicación seria entre el PIC que transmite y el PIC que recibe.

313

En esta figura vemos como se transmite el dato cero (0X00) constantemente miestras no se presiona la botonera en el transmisor.

El receptor al recibir el dato 0×00 (hexadecimal) no enciende el led indicador.


413


En esta figura apreciamos que al momento de presionar la botonera, el transmisor envía el dato 23 (decimal), este dato lo recibe el receptor y lo valida encendiendo entonces el led indicador como se ve en la figura.


CODIGO EN PICC DEL MICRO TX

//#include “D:\Ideas&Tecnologia\tx.h”

#include <16F876A.h>

#FUSES NOWDT //No Watch Dog Timer

#FUSES HS //High speed Osc (> 4mhz)

#FUSES NOPUT //No Power Up Timer

#FUSES PROTECT //Code not protected from reading

#FUSES NODEBUG //No Debug mode for ICD

#FUSES BROWNOUT //Reset when brownout detected

#FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)

#FUSES NOCPD //No EE protection

#FUSES NOWRT //Program memory not write protected

#use delay(clock=10000000)

#use rs232(baud=2400,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main() {

set_tris_a (0b00000001);

set_tris_b (0b00000000);

set_tris_c (0b00000000);

setup_adc_ports(NO_ANALOGS);

setup_spi(FALSE);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DIV_BY_1,0,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

while(1){

if(input(PIN_A0)==1){

while(input(PIN_A0)==1){

}

putc(23);

}else{

putc(0);

}

}

}


CODIGO EN PICC DEL MICRO RX

//#include “E:\Ideas&Tecnologia\rx.h”

#include <16F876A.h>

#FUSES NOWDT //No Watch Dog Timer

#FUSES HS //High speed Osc (> 4mhz)

#FUSES NOPUT //No Power Up Timer

#FUSES PROTECT //Code not protected from reading

#FUSES NODEBUG //No Debug mode for ICD

#FUSES BROWNOUT //Reset when brownout detected

#FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)

#FUSES NOCPD //No EE protection

#FUSES NOWRT //Program memory not write protected

#use delay(clock=10000000)

#use rs232(baud=2400,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

int it;

void main() {

set_tris_a (0×00);

set_tris_b (0b00000000);

set_tris_c (0b10000000);

setup_adc_ports(NO_ANALOGS);

setup_spi(FALSE);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DIV_BY_1,255,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

while(1){

delay_ms(5);

if(getc()==23){

if(it==0){ it=1;

output_low(pin_B0);

}

else{ it=0;

output_high(pin_B0);

}

}

}

}

Contador up/down de 3 dígitos

Por: Ideas&Tecnologia


1


Descripción

Este proyecto consiste en diseñar un circuito contador de 3digitos mediante  el PIC16F887, esto se mostrara en Formato Decimal y Binario. Para aquello se emplea 3 display Cátodo Común y 16 Led, donde el bit LSB es el pin RB0 y el MSB pin RC7, el modo de conteo se controla mediante el button  (up/down)

Para realizar este proyecto utilizamos la técnica de múltiplexación para ahorrar el uso de pines del microcontrolador y a su vez el consumo de energía.


Funcionamiento

Al energizar el circuito este mostrara el numero ‘000’, para iniciar el conteo  se presionara el button ‘up/down’ y de esta manera se iniciara el conteo up, si se desea cambiar el modo de conteo se deberá presionar el button up/down para cambiar al modo opuesto es decir  al modo down.

Este circuito llegara hasta el valor máximo de ‘999’ una vez llegado a este valor se detendrá el conteo y  esperara que el usuario vuelva a presionar  el button ‘up/down’ lo mismo ocurrirá la llegar al valor ‘000’.

Código en MicroBasic

program CodigoMicro

dim DIG1 as WORD

dim DIG2 as  WORD

dim DIG3 as WORD

dim Cont as Byte

dim Cont2 as Byte

dim numero as Word

dim Sentido as Byte

dim Tiempo as Byte

dim numeroLSB as WORD

dim numeroMSB as WORD

dim Tecla as Byte

dim salto as byte

sub procedure  ButtonA()

if PORTA.0=1 then

while(PORTA.0=1) wend

Tecla=1

if Sentido=0 then

Sentido=1

else

Sentido=0

END IF

end if

end sub

sub function CODIG7SEG(dim num as Word) as BYTE

select case num

case 0  result = $3F

case 1  result = $06

case 2  result = $5B

case 3  result = $4F

case 4  result = $66

case 5  result = $6D

case 6  result = $7D

case 7  result = $07

case 8  result = $7F

case 9  result = $6F

end select       ‘case end

end sub

sub procedure interrupt                   ‘ Interrupt service routine

INTCON = $00                            ’ Set T0IE, clear T0IF

Inc(CONT)

Inc(Cont2)

IF Cont=1 THEN

PORTE.2=0

PORTE.1=0

PORTE.0=1

DELAY_US(5)

PORTD=CODIG7SEG(DIG1)

END IF

IF Cont=2 THEN

PORTE.0=0

PORTE.2=0

PORTE.1=1

DELAY_US(5)

PORTD=CODIG7SEG(DIG2)

END IF

IF Cont=3 THEN

PORTE.0=0

PORTE.1=0

PORTE.2=1

DELAY_US(5)

PORTD=CODIG7SEG(DIG3)

Cont=0

END IF

If Cont2=100 then

Tiempo=1

Cont2=0

End If

‘ Increment value of cnt on every interrupt

TMR0   = 245

INTCON = $A0           ‘ Set T0IE, clear T0IF

end sub

main:

OPTION_REG = $07       ‘ Assign prescaler to TMR0

ANSEL  = 0              ‘ Configure AN pins as digital I/O

ANSELH = 0

TRISB = 0               ‘ PORTB is output

TRISA=$01

TRISC = 0

TRISD = 0

TRISE=0

WPUB=$FF

TMR0  = 245              ‘ Timer0 initial value

INTCON = $A0           ‘ Enable TMRO interrupt

Cont=0

Cont2=0

DIG1=0

DIG2=0

DIG3=0

portA=0

PORTB=0

PORTC=0

PORTD=0

PORTE=0

numero=0

numeroLSB=0

numeroMSB=0

Sentido=0

Tiempo=0

Tecla=0

Salto=0

while(1)                    ‘ While there is no interrupt, program runs in endless loop:

INICIO:

ButtonA()

if Tecla=0  THEN

goto INICIO

END IF

REVISAR:

IF Tecla=1 THEN

IF ((Sentido=0 ) AND (Tecla=1) )then

goto  Decrementa

END IF

IF ((Sentido=1 ) AND (Tecla=1) )then

goto Incrementa

end if

else if salto=0 then

goto incrementa

else goto decrementa

end if

end if

Incrementa:

salto=0

Tecla=0

if Tiempo=1 then

if numero <999 then

Inc(numero)

end if

numeroLSB= lo(numero)

portB=numeroLSB

numeroMSB=Hi(numero)

portC=numeroMSB

DIG1= (numero / 100 )

DIG2= (numero / 10) mod 10

DIG3=  numero  mod 10

Tiempo=0

End If

ButtonA()

GOTO REVISAR

Decrementa:

salto=1

Tecla=0

if Tiempo=1 then

if numero>0 then

Dec(numero)

end if

numeroLSB= lo(numero)

portB=numeroLSB

numeroMSB=Hi(numero)

portC=numeroMSB

DIG1= (numero / 100 )

DIG2= (numero / 10) mod 10

DIG3=  numero  mod 10

Tiempo=0

End If

ButtonA()

GOTO REVISAR

wend

end.

Diseño de PCB

210

310

410

GRUPO I&T

logo4

¿Quiénes somos?

Somos un Grupo de ingenieros que ofrece a sus clientes los siguientes SERVICIOS:



Además somos un grupo que se dedica a la INVESTIGACION:



OBJETIVO

Aportar con nuestros conocimientos a la sociedad brindando soluciones tecnológicamente eficientes acorde a las necesidades de nuestros clientes. Colaborar con el desarrollo de la tecnología mediante una constante capacitación y aportes de nuestras experiencias tanto en nuestro sitio electrónico como en charlas personalizadas a personas que la requieran.


Escríbenos o llámanos gustosos te responderemos

Correo: ideastecnology@gmail.com

Teléfono: 082659680

GUAYAQUIL - ECUADOR