17 marzo, 2011

Generador de Tensión inversa

Búsqueda personalizada


     Algunas veces se precisa de tensión inversa partiendo de una tensión de alimentación positiva. La intensidad no es crítica ya que la mayoría de veces es para trabajar con amplificadores operacionales. Estos operacionales consumen microamperios.
     El siguiente circuito es capaz de ofrecer una intensidad de 20mA:
     En la simulación está conectado a la alimentación y se obtiene una intensidad superior. 



 Como siempre: No es tan difícil como parece.

Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.


-->

14 marzo, 2011

Tabla de conversión de porteros automáticos

Búsqueda personalizada

Tabla de equivalencias de porteros 

MODELO ABREPUERTAS MICRO COMUN ALTAVOZ ZUMBADOR BITONAL
ACET 5 10 2 7 9
AMPER F L N M E
AMPLIBOX Z R O T 1
ATEA 2 4 3 1 5
AUTA 10 3 4 7 12
AUTELCO P5 a 1 b 2
AXIL 8 2 6 1 4
BOGEN T 1 3 2 6
B.P.T. 2 1 4 5 3
CENTRAMATIC 4 2 1 3 5
CITESA 1 4 C 3 B
CITOFONIX 3 1 2 4 5
CITOVOX 5 10 9 7 T
COMELIT P1 3 4 2 1
COSESA R A + B Z
COSESA-TEF D A C B E
ELVOX 2 6 9 4 +
FARFISA 5 1 3 2 6
FECLO F A C B E
FAIVE 8 5 2 1 7
FERMAX CITY UNIVER. 1 2 3 6 4 5
FERMAX GONDOLA 4 1 3 2 V 6 5
FERMAX REKTO TF-4 P A C B E
FERMAX TF-1Z 1 2 3 6 4
FERMAX TN-Z 1 2 3 6 4
FRINGE 2 3 1 6 4 4
GAME P 2 3 1 Z
GIRO 2 3 1 6 4
GOLMAR X M A S N
GOLMAR C2 5 3 10 7 0
GOLMAR 11 5 3 4 12
GOLMAR T-600 T 1 3 2 6
GOLMAR T-2800 4 5 3 10 7
GUARDAL 5 1 3/7 2 6
HIRSCHMANN P 2 3 1 Z
INTALTEL 1 9 6 2 3
MICROVOX 3 1 2 4 5
MIGRIAVACCA A 3 5/6 1 7
ORTIGOSA 5 2 4 3 1
OSTELVI 9 2 6 1 7
PAGANI COMPAC T-71 Abr 1 0 2 3
PORMAT 4 3 2/5 1 v
RIPOLLES 3 1 8 2 4
SAFNAT 4 1 2 3 v
SAFNAT 6 8 10 4 11
SIEMENS 6 9 5 2 10
TAGRA 8 2 6 1 4
TEGUI GL 3 4 2 5 1
TEGUI HORIZONTAL ZUMB. 3 4 2 5 1
TEGUI HORIZONTAL LL. ELEC. 3 4 2 5 1
TELEVES 4 2 3 1 T
TERRANEO T1 1 3 2 6
TRANSIFON 1 5 6 7 1
TUNE 8 2 6 1 4
URMET 9 2 6 1 7
VEMEL 5 2 3 4 4



 Como siempre: No es tan difícil como parece.

Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.

10 marzo, 2011

El potenciómetro: El cortocircuito




 Como siempre: No es tan difícil como parece.

     Ha la hora de realizar los diseños en los que incluimos potenciómetros cometemos un error que en ningún lado nos enseñan y es crítico a la hora de las reparaciones y de posibles mantenimientos por parte del cliente.
     Si el potenciómetro se encuentra en el exterior (supongamos un variador de frecuencia y el potenciómetro en el panel del cuadro) La sustitución por parte del cliente es sencilla y el error fatal también. Otro caso es la prueba, en un futuro, de las conexiones del potenciómetro sin saber como iba conectado.
     Vamos a la práctica de un diseño simulado:


     Este es un circuito que se ve en el 99% de los diseños. A la hora de sustituir un potenciómetro normal la cosa es casi sencilla: cada terminal seguido del siguiente. La cosa cambia al usar un multivueltas. La confianza en nosotros mismos, no apuntar lo que desconectamos, nos lleva a la duda a la hora de  reconectar el potenciómetro.


     El esquema que llevan grabado es bastante confuso y puedes llegar a conectarlo mal.
     ¿Qué ocurre si al conectar provocamos un corto entre el 0V y +5V?
     Aquí es donde quería llegar. Puede llegar a pasar por el potenciometro la totalidad de intensidad y destruirlo. También podemos fastidiar el diseño que funcionaba tan bien o cualquier otra cosa.

     Un cortocircuito en toda regla.
     La solución más cómoda y sencilla es una Resistencia para limitar la intensidad.


     La elección del valor de la R limitadora tendrá un valor dependiendo del diseño realizado y el valor del potenciómetro. Si elegimos bien el valor las modificaciones en nuestro programa serán mínimas. Ahora bien: la garantía que podemos ofrecer de nuestro producto es máxima.

 Como siempre: No es tan difícil como parece.

Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.



01 marzo, 2011

TTL con mayor intensidad de salida



 Como siempre: No es tan difícil como parece.


     De todos es sabido que los TTL tienen a su salida 10 mA como máximo y los CMOS 1 mA. A partir de estas intensidades la tensión a su salida empieza a caer. Si se quiere excitar un MOC3041 al cual le hacen falta 15 mA lo tenemos crudo. Mucho menos si queremos activar un relé.
     Esto ocurre a nivel alto. Pero ¿qué ocurre a nivel bajo? La respuesta es sencilla: podemos activar incluso un relé ya que la resistencia interna del integrado es menor.
     Para aclarar esto realizamos un ejemplo:
     Conectamos dos relés con una R interna de 100 ohmios, por lo que le hace falta una intensidad de 50 mA para una excitación correcta, a dos puertas LS. Una para que excite a nivel alto y otra a nivel bajo.

     Como se trata de una Nand con sus entradas al mismo nivel hacen la función de inversor. Por tanto tendremos a sus salidas un nivel alto. Esto hace que el U1:B se encuentre a nivel alto. El relé RL2 debería activarse.

     Si observamos: la intensidad es de 45mA lo que debería excitar el relé pero la tensión ha caído a 0,32V debido a la resistencia interna del LS. Por tanto el relé no se activa.
     Ahora colocamos la entrada de los inversores a nivel alto para obtener una salida a nivel bajo:


     La intensidad para RL1 es parecida a la anterior pero la tensión en el relé TL1 es de 4,55. Lo que si excita el relé. Tan solo ha caído la tensión del transistor que lo pone a nivel bajo.

PRECAUCIÓN: Recordar que estos integrados no están preparados para trabajar con estas intensidades. Esto quiere decir que al aumentar significativamente la intensidad aumenta la potencia que tiene que disipar. Hay que llevar cuidado con la cantidad de relés que se activan al mismo tiempo. Cinco salidas al mismo tiempo seria 0,5A y eso es casi lo que soporta uno diseñado para esta función: el ULM2803 que son 8 salidas a colector abierto.


 Como siempre: No es tan difícil como parece.

Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.

-->

10 febrero, 2011

Proteus: Isis se cierra automáticamente






Búsqueda personalizada


 Como siempre: No es tan difícil como parece.


En http://bactering.blogspot.com.es/2015/06/tutoria-proteus8-isis-ares-instalacion.html
Tienes para bajarte la versión Proteus 8.3 Estable. No se cierra

     Al reabrir un esquema guardado con anterioridad el programa se cierra automáticamente. Esto es un gran problema ya que no deja modificar no hacer nada con un esquema que ha llevado horas de trabajo. Esto sucede en programas pirateados.
     Una solución es borrar una carpeta que se crea al guardar el circuito creado.
     Lo primero es hacer una copia de seguridad de la carpeta donde se guarda el esquema. Una vez puesta la copia de seguridad a buen recaudo procedemos borrando el archivo PWI de la carpeta donde esta el DSN. Es decir: La carpeta a borrar se encuentra donde tenemos guardado el esquema que nos da el problema.

23-02-2011 Este archivo se crea al simular un programa con microcontrolador generalmente. Una forma de no tener que ir borrando el archivo cada vez que se guarda y reabre es el siguiente:
     En la carpeta donde está el programa generamos un documento de texto con el mismo nombre que el circuito(terminación txt) y  luego lo guardamos como pwi.



Al guardarlo da el aviso de que el archivo ya existe y si desemanos reemplazarlo. Le decimos que si.


Cerrramos y seleccionamos el archivo creado, boton derecho y porpiedades. En sus  propiedades activamos la casilla de "sólo lectura".



 Con esto ya apodemos abrir, simular, cerrar, reabrir... las veces que queramos sin problemas.



 Como siempre: No es tan difícil como parece.

Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.

25 enero, 2011

Arranque del módulo Telit

          Esta es una forma sencilla de arrancar el módulo y ha de quedar claro que las variables y llamadas a otros subprogramas puedem quedar en otro lugar. Es un ejemplo que se puede seguir para la puesta en marcha.
          Si se desea el proyecto entero hay que pedirlo al correo electrónico o mediante un comentario. Este procedimiento se corresponde al esquema presentado en el enlace.

>>- - - - - - --
// arranque.c Arranca el módulo Telit
// SE inicia enviando un AT y tiene que responder ok.
void arranca(){
     do {
          inicbuff2(); // Borro buffer.
          puerto_b= 0;
          rcvchar=0x00; // último caracter recibido
          Rxnum=0x00; // Identifica la cantidad de bytes recibidos
          TimerCero=0x00;
          Timer_=0x00; //Variable de tiempo a temporizar en 10miliseg
          Retornos=0x00; //CAntidad de retornos a contar
          VarRetornos=0x00; //CAntidad de retornos a contar
          Desplaza=0x00; //cantidad de puestos que ha de desplazar para leer
          flagcommand=0; // Flag para indicar comando disponible
          flagOK=1;
          flagPrimero=0; //Flag de primer \n
          flagATOK = 1; //Flag de confirmación de interpretación correcta.
          repeat=1; //Repetir la función que se está ejecutando
          NoAutorizado= 1; //Flag de control de telefonos autorizados
// EstadoAlarma=0; //Estado de alarma activa al inicio

          output_high(PIN_C1); //Activa el reset
          delay_ms(610);
          output_low(PIN_C1); //desActiva el reset
          output_high(PIN_C0); //Activa el reset
          delay_ms(1110);
          output_low(PIN_C0); //desActiva el reset
          delay_ms(300); //Fin del reset
//_________________________________
          cargar();
          VarRetornos=2; // Espera la llegada del OK
          Desplaza = 0x07; //posiciona el la O de ok
          printf ("ATE0\r"); //1 Comando de no Eco (con cero al final)
          TempRecibe(300); //activa la temporización en la recepción
          while ((flagATOK) && (flagOK)) ; //Fin de recepción
          procesa();
          if (flagATOK == 0){//1
                    delay_ms(200); //Fin del reset
                    cargar();
                    VarRetornos=2; // Espera la llegada del OK
                    Desplaza = 0x02; //posiciona el la O de ok
                    printf ("AT+CMEE=1\r"); //2 Comando PARA DEVOLUCION DE ERRORES
                    TempRecibe(550); //activa la temporización en la recepción
                    while (flagATOK && flagOK) ; //Fin de recepción
                    procesa();
                    if (flagATOK == 0){//2
                              delay_ms(100); //Fin del reset
                              cargar();
                              VarRetornos=2; // Espera la llegada del OK
                              Desplaza = 0x02; //posiciona el la O de ok
                              printf ("AT+IPR=9600\r"); //3 Comando PARA DEVOLUCION DE ERRORES
                              TempRecibe(2020); //activa la temporización en la recepción
                              while (flagATOK && flagOK) ; //Fin de recepción
                              procesa();
                              if (flagATOK == 0){//3
                                        delay_ms(1000); //Fin del reset
                                        cargar();
                                        VarRetornos=2; // (4)Espera la llegada del OK
                                        Desplaza = 0x02; //posiciona el la O de ok
                                        TempRecibe(2020); //activa la temporización en la recepción
                                        printf ("AT+CPIN\r"); //5 Comando PARA DEVOLUCION DE ERRORES
                                        while (flagATOK && flagOK) ; //Fin de recepción
                                        procesa();
                                        if (flagATOK == 0){//4
                                                  output_high(PIN_B4);
                                                  delay_ms(14000); //Tiempo para que conecte con repetidor
                                                  output_low(PIN_B4);
                                                  do{
                                                            delay_ms(1010); //Fin del reset
                                                            cargar();
                                                            VarRetornos=2; // Espera la llegada del OK
                                                            Desplaza = 0x02; //posiciona el la O de ok
                                                            printf ("AT+CREG\r"); //Comando ESTADO CONEXION
                                                            TempRecibe(2500); //activa la temporización en la recepción
                                                            while (flagATOK && flagOK) ; //Fin de recepción
                                                            procesa();
                                                  }while(repeat);
                                                  delay_ms(500); //Fin del reset
                                                  if (flagATOK == 0){//5
                                                            cargar();
                                                            VarRetornos=4; // Espera la llegada del OK
                                                            Desplaza = 0x02; //posiciona el la O de ok
                                                            printf ("AT+CSQ\r"); //Comando CANTIDAD DE SEÑAL
                                                            TempRecibe(550); //activa la temporización en la recepción
                                                            while (flagATOK && flagOK) ; //Fin de recepción
                                                            procesa();
                                                            delay_ms(500); //Fin del reset
                                                            if (flagATOK == 0){//6
                                                                      cargar();
                                                                      VarRetornos=2; // Espera la llegada del OK
                                                                      Desplaza = 0x02; //posiciona el la O de ok
                                                                      printf ("AT+CMGF=1\r"); //Comando MODO TEXTO
                                                                      TempRecibe(550); //activa la temporización en la recepción
                                                                      while (flagATOK && flagOK) ; //Fin de recepción
                                                                      procesa();
                                                                      delay_ms(500); //Fin del reset
                                                                      if (flagATOK == 0){//7
                                                                                cargar();
                                                                                VarRetornos=2; // Espera la llegada del OK
                                                                                Desplaza = 0x02; //posiciona el la O de ok
                                                                                printf ("AT+CLIP=1\r"); //Comando MODO TEXTO
                                                                                TempRecibe(20000); //activa la temporización en la recepción
                                                                                while (flagATOK && flagOK) ; //Fin de recepción
                                                                                procesa();
                                                                                delay_ms(500); //Fin del reset delay_ms(1201); //Fin del reset
                                                                                if (flagATOK == 0){//8
                                                                                          cargar();
                                                                                          VarRetornos=2; // Espera la llegada del OK
                                                                                          Desplaza = 0x02; //posiciona el la O de ok
                                                                                          printf ("AT+CNMI=1,1,0,0,0\r"); //Configura el SMS
                                                                                          // TempRecibe(5050); //activa la temporización en la recepción
                                                                                          while (flagATOK) ; //Fin de recepción
                                                                                          procesa();
                                                                                } //8 /* */
                                                                      } //7
                                                            } //6
                                                  } //5
                                        } //4
                              } //3
                    } //2
          } //1

// } //O
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
          if (flagATOK == 0) {
                    cargar();
                    VarRetornos=4; // Espera la llegada del OK
                    Desplaza = 0x02; //posiciona el la O de ok
                    //Lo deja preparado para la recepción
                    repeat = 0;
                    output_high(PIN_B7);
          }
          else {
                    repeat = 1;
                    output_high(PIN_B6);
          }
          if( EstadoAlarma==1)
                    output_high(PIN_B4);
                    delay_ms(2000);
          // output_low(PIN_B4);
          inicbuff2();
          }while (repeat); //Secuencia de repeticion constante
} //Fin arranca
//_________________________________________________________
void cargar(void){
          output_high(PIN_B3); //Activa Transmision
          inicbuff2(); // Borro buffer.
          flagPrimero=0 ;
          flagOK = 1;
          flagATOK = 1;
          Rxnum =0 ; //Contador de entrada de bytes
          repeat= 1;
          Retornos=0;
          fagTiempo=1;
          rcvchar=0x00;
          TimerCero=0x00;
          Timer_=0x00; //Variable de tiempo a temporizar en 10miliseg
}
// VarRetornos=0x00; //CAntidad de retornos a contar
// NoAutorizado= 1; //Flag de control de telefonos autorizados
// EstadoAlarma=0; //Estado de alarma activa al inicio
//_______Activa temporización en transmisión______________________
void TempRecibe(long Temp){
          enable_interrupts(int_rtcc);
          disable_interrupts(int_rtcc);; // Habilita Interrupción RDA
          output_low(PIN_B3); //desactiva transmision
          Timer_ = Temp;
          set_rtcc(0); /* Se inicializa el timer a cero */
          enable_interrupts(int_rtcc); // Habilita Interrupción RDA
          flagOK=1;
          fagTiempo=1;
}
//________________________________________________________
void inicbuff2(void){ // Inicia a \0 cbuff -------------------
          int i;
          for(i=0;i
                    cbuff[i]=0x00; // caracteres en el buffer
                    }
          xbuff=0x00; // Inicializo el indice de siguiente
          // caracter
}
//________Identifica si hay o no que enviar el PIN
//_____________________ Tratamiento de errores____________________
void errores (void){
          int i = 15; // situta puntero en el numero de averia
          // disable_interrupts(int_rtcc);;
          switch(cbuff[i]) {
          case '0': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x00;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '1': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x01;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '2': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x02;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '3': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x03;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '4': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x04;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '5': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x05;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '6': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x06;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          case '7': { //Comprueba si el primer valor recibido es sincronizacion
          puerto_b=0x07;
          output_high(PIN_B3);
          delay_ms(500);
          // bloqueo();
          }
          default:flagATOK =1; //error en la transmision
          }
}
//__________ Comprueba si hay señal suficiente para ejecutar el proceso
void senyal (){
          int i= 8; // situta puntero al inicio de la averia
          disable_interrupts(int_rtcc);;
          if ((cbuff[i]>='1')&& (cbuff[i]<='3')&& (cbuff[(i+1)]>='0')&& (cbuff[(i+1)]<='9' )) {
                    flagATOK = 0;
                    }else {
                    flagATOK =1;
                    puerto_b= 0xE0;
                    bloqueo ();
          }
}
//__ Comprueba el estado de la conexion
void conection (){
          int i= 11; // situta puntero al inicio
          disable_interrupts(int_rtcc);;
          output_high(PIN_B7);
          delay_ms(20); // espera la llegada del OK
          switch(cbuff[i]) {
                    case ('0'): { //Comprueba si el primer
                    repeat = 1;
                    } break;
                    case ('1'): { //Comprueba si el primer
                    repeat = 0;
                    } break;
                    case ('2'): { //Comprueba si el primer
                    repeat = 1;
                    } break;
                    default:{
          flagATOK =1; //error en la transmision
          repeat = 1 ; //sale del bucle al tener un error seguramente.
          puerto_b= 0xE0;
          bloqueo();
          }
          }
}
//_____________________________________________________________
void procesa(){
          int i ;
          i= Desplaza;
          disable_interrupts(int_rtcc);; // Habilita Interrupción RDA
          if (flagOK==1){//PP
                    // disable_interrupts(int_rtcc);; // Habilita Interrupción RDA
                    if (cbuff[2]!= '+'){// 1
                              switch(cbuff[i]){
                              case 'O': { //Comprueba si el primer valor recibido es sincronizacion
                              flagATOK =0;
                              } break;
                              case 'R': { // RING Comprueba sI ES UNA LLAMADA
                              delay_ms(500);
                              llamada ();
                              } break;
                              default:flagATOK =1; //error en la transmision
                   }
          }//1
          else{ // sIGNIFICA QUE HA LLEGADO UN + ***************************
                    i= 4; // situta puntero al inicio de la averia
                    switch(cbuff[i]) {
                    case 'P': { //CPI Comprueba si el primer valor recibido es sincronizacion
                    // Enviar a tratamiento del pin
                    verPin ();
                    } break;
                    case 'M': { //CME Comprueba si el primer valor recibido es sincronizacion
                    // Enviara a tratamiento de error
                    // delay_ms(50);
                    errores();
                    } break;
                    case 'S': { //CSQ Comprueba si el primer valor recibido es sincronizacion
                    // Enviara a tratamiento de señal
                    senyal ();
                    } break;
                    case 'R' : { //CRE Comprueba si el primer valor recibido es sincronizacion
                    // Enviara a tratamiento de señal
                    conection ();
                    } break;
                    default:flagATOK =1; //error en la transmision
                    }
          }
          }//PP
}
//__________________________________________________
void verPin(void){
          int i= 9; //Situa al inicio de la palabra P ó S
          disable_interrupts(int_rtcc);;
          if (cbuff[i]== 'R'){ //Significa que es Ready por tanto vuelve sin más
                    flagATOK = 0; //No hace falta hacer nada (no envia pin)
                    delay_ms(700); //Espera a recibir el ok
          }
          else {
                    i=14;
                    delay_ms(700); //Espera a recibir el ok
                    if (cbuff[i]== 'I'){ //Tiene que enviar el Pin
                    cargar(); //Envia el Pin
                    VarRetornos=2; // Espera la llegada del OK
                    Desplaza = 0x02; //posiciona el la O de ok
                    printf ("AT+CPIN=4340\r"); //Comando ENVIA EL CODIGO PIN**
                    TempRecibe(2010); //activa la temporización en la recepción
                    while (flagATOK && flagOK){ //Fin de recepción
          } //Espera a que termine de recibir
          // disable_interrupts(int_rtcc);; // Habilita Interrupción RDA
          i=2;
          if (cbuff[i]== 'O') //Si ha llegado el Ok continua
                    flagATOK = 0; //hA SIDO CORRECTO
                    else flagATOK = 1; // Algo ha fallado en la recpecion del 0k final.
          }
          else {
                    puerto_b= 0xF0; //precisa del PUKV???
                    bloqueo();
          }
}
}