martes, 23 de diciembre de 2014

Radio-baliza automatica Hecha con PIC 12F629

Radio-baliza automática

Hola Seguidores del blog, hace un tiempo un conocido de internet me pidio que le ayude con el codigo de una radio-baliza y me puse y salio esta version de radio-baliza automatica hecha con PIC. Por el momento solo emite en codigo morse el mensaje que uno le pone en el codigo del PIC, como por ejemplo su identificacion de emisora. Para emitir un mensaje solo deben agregar al main del codigo esta linea por ejemplo:
                                                      Mensaje="CA6UGT";
                                                      Tx_morse(Mensaje);
con esa linea emitira el mensaje CA6UGT en codigo morse...ustedes lo pueden cambiar por el que sea identificativo de su emisora y antes de emitir habilitar algun PIN no usado para manejar el emisor. Aqui el codigo del PIC:

--------------------------------------------------------------------------------------------------------------------------------
#include <12F629.h>
#FUSES NOWDT                    // No Watch Dog Timer
#FUSES INTRC_IO                 // >>> Oscilador interno, no CLKOUT
#FUSES PUT                      // Power Up Timer
#FUSES NOMCLR                   // Master Clear pin used for I/O
#FUSES BROWNOUT                 // Reset when brownout detected
#FUSES PROTECT                // Code not protected from reading
#FUSES NOCPD                    // No EE protection
#byte PortA=0x05
#use delay(int=4000000,wdt) // Especifica al compilador que hace uso del OSC interno
int8 MedioSeg=0,Segundos=0;
int16 SegundosRestantes=0;
const int8 duracionPunto=100;
int1 bit=0;
unsigned char Mensaje[7]=" ";
#include <Mitones.c>
#include <PuntosRayas.c>
const unsigned char Table[100]={
0b00000001,//032 espacio interpalabra 7 units
0b01101011,//033 ! -ú-ú--
0b01010010,//034 " ú-úú-ú
0b00111011,//035 # --ú-- para usar la ¥
0b10001001,//036 $ úúú-úú-
0b00000001,//037 % No usado
0b00101000,//038 & ú-úúú Wait
0b01011110,//039 ' ú----ú
0b00110110,//040 ( -ú--ú
0b01101101,//041 ) -ú--ú-
0b00000001,//042 * No usado
0b00101010,//043 + ú-ú-ú
0b01110011,//044 , --úú--
0b01100001,//045 - -úúúú-
0b01010101,//046 . ú-ú-ú-
0b00110010,//047 / -úú-ú
0b00111111,//048 0 -----
0b00101111,//049 1 ú----
0b00100111,//050 2 úú---
0b00100011,//051 3 úúú--
0b00100001,//052 4 úúúú-
0b00100000,//053 5 úúúúú
0b00110000,//054 6 -úúúú
0b00111000,//055 7 --úúú
0b00111100,//056 8 ---úú
0b00111110,//057 9 ----ú
0b01111000,//058 : ---úúú
0b01101010,//059 ; -ú-ú-ú
0b00000001,//060 < No usado
0b00110001,//061 = -úúú-
0b00000000,//062 > No usado
0b01001100,//063 ? úú--úú
0b01011010,//064 @ ú--ú-ú
0b00000101,//065 A ú-
0b00011000,//066 B -úúú
0b00011010,//067 C -ú-ú
0b00001100,//068 D -úú
0b00000010,//069 E ú
0b00010010,//070 F úú-ú
0b00001110,//071 G --ú
0b00010000,//072 H úúúú
0b00000100,//073 I úú
0b00010111,//074 J ú---
0b00001101,//075 K -ú-
0b00010100,//076 L ú-úú
0b00000111,//077 M --
0b0000110,//078 N -ú
0b00001111,//079 O ---
0b00010110,//080 P ú--ú
0b00011101,//081 Q --ú-
0b00001010,//082 R ú-ú
0b00001000,//083 S úúú
0b00000011,//084 T -
0b00001001,//085 U úú-
0b00010001,//086 V úúú-
0b00001011,//087 W ú--
0b00011001,//088 X -úú-
0b00011011,//089 Y -ú--
0b00011100,//090 Z --úú
0b00000001,//091 [ No usado
0b00000001,//092 \ No usado
0b00000001,//093 ] No usado
0b00000001,//094 ^ No usado
0b01001101,//095 _ úú--ú-
0b00000001,//096 ` No usado
0b00000101,//097 a ú-
0b00011000,//098 b -úúú
0b00011010,//099 c -ú-ú
0b00001100,//100 d -úú
0b00000010,//101 e ú
0b00010010,//102 f úú-ú
0b00001110,//103 q --ú
0b00010000,//104 h úúúú
0b00000100,//105 i úú
0b00010111,//106 j ú---
0b00001101,//107 k -ú-
0b00010100,//108 l ú-úú
0b00000111,//109 m --
0b00000110,//110 n -ú
0b00001111,//111 o ---
0b00010110,//112 p ú--ú
0b00011101,//113 q --ú-
0b00001010,//114 r ú-ú
0b00001000,//115 s úúú
0b00000011,//116 t -
0b00001001,//117 u úú-
0b00010001,//118 v úúú-
0b00001011,//119 w ú--
0b00011001,//120 x -úú-
0b00011011,//121 y -ú--
0b00011100,//122 z --úú
0b00000001,//123 { No usado
0b00000001,//124 | No usado
0b00000001,//125 } No usado
0b00000001,//126 ~ No usado
0b00000001 //127  No usado
};
void ProducirSonidos()
{
if (bit==0)
   {
   Punto();
   gap();
   }
else
   {
   Raya();
   gap();
   }
}
void Barrido(unsigned char Cmorse)
/*{
int8 i=0,k=0;
int1 codificar=0;
for(i=7;i>=0;--i)
 {
 if (codificar==1)goto Reproducir;
 if(bit_test(Cmorse,i))codificar=1;
 goto nada;
Reproducir:
           bit=bit_test(Cmorse,i);
           ProducirSonidos();
 }
gap();
gap();///separo caracter
nada:++k;
}*/
{
signed int i=7;
while(!bit_test(Cmorse,i))--i;
--i;
while(i>=0)
   {
   bit=bit_test(Cmorse,i);
   ProducirSonidos();
    --i;
   }   

}

//------------------------FIN TABLA MORSE---------------------------------------
void  TIMER1_isr(void)//Función de interrupción por desbordamiento TMR1  
{
      MedioSeg=MedioSeg+1;
      if (MedioSeg==2)
      {
       Segundos=Segundos+1;
       MedioSeg=0;
       SegundosRestantes=SegundosRestantes-1;
      }
Nada: 
      set_timer1(0x0BDC);//(0x0BDC);//carga del TMR1
    //  restart_wdt();
}

void codec(unsigned char letra)
{
int8 indice=0;
unsigned char morse=0;
if(letra==32)Espacio();
else 
   {
   morse=Table[letra-32];
   Barrido(morse);
   }
gap();
gap();
}

void Tx_morse( unsigned char texto[20]) 
{
int x=0;
while(texto[x]!=0)
   {
   codec(texto[x]);
   x++;
   }
}
void main()
{
   //setup_wdt(WDT_1152MS);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 ); //Para poder generar 200ms
   setup_comparator(NC_NC);   // Todo digital
   set_tris_a(0xF0);   // 
   output_A(0x00);
   enable_interrupts(INT_TIMER1);
   disable_interrupts(GLOBAL);
   set_timer1(0x0BDC);//set_timer1(0x0BDC);//carga del TMR1
   SegundosRestantes=0;
   delay_ms(1000);
   Mensaje="CA6UGT";
   Tx_morse(Mensaje);
   while(TRUE){
  
              }
}              
--------------------------------------------------------------------------------------------------------------------------------
Aqui un video de la baliza en funcionamiento...
Espero les sirva y comenten si les gusto...

lunes, 23 de junio de 2014

Dimmer para leds de 42A

 DIMMER LED DE POTENCIA


Hola, les traigo el circuito de un dimmer leds que puede manejar hasta 42A, con un buen disipador de calor.
El circuto esta basado en un 555 y una salida mosfet.
Aqui el video de su funcionamiento:
Si lo bajan, comenten...

lunes, 17 de marzo de 2014

Termometro USB con PIC y adaptador USB-USART

Termometro USB con PIC y adaptador USB-USART

Hola, hace un tiempo compre un adaptador usb-usart y ahora lo agarre y me puse a experimentar y salio este termometro usb.

Para conectarme a la PC uso el adaptador USB y uso un PIC y un sensor DS1820 para medir la temperatura. La programacion del PIC la Hice en CCS.Esta es la placa:
Lo que hace el PIC es ir tirando continuamente el valor de la temperatura por el puerto serie,  esta es una captura de una hiperterminal llamada "hercules utility":
 Tambien hice un programa en delphi para leer la temperatura usando la libreria comport, esta es una captura del programa:
El programa de delphi es basico y no se refresca bien, pero anda.
Les dejo los arhivos para grabar el PIC y para Delphi:
Espero les guste y se animen a hacer su propia version...

domingo, 2 de marzo de 2014

VOLTIMETRO DE 0 A 35V

VOLTIMETRO DE 0 A 35V

Les traigo todo para armarse un voltimetro para varios usos, desde medir la bateria del auto o la moto a usarlo para medir el voltaje para una fuente de alimentacion.
Este es el circuito:
Para ajustar el voltimetro se conecta el voltimetro sin el pic, se conecta el voltaje a la entrada, por ejemplo 12V, y se ajusta el potenciometro para lograr una tension en el polo positivo del zener disminuida en una relacion 12/40.La idea es que al tener una entrada de voltaje a medir de 35 V, el voltaje en la entrada del PIC no sobrepase los 5V.
Una vez echo esto, se coloca el pic y se, se mide un voltaje conocido y se hace el ajuste fino para que la medicion sea correcta.
En el circuito no estan los display CC pero lleva 2 display de 7 segmentos multiplexados, cuyos segementos se conectan a la salida del 74hc164, los colectores de los transistores manejan la pata comun de los display de la decenas y las unidades.

Este es el Codigo para el PIC: Codigo para el PIC

Espero les sirva. Visiten tambien mi canal de Youtube: MI CANAL

 

martes, 19 de noviembre de 2013

Circuito intermitente para carteles de led

Circuito intermitente para carteles de led

En esta entrada les voy a mostrar como armar un circuito intermitente para carteles de led, muy simple y de bajo costo, apto para los novatos de la electronica.
El circuito esta hecho con un ULN2003, un led parpadeante, un 7805 y un capacitor de 47uF.
Sin mas el circuito es este:
El capacitor esta puesto para prolongar el tiempo de encendido y se puede eliminar o cambiar por otro de distinto valor y experimentar los efectos. Se pueden agregar mas led parpadeantes y usar las siete salidas del ULN2003 y obtener mas canales.Yo lo use para armar un especie de pizarron led.



Espero que les sirva y comenten.



martes, 24 de septiembre de 2013

Voltimetro Con PIC 12F675 y LCD

Voltimetro Con PIC 12F675 y LCD

En esta entrada les propongo la construccion de un voltimetro digital de 0 a 30V usando un PIC12F675 y unos pocos componentes. La libreria para la escritura del display la encontre en Internet y la adapte para mi uso, solo usa 3 pines del PIC. El valor del voltaje lo mostramos en un LCD de 16x2. Para proteger la entrada del PIC de voltaje superior a 30V, les recomiendo poner un diodo Zener de 5V entre la entrada del PIC y masa, obviamente invertido. 

Proceso de Ajuste: Se debe sacar el PIC y alimentar el circuito, luego girar el preset para obtener poco menos de 5V a la entrada del PIC. Una vez hecho esto ya se puede usar en el rango de 0 a 30V. Si se detecta error grosero de lectura, ajustar el preset para obtener una lectura aproximada, tomando un multimetro como guia.

Video:
Lista de Materiales:

PIC 12F675
LCD 16X2
74LS164
RES 22K 1/4W
2 PRESET 5K
DIODO ZENER 5V
CAPACITOR 100nF 16V 

Archivos del Proyecto: Voltimetro
Espero Les guste y comenten y visiten  Mi canal de Youtube

martes, 3 de septiembre de 2013

Amplificador 40+40 w con LM4766

Amplificador 40+40 w con LM4766

Les traigo los datos para la contruccion de un amplificador estereo de 40+40 W basado en el integrado LM 4766 de National. El circuito es el del datasheet pero les traigo la PCB y demas datos, el circuito lleva una bobina en la salida que se hace con 20 vueltas de alambre 0.9 mm enrollado en el aire en un diametro de 6 mm. Aqui un video de la placa que arme yo.



 El disipador lo hice con un disipador de un procesador de CPU en desuso y  les puse un cooler de 12V. Para la fuente tienen que comprar un transformador de 20+20 V de alterma y unos 3A por canal.
Los archivos de la PCB estan en Protel 99.Espero les guste y comenten.