Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

Creando mi propia estación automática.

Iniciado por David Met, Abril 05, 2009, 08:40:12 PM

Tema anterior - Siguiente tema

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

YO

Cita de: David Met en Marzo 06, 2010, 01:45:38 PM
Al sensor LM35 lo alimento con 5 volts. En cuanto el datasheet del ICL7660 aquí puedes verla http://www.alldatasheet.com/datasheet-pdf/pdf/67436/INTERSIL/ICL7660.html

Gracias David Met!
Interesante circuito,  :\ ya lo tengo archivado, voy a ver si lo consigo.
Saludos
Sin saber que era imposible El fue y lo hizo

YO

Cita de: David Met en Marzo 05, 2010, 10:38:34 PM
No, aún no lo probé con temperaturas negativas porque no he tenido tiempo de montarlo, amén de que no compre todavía el CI que me hace una fuente común a fuente simétrica. :-\

Lo he simulado con el MPLAB y anduvo de 10.

Ya està, ya me decidì..... :baba
Si me autorizàs a probar el còdigo para la mediciòn de temp., verè como resuelvo el pasar los datos de los registros TemperaturaAL y TemperaturaBA al display.
Creo que primero configurarè donde poner el dato (tengo un LCD 2x20)
Luego tomarè el valor del registro TemperaturaAL y lo convertirè a ascii para  pasarlo al LCD
Seguirè con el registro Temp.....BA y luego hare un bucle para comenzar la mediciòn nuevamente.
Corregime si estoy equivocado.

Lo que me quedò una duda con respecto a los registros ACCaHI y LO ¿En èsta version de 8 bits los cambiaste a todos por DATO1,2,3y4 o usas todos ?

Si tengo suerte, en èsta semana consigo los componentes que me faltan y ensamblo algo. ;D
  Saludos
Sin saber que era imposible El fue y lo hizo

David Met

Si, puedes usarlo tranquilamente, para eso lo subí.
Te subo el código completo de nuevo. Recuerdo haberle echo una corrección pero lo que no recuerdo es si fue antes o después de subir el programa.

En cuanto a ACCaHI y LO fue reemplazado por DATO1;2;3;4

El bit 7 del registro temperaturaAL marca si la temperatura es positiva o negativa. Si es 1 es negativo, pero si es 0, es positivo.

Parte 1
LIST P=16F877A
INCLUDE <P16F877A.INC>
__CONFIG    _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_OFF &_LVP_OFF &_CPD_OFF & _WRT_OFF
ERRORLEVEL -302
;
;---------------------------------------------------------------
;VARIABLES.
;---------------------------------------------------------------
;
CBLOCK H'20'
dem1
dem2
cursor
curdisp
poeslcd
cuenta_tabla
centena ;millar por que llega hasta 1024
decena ;centena idem anterior
unidad ;decena idem anterior
decimo ;unidad idem anterior
multiplicadorAL
multiplicadorBA ;
resAL ;RESTA 1 AUXILIAR
resBA ;RESTA 2 AUXILIAR
CARRY ;
DATO1 ;   dato 1 (8 bits + significativos)
DATO2 ;30
DATO3 ;
DATO4 ; dato 1 (8 bits - significativos)
FUNC1 ;   dato 2 (8 bits + significativos)
FUNC2 ;
FUNC3 ;
FUNC4 ;   dato 2 (8 bits - significativos)
RES1 ;   resultado (8 bits + significativos)
RES2 ;
RES3 ;
RES4 ;   resultado (8 bits - significativos)
TEMP1 ;
TEMP2 ;
TEMP3 ;
TEMP4 ;
PTEMP1 ;Salva temporalmente la conversión a volt del sensor de presión.
PTEMP2 ;Salva temporalmente la conversión a volt del sensor de presión.
PTEMP3 ;Salva temporalmente la conversión a volt del sensor de presión.
PTEMP4 ;Salva temporalmente la conversión a volt del sensor de presión.
PDel0 ;
PDel1 ;
PDel2 ;
muestras ;
positivoAL ;
positivoBA ;
negativoAL ;
negativoBA ;
temperaturaAL ;Salva la parte alta de la temperatura para ser mostrada en el LCD
temperaturaBA ;Salva la parte baja de la temperatura para ser mostrada en el LCD,
;no olvidar de chequear el B3 de la variable estado para saber si la temperatura en positiva o negativa.
humedad ;Salva la humedad para ser mostrada en el LCD
v_direcciónAL ;Salva la parte alta de la dirección del viento para ser mostrada en el LCD
v_direcciónBA ;Salva la parte baja de la dirección del viento para ser mostrada en el LCD
v_velocidadAL ;Salva la velocidad del viento para ser mostrada en el LCD. Parte Alta
v_velocidadBA ;Salva la velocidad del viento para ser mostrada en el LCD. Parte Baja.
precipitación ;Salva la precipitación para ser mostrada en el LCD
presiónAL ;Salva la parte alta de la presión para ser mostrada en el LCD
presiónBA ;Salva la parte baja de la presión para ser mostrada en el LCD
parámetros ;Indica a quién pertenecen los datos a transmitir viento, temperatura, etc. (se explica en la rutina TX)
dato_enviar
dato_enviar_temp
contador
cont_bit
bandera_viento ;Bandera para determinar cuando contar las RPM en un segundo.
manchester_ALTO ;Variable donde se aloja los 4 bit más significativos del código manchester
manchester_BAJO ;Variable donde se aloja los 4 bit menos significativos del código manchester
ENDC
;
;******************************************
;BLOQUE DE MEMORIA ACCESIBLE DE TODOS LOS BANCOS 70h A 7Fh.
;******************************************
;
CBLOCK H'70'
SALVAR_W ;SALVA EL CONTENIDO DE W EN UN INTERRUPCIÓN
SALVAR_STATUS ;SALVA EL CONTENIDO DE STATUS EN UNA INTERRUPCIÓN
SALVAR_FSR ;SALVA EL CONTENIDO DE FSR EN UNA INTERRUPCIÓN
SALVAR_PCLATH ;SALVA EL CONTENIDO DE PCLATH EN UNA INTERRUPCIÓN
SALVAR_OPTION_REG ;SALVA EL CONTENIDO DE OPTION_REG EN UNA INTERRUPCIÓN
estado ;7F ESTE REGISTRO NOS PERMITE SABER SI HAY DATOS POSITIVOS Y/O NEGATIVOS PARA LA TEMPERATURA.
ENDC
;
;*****************************************************
;ESTADO:
;
;B0: 1: HAY DATOS NEGATIVOS
; 0: NO HAY DATOS NEGATIVOS
;
;B1 1: HAY DATOS POSITIVOS
; 0: NO HAY DATOS POSITIVOS
;
;B2 1: DATOS POSITIVOS
; 0: DATOS NEGATIVOS
;
;B3 1: LOS DATOS A MOSTRAR AL LCD SON POSITIVOS
; 0: LOS DATOS A MOSTRAR AL LCD SON NEGATIVOS
;
;
;
CBLOCK H'110'
positivo_AL ;110h HASTA 168h BANCO 2. PARTE ALTA DEL RESULTADO DEL PROMEDIO
positivo_BA ;PARTE BAJA DEL RESULTADO DEL PROMEDIO
ENDC
;
CBLOCK H'169' ;DIRECCIÓN A APUNTAR PARA LOS POSITIVOS
dir1
prom_pos ;CANTIDAD DE VECES A DIVIDIR PARA HACER EL PROMEDIO POSITIVOS
prom_pos_alt
ENDC
;
CBLOCK H'190'
negativo_AL ;190h HASTA 1E8h BANCO 3. PARTE ALTA DEL RESULTADO DEL PROMEDIO
negativo_BA ;PARTE BAJA DEL RESULTADO DEL PROMEDIO
ENDC
;
CBLOCK H'1E9' ;DIRECCIÓN A APUNTAR PARA LOS NEGATIVOS
dir2
prom_neg ;CANTIDAD DE VECES A DIVIDIR PARA HACER EL PROMEDIO NEGATIVO.
prom_neg_alt
ENDC
;

RESET ORG H'00'
GOTO INICIO
ORG H'04' ;VECTOR INTERRUPCIÓN
;
;************************************************************************************
;
;AUTOR: LEO D. PERSI
;FECHA: 16/12/2008
;
;WEB: www.meteorologiafacil.com.ar
;
;LIBRERÍA: MULTIPLICA UN NÚMERO DE 8 BIT POR UN NÚMERO DE 16 BIT.
;          EL RESULTADO ES UN NÚMERO DE 24BIT
;
;SE NECESITA:
;            LIBRES EN LA RAM PARA:
;
;                                  DATO3 ;RESULTADO MENOS SIGNIFICATIVO
;                                  DATO2              ;RESULTADO
;                                  DATO1              ;RESULTADO MÁS SIGNIFICATIVO
;
;                                  multiplicador        ;NÚMERO QUE MULTIPLICA
;
;                                  resBA ;AUXILIAR
;                                  resAL ;AUXILIAR
;
;PASOS A SEGUIR:
;
;1- CARGAR EL PRIMER NÚMERO EN MRESULT1
;2- CARGAR EL SEGUNDO NÚMERO EN MRESULT2
;3- CARGAR EL NÚMERO MULTIPLICADOR EN MULTIPLICADOR
;4- LLAMAR A LA RUTINA MULTIPLICAR
;5- RETORNA CON EL RESULTADO CARGADO EN MRESUL3, MRESUL2, MRESUL1
;
;NOTA: ESTA RUTINA ES CONMUTATIVA SI SE UTILIZA PARA MULTIPLICAR DOS NÚMEROS DE 8 BIT
;
;DATO = DATO * MULTIPLICADOR
;*************************************************************************************
MULTIPLICAR CLRF DATO2
CLRF DATO1
MOVFW DATO4
MOVWF resBA
MOVFW DATO3
MOVWF resAL
MOVLW .0
XORWF multiplicadorBA,W
BTFSC STATUS,Z ;¿ES CERO?, SI MULTIPLICADORBA ES 0, CHEQUEAMOS LA PARTE ALTA, SI ES CERO TAMBIÉN EL RESULTADO TAMBIÉN LOS ES (X*0=0)
GOTO M23D ;SI
M2A DECFSZ multiplicadorBA,F
GOTO M1A
MOVLW .0
XORWF multiplicadorAL,W
BTFSC STATUS,Z
RETURN
M1A MOVFW resBA ;PASO A W EL VALOR A SUMAR A SI MISMO
ADDWF DATO4,F ;Y LO SUMO A mresul1
BTFSS STATUS,C ;¿ACARREO?
GOTO M22D ;NO,
MOVLW .1 ;SI
ADDWF DATO3,F
BTFSS STATUS,C
GOTO M22D ;NO
MOVLW .1 ;SI
ADDWF DATO2,F ;SUMO 1 A DATO2
BTFSS STATUS,C
GOTO M22D
MOVLW .1
ADDWF DATO1,F
M22D MOVFW resAL
ADDWF DATO3,F
BTFSS STATUS,C ;¿ACARREO?
GOTO M22C ;NO
MOVLW .1 ;SI
ADDWF DATO2,F ;
BTFSS STATUS,C
GOTO M22C
MOVLW .1
ADDWF DATO1,F
M22C MOVLW .0
XORWF multiplicadorBA,W
BTFSS STATUS,Z ;¿ES CERO?
GOTO M2A ;NO, NOS FALTA DECREMENTAR LA PARTE BAJA
MOVLW .0
XORWF multiplicadorAL,W
BTFSC STATUS,Z
RETURN
M2B DECF multiplicadorAL,F
GOTO M2A
M23D MOVLW .0
XORWF multiplicadorAL,W
BTFSS STATUS,Z ;¿ES CERO?
GOTO M2A ;NO, REALIZO LA MULTIPLICACIÓN.
CLRF DATO4 ;SI. BORRO EL RESULTADO PORQUE EL MULTIPLICADOR ES 0.
CLRF DATO3
RETURN ;EL RESULTADO ES CERO.
;
;------------------------------------------
;RUTINA PARA DIVIDIR UN VALOR DE 32 BIT POR UN VALOR DE 32 BITS.
;------------------------------------------
;
;------------------------------------------
;AUTOR: DESCONOCIDO RE-EDITADO POR Leo D. Persi.
;
;FECHA: 25/04/09 ARGENTINA
;
;www.meteorologiafacil.com.ar
;------------------------------------------
;QUE SE NECESITA
;------------------------------------------
;* 9 pociciones en la RAM.
;
;DATO1 ;MÁS SIGNIFICATIVO.
;DATO2
;DATO3
;DATO4 ;MENOS SIGNIFICATIVO.
;
;FUNC3 ;MAS SIGNIFICATIVO
;FUNC4 ;MENOS SIGNIFICATIVO.
;
;TEMP2 ;VARIABLE AUXILIAR
;TEMP3 ;RESTO MÁS SIGNIFICATIVO
;TEMP4 ;RESTO MENOS SIGNIFICATIVO
;------------------------------------------
;MODO DE USO.
;------------------------------------------
;1- CARGAR EL DIVISOR EN FUNC
;2- CARGAR EL DIVIDENDO EN DATO
;3- LLAMAR A DIVISION
;4- EL RESULTADO ESTÁ EN DATO
;
;NOTA: LA DIVISIÓN ES DATO1;2;3;4 / FUNC3;4 = DATO1;2;3;4 resto = TEMP3 Y TEMP4
;
DIVISION
CLRF TEMP3
CLRF TEMP4
MOVLW d'32'
MOVWF TEMP2
Div_1
RLF DATO4,w
RLF DATO3,f
RLF DATO2,f
RLF DATO1,f
RLF TEMP4,f
RLF TEMP3,f
RLF DATO4,f
MOVF FUNC4,w
SUBWF TEMP4,f
MOVF FUNC3,w
BTFSS STATUS,C
INCFSZ FUNC3,w
SUBWF TEMP3,f
BTFSC STATUS,C
BSF DATO4,0
BTFSC DATO4,0
GOTO Div_2
ADDWF TEMP3,f
MOVF FUNC4,w
ADDWF TEMP4,f
Div_2
DECFSZ TEMP2,f
GOTO Div_1
RETURN
;
; Variables a definir en la RAM

;CARRY EQU .32

;DATO1 EQU .33 ; dato 1 (8 bits + significativos)
;DATO2 EQU .34 ;
;DATO3 EQU .35 ;
;DATO4 EQU .36 ; dato 1 (8 bits - significativos)

;FUNC1 EQU .37 ; dato 2 (8 bits + significativos)
;FUNC2 EQU .38 ;
;FUNC3 EQU .39 ;
;FUNC4 EQU .40 ; dato 2 (8 bits - significativos)

;RES1 EQU .41 ; resultado (8 bits + significativos)
;RES2 EQU .42 ;
;RES3 EQU .43 ;
;RES4 EQU .44 ; resultado (8 bits - significativos)

;.............................................................................
;Para saber si el valor es negativo chequear el bit C del registro STATUS
;Si es 0, el valor es negativo, si es 1 el valor es positivo.
;
;NOTA, cuando el valor es negativo, no da el resultado correcto.
;
;la fórmula es DATO - FUNC = RES
;

RESTA2 ;32 - 32
clrf CARRY

comf DATO4,W
addwf FUNC4,W
movwf RES4
btfsc STATUS,C
incfsz FUNC3,F
goto IOP1
incfsz FUNC2,F
goto IOP1
incfsz FUNC1,F
goto IOP1
bsf CARRY,0
IOP1
comf DATO3,W
addwf FUNC3,W
movwf RES3
btfsc STATUS,C
incfsz FUNC2,F
goto IOP2
incfsz FUNC1,F
goto IOP2
bsf CARRY,0
IOP2
comf DATO2,W
addwf FUNC2,W
movwf RES2
btfsc STATUS,C
incfsz FUNC1,F
goto IOP3
bsf CARRY,0
IOP3
comf DATO1,W
addwf FUNC1,W
movwf RES1
btfsc STATUS,C
bsf CARRY,0
;
bcf STATUS,C
btfss CARRY,0
bsf STATUS,C
comf RES4,F
comf RES3,F
comf RES2,F
comf RES1,F
return
;
;******************************************************************************************
;
;Rutina para RESTAR y SUMAR dos número de 16 bit obteniendo como resultado otro númerod e 16 bit
;
;******************************************************************************************
;------------------------------------------------------------------------------------------
;SE NECESITA:
;            4 POCICIONES DE RAM PARA:
;                                     ACCaHI---->DATO1
;                                     ACCaLO---->DATO2
;                                     ACCbHI---->DATO3
;                                     ACCbLO---->DATO4
;
;NOTA: para saber si el resultado es negativo, chequear el bit C del registro STATUS.
;      si es 1, el resultado es POSITIVO, y si es 0, el resultado es NEGATIVO.
;------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------
;Para RESTAR:  (ACCb - ACCa = ACCb)(DATO3,DATO4 - DATO1,DATO2)
;
;1- CARGAR EL MINUENDO EN ACCbLO Y ACCbHI
;2- CARGAR EL SUBTRAENDO EN ACCaLO Y ACCaHI
;3- LLAMAR A LA SUBRUTINA RESTA
;4- EL RESULTADO ESTÁ EN ACCbLO Y ACCbHI
;------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------
;Para SUMAR:
;
;1- CARGAR EL PRIMER NÚMERO EN ACCaLO Y ACCaHI
;2- CARGAR EL SEGUNDO NÚMERO EN ACCbLO Y ACCbHI
;3- LLAMAR A LA SUBRUTINA D_add
;4- EL RESULTADO ESTÁ EN ACCbLO Y ACCbHI
;-------------------------------------------------------------------------------------------
;
RESTA call neg_A1 ; At first negate ACCa; Then add  (DATO3,DATO4 - DATO1,DATO2 = DATO3,DATO4)

D_addF movf DATO2,W
addwf DATO4, F ; add lsb
btfsc STATUS,C ; add in carry
incf DATO3, F
movf DATO1,W
addwf DATO3, F ; add msb
retlw 0

neg_A1 comf DATO2, F ; negate ACCa ( -ACCa -> ACCa )
incf DATO2, F
btfsc STATUS,Z
decf DATO1, F
comf DATO1, F
RETLW 0
;
ADQUISICIÓN BSF ADCON0,GO ;INICIO LA CONVERSIÓN
CAD BTFSC ADCON0,GO ;¿TERMINÓ LA CONVERSIÓN?
GOTO CAD ;NO, VUELVO A CAD
RETURN

;
;********************************************************************************
;RUTINA PARA AJUSTAR DESDE DONDE SE EMPIEZA A GRABAR O LEER LOS DATOS ALMACENADOS.
;no se ajusta el bit de direccionamiento indirecto.
;********************************************************************************
AJUS_MEMO MOVLW H'69' ;dir1
MOVWF FSR
MOVLW H'10' ;dir1 = 10
MOVWF INDF
MOVLW H'E9' ;dir2
MOVWF FSR
MOVLW H'90' ;dir2 = 90
MOVWF INDF
RETURN
;********************************************************************************
;RUTINA PARA BORRAR LAS VARIABLES DONDE SE ALOJARÁN LAS MUESTRAS DEL BANCO 2 INCLUYE EL REGISTRO ESTADO
;********************************************************************************
BORRO_MEMOB2
BCF STATUS,RP0
BSF STATUS,RP1 ;BANCO 2
CLRF prom_pos
BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
CLRF estado ;BORRAMOS EL REGISTRO ESTADO
MOVLW .84
MOVWF muestras ;CARGAMOS CON 42 A MUESTRAS (EN REALIDAD ES 84 POR QUE CADA MUESTRA OCUPA DOS POCICIONES)
BSF STATUS,IRP ;DIRECCIONAMIENTO INDIRECTO BANCO 2,3
MOVLW H'10'
MOVWF FSR ;DIRECCIÓN A APUNTAR
REP_POS CLRF INDF ;BORRO LA POCICIÓN APUNTADA
INCF FSR,F
DECFSZ muestras,F ;¿ES CERO?
GOTO REP_POS ;NO
RETURN ;SI, RETORNAMOS
;********************************************************************************
;RUTINA PARA BORRAR LAS VARIABLES DONDE SE ALOJARÁN LAS MUESTRAS DEL BANCO 2 NO INCLUYE EL REGISTRO ESTADO.
;********************************************************************************
BORRO_MEMOB3
BSF STATUS,RP0
BSF STATUS,RP1 ;BANCO 3
CLRF prom_neg
BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
MOVLW .84
MOVWF muestras ;CARGAMOS CON 42 A MUESTRAS (EN REALIDAD ES 84 POR QUE CADA MUESTRA OCUPA DOS POCICIONES)
BSF STATUS,IRP ;DIRECCIONAMIENTO INDIRECTO BANCO 2,3
MOVLW H'90'
MOVWF FSR
REP_NEG CLRF INDF
INCF FSR,F
DECFSZ muestras,F ;¿ES CERO?
GOTO REP_NEG ;NO
CALL AJUS_MEMO ;SI, AJUSTAMOS DESDE DONDE SE EMPIEZA A GRABAR LOS DATOS.
RETURN
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

Parte 2
;
;************************************************************************************************
;CONFIGURO LOS PUERTOS COMO ENTRADA Y SALIDAS Y ACTIVO LA INTERRUPCIÓN.
;DE RB0/INT, AJUSTO TMR0 PARA CONTAR HASTA 50mS CARGANDO 60 EN TMR0.
;BORRO LAS VARIABLES DE TMR1L Y TMR1H, LA DE PRECIPITACIÓN.
;************************************************************************************************
;
INICIO BCF STATUS,RP0 ;BANCO 0
BCF STATUS,RP1 ;BANCO 0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTC
CLRF PORTE
CLRF precipitación
MOVLW .60
MOVWF TMR0
MOVLW .20
MOVWF bandera_viento ;SE CUENTA HASTA DOS VECES, SI VALE 0, ES NECESARIO QUE EL TMR0 DESBORDE 2 VECES, SI VALE 1, ES NECESARIO QUE EL TMR0 DESVORDE UNA VEZ MÁS.
MOVLW B'11110000'
MOVWF INTCON ;HABILITO INTERRUPCIONES GENERALES, HABILITO INTERRUPCIONES PERIFÉRICAS, HABILITO INTERRUPCIÓN RB0/INT, HABILITO INTERRUPCIÓN TMR0.
BSF T1CON,TMR1CS ;TIMER 1 COMO CONTADOR. LOS PULSOS ENTRAN POR RC0
BSF T1CON,TMR1ON ;HABILITAMOS EL TIMER1
BSF STATUS,RP0 ;BANCO 1
MOVLW B'00000001'
MOVWF TRISB ;RBO/INT ENTRADA, DEMÁS SALIDAS
MOVLW B'11000111' ;RESISTENCIA INSTERNAS DESACTIVADAS, RB0/INT HABILITADO, TMR0 CON FRECUENCIA PIC, PREESCALER AL TMR0 A 1:256
MOVWF OPTION_REG
CLRF TRISC ;PUERTO C SALIDA.
BSF TRISC,0 ;RC0 COMO ENTRADA.
CLRF TRISD ;PUERTO D SALIDA.
CLRF TRISE ;PUERTO E SALIDA.
;************************************************************************************************
;CONFIGURO EL USART: ASINCRONO, 9200 BAUDIOS, 9 BIT DE DATOS, CON PARIDAD (SE HACE UNA SOLA VEZ Y AL PRINCIPIO DEL PROGRAMA.
;************************************************************************************************
BSF STATUS,RP0
BCF STATUS,RP1 ;BANCO 1
BCF TRISC,6 ;SALIDA TX
BSF TXSTA,BRGH ;MODO ALTA VELOCIDAD
BSF TXSTA,TX9 ;HABILITACIÓN NOVENO BIT
MOVLW .25
MOVWF SPBRG
BCF TXSTA,SYNC
BCF STATUS,RP0 ;BANCO 0
BSF RCSTA,SPEN
;************************************************************************************************
;BORRO LAS POSICIONES DE MEMORIAS EN DONDE SE GUARDAN LOS DATOS SENSADOS E INICIALIZO EL LUGAR DE DÓNDE COMENZAMOS A GRABAR.
;************************************************************************************************
TEMPERATURA ;RUTINA PARA SENSAR, PROMEDIAR LAS MUESTRAS Y GUARDALAS EN LA RAM DE LA TEMPERATURA.
CALL BORRO_MEMOB2 ;LLAMO A LA RUTINA PARA BORRAR LAS POCICIONES DE MEMORIA DEL BANCO 2
CALL BORRO_MEMOB3 ;LLAMO A LA RUTINA PARA BORRAR LAS POCICIONES DE MEMORIA DEL BANCO 3 Y DENTRO DE ESTA RUTINA, LLAMA
;A LA RUTINA PARA AJUSTAR LA MEMORIA A UTILIZAR
;
;------------------------------------------------------------------------------------------------
;EMPEZAMOS LA MEDICIÓN DE TODOS LOS PARÁMETROS. PRIMERO LA TEMPERATURA, SEGUNDO LA HUMEDAD, TERCERO EL VIENTO
;CUARTO PRESIÓN. LA PRECIPITACIÓN, SE TOMA POR MEDIO DE LA INTERRUPCIÓN DE RB0.  POR CADA MEDICIÓN, SE TOMA 42 MUESTRAS, SE HACE EL PROMEDIO
;Y SE GUARDA EN UNA POSICIÓN DE LA RAM PARA SU POSTERIOR TRANSMISIÓN. TERMINADO ESTE PROCESO, SE PROCEDE A SENSAR EL SIGUIENTE SENSOR.
;UNA VEZ SENSADO ESTOS PARÁMETROS, PROCEDEMOS A ENVIAR LOS DATOS A LA ESTACIÓN RECEPTORA.
;------------------------------------------------------------------------------------------------
;************************************************************************************************
;MIDO LA TEMPERATURA. TOMO 42 MUESTRAS Y LA GUARDO EN SUS RESPECTIVO LUGAR.
;************************************************************************************************
;
DATO_MUESTRAS
MOVLW .42
MOVWF muestras
;
ADQ_TEMP BSF STATUS,RP0
BCF STATUS,RP1 ;BANCO 1
MOVLW B'00001001'
MOVWF TRISA ;RA0 y RA3 COMO ENTRADA, DEMÁS SALIDAS
MOVLW B'00000001' ;+VREF RA3, ALINEACIÓN A LA IZQUIERDA Y PORTA TODAS ANALÓGICAS.
MOVWF ADCON1 ;Y LO PASO AL ADCON1
BCF STATUS,RP0 ;BANCO 0
MOVLW B'10000001' ;ADC ENC. CANAL AN0. FREC Fosc/32
MOVWF ADCON0 ;Y LO PASO AL ADCON0
BCF PIR1,ADIF ;INDICO QUE LA CONVERSIÓN NO ESTÁ ECHA
NOP ;PARA ESTABILIZAR
CALL ADQUISICIÓN ;COMIENZO LA CONVERSIÓN
;-----------------------------------------------------------
;PASAMOS LA CONVERSIÓN A LA MEMORIA RAM. TRABAJAMOS CON 8 BITS
;-----------------------------------------------------------
MOVFW ADRESH
MOVWF DATO4
MOVWF TEMP2 ;SALVO EN TEMP1 POR SI LA RESTA ES NEGATIVO
;
ADQ_REF BSF STATUS,RP0
BCF STATUS,RP1 ;BANCO 1
MOVLW B'00001010'
MOVWF TRISA
MOVLW B'00000001'
MOVWF ADCON1 ;+VREF RA3, ALINEACIÓN A LA IZQUIERDA Y PORTA TODAS ANALÓGICAS
BCF STATUS,RP0
MOVLW B'10001001'
MOVWF ADCON0 ;ADC ENC. CANAL AN1. FREC Fosc/32
BCF PIR1,ADIF ;INDICO QUE LA CONVERSIÓN NO ESTÁ ECHA
NOP ;PARA ESTABILIZAR
CALL ADQUISICIÓN
;-----------------------------------------------------------
;PASAMOS LA CONVERSIÓN A LA MEMORIA RAM, TRABAJAMOS CON 8 BITS
;-----------------------------------------------------------
MOVFW ADRESH
MOVWF DATO2
MOVWF TEMP4
;-----------------------------------------------------------
;RESTAMOS LOS DOS VALORES PARA QUE ME DE EL VALOR REAL SI EL VALOR ES NEGATIVO, LA TEMPERATURA TEMBIÉN LO ES.
;RESULTADO EN DATO4
;-----------------------------------------------------------
SUBWF DATO4,F ;RESTAMOS DATO4 - DATO2 (AL VALOR DE DATO2 AÚN LO TENEMOS CARGADOS EN W, EL RESULTADO EN DATO4
BTFSS STATUS,C ;¿ES NEGATIVO?
GOTO TEMP_NEGATIVA ;SI, LA TEMPERATURA ES NEGATIVO
BSF estado,1 ;NO. AJUSTAMOS LOS ESTADOS CORRESPONDIENTES. HAY DATOS POSITIVOS A PROMEDIAR
BSF estado,2 ;EL DATO DE AHORA ES POSITIVO.
GOTO DESCOMPONER_NÚMERO
;
TEMP_NEGATIVA
MOVFW TEMP2 ;AL SER NEGATIVO, VUELVO HACER LA RESTA PERO INVIERTIENDO
SUBWF TEMP4,W ;EL MINUENDO POR EL SUBTRAENDO, ASÍ NOS DÁ EL VALOR CORRECTO
MOVWF DATO4 ;ES POR ELLO QUE GUARDAMOS LOS DATOS EN TEMP
;PARA RESTAR INVIRTIENDO LOS VALORES Y YA NO ES NECESARIO CHEQUEAR EL
;BIT C, YA QUE SABEMOS QUE ES NEGATIVO.
;
BSF estado,0 ;HAY DATOS NEGATIVOS A PROMEDIAR
BCF estado,2 ;EL DATO DE AHORA ES NEGATIVO
;DESCOMPONER_NÚMERO

;
;-----------------------------------------------------------------
;UNA VEZ RESTADOS LAS DOS ADIQUICICIONES, MULTIPLICAMOS EL RESULTADO POR 976 ASÍ LO PASAMOS A VOLT.
;SE OBTIENE UN RESULTADO DE 24 BIT. LUEGO, LO DIVIDIMOS POR 100 PARA QUEDARNOS CON LOS VALORES DESEADOS,
;HASTA 4 DÍGITOS QUE NOS CONSUMIRÁ DOS REGISTRO DE 8 BITS.
;
;UNA VEZ ECHO ESTO,TOMAMOS 42 MUESTRAS. Y HACEMOS EL PROMEDIO. PARA ELLO, PRIMERO SUMAMOS
;TODAS LAS TEMPERATURAS, Y LUEGO LO DIVIDIMOS POR 42. ESTO NOS DA EL PROMEDIO.

;CUANDO OBTENEMOS EL PROMEDIO, LO DESCOMPONEMOS EN CENTENA, DECENA, UNIDAD Y DÉCIMO.
;
;NOTA: QUE HACER CUANDO LA TEMPERATURA ES NEGATIVA Y POSITIVA.
;SI LA TEMPERATURA ES POSITIVA, SE ALMACENAN DESDE H'110' HASTA H'168' BANCO 2
;SI LA TEMPERATURA ES NEGATIVA, SE ALMACENAN DESDE H'190' HASTA H'1E8' BANCO 3
;
;LA FORMA DE HACER EL PROMEDIO VARÍA SI TENEMOS POSITIVOS O NEGATIVOS O LOS DOS.
;1er CASO: SOLO POSITIVOS. SUMAMOS LAS 42 MUESTRAS (DOS NÚMEROS DE 8 BITS) Y LUEGO LO DIVIDIMOS POR 42
;          EL RESULTADO ES EL DATO A ENVIAR PARA ELLO LO GUARDAMOS EN temperaturaAL y temperaturaBA.
;    EL BIT 7 DE temperaturaAL LO COLOCAMOS EN 0 PARA INDICAR QUE ES POSITIVO.
;2dO CASO: SOLO NEGATIVOS. LO TRATAMOS COMO SI FUERAN POSITIVOS LO GUARDAMOS EN EL MISMO REGISTRO QUE A LA
;    TEMPERATURA POSITIVA Y COLOCAMOS A 1 EL BIT 7 DE temperaturaAL QUE NOS INDICARÁ TEMPERATURA NEGATIVA.
;3er CASO: POSITIVOS Y NEGATIVOS. PRIMERO SUMAMOS LOS POSITIVOS Y HACEMOS EL PROMEDIO. LO GUARDAMOS EN LA MEMORIA
;          LUEGO SUMAMOS LOS NEGATIVOS Y HACEMOS EL PROMEDIO. LO GUARDAMOS EN LA MEMORIA. PARA OBTENER EL DATO A MOSTRAR
;          RESTAMOS EL PROMEDIO POSITIVO CON EL PROMEDIO NEGATIVO. DE ESTA MANERA TENEMOS 3 OPCIONES
;          1- EL PROMEDIO POSITIVO ES MAYOR QUE EL NEGATIVO, EL DATO OBTENIDO ES POSITIVO. NOS DAMOS CUENTA CHEQUEANDO EL BIT C
;          2- EL PROMEDIO POSITIVO EN MENOR QUE EL NEGATIVO, EL DATO OBTENIDO ES NEGATIVO. NOS DAMOS CUENTA CHEQUEANDO EL BIT C
;          3- EL PROMEDIO POSITIVO ES IGUAL QUE EL NEGATIVO, EL DATO OBTENIDO ES CERO.
;
;MULTIPLICAMOS POR 977.
;...
DESCOMPONER_NÚMERO
MOVFW DATO4 ;EL RESULTADO ANTERIOR QUE ESTÁ EN DATO4, LO PASAMOS A MULTIPLICADOR
MOVWF multiplicadorBA
CLRF multiplicadorAL
MOVLW B'00000011'
MOVWF DATO3
MOVLW B'11010001'
MOVWF DATO4 ;MENOS SIGNIFICATIVO
CALL MULTIPLICAR ;MULTIPLICAMOS Y OBTUVIMOS UN RESULTADO DE 24 BIT EN DATO2, DATO3, DATO4 (MENOS SIGNIFICATIVO)
;...................................
;DIVIDIMOS EN 100 PARA OBTENER EL VALOR A ALMACENAR SOLO EN 4 DÍGITOS, EL RESULTADO OBTENIDO ESTA EN DATO = DATO / FUNC
;...................................
MOVLW .100 ;DIVISOR
MOVWF FUNC4
CLRF FUNC3
CLRF DATO1 ;BORRO DATO1.
CALL DIVISION ;EL RESULTADO DE LA MULTIPLICACIÓN POR 977 LO DIVIDO POR 100, EL RESULTADO EN DATO.
;...................................
;ANALIZAMOS SI LA TEMPERATURA ES NEGATIVA O PISITIVA
;...................................
RES_NEG BTFSS estado,2 ;¿ES POSITIVO?
GOTO DATO_NEG ;ES NAGATIVO
;...................................
;GUARDAMOS LOS DATOS EN EL BANCO CORRESPONDIENTE
;
;PARA POSITIVOS
;...................................
BCF STATUS,RP0 ;ES POSITIVO
BSF STATUS,RP1 ;BANCO 2
MOVFW dir1 ;DIRECCIÓN A APUNTAR
MOVWF FSR ;APUNTAMOS
BCF STATUS,RP1 ;BANCO 0
MOVFW DATO3 ;RECUPERO EL RESULTADO MAS SIGNIFICATIVO
BSF STATUS,RP1 ;BANCO 2
MOVWF INDF ;GUARDAMOS EL DATO EN LA POCICIÓN APUNTADA EN FSR
INCF FSR,F ;INCREMENTAMOS EL FSR PARA GUARDAR EL RESULTADOS MENOS SIGNIFICATIVO
BCF STATUS,RP1 ;BANCO 0
MOVFW DATO4 ;RECUPERO EL RESULTADO MENOS SIGNIFICATIVO
BSF STATUS,RP1 ;BANCO 2
MOVWF INDF ;PASAMOS EL VALOR A LA POCICIÓN APUNTADA EN FSR
INCF prom_pos,F ;INCREMENTO EN 1 A PROM_POS
INCF FSR,F
MOVFW FSR ;PASAMOS EL DATO A W
MOVWF dir1 ;Y LO SALVAMOS PARA SU POSTERIOR USO
BCF STATUS,RP1 ;BANCO 0
GOTO TOTAL_MUESTRAS
;...................................
;PARA NEGATIVOS
;...................................
DATO_NEG BSF STATUS,RP0 ;
BSF STATUS,RP1 ;BANCO 3
MOVFW dir2
MOVWF FSR
BCF STATUS,RP0
BCF STATUS,RP1
MOVFW DATO3
BSF STATUS,RP0
BSF STATUS,RP1
MOVWF INDF
INCF FSR,F
BCF STATUS,RP0
BCF STATUS,RP1
MOVFW DATO4
BSF STATUS,RP0
BSF STATUS,RP1
MOVWF INDF
INCF prom_neg,F
INCF FSR,F
MOVFW FSR
MOVWF dir2
BCF STATUS,RP0
BCF STATUS,RP1
;
TOTAL_MUESTRAS
DECFSZ muestras,F ;¿TOMÉ LAS 42 MUESTRAS?
GOTO ADQ_TEMP ;NO, SIGO MIDIENDO LA TEMPERATUA.
CALL AJUS_MEMO ;SI, DEJO INICIALIZADA LAS DIRECCIONES A APUNTAR PARA PODER PROMEDIAR LAS MUESTRAS.
;..................................
;REALIZAMOS EL PROMEDIO
;..................................
FIN_PROMEDIO
BTFSS estado,1 ;¿HAY VALORES POSITIVOS?
GOTO DATOS_NEGATIVOS ;NO HAY. SOLOS NEGATIVOS.
;..................................
;DATOS POSITIVOS, LOS SUMAMOS Y EL RESULTADO ESTÁ EN DATO3, DATO4
;..................................
BCF STATUS,RP0 ;SI HAY
BSF STATUS,RP1 ;BANCO 2
MOVFW prom_pos ;SALVAMOS LA CANTIDAD DE DATOS POSITIVOS
BCF STATUS,RP1 ;BANCO 0
MOVWF prom_pos_alt ;PARA SABER CUANTAS VECES HAY QUE SUMARLAS, PARA LUEGO DIVIDIRLAS.
BSF STATUS,RP1 ;BANCO 2
MOVFW dir1
MOVWF FSR ;DIRECCIÓN A LEER
MOVFW INDF ;EL VALOR EN FSR SE GUARDA EN W
BCF STATUS,RP1 ;BANCO 0
MOVWF DATO3
BSF STATUS,RP1 ;BANCO 2
INCF FSR,F ;DIRECCIÓN A APUNTAR SEGUNDO DATO
MOVFW INDF
BCF STATUS,RP1 ;BANCO 0
MOVWF DATO4
BSF STATUS,RP1 ;BANCO 2
INCF FSR,F
MOVFW FSR
MOVWF dir1
;
SUMAR_PROMEDIO
BSF STATUS,RP1 ;BANCO 2
MOVFW dir1
MOVWF FSR
MOVFW INDF
BCF STATUS,RP1 ;BANCO 0
MOVWF DATO1
BSF STATUS,RP1 ;BANCO 2
INCF FSR,F
MOVFW INDF
BCF STATUS,RP1 ;BANCO 0
MOVWF DATO2
BSF STATUS,RP1 ;BANCO 2
INCF FSR,F
MOVFW FSR
MOVWF dir1
BCF STATUS,RP1 ;BANCO 0
CALL D_addF
DECFSZ prom_pos_alt,F
GOTO SUMAR_PROMEDIO
;...............................................
;OBTUVIMOS LA SUMA EN DATO3, DATO4, AHORA HACEMOS EL PROMEDIO DIVIDIENDO POR LA CANTIDAD DE MUESTRAS OBTENIDAS EL RESULTADO EN DATO
;...............................................
CLRF FUNC3
BSF STATUS,RP1 ;BANCO 2
MOVFW prom_pos
BCF STATUS,RP1 ;BANCO 0
MOVWF FUNC4
CALL DIVISION
MOVFW DATO4
MOVWF positivoBA ;GUARDAMOS LOS DATOS ACÁ POR SI TENEMOS QUE PROMEDIAR CON VALORES NEGATIVOS
MOVFW DATO3
MOVWF positivoAL ;IDEM ANTERIOR.
;...............................................
;CHEQUEAMOS SI HAY NEGATIVOS.
;...............................................
PROM_NEG BTFSC estado,0 ;¿HAY DATOS NEGATIVOS?
GOTO DATOS_NEGATIVOS ;SI HAY

ANT_DESCOMPONER ;NO HAY
MOVFW DATO4
MOVWF temperaturaBA
MOVFW DATO3
MOVWF temperaturaAL
BCF temperaturaAL,7 ;INDICA QUE LA TEMPERATURA ES POSITIVA.
GOTO HUMEDAD
;
DATOS_NEGATIVOS
BSF STATUS,RP0
BSF STATUS,RP1 ;BANCO 3
MOVFW prom_neg
BCF STATUS,RP0 ;BANCO 0
BCF STATUS,RP1
MOVWF prom_neg_alt
BSF STATUS,RP0
BSF STATUS,RP1 ;BANCO 3
MOVFW dir2
MOVWF FSR
MOVFW INDF
BCF STATUS,RP0
BCF STATUS,RP1
MOVWF DATO3
BSF STATUS,RP0
BSF STATUS,RP1
INCF FSR,F
MOVFW INDF
BCF STATUS,RP0
BCF STATUS,RP1
MOVWF DATO4
BSF STATUS,RP0
BSF STATUS,RP1
INCF FSR,F
MOVFW FSR
MOVWF dir2
;
SUMAR_PROMEDIO_NEG
BSF STATUS,RP1 ;BANCO 3
BSF STATUS,RP0
MOVFW dir2
MOVWF FSR
MOVFW INDF
BCF STATUS,RP1 ;BANCO 0
BCF STATUS,RP0
MOVWF DATO1
BSF STATUS,RP1 ;BANCO 3
BSF STATUS,RP0
INCF FSR,F
MOVFW INDF
BCF STATUS,RP1 ;BANCO 0
BCF STATUS,RP0
MOVWF DATO2
BSF STATUS,RP1 ;BANCO 3
BSF STATUS,RP0
INCF FSR,F
MOVFW FSR
MOVWF dir2
BCF STATUS,RP1 ;BANCO 0
BCF STATUS,RP0
CALL D_addF
DECFSZ prom_neg_alt,F
GOTO SUMAR_PROMEDIO_NEG
;...............................................
;OBTUVIMOS LA SUMA EN DATO3, DATO4, AHORA HACEMOS EL PROMEDIO DIVIDIENDO POR LA CANTIDAD DE MUESTRAS OBTENIDAS EL RESULTADO EN DATO
;...............................................
CLRF FUNC3
BSF STATUS,RP1
BSF STATUS,RP0 ;BANCO 3
MOVFW prom_neg
BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
MOVWF FUNC4
CALL DIVISION
MOVFW DATO4 ;GUARDAMOS ACÁ POR SI TENEMOS QUE PROMEDIAR CON LO VALORES POSITIVOS.
MOVWF negativoBA
MOVFW DATO3
MOVWF negativoAL ;IDEM ANTERIOR.
;...............................................
;EL ÚLTIMO PASO ES CHEQUEAR QUE SI HAY POSITIVOS Y NEGATIVOS A RESTAR. EN ESTA PARTE NO SABEMOS SI HAY DE LOS DOS O UNO SOLO.
;...............................................
PROM_NEG_A BTFSC estado,1 ;¿HAY POSITIVOS?
GOTO RESTAR_AMBOS ;SI, HAY QUE RESTAR POSITIVOS - NEGATIVOS.
MOVFW DATO4 ;NO, GUARDAMOS LOS DATOS EN LA RAM PARA SER ENVIADO A LA ESTACIÓN RECEPTORA
MOVWF temperaturaBA
MOVFW DATO3
MOVWF temperaturaAL
BSF temperaturaAL,7 ;INDICA QUE LA TEMPERATURA ES NEGATIVA.
GOTO HUMEDAD ;SENSAMOS LA HUMEDAD.
;------------------------------------------------------------------
;RESTAMOS LOS POSITIVOS CON NEGATIVOS. EL RESULTADO QUEDA EN DATO3, DATO4 Y HAY QUE PASARLO
;SEGÚN EL VALOR, SI ES POSITIVO O NEGATIVO (positivo O negativo). Y LUEGO MOSTRARLO AL LCD.
;------------------------------------------------------------------
RESTAR_AMBOS
MOVFW positivoBA
MOVWF DATO4
MOVFW positivoAL
MOVWF DATO3
MOVFW negativoBA
MOVWF DATO2
MOVFW negativoAL
MOVWF DATO1
CALL RESTA
BTFSS STATUS,C ;¿ES NEGATIVO?
GOTO PROMEDIO_NEGATIVO
MOVFW DATO4
MOVWF temperaturaBA
MOVFW DATO3
MOVWF temperaturaAL
BCF temperaturaAL,7 ;INDICA QUE LA TEMPERATURA ES POSITIVA
GOTO HUMEDAD
;
PROMEDIO_NEGATIVO ;INVIERTO LOS DATOS PORQUE EL RESULTADO ES NEGATIVO
MOVFW positivoBA ;POR ENDE, VOLVEMOS HACER LA RESTA PARA QUE NOS DEA
MOVWF DATO2 ;EL RESULTADO CORRECTO.
MOVFW positivoAL
MOVWF DATO1
MOVFW negativoBA
MOVWF DATO4
MOVFW negativoAL
MOVWF DATO3
CALL RESTA
MOVFW DATO4
MOVWF temperaturaBA
MOVFW DATO3
MOVWF temperaturaAL
BSF temperaturaAL,7 ;INDICA QUE LA TEMPERATURA ES NEGATIVA.
;VAMOS A SENSAR HUMEDAD


Si hay algo que no entiendes, puedes preguntarme lo que necesites.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Gracias  :\
Veo que reacomodaste todo de nuevo, cada véz te queda más pulido.
Lo voy a estudiar bien y despues te comento  ok! ok!
Sin saber que era imposible El fue y lo hizo

David Met

Cuando copie y pegue el código, saque partes del software dedicados a otra cosa. Yo revisé bien antes de enviar el mensaje pero puede que halla sacado parte del código que utiliza el censado de la temperatura.

Si falta algo, avisame.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Cita de: David Met en Marzo 08, 2010, 10:50:54 AM
Cuando copie y pegue el código, saque partes del software dedicados a otra cosa. Yo revisé bien antes de enviar el mensaje pero puede que halla sacado parte del código que utiliza el censado de la temperatura.

Si falta algo, avisame.

Asimple vista creo que no falta nada.
Le voy a poner la rutina BCD , la tabla y la rutina de control del display

Lo que no consegui fue el LM35 AH (encapsulado metalico)  :me callo:
Lo comercializaba Elko pero se le terminaron, y por ahora no lo piensan reponer
Espero conseguirlo pronto, seguire buscando.

Saludos

Sin saber que era imposible El fue y lo hizo

Ricber

Hola, puedo sugerirles que vean este sensor de temperatura es el TC1047, lo venden aca http://www.mcelectronics.com.ar/componentes/ se puede medir de -40º a +125º y trabaja con fuente simple.
Saludos.

YO

Cita de: Ricber en Marzo 08, 2010, 06:40:21 PM
Hola, puedo sugerirles que vean este sensor de temperatura es el TC1047, lo venden aca http://www.mcelectronics.com.ar/componentes/ se puede medir de -40º a +125º y trabaja con fuente simple.
Saludos.
Saludos Ricber!
Veo que llegaste de las vacaciones, espero las hayas pasado muy bien :\

Este sensor es el que definitivamente se deberìa usar, està hecho para los pic jajajajaja jajajajaja
Tension de alimentacion perfecta ok!
Acoplamiento de impedancia directa al A/D  ok!
Rango de temperatura apropiada  ok!
Tamaño muy reducido  ok!
Costo increible  ok!
Lugar de venta muy cerca  ok!

Mañana llamo para ver si el precio es por unidad o por tonelada jajajajaja
Creo que habrà que reformularse todo el còdigo y lo que se simplificarà no tiene nombre.
Mil gracias por este dato ok! ok! ok! ok! ok! ok! ok! ok! ok! ok! ok!

    Saludos!!
Sin saber que era imposible El fue y lo hizo

YO

Hola a todos!
Bueno, ya averigué y el precio era por unidad nomas :\

El único problema es que se les acabaron...... Ayuda: Ayuda:

Y bue.... esperaremos
Sin saber que era imposible El fue y lo hizo

David Met

Y bue, no todo es posible.
Debo confesar que desconocía ese sensor, por lo que estará en mi estación V2.0 ok!
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola, si, volvi de las vacaciones aunque el tiempo no fue bueno igual me sirvieron,
que lastima que no hay mas sensores, creo que te lo pueden importar aunque sea uno.
Preguntaste en electronica Elemon, lo tienen en el catalogo.

YO

Me dijeron que para la semana entrante habia posibilidad que repongan stock
Voy a preguntar en Elemont aunque sea para comparar precios y después les cuento ;D
Sin saber que era imposible El fue y lo hizo

YO

Listo ya averigue
Elemon lo tiene y a menos de un dolar :\ :\
Sin saber que era imposible El fue y lo hizo

David Met

Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.