Como indica el título, estoy desarrollando un mutímetro benchtop digital usando como ADC un ICL7135 por su practicidad y usando un PIC16F877A a causa de que tengo tiempo libre, me sobran los componentes y no soy millonario como para comprar un multímetro benchtop ya armado como estos:
La idea de usar el PIC es primeramente para reducir componentes y porque con un display LCD se vería super cool :V y así está quedando la etapa de conversión:
Ahora bien, para hacerlo compatible, estoy leyendo número por número del ICL7135 de esta manera:
El detalle con esto es que uno todo los dígitos en una sola cifra usando trucos en el printfC://Leer los datos del ADC externo if(input(D5)){ //Leer digito if(input(B1)){a=1;}else{a=0;} //Leer valor binario if(input(B2)){b=2;}else{b=0;} if(input(B3)){c=4;}else{c=0;} if(input(B4)){d=8;}else{d=0;} digit[4] = a+b+c+d; //Convertir binario a decimal } if(input(D4)){ if(input(B1)){a=1;}else{a=0;} if(input(B2)){b=2;}else{b=0;} if(input(B3)){c=4;}else{c=0;} if(input(B4)){d=8;}else{d=0;} digit[3] = a+b+c+d; } if(input(D3)){ if(input(B1)){a=1;}else{a=0;} if(input(B2)){b=2;}else{b=0;} if(input(B3)){c=4;}else{c=0;} if(input(B4)){d=8;}else{d=0;} digit[2] = a+b+c+d; } if(input(D2)){ if(input(B1)){a=1;}else{a=0;} if(input(B2)){b=2;}else{b=0;} if(input(B3)){c=4;}else{c=0;} if(input(B4)){d=8;}else{d=0;} digit[1] = a+b+c+d; } if(input(D1)){ if(input(B1)){a=1;}else{a=0;} if(input(B2)){b=2;}else{b=0;} if(input(B3)){c=4;}else{c=0;} if(input(B4)){d=8;}else{d=0;} digit[0] = a+b+c+d; }
C:dm = digit[4]*10000; ml = digit[3]*1000; ce = (digit[2]*1000)/10; //Esto es debido a un extraño bug en CCS que no permite multiplicar por 100 dc = digit[1]*10; un = digit[0]; total = (dm+ml+ce+dc+un); lcd_gotoxy(1,2); printf(lcd_putc,"%lu ",total);
Hasta ahí todo lindo, PERO, me gustaría saber si se les ocurre una mejor forma de leer el ADC y alguna forma de agregar los decimales necesarios para cambiar la escala, manteniendo una sola cifra, obvio podría hacer trampas con el prinft, PERO, no podría usar la cifra total para agregar operaciones matemáticas como en los benchtop, cualquier idea es bienvenida, ya que el proyecto es el de diseñar un multímetro Open Source con prestaciones de multímetro caro :V
Hola.
Estoy configurando uno como el tuyo, pero sin la pantalla lcd. También estoy usando el compilador ccs pero nunca lo he hecho de esta manera (interconectado)
¿ Podría proporcionar el código completo por favor? estos ADC son los más adecuados para cargas analógicas y redes de CA. ?
Última edición por un moderador: