# Clonado de un sensor ultrasónico SRF04



## uneof (Sep 3, 2010)

Me refiero a este sensor:
http://www.robot-electronics.co.uk/htm/srf04tech.htm (ahí tenéis esquema y código para el PIC)
He conseguido clonarlo satisfactoriamente por poco más de 7€ en total.
Me he limitado a, utilizando las fotos y el esquema que ellos proporcionan, copiar "literalmente" el diseño de PCB del sensor original, pero modificando la posición de varias vías para que NO haya ninguna via bajo integrados ni en los bordes de las cápsulas ultrasónicas.
Adjunto el diseño en formato de Express PCB, y PDF's a escala 1:1 SIN ESPEJADO (OJITO QUE ES UNA PLACA A DOBLE CARA) de ambas caras y de la máscara de soldadura de ambas caras.
He respetado las medidas de la placa original incluyendo la distancia entre los sensores, que es MUY importante mantenerla.

Otro cambio en la PCB es que el PIC12C508 es en SOIC 208mil (un poco más ancho que el SOIC habitual) ya que es el único que mandan por muestra en microchip. Deberíais programarlo antes de soldarlo pero se puede programar una vez soldado.

No os dejo señalado el artwork de la placa (es decir, qué es cada componente en ella) pero es fácil de deducir así que rompeos un poquito la cabeza que yo ando vago.


Todos los componentes utilizados son exactamente los del circuito original, no he hecho variación alguna.

Las cápsulas ultrasónicas usadas fueron estas:
http://www.futurlec.com/Ultrasonic_Sensors.shtml
(Los segundos)

Por si acaso alguien pregunta, si no encontráis los componentes exactos que piden ajo y agua. No tengo ni idea de cómo funcionaría usando otros. Sobre todo en tema de diodos y operacionales, los del esquema original están preparados para trabajar a 40Khz. LOS 1N4148 NO VALEN COMO DIODOS, y en operacionales habría que mirar alguno con ganancia >=25 a 40Khz.  Se puede usar un MAX232 cambiando los condensadores por los apropiados y el ST232 tiene que ser el ST232C, con la C bien grandota. Los componentes originales no son difíciles de encontrar en absoluto, en farnell los tienen y bien baratos, y si vais a hacer un pedido grande, compensa los gastos de envío.

Fotos de cómo me ha quedado:






Sí, es casero. Sí, hay algunas resistencias con los valores ligeramente cambiados. Es porque no tenía otras a mano, pero vamos, los cambios son ínfimos. Sí, los integrados parecen algo mal soldados, es lo que tiene soldar con pasta. Si algún dia me aburro les doy un pasón con la técnica del arrastre de bola para que queden soldaduras profesionales. El chisme funciona, perfectamente, y no pienso tocarlo más.

Os dejo adjuntos los ficheros para que si os hace ilusión modifiquéis ligeramente la placa y la posteéis en taringa como si fuera trabajo y mérito vuesto para llevaos "los dies" de la gente y tal y cual. En la PCB pone SFR04 en vez de SRF04. Es un error a propósito.

El sensor va perfecto, tiene muy buena resolución y todo el rollo ese. 100% recomendado. En el momento de las fotos (hace un rato) estaba conectado a un arduino para probarlo.


----------



## ricardop7812 (Abr 25, 2011)

dejeme decirle que si funciona...............usted es un duro!.....por que copiar esos sensores es muy dificil......¡lo felicito de verdad!


----------



## german_chimy (Oct 31, 2011)

Ahora, mi pregunta, Que pruebas has realizado y a que ditancia te detecta x objeto y medidas aprox. Muy buen diseño a escala, reducido. Seria bueno Realizarlo, pero dudo que en argentina se consiga todo lo detallado.


----------



## gesteve (Nov 4, 2011)

hola me ha encantada la idea de "clonar" uno de estos sensores yo casi lo daba por imposible.
me gustaría saber si fuesen tan amables de subir un circuito y la explicación  de tal.
espero sus respuestas 
 la única lastima es que no me deja abrir el archivo .pcb que hay dentro del zip


----------



## DOSMETROS (Sep 4, 2012)

Para el que no tenga ganas de clonarlo . . . . 


_Buscar en Mercadolibre: MLA-427941473-modulo-arduino-sensor-ultrasonico-de-distancia-hc-sr04-_JM_


----------



## Meta (Feb 16, 2014)

Hola:

¿Dónde está el código fuente del PIC12C508?

Si es el HC-SR04 lo he comprado por menos de 5 € estos días. Han rebajado.

Un cordial saludo.


----------



## Finskey (Jun 15, 2014)

Hago una pregunta, sera posible con un pic 16f628a controlar este sensor con un programa en basic? estoy un poco mareado de como se conectaría y como puedo decirle al pic que cuando éste detecte al objeto darle marcha a los motores.


----------



## miborbolla (Jun 15, 2014)

Hola Finskey:

Aquí dejo un código en basic, escrito por mi,  para ser utilizado con un 12f508 pero que obviamente se puede trasladar al chip que se prefiera. el compilador es "Proton IDE"


```
****************************************************************
'*  Name    : SONAR.BAS                                         *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20/06/2013                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device = 12F508

Config MCLRE_OFF,INTRC_OSC,WDT_OFF,CP_ON
Xtal = 4
TRISIO.0 = 0 ;Puerto GPIO.0 configurado como salida 
TRISIO.1 = 0 ;Puerto GPIO.1 configurado como salida 
TRISIO.2 = 0 ;Puerto GPIO.2 configurado como entrada 
TRISIO.3 = 1 ;Puerto GPIO.3 configurado como entrada (SOLO SE PUEDE OCUPAR COMO ENTRADA)
TRISIO.4 = 0 ;Puerto GPIO.4 configurado como Salida
TRISIO.5 = 0 ;Puerto GPIO.5 configurado como Salida

Symbol Rojo  GPIO.0   'led de color rojo
Symbol Verde GPIO.1   'led de color verd
Symbol Trig  GPIO.4   'Salida Utilizada para dar el gatillo "trig" al sensor ultrasonico
Symbol Echo  GPIO.3   'Entrada donde se recibe el el "Echo" entregado por el sensor ultrasonico  
Symbol TXT   GPIO.2   'Salida Utilizada para dar enviar datos por rs232

Declare Rsout_Pin GPIO.5
Declare Serial_Baud 9600
Declare Rsout_Mode_Inverted 0
Declare Rsout_Pace 1

Dim Contador As Word

Contador=0
GPIO =%00000000 ' inicializamos todo el puerto a "ceros" o nivel bajo

Inicio:

GoSub Distancia  ' EJECUTAMOS LA SUBRUTINA PARA OBTENER DISTANCIA DEL SONAR

If Contador > 150 Then GoSub Apaga
If Contador < 150 Then GoSub Enciende



'rsout "SALUDOS",Contador

DelayMS 50


GoTo Inicio    
  
Enciende:
            High Rojo
            Low Verde
Return       

Apaga:
            Low Rojo
            High Verde
               
Return

'=====================================================================================================================
Distancia:
Contador=0 ' inicializamos la variable en cero antes del proceso de medir distancia

High Trig  '===============================================
DelayUS 10 ' disparo del triger segun datasheet del HC-SR04
Low Trig   '===============================================

While Echo=0: Wend  ' esperamos flanco de subida del HC-SR04

While Echo=1:Inc Contador:DelayUS 58:Wend 'Se incrementa el valor de Contador en proporcion de la distancia del objeto (mientras dure en alto el pin Echo)

Return
'=====================================================================================================================
```


Espero que aclare las dudas de como utilizar estos sensores.

Saludos


----------



## Finskey (Jun 15, 2014)

Muchas gracias  miborbolla me sirvio de mucho


----------

