Autor Tema: Tomar medidas con LM35  (Leído 3613 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Tomar medidas con LM35
« en: 18 de Agosto de 2016, 14:24:34 »
Hola a todos.
Tengo que hacer un trabajo para tomar seis puntos de medidas de temperatura y mostraslas en una pantalla de LCD de 20X4.

Tengo realizado un programa que funciona muy bien con un  LM35 conectado al RA0 del pic16f88 y funciona perfectamente, en cambio si le digo al programa que en lugar de tener conectado el LM35 al pin RA0 lo pongo en cualquier otro pin del puerto A el programa ignora esta orden y continua esperando que lo conecte al RA0.
Si este pic tiene cinco ADC porque no puedo utilizar el resto de conversores en lugar de solo uno.

No lo entiendo.

Aparte de esto tambien queria preguntar como se pueden utilizar los conversores de RB6 y RB7.
Desarrollador de vending.

Saludos desde Murcia (España).

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Tomar medidas con LM35
« Respuesta #1 en: 18 de Agosto de 2016, 14:45:26 »
Parece que estás usando un pic16f88: Ese micro no tiene 5 conversores AD. Solo tiene 1 compartido con 7 entradas analógicas.

Normalmente tienes que configurar en tu programa la entrada analógica que será conectada internamente al AD. Tal vez al cambiar de pin te olvidaste de este paso.

Con el registro ANSEL le indicas al micro cual de todas las entradas posibles serán analógicas.

Con los bits CHS(registro ADCON0) seleccionas cual de estas entradas conectarás internamente al AD. Notar que solo puedes conectar una sola a la vez(pues hay un solo AD).

Por defecto está configurado para que lea AN0.... Tal vez por esto te funciona cuando conectas a ese pin, y luego, al cambiar de pin sin configurar el registro, no anda.

Saludos.
Luis

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Re:Tomar medidas con LM35
« Respuesta #2 en: 18 de Agosto de 2016, 15:27:33 »
Entoces como puedo tomar varias medidas al mismo tiempo, tengo que poner otro tipo de pic , se puede intercalar algun circuito integrado que pueda pasar varias medidas al pic?
 
Desarrollador de vending.

Saludos desde Murcia (España).

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Tomar medidas con LM35
« Respuesta #3 en: 18 de Agosto de 2016, 15:34:24 »
al mismo tiempo no. uno detras de otro si.

El unico que conosco que puede samplear varios canales a la misma ves es el dsPIC (Aunque luego la conversion sea una por una), no se si un PIC24 tambien posee el mismo ADC, de todas formas tendrias que averiguarte si te sirve para eso.

Pero para lo que intentas hacer vos no tiene sentido.
La temperatura es algo que varia MUY lento comparado a lo que va el PIC, entonces para leer las entradas ,simplemente lees una por una con el ADC, no es necesario todo al mismo tiempo.
Para realizar esto, tenes que configurar el ADC para que lea en las otras entradas ANx, seleccionas la entrada, esperas un poco, y luego lees con el ADC, luego seleccionas la otra y repetis.

Mas informacion en el datasheet del micro.

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Re:Tomar medidas con LM35
« Respuesta #4 en: 18 de Agosto de 2016, 16:22:47 »
OK.  Y muchas gracias por todo.
  :-/
 Saludos
Desarrollador de vending.

Saludos desde Murcia (España).

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Re:Tomar medidas con LM35
« Respuesta #5 en: 18 de Agosto de 2016, 17:59:51 »
KILLERJC. Entiendo lo que me explicas y me parece muy acertado, pero como configuro los ADC para que lea las otras entradas?

El codigo que tengo es este.

Define Osc 4
cmcon = 7 pic16f88)
ANSEL = %011111
'CONEXIONES DEL LCD
'PATILLA 11 DEL LCD AL RB4 DEL PIC
'PATILLA 12 DEL LCD AL RB5 DEL PIC
'PATILLA 13 DEL LCD AL RB6 DEL PIC
'PATILLA 14 DEL LCD AL RB7 DEL PIC
'PATILLA 6 DEL LCD AL RB3 DEL PIC
'PATILLA 4 DEL LCD AL RB2 DEL PIC
DEFINE LCD_DREG PORTB ' Indica que el Bus de datos estará conectado en el Puerto B.
DEFINE LCD_BITS 4 ' El bus de datos de la LCD será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el bus de datos de la
LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin “RS” estará en el Puerto B
DEFINE LCD_RSBIT 2 ' “RS” estará conectado en RB2
DEFINE LCD_EREG PORTB ' Indica al uC que el pin “E” estará en el Puerto B
DEFINE LCD_EBIT 3 ' “E” estará conectado en RB3
Define LCD_INITMS = 50 'Tiempo de espera después de inicializar el Display, solo se ejecuta una
vez en mSeg.
TRISA = %11111 ' Configuración del Puerto A (0=salida; 1=entrada)'Puerto A como salidas
TRISB = %00000000 ' Configuración del Puerto B (0=salida; 1=entrada)'Puerto B como salidas
PORTA = 0 ' Inicializa el puerto "A", es decir, se ponen todos los pines en cero.
PORTB = 0 ' Inicializa el puerto "B", es decir, se ponen todos los pines en cero.
'Variables del ADC y Rutina división------------------------------
dat VAR Word 'valor del adc y retorna la parte entera
total var word
inicio:
PAUSE 600 'espera 0,6 Seg
LCDOut $fe, 1 ' Limpia la pantalla
LCDOut $fe,129,"16f88_LCD_ADC" 'escribe en el lcd
LCDOut $fe,192, "Pruebas con ADC" 'escribe en el lcd
PAUSE 2000 'espera 2Seg
LCDOut $fe, 1 ' Limpia la pantalla
lee_adc:
LCDOut $fe,129,"Temp="
lee:
Adcin PORTA.1, dat 'lee el valor de la entrada analógica y lo guarda en dat
total= dat*2 'multiplica el valor del dato dat X 2
LCDOut $fe,134," "'borra
LCDOut $fe,134,#total
pause 50
goto lee
Desarrollador de vending.

Saludos desde Murcia (España).

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Tomar medidas con LM35
« Respuesta #6 en: 18 de Agosto de 2016, 18:33:22 »
Yo no uso BASIC, pero en C y en ASM lo hago como dice luismh

Citar
Con los bits CHS(registro ADCON0) seleccionas cual de estas entradas conectarás internamente al AD. Notar que solo puedes conectar una sola a la vez(pues hay un solo AD).


Desconectado Stban

  • PIC12
  • **
  • Mensajes: 78
Re:Tomar medidas con LM35
« Respuesta #7 en: 18 de Agosto de 2016, 23:29:31 »
Hola nuevamente de metiche, jeje; me imagino que el código está hecho en Basic Stamp pero en PicBasic PRO es mas o menos así:
Código: [Seleccionar]
'****************************************************************
'*  Name    : ADC_6CAN_16F88.BAS                                *
'*  Author  : [EJM]                                             *
'*  Notice  : Copyright (c) 2016 [EJM]                          *
'*          : All Rights Reserved                               *
'*  Date    : 18/08/2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define Osc 4
cmcon = 7

DEFINE LCD_DREG PORTB ' Indica que el Bus de datos estará conectado en el Puerto B.
DEFINE LCD_DBIT 0 ' Selección del Bit de inicio del puerto en el uC para el bus de datos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin “RS” estará en el Puerto B
DEFINE LCD_RSBIT 4 ' “RS” estará conectado en RB2
DEFINE LCD_EREG PORTB ' Indica al uC que el pin “E” estará en el Puerto B
DEFINE LCD_EBIT 5 ' “E” estará conectado en RB3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

DEFINE ADC_BITS 10 ' A/D number of bits
DEFINE ADC_CLOCK 3 ' Use A/D internal RC clock
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in us
ANSEL = %111111    'Configuración de los puertos AN0, AN1, AN2, AN3, AN4, AN5
ADCON0 = %11000001 'Activar modulo ADC y bits de selección de reloj de conversión
ADCON1 = %10000000 'Justificación a la derecha para 10 bits de resolución

TRISA = %11111 ' Configuración del Puerto A (0=salida; 1=entrada)'Puerto A como entrada
TRISB = %01000000 ' Configuración del Puerto B (0=salida; 1=entrada)puerto RB5 como entrada para AN5
PORTA = 0 ' Inicializa el puerto "A", es decir, se ponen todos los pines en cero.
PORTB = 0 ' Inicializa el puerto "B", es decir, se ponen todos los pines en cero.

'Variables del ADC y Rutina división------------------------------
dat0 VAR Word 'valor del adc y retorna la parte entera
dat1 VAR Word
dat2 VAR Word
dat3 VAR Word
dat4 VAR Word
dat5 VAR Word

inicio:
PAUSE 600 'espera 0,6 Seg
LCDOut $fe, 1 ' Limpia la pantalla
LCDOut $fe,129,"16f88_LCD_ADC" 'escribe en el lcd
LCDOut $fe,192, "Pruebas con ADC" 'escribe en el lcd
PAUSE 2000 'espera 2Seg
LCDOut $fe, 1 ' Limpia la pantalla

lee:
'lee el valor de la entrada analógica
Adcin 0, dat0 : Adcin 1, dat1 : Adcin 2, dat2
Adcin 3, dat3 : Adcin 4, dat4 : Adcin 5, dat5
dat0 = dat0*2 : dat1 = dat1*2 : dat2 = dat2*2
Dat3 = dat3*2 : dat4 = dat4*2 : dat5 = dat5*2
LCDOut $FE, $80, dec4 dat0
LCDOUT $FE, $85, dec4 dat1
LCDOUT $FE, $8A, dec4 dat2
LCDOut $FE, $C0, dec4 dat3
LCDOUT $FE, $C5, dec4 dat4
LCDOUT $FE, $CA, dec4 dat5
pause 50
goto lee

END

Solo hay que adaptarlo a Basic Stamp y ya, tambien adjunto los archivos y la simulació en proteus

Saludos desde México

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Re:Tomar medidas con LM35
« Respuesta #8 en: 19 de Agosto de 2016, 13:38:37 »
Saludos para Stban.
Acabas de inyectarme adrenalina en mis circuitos analogicos.

Esto si que no me lo esperaba, estoy deseando probarlo y luego te cuento.

GRACIAS Stban
Desarrollador de vending.

Saludos desde Murcia (España).

Desconectado perla

  • PIC16
  • ***
  • Mensajes: 107
Re:Tomar medidas con LM35
« Respuesta #9 en: 19 de Agosto de 2016, 15:08:28 »
Hola Stban.

Acabo de probrar el codigo me me pasastes y cambie el puerto del LCD,  RS y E, y funciono a la primera.

Esto lo llamo hecho a medida.

No tengo palabras de agradecimiento por todo.

Tambien vi como cambiar la configuracion del puerto B
 DEFINE LCD_DBIT 0 ' Selección del Bit de inicio del puerto en el uC para el bus de datos
 de la LCD

esto tampoco lo sabia, pensaba que tenia que empezar por fuerza en el RB4.

Un saludo y gracias de nuevo.
 
Desarrollador de vending.

Saludos desde Murcia (España).