TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: aripod en 30 de Septiembre de 2008, 12:55:53
-
Estoy haciendoo una conversion A/D. Es deci, ya esta hecho eso y logro hacer la conversion. Ahora esta el problema en la manipulacion de esta, que se dividiria en dos. La primera es hacer esto:
(5/1024) x [ADRESH ADRESL] x 100 = Temp[°c]. Lo multiplico por 100 para que, por ejemplo, si a la entrada del pic tengo 2,36v, en el codigo tenga 236 para el paso que sigue:
A esos 236 los muestro en 3 displays, entonces lo divido en centenas, decenas y unidades, que representarian los 23,6°c.
Las dudas son si esta bien pensado, o hay alguna forma mas eficiente para el pic y como hago para hacer la division de 5*100 /1024 ya que ese es un numero menor a cero.
No me convendria usar 8 bits en vez de 10 para la conversion? Es decir, que el numero mas alto sea 128? Si tengo 5v de ref, que son 1024, el 128 serian 0,625. Como el sensor de temp es de 0 a 50°c, tendria que tener °Cmax equivalente a los 0,625v..............
Gracias por la ayuda!
-
No se entiende bien, para que realizas esa cuenta? Cual es la relacion de tu sensor Temp/Volt ?
-
Puedo recomendar lo siguiente:
- Medidor de temperatura LM35 que entrega 10mV/°C
- ADC a 10bits (0 a 1023)
- Vref positiva a 4.096V
- Vref negativa 0V
Si entran 0.25V al ADC tendrás 62bits como resultado de la conversión (0.25 x 1024 / 4.096). Multiplica por 4 los bits resultantes y obtendrás 248bits, los cuales se pueden ver como 24.8°C.
Deberás cambiar los valores que te di aquí para tu sensor en específico.
-
Hola, me contas como haces para separarlo en unidades decenas y centenas? porque es en lo que estoy trabado para poder mandarlo al LCD
gracias
-
Aripod, yo en su momento tuve que hacer algo parecido, busque y no me quedo otra que hacer la multiplicacion y division. Y ya que tenes que hacerla usa los 10 bits para la conversion, no lo dudes.- Si necesitas las runinas de multiplicacion y division avisa...
Y para pity esta es una rutina para separar en Unidades, Decenas, Centenas, Unidad de mil, Decena de Mil.-
; convierte el binario de 16 bits (NumA + NumB) en DecM, UniM, Cen, Dec y Uni.-
swapf NumA,w
andlw 0x0F
addlw 0xF0
movwf UniM
addwf UniM,f
addlw 0xE2
movwf Cen
addlw 0x32
movwf Uni
movf NumA,w
andlw 0x0F
addwf Cen,f
addwf Cen,f
addwf Uni,f
addlw 0xE9
movwf Dec
addwf Dec,f
addwf Dec,f
swapf NumB,w
andlw 0x0F
addwf Dec,f
addwf Uni,f
rlf Dec,f
rlf Uni,f
comf Uni,f
rlf Uni,f
movf NumB,w
andlw 0x0F
addwf Uni,f
rlf UniM,f
movlw 0x07
movwf DecM
movlw 0x0A
Lb1 addwf Uni,f
decf Dec,f
btfss 3,0 ; STATUS,C
goto Lb1
Lb2 addwf Dec,f
decf Cen,f
btfss 3,0
goto Lb2
Lb3 addwf Cen,f
decf UniM,f
btfss 3,0
goto Lb3
Espero que te sirva! :-)