Una de la inquietudes con la tarjeta pinguino es su posibilidad de emplearla para aplicaciones compiladas en otros leguajes (CCS, PIC18, COWBASIC). Explorando la Web me encontre con una modificación realizada en la pagina de microembebidos
En la pagina lo que se expone es la implementacion de un Bootloader que descargado en la tarjeta pinguino permite descargar los archivos .hex de las aplicaciones realizadas con otros compiladores diferentes a Pinguino.
La instalación no se ha probado en windows 8 , pero quizas necesite la instalacion en modo de controladores no firmados. En windows 8.1 el proceso es un poco diferente, aqui hay uno enlaces con la explicacion
MEDICIÓN DE DISTANCIA POR ULTRASONIDO CON EL HC-SR04
El HC-SR04 es modulo sensor de distancia por ultrasonido que trae 4 terminales, dos de alimentación y dos para envío y recepción.
Uno de los terminales se llama trigger o disparador, es el encargado de indicarle al dispositivo que envíe la señal ultrasonica este terminal por lo menos debe estar 10 microsegundos en alto para que envíe una señal ultrasonica.
El otro terminal se llama echo o terminal de detección de eco, este terminal se coloca en alto cuando se hace el envío de la señal ultrasonica, y se coloca en bajo cuando hace recepción por medio de eco o rebote de esta sobre un objeto.
Para determinar la distancia recorrida en centímetros, se cuenta el tiempo que trascurre desde que se coloca en alto el terminal de eco y este regresa a bajo, se puede contar cada 58 microsegundos para obtener una relación en centímetros.
Calculo De La Velocidad Del Sonido
En este ejemplo se trabajara con la velocidad a 20 grados centigrados que es V=343 m/s.
Se aplica el siguiente procedimiento para hallar el tiempo en microsegundos equivalente a un centímetro.
Pasamos la velocidad a centímetros por segundo, esto da V=34300 cm/s
Calculamos el tiempo con la ecuación distancia = velocidad/tiempo, despejamos tiempo y tenemos la ecuación t=d/v, reemplazando por los valores t=1cm/(34300cm/s) luego t = 0,000029155s
Como la señal va y vuelve hace el doble de la distancia que se desea medir, por lo tanto tomara el doble de tiempo, así que mediremos el doble de tiempo luego t=0,000058309s, finalmente pasamos este valor a microsegundos t=58,309us que para efecto practico lo aproximaremos a t=58us en el programa.
Tener en cuenta que la velocidad del sonido es mayor cuando aumenta la temperatura, aproximadamente 0.6m/s por cada gradocentigrado.
CÓDIGODE PRUEBA //Codigo probado en Pinguino 9-05 //Julio Fabio De La Cruz 28-05-2013 #define Trig 8//Defino el terminal 8 como trigger o disparador #define Echo 9//Defino el 9 como el de recepcion del eco int Dato;//Dato sin procesar equivalente a la distancia a medir en centimetros void setup(){ pinMode(Trig, OUTPUT);//Disparador como salida pinMode(Echo, INPUT);//Eco como entrada Dato=0;//Inicio dato en 0 TRISB=0;//Configuro puerto B como salida } voidloop() { while (digitalRead(Echo) == LOW) {//Pin del eco en bajo digitalWrite(Trig, HIGH);//Activa el disparador delayMicroseconds(50);//Espera 50 microsegundos (minimo 10) digitalWrite(Trig, LOW);//Desactiva el disparador } while (digitalRead(Echo) == HIGH) {//Pin de eco en alto hasta que llegue el eco Dato++;//El contador se incrementa hasta llegar el eco delayMicroseconds(58);//Tiempo en recorrer dos centimetros 1 de ida 1 de vuelta } PORTB=Dato;//Muestro dato por el puerto B delay(1000);//Espera un segundo para visualizar el dato Dato=0;//Reinicio dato a 0 } CÓDIGODE PRUEBA EN GREAT COW BASIC
También dejo el código de prueba en basic empleando great cow basic con el fin de que pueda ser
llevado a otro microcontrolador como por ejemplo el 16F877A
'**************************************************************** ' Generated by Prithvi Development Studio 0.0.1 (Build: 560) ' ' Description : Porgrama basico para el HC-SR04 ' Author : Julio Fabio De La Cruz Gomez ' Date : 30/05/2013 10:32:05 a.m. ' '**************************************************************** #chip 16F877A, 4 #define trig PORTC.6 #define echo PORTC.7 TRISB = 0 'Configuro puerto B como salida dir trig out 'terminal para menejar el disparardo trigger dir echo in 'terminal para detectar el eco echo PORTB = 0 'Limpio el puerto B colocandolo en cero trig = OFF 'Terminal del disparador trigger en cero dato = 0 'Variable para guardar dato de la medicion Inicio: dowhile echo = OFF trig = ON 'Activa el disparador wait 50 us 'Espera 50 microsegundos trig = OFF 'Desactiva el disparador loop dowhile echo = ON dato = dato+1 'Contador se incrementa hasta llegar el eco wait 58 us 'Tiempo en recorres dos centimetros 1 de ida 1 de vuelta loop PORTB=dato 'Muestro dato por el puerto B wait 1 s 'Espera un segundo para visualizar el dato dato=0 'Reinicio dato a 0 goto inicio