template joomla gratuit

                    

USO DE UN SRF05 Y LCD

OBJETIVOS

  • Aprender hacer uso de un SRF05.
  • Uso de interrupciones externas y contador con el TMR0 

DESCRIPCION:

El presente proyecto hace uso de un SRF05 y el LCD.

  • Como primer paso se habilita el SRF05  a través del pin Trigger conectado al PORTE.1 del  PIC , luego se hace una lectura por el pin  Echo  conectado PORTB.0  del PIC
  • Se mostrara en el LCD la distancia en cm que hay entre el objeto y el sensor.

DESARROLLO:

Para realizar la práctica planteado es necesario ubicar algunos JUMPER de tal manera que permita el uso de los componentes necesarios para esta práctica.

1.El módulo Desarrollo PIC16F887 puede utilizar una de dos fuentes de alimentación.

  • Fuente de alimentación USB desde PC a través del cable USB
  • Fuente de alimentación EXT desde un Jack DC. 

1

2.En el módulo de desarrollo se dispone de un conector para colocar un LCD 2x16, a la vez posee un potenciómetro que se utiliza para ajustar el contraste.

2

3.Para hacer uso del pin RB0 el JUMPER que esta alado de los botones debe estar en la posición DS (Disable=deshabilitado) para ambos botones como se muestra en la figura. El motivo es que estamos haciendo uso del pin RB0 del microcontrolador y al estar conectado a los botones es susceptible a errores.

3

Adaptador de IDC a conexión tipo servo I&T: nos ayuda a tener disponibles más conexiones para servos. 

3.3..

Sensor ultrasónico SRF05: Genera una onda de sonido  y recibe una respuesta del mismo sonido que envío.

3.....3..

  1. Circuito Implementado

 4.....-

PROGRAMACION:


'*******************************************************************************

'*******************                        Ideas & Tecnología                 **************************

'*******************          Módulo Desarrollo PIC16F887 I&T   **************************

'*******************              www.ideastechnology.com           **************************

'

' * Nombre proyecto:

'     SRF05_LCD

' * Descripción:

'     Uso del módulo de distancia ultrasónico SRF05

'     PORTe.1 disparo el tiempo  de alto 10us

'     PORTB.0 tomara el eco de la recepción

' * Configuraciones:

'     Microcontrolador:    PIC16F887

'     Oscillator:                   INT_RC_OSC_NOCLKOUT, 8MHz

'     Compilador:               MikroBasic 3.2v

'*******************************************************************************

'*****         Nombre proyecto       *****

program SRF05_LCD

' Asignamos los pins del pic a usar al lcd

dim LCD_RS as sbit at RB2_bit ' PORTB.1 asignado al PIN RS de la LCD

    LCD_EN as sbit at RB3_bit ' PORTB.3 asignado al PIN EN de la LCD

    LCD_D4 as sbit at RB4_bit ' PORTB.4 asignado al PIN D4 de la LCD

    LCD_D5 as sbit at RB5_bit ' PORTB.5 asignado al PIN D5 de la LCD

    LCD_D6 as sbit at RB6_bit ' PORTB.6 asignado al PIN D6 de la LCD

    LCD_D7 as sbit at RB7_bit ' PORTB.7 asignado al PIN D7 de la LCD

    LCD_RS_Direction as sbit at TRISB2_bit

    LCD_EN_Direction as sbit at TRISB3_bit

    LCD_D4_Direction as sbit at TRISB4_bit

    LCD_D5_Direction as sbit at TRISB5_bit

    LCD_D6_Direction as sbit at TRISB6_bit

    LCD_D7_Direction as sbit at TRISB7_bit

' declaracion de variables

dim text as string[5]

dim flanco, pulso as byte

dim distancia as word

sub procedure interrupt

     if TestBit(INTCON,INTF) then ' bandera de la interrupción externa activada

          ClearBit(INTCON,INTF) ' bandera de la interrupción externa borrada

          if flanco = 0 then ' cuando el flanco va de vajo a alto

               ClearBit(OPTION_REG,INTEDG) ' interrupción cuando paso al rizado bajo

               flanco = 1 ' cambiamos el flanco bajo

               TMR0 = 0 ' enceramos el timer

          else ' cuando el flanco va de alto bajo

               pulso = TMR0 ' tomamos el valor del timer

               SetBit(OPTION_REG,INTEDG) ' interrupción cuando paso al rizado alto

               flanco = 0 ' cambiamos de flanco alto

          end if

     end if

     ClearBit(INTCON,T0IF)

end sub

' Funcion que me permite medir la distancia del sensor ultrasónico

sub function srf05_leer() as word

     dim tiempo as word

     PORTE.1 = 1 ' habilitamos el disparo

     delay_us(50) ' con un tiempo de 50us

     PORTE.1 = 0 ' apagamos el disparo

     delay_ms(20) ' hay un tiempo de espera del eco

     tiempo =( pulso*128)/58 ' convertimos de pulgadas a centímetros

     result = tiempo ' resultado de la distancia

end sub

main:

' Registro Oscilador de control

     OSCCON = 0X75 ' Oscilador interno de 8mhz

' Registro de Opciones

' Registro de Opciones

     OPTION_REG = 0XC7 ' desactiva el pull up de portb

                       ' activa el rizado alto

                       ' prescalador tmr0 255

' Registro control de interrupciones

     INTCON = 0XD0 ' Activado interrupciones globales

                   ' Activado interrupciones periféricas

                   ' Activado interrupción externa portb.0

' Registro PUERTO A

     TRISA = 0X00 ' todas los pines como salidas

     PORTA = 0X00

' Registro PUERTO B

     TRISB = 0X01 ' portb.0 como entrada digital, las demás salidas

     PORTB = 0X00

' Registro PUERTO B

     TRISC = 0X00 ' todas los pines como salidas

     PORTC = 0X00

' Registro PUERTO E

     TRISE = 0X00 ' todas los pines como salidas

     PORTE = 0X00

' Selección de registro analógico. 1 analógico, 0 digitales

     ANSEL = 0X00 ' AN<7:0>

     ANSELH = 0X00 ' AN<13:8>

     delay_ms(250)

     Lcd_Init() ' inicializamos la lcd

     Lcd_Cmd(_LCD_CLEAR) ' borramos la pantalla

     Lcd_Cmd(_LCD_CURSOR_OFF)

     Lcd_Out(1,1,"ideastechnology") ' escribimos el texto en la primera linea

     Lcd_Out(2,1,"dist.  0000 cm ") ' escribimos el texto en la segunda linea

     flanco = 0 ' primer flanco bajo

     while true

           distancia = srf05_leer() ' leemos el valor del sensor y lo depositamos en distancia

           WordToStr(distancia,text)

           Lcd_Chr(2,11,text[4])

           Lcd_Chr(2,10,text[3])

           Lcd_Chr(2,9,text[2])

           Lcd_Chr(2,8,text[1])

           Lcd_Chr(2,7,text[0])

           delay_ms(100)

     wend

end.

'*******************************************************************************

'*******************                      Ideas & Tecnología                   **************************

'*******************          Módulo Desarrollo PIC16F887 I&T    **************************

'*******************              www.ideastechnology.com            **************************

'*******************************************************************************



IDETEC.CIA.LTDA