viernes, 20 de enero de 2017

Manual para pirómetro autonics TC4S - TC4SP - TC4Y - TC4M

Referencia TC4S
Bienvenidos a un nuevo post, en esta ocasión les traigo el manual oficial (Aunque en Inglés 😨) de la serie de pirómetros TCseries de Autonics, muy bien no hace falta teorizar en este tipo de artículos ya que supongo que si buscas el manual es porque ya tienes el Pirómetro sin importar para que lo quieras en mi caso yo tengo un Pirómetro TC4S y el manual me ha sido de gran ayuda, este manual aplica para las siguientes referencias de pirómetros:



- TC4S
- TC4SP
- TC4Y
- TC4M
- TC4H
- TC4W
- TC4L

Sin más para decir he aquí el manual disponible para descargar por Google Drive.


Es todo hasta la próxima,
Compartir:

martes, 22 de noviembre de 2016

Ingeniería inversa en circuito placa displays 7 segmentos LED23B3.PCB

Esto es un caso real de Reversing en un circuito electrónico es muy sencillo, pero, será de utilidad para quiénes empiecen en este tema tan interesante.
¡Hola SkullTraper! Un post más hoy me tomo la tarea de publicar este post, y bueno en estos lares de nuestro idioma (Español) y también por mi país Colombia, muy poco o nada se habla de lo que tiene que ver con la Ingeniería Inversa ¿Qué? ¿Cómo? Si eso es común en el mundo de Hacking Informático y la explotación-crackeo de Software, bueno sí pero, en Circuitos Electrónicos ¡No! así que vamos a la temática y lo que pasa con este post.

UNA BREVE INTRODUCCION

Si lees este post pero no se te viene a la mente que es la Ingeniería Inversa en un circuito electrónico, básicamente se trata de ir contra la corriente no diseñando algo electrónico sino, de algo ya diseñado recopilar toda la información posible con pruebas físicas de como funciona, como trabaja que componentes tiene como vienen y que hace, cuyo objetivo final es llegar al diseño original o similar.


EL PROBLEMA A RESOLVER (MI PROBLEMA)

Nuevamente aclaro que sobre esta placa con displays no sale datasheet nada de nada de naaaaada en internet, ni quien los vende te da estos datos.
Este post no son meras suposiciones es algo de la realidad y que me ha pasado 😱 con un PCB o circuito físico un tanto especial, a decir verdad complejo que se diga complejo no es, ya que se trataban de sólo 3 Displays 7 segmentos, pero, unidos en un bloque algo así: 

Referencia: LED23B3.PCB

¿Raro o sencillo? cada quién lo dicta a su criterio, pero, para mi, cuando lo recibí por primera vez fue raro (Aclaro que a día de hoy sigo siendo estudiante de Ingeniería Electrónica tengo mucho por aprender) pero no se asusten como yo lo hice en un inicio, analicemos más a fondo lo que pasa.


¿QUE CLASE DE DISPLAYS Y PLACA ES ESA LED23B3.PCB?

Claro, lo explicaré no puedo ser odioso con quién lea este post completo y su interés, sea un caso sencillo de Ingeniería Inversa en un circuito electrónico como el expuesto en este post entender como funciona unos displays no es difícil, pero, lo especial viene en la procedencia de esa placa.

Dicha placa pertenece a una o más máquinas de aquellas a las que les metes una tarjeta te descuentan el saldo y te dan 2 minutos o menos para jugar cuando culminas el tiempo te dan unos tickets, creo que una imagen basta para saber que tipo de juegos máquina son:

Máquina Dino Pop trabaja con credit coins en parques

Pues como ves son de esas, si te das cuenta hay unos displays al fondo justo arriba de la cabeza del dinosaurio bueno de allí vienen dichos displays, y así como esta muchas otras similares trabajan con este tipo de Displays queda clara su procedencia útil.

¿Y QUE NECESITABA HACER CON ESOS DISPLAYS?

Bueno, resulta que dichas máquinas de este tipo de parques trabajan con placas viejas y poco "útiles" así entre comillas, así que luego de hablar con algunas personas por ahí 😌 decidimos ponernos en la tarea de hacer cumplir la misma función de la máquina, pero, con otro tipo de tarjetas tal como Arduino para un prototipo o PIC o cualquier otra a la final el código es lo de menos ya que este tipo de juegos trabajan con botones, sensores, luces y uno o dos motores no es más. 



El problema viene, cuando miro a fondo los displays se me hicieron raros de primerazo así, me dio desconfianza ya que nunca en mi vida había visto algo así en aquel momento,le pregunté a los del parque si tenían los manuales y desde luego me los enviaron (click aquí para ver) pero nada útil en ellos la verdad, o por lo menos algo que me explicara en brevedad como se trabajan en este tipo de placa.


EMPIEZO A APLICAR INGENIERÍA INVERSA

Muy bien, claramente y como todo el mundo busqué en google información de la referencia exacta, pero, sólo te saldrá lo que están en los manuales de muchos juegos y la tienda o empresa encargada de vender este componente no es más 0 detalles técnicos y electrónicos:



BUSCANDO PISTAS EN LA PLACA

Lo más común en este tipo de casos es ver que pistas me tira la placa entre algunos tips están:

- Identificación de componentes (Resistencias, Displays, pines)
- Ver referencias todas las que estén.
- Buscar Datasheet de los componentes identificados.

Luego de simplemente verla <<jajaja>> y ver todas las referencias que vienen y componentes concluí lo siguiente:

Datos encontrados en la placa

- Sólo tengo 3 referencias escritas en ella en negro tenemos la referencia ya buscada de la placa "LED23B3.PCB" nada útil, luego un serial de impresión tal vez cuando la fabricaron, y en amarillo la referencia de los Displays 7 segmentos obviamente deben ser tres iguales cuya referencia es "MLS-23101BSR1-B10".


ANALIZANDO LO MÁS CERCANO LOS DISPLAYS 

Ya tenía la referencia de los displays luego de Googlear un poco encontré datos interesantes como voltaje mínimo de operación y otros más secundarios aunque también pude medirlo ya que en el caso de los displays la gran mayoría se diferencia por medida, este tiene 5x7cm no era difícil, pero, sólo deseaba verificar su voltaje y datos electrónicos de operación y esto tengo:

Características de un Display 5x7cm
 
¿Ánodo común o cátodo común 🙇? Bueno al trabajar con 8 voltios, claramente con un Multímetro no podré determinar que es, así que usé una fuente externa y apliqué el mismo principio que con las puntas del multímetro, al final con negativo (-) en común se prenden los segmentos, por ende es cátodo común. 

¿Más componentes? sí claro, como vemos hay resistencias sacar el valor de sus resistencias es elemental nada del otro mundo, en total vienen 8 resistencias limitadoras para los displays completos cuyos valores son 7 de 56 ohms y una de 180 ohms.


REVERSANDO CON MULTIMETRO Y CONTINUIDAD (CIRCUITO)

Ya tenía identificado todas las piezas de esta placa no había más, lo demás sólo eran pines, si bien para comprender mejor su funcionamiento tenía dos opciones probar al azar todos sus pines o sacar un diagrama ya sabes lápiz y papel o un marcador y tablero (Como fue mi caso).

- La técnica es sencilla como es un circuito muy simple pero las pistas no se dejan ver muy bien, como puedes ver en la primeeer foto del post, bien lo hice en mi tablero inicié así: 

Reversando circuito con continuidad

Pero bueno eso solo era lo que pensé, así que decidí pasarlo a una hoja luego de determinar como trabajaba todos los displays y los pines, mi esquema hecho a mano aclaro, final fue el siguiente: 

Click en la imagen para ampliar - circuito final

Comprendí plenamente como trabaja por lo menos lo tenía como una teoría, una suposición (No explicaré como trabaja esta placa, estaré preparando otro post para ello), luego, de entenderlo llegó la hora final las pruebas, pruebas que no eran a la deriva ya que con la info que tenía y el diagrama sabía quiénes eran los habilitadores y los segmentos completos, así que empecé con ello y sólo se trataría de que prendieran como me lo indica el diagrama:



Agregué más jumpers a los segmentos de las letras es decir los pines de lo encerrado en amarillo con tres cables en los mostrado en azul, (Lo de la foto era sólo probando un segmento) y bueno ¡Por fin! me dio efectivamente: 



Lo he logrado, he quedado feliz porque no usé la suerte para probarlo a pesar de la gran cantidad de pines pero bueno.


EN CONCLUSIÓN

Así es ya se va acabar el post 😖, como dije varias veces no explicaré los detalles profundos electrónicos de esta pieza, pero, haré un post dedicado sólo a él, ya que este post era como se puede reversar un circuito de forma sencilla, para no fallar su entendimiento de funcionamiento, gracias a un multimetro y ya, no era difícil digamos que pude hacerlo a la suerte conectando la fuente y probando al azar hasta que prendieran y poco a poco le daba sentido, más no probaría entonces todos los pines y mi dicho análisis sería incompleto. En cambio sacando todo el circuito a mano, comprendí absolutamente todos los pines como trabajan y por lógica vas sacando pequeños descubrimientos de lo mismo, por lo cuál cumplí:

- Identificar todos los componentes en la placa.✔
- Obtener el diagrama o esquemático del circuito.✔
- Hacer la prueba final y que trabajara como lo esperaba.✔
- Documentar todo el proceso hecho para usos futuro tal vez. ✔

Y ya no hay más que decir es una técnica relativa que se aplica de distinta forma pero muy divertida, sólo me queda probar en Arduino y luego colgaré la info al respecto, espero les guste es todo en este post sobre un caso de Ingeniería Inversa SENCILLA.

Hasta la próxima,

 
Compartir:

jueves, 17 de noviembre de 2016

PROYECTO: Cronómetro con PIC16F877A y display 7 segmentos en Assembler

Este proyecto es desarrollado en Assembler al final del post puedes descargar todo el proyecto + código + simulación

¡Un post más! Un buen SkullTraper sabe que aquí ponemos excelentes proyectos para motivarte, el día de hoy traemos un proyecto hecho en el lenguaje "Assembler" antes que nada quiero agradecer a +Juanita triana+Nathan Bromberg  que me facilitó su proyecto yo hice algunos vídeos y pequeñas modificaciones sobre su proyecto ya que son compañeros de la Universidad.




¿DE QUE TRATA EL PROYECTO? 

Te dejo un vídeo del Proyecto funcionando ;)


Este proyecto tiene como objetivo realizar un cronómetro pero en lenguaje ensamblador (Este no es en C como los otros proyectos 😧), más exactamente el planteamiento dice lo siguiente:

  • Tomando como referencia el diagrama que se ilustra en la figura, se desea diseñar e implementar un cronómetro cuyo conteo esté dado en décimas de segundo (0.0 - 0.1 - 0.2 --- 9.8 - 9.9 - 0.0 --). Un pulsador permite iniciar o continuar el conteo, otro permite detener y otro borrar. 


DESARROLLO COMPLETO DEL PROYECTO

Como siempre y es sagrado de inicio aclaro que el proyecto fue realizado en MPLAB "El viejo confiable para proyectos con PIC" no se hizo uso de librerías especiales añadidas, para simulación proteus como siempre, como tal el proyecto es sencillo y fácil de entender al final podrás descargar todo el contenido de este proyecto 😄:


1. MATERIALES Y COMPONENTES En este proyecto fue necesario el siguiente uso de componentes:

- x1 Programador de PICS (Pickit2)
- x1 PIC16F877A
- x2 Displays 7 segmentos 
- x3 leds pequeños
- x3 pulsadores normales
- x3 resistencias de 220 ohms
- x2 Capacitores de 15pF
- Jumpers o puentes de conexión
- x1 Protoboard
- x1 fuente de voltaje, 5V está bien para trabajar
- x1 Cristal de Cuarzo de 4MHz
- x2 resistencias de 330 ohms
- x1 resistencia de 10k ohms
- x1 capacitor de 0,1uF

¡Listo! con esto podremos iniciar el proyecto sin problema alguno.

1.1. Cálculos de resistencias y demás   

Este paso es opcional pues prácticamente más arriba di los números precisos de cada componente, pero, si deseas saber como se hizo aquí te lo explico, este paso es para determinar a exactitud que valor de resistencias usar para los leds y displays, ¡Vamos que si llevan por seguridad

  • Resistencias de los LEDS, sabemos que la máxima corriente de salida de los puertos del micro que usamos, es decir, el PIC es de 25mA, pero, en este caso sólo se usará 15mA. El voltaje promedio son 5V y en los leds irán 3,5V usarán los leds, ahora, por ley de ohm nuestro pequeño despeje queda:

  • Resistencias para los displays, aplicamos el mismo principio anterior, ley de Ohm, entonces nos da:
  • Retardo en mS, para el retardo incialmente se había propuesto 100mS, pero, después del retardo siguen algunas instrucciones antes de volver a incrementar, se propone un retardo de 45mS aproximadamente:
 2. SIMULACIÓN PROTEUS 

La simulación como siempre hecha en Proteus todo normal y fácil de entender es apenas algo así: 


 3. CÓDIGO COMPLETO, PROGRAMA PIC

El código del proyecto no es muy largo y de hecho es bastante fácil de entender "siempre y cuando domines el lenguaje" no se hizo necesario el uso de alguna librería personalizada o similar:

 

 ;******************************************************************************************
;*           *
;* DESCRIPCIÓN DEL PROGRAMA
;* 
;* *ESTE PROGRAMA PERMITIRA CONTAR DE 0 A 99 DE FORMA ASCENDENTE Y DESCENDENTE
;* ACCIONADO POR DOS BOTONES. AL PULSAR UN BOTON, ESTE EMPIEZA A CONTAR DE FORMA ASCENDENTE
;    Y AL PULSAR EL OTRO, DE MANERA DESCENDENTE    *
;*          *
;*  AUTORES: JUANITA TRIANA 
;*                       *NATHAN BROMBERG
;*   *EDGAR CHICA
;*  MICRO:  PIC 16F877A           *
;*  OSCILADOR: 4 MHz            *
;*                *
;******************************************************************************************
;
;
 LIST p=16F877A
 #INCLUDE "p16F877A.inc"
;
 __CONFIG 3F71
;
;
; *************  DECLARACIÓN DE VARIABLES         *******************************
;
 CBLOCK 20
 UNID,DEC, R1, R2 
 ENDC
;

;EQU 

;
; ********************        DEFINICIONES GENERALES      ******************************
     #DEFINE BOTON_START PORTB,7 
     #DEFINE BOTON_STOP PORTB,6 
     #DEFINE BOTON_RESET PORTB,5
     #DEFINE LED_VERDE PORTB,0
     #DEFINE LED_ROJO PORTB,1
     #DEFINE LED_AZUL PORTB,2
     
;

;
; ________________________________________________________________________________________
;|          |
;|          DECLARACIÓN DE MACROS         |
;|________________________________________________________________________________________|
  INI_PUERTOS MACRO
    BCF STATUS,RP1 ;BK1
    BSF STATUS,RP0 ;BK0
    BCF OPTION_REG,7 ;PULL UP
    BSF TRISB,7 ;RB7 ENTRADA
    BSF TRISB,6 ;RB6 ENTRADA
    BSF TRISB,5 ;RB5 ENTRADA
    BCF TRISB,0 ;RB0 SALIDA
    BCF TRISB,1 ;RB1 SALIDA
    BCF TRISB,2 ;RB2 SALIDA
    CLRF TRISC ;PORTC SALIDA
    CLRF TRISD ;PORTD SALIDA
    BCF STATUS,RP0    ;BK0
    ENDM 



;-----------------------------------------------------------------------------------------
;
 ORG 00   ; VECTOR DE RESET
 GOTO INICIO
;
;
; ________________________________________________________________________________________
;|          |
;|         TABLAS Y PROCEDIMIENTOS    |
;|________________________________________________________________________________________|
;TABLA DECO
TABLA_DECO ;ANODO COMÚN 
 CLRF PCLATH
 ADDWF PCL,F
    DT 40, 79, 24, 30, 19, 12, 2, 78, 0, 10
 RETURN
;---------------------------------------------------------------------------------------------- 
;VISUALIZA
VISUALIZA
    MOVFW UNID
    CALL TABLA_DECO
    MOVWF PORTC
    MOVFW DEC
    CALL TABLA_DECO
    MOVWF PORTD
    RETURN
    
;INCREMENTA
INCREMENTA
    INCF UNID,F
    MOVLW .10
    XORWF UNID,W
    BTFSS STATUS,Z 
    GOTO SALE_INC
    CLRF UNID
    INCF DEC,F
    MOVLW .10
    XORWF DEC,W
    BTFSS STATUS,Z
    GOTO SALE_INC
    CLRF DEC
SALE_INC
    RETURN
    
;RESET
REINICIAR
    CLRF UNID
    CLRF DEC
    CALL VISUALIZA
    RETURN
    
;RETARDO_100MS
RETARDO_100MS
    MOVLW .122
    MOVFW R2
    
CICLO2
    MOVLW .122
    MOVWF R1
    
CICLO1 
    DECFSZ R1,F
    GOTO CICLO1
    DECFSZ R2,F
    GOTO CICLO2
    
   RETURN 
;LEDS
LED_1
BTFSC PORTB,7
GOTO SALE_L1
BCF PORTB,0
SALE_L1
RETURN

LED_2
BTFSC PORTB,6
GOTO SALE_L2
BCF PORTB,1
SALE_L2
RETURN

LED_3
BTFSC PORTB,5
GOTO SALE_L3
BCF PORTB,2
SALE_L3
RETURN

APAGA1
BSF PORTB,0
RETURN

APAGA2
BSF PORTB,1
RETURN

APAGA3
BSF PORTB,2
RETURN



   
;

;
;
;******************************************************************************************
;*          *
;*                   PROGRAMA  PRINCIPAL       *
;*               *
;******************************************************************************************
;
;
;
INICIO
    INI_PUERTOS
    CLRF UNID
    CLRF DEC
    CALL VISUALIZA
    
PRINCIPIO
    BTFSC BOTON_START
    GOTO PRINCIPIO
    
INCREMENTO
    CALL APAGA2
    CALL APAGA3
    CALL LED_1
    CALL INCREMENTA
    CALL VISUALIZA
    CALL RETARDO_100MS
    
    BTFSC BOTON_STOP
    GOTO INCREMENTO
    CALL APAGA1
    CALL LED_2
    CALL VISUALIZA
    GOTO MIENTRAS
    
MIENTRAS
    BTFSC BOTON_START
    GOTO REINICIO
    GOTO INCREMENTO
    
REINICIO
    BTFSC BOTON_RESET
    GOTO MIENTRAS
    CALL APAGA2
    CALL LED_3
    CALL REINICIAR
    GOTO PRINCIPIO
    
 END 
4. MONTAJE FINAL DEL PROYECTO 

Como es siempre sagrado el montaje final del proyecto en una foto, aunque este proyecto no lo montó ningún miembro del equipo de SkullTrap damos la foto de como debería quedar similar:


Es todo en este proyecto, como siempre digo que en la publicación de proyectos no profundizamos mucho en explicaciones ya que seguro si buscas un proyecto de este calibre es porque entiendes la gran mayoría de cosas. De igual forma si tienes dudas puedes comentar libremente, seguro te la podemos resolver de ser posible.

https://drive.google.com/open?id=0B8xtMFpL-ixBdWd6SmtqcmFzWmc


Es todo en este artículo hasta la próxima 😊,
Compartir:

SkullTrapers

 

CLICK AQUI PARA IR A NUESTRA TIENDA ON LINE ARDUINO, ELECTRÓNICA, COMPONENTES