lunes, 23 de junio de 2014

Arduino - Motor Paso a Paso Bipolar

Motor Paso a Paso Bipolar

Codigo ejemplo:

 int Pin0 = 8;
 int Pin1 = 9;
 int Pin2 = 10;
 int Pin3 = 11;
 int _step = 0;
 int pases=0;
 boolean dir = false;// change the direction of the motor
 void setup()
 {
  pinMode(Pin0, OUTPUT); 
  pinMode(Pin1, OUTPUT); 
  pinMode(Pin2, OUTPUT); 
  pinMode(Pin3, OUTPUT); 
  Serial.begin(9600);
 }
   void loop()
 {
   for(pases=0;pases<4075;pases++){
     pas();
     delay(1);  // change this delay to control the speed of your stepper, delay to 100 you can see the signal LEDs blinking.
   }
   delay(500);
 }

 void pas()
 {
   switch(_step){
    case 0:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break; 
    case 1:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, HIGH);
    break; 
    case 2:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break; 
    case 3:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break; 
    case 4:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
    case 5:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
      case 6:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
    case 7:
      digitalWrite(Pin0, HIGH); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break; 
    default:
      digitalWrite(Pin0, LOW); 
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break; 
  }
  if(dir){     _step++; ;  }else{     _step--;   }
  if(_step>7){     _step=0;   }
  if(_step<0){     _step=7;   }
 }

miércoles, 18 de junio de 2014

Pickit 2 Clone

http://tecbolivia.com/index.php/articulos-y-tutoriales-microcontroladores/19-icsp-como-usar-qprogramacion-serial-en-circuitoq-con-microcontroladores-pic

https://sites.google.com/site/electronicadidacta/home

http://xpiolx.no-ip.org/v0/pickit2clone.html (Pickit2 clone 3,3-5v)

http://microembebidos.wordpress.com/2012/02/13/tutorial-pinguino-construye-tu-placa-pinguino-core-
pic18f4550/




lunes, 16 de junio de 2014

Ultrasonidos y PIC

http://blog.deinventos.com/medidor-de-distancia-por-ultrasonidos-con-pic16f886/

Medir de ultrasonidos

Adaptador Serial / PIC

http://www.pablin.com.ar/electron/circuito/mc/ttl232/index.htm

Conversor RS232 a TTL sin MAX232

Todos sabemos que a la hora de conectar un PIC a la PC utilizar el MAX232 es el paso mas directo y fácil. Sólo cinco capacitores y éste integrado estará funcionando bien. Pero tomando en cuenta que hoy por hoy un MAX232 puede salirnos incluso mas caro que el mismísimo PICmicro decidimos desarrollar una alternativa válida que lo reemplace.

El circuito de arriba utiliza la propia corriente del puerto COM de la PC para generar los símbolos del RS232. Los pines marcados como TxD, RxD y Gnd corresponden al conector RS232 de la PC (ver conexionado) mientras que los pines marcados como RD y TD van directamente a microcontrolador. Podemos observar el pinout de los transistores.
Este tipo de interface es muy vista en mouses o elementos de control de punteo en PC. Los puntos de alimentación son de 5V (los mismos que del micro).

Modul Bluetooth / PIC

Connexió del modul


Consultando la página de Microchip encontramos el datasheet del PIC (en este caso 16F866) que vamos a utilizar. El pin 18, que corresponde a la señal RC7, es el pin de recepción serie de la EUSART (RX), mientras que el pin 17 es el de transmisión (TX) y corresponde a RC6.
En el fichero de cabecera debe aparecer algo así:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
El programa devuelve el código recibido por el puerto serie en mayúsculas:
#include <main.h>
#include <stdio.h>
#int_RDA
void  RDA_isr(void)
{
   if (kbhit()) putc(toupper(getc()));
}
void main()
{
   setup_comparator(NC_NC_NC_NC);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   printf("Prueba de comunicación BT\n\rhttp://blog.deinventos.com\n\r");
   while(TRUE)
   {
   }
}
Compilamos el programa y lo grabamos en el PIC. Al alimentar el circuito, el led del HC06 parpadea indicando que no hay conexión, debemos establecer la conexión con el PC o el teléfono y el convertidor (normalmente “linvor”) y escribir la contraseña para emparejar (1234). Abrimos el emulador de terminal y al conectar la luz parpadeante se pondrá fija.
Si todo ha ido bien todo lo que escribamos en el terminal nos debe volver escrito en mayúsculas.