sábado, 28 de agosto de 2010

Programador PICKIT 2 full SMD

Estoy trabajando en un grabador full smd para fabricación en masa, que es un pickit 2 clon.
Lamentablemente no me a funcionado este prototipo por un error mio de diseño que tiene que ver con la orientación de los transistores npn, lo solucionare pronto ya que es cosa de cambiar la posiciones de unas pistas y de los transistores, pero tendré que hacer toda la placa otra vez (planchar, ácido, hoyos, etc) y me da una lata del demonio.
Espero que les guste

Este es el lado de los componentes, todo esta en este lado el cobre de las pistas, los componentes smd y no smd.




Y el lado donde deberían estar los componentes no superficiales.


Decidí poner todo en una cara para proteger todo, pondré las bases para poner los pic (dip18, dip28 y dip40) en otra placa obre los componentes, separado por un espaciador de 5 mm. Así se podrá despreocupar el usuario de que se levanten pistas o cosas similares. La placa mide 100 x 100 mm para no tener que cortar nada al ser fabricada y así abaratar costos.



viernes, 23 de julio de 2010

El auto que quería ser ratón






El circuito para los sensores de distancia
ojo que no use los lm741 para amplificar la señal de los sensores de distancia. En vez de eso ocupe 358.














el codigo escrito en ccs:

#include <16F84A.h>

#FUSES WDT                      //Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay(clock=4000000)

front()
{
output_a(0b011);
delay_ms(100);
}

rear()
{
output_a(0b110);
delay_ms(100);
}

stop()
{
output_a(0x00);
delay_ms(100);
}

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_wdt(WDT_36MS);
   int8  portb;
   // TODO: USER CODE!!
   while(1)
      {
      portb = input_b();     
      switch (portb)
         {
         case 0b10000000:     //escapar 
         front();
         break;
         case 0b01000000:
         rear();
         break;
         case 0b00100000:
         front();
         break;
         default:
         stop();
         break;
         }
      }    
}

miércoles, 7 de julio de 2010

Contro de Motor con Acelerometro

La idea era poder controlar el sentido de giro y las velocidad de un motor dc. El motor que ocupe es de un auto radio controlado, marca radioshack que mi padre me regalo hace unos 10 años atrás.
Al poner el acelerometro en posición horizontal no hay giro del motor, al variar el ángulo hacia adelante acelera variando el pwm. Y si se varía el ángulo hacia atrás comienza a girar hacia el toro lado, pero a máxima velocidad. Con mas ángulo hacia atrás menos velocidad.



Ahorra comenzare con otro sensor que es uno de flexión para hacer un variado de pwm, pero el sensor estará montado en un dedo, para simular un acelerador.

martes, 22 de junio de 2010

martes, 15 de junio de 2010

Velocidad variable de un motor paso a paso con un pic16f877a



Al iniciar el pic, el tiempo entre paso y paso es de 10 mseg. Puedes presionar un botón para que el pap gire hacia un lado o el otro. Los datos de giro son mostrador por la pantalla lcd, sentido de giro y tiempo de paso a paso.
Como en el proyecto del voltímetro con un pic, e ocupado un ADC para obtener el valor del potencio metro. Al presionar un tercer botón se obtiene el valor del potencio metro. Este valor se ocupa como el tiempo entre paso y paso, en mili segundos.
Con esto puedo variar la velocidad del motor paso a paso, el tiempo máximo es de 52 mseg y el mínimo es de 1 mseg. Cuando el tiempo es de 1 mseg el motor no pude girar ya que el giro de los campos magnéticos es mas rápido que el giro de el rotor, por lo tanto el rotor no lograr engancharse con los campos magnéticos.


Voltimetro con pic16f876a



La idea era realizar un proyecto entretenido para mostrar el funcionamiento de mi entrenador.
Ocupe el conversor ADC para muestrear el valor del potenciometro, el  cual esta conectado entre +vcc y gnd, el punto medio va al ADC. Al estar conectado el potenciometro de esta forma se obtiene un divisor de tensión variable. Los valores que entrega el ADC tienen relación con el voltage, atreves de una simple ecuación se obtiene el voltage, esta se logra multiplicando el valor de adc por el voltage de referencia que seria el voltage de la fuente, es decir, +5 volt. El resultado de esta multiplicación se divide por el valor máximo de valores del adc.
El ADC puede tener varios valores según como se configure:

  • 8 bits el numero máximo es de 256
  • 10 bit el numero máximo es de 1024 bits.
En mi caso lo configure con 10 bits, mientras mas bits tenga su conversor mas valores podra tomar, pero más  información necesita.

Este es el esquemático en proteus:


CNC primitivo



Mi primer proyecto pic.
La idea de este proyecto es hacer un CNC primitivo para luego realizar el CNC como tal, para hacer perforaciones en PCB, ya que realizar los hoyos en los PCB's es muy trabajoso y requiere mucho tiempo.

Este proyecto se realiso para una asignatura de mi carrera. La realize con dos compañeros mas: Pablo Leiba y Cesar Salas. Gracias a ellos se pudo concretar este pequeño trabajo.

El proyecto consiste en tres micro-controladores del fabricante ultra archi conocido MICROCHIP. Los tres son pic16f84a, ya que en este ramo solo se ocuparon estos pic y por ende solo teníamos pericia en ellos.
El sistema de consistía en dos puentes H L298b los cuales amplificaban las señales de dos pic. Estos dos pic tienen dos entradas cada uno, una para hacer girar en un sentido y la otra entrada es para hacer girar hacia el otro lado. Por ende podemos manejar dos motores pap en dos modos (según la programación que realizamos) en este caso se opto por el modo Half Step, que son 8 combinaciones o 8 pasos. Se opto por este modo ya que el pap tenia mayor precisión.
El tercer pic es para almacenar las combinaciones de movimientos, las cuales al ser realizadas se genera una figura en el papel. Estas combinaciones se realizan con una botonera o una interface que viene del pc por puerto paralelo.
Todo se programo en assembler.
Espero que sea util para ustedes.

Recuerden ser originales en sus proyectos y no al "copiar pegar"