Coin Farm ( Busco afiliados para jugar)

Mostrando entradas con la etiqueta MecatronivaVGB. Mostrar todas las entradas
Mostrando entradas con la etiqueta MecatronivaVGB. Mostrar todas las entradas

lunes, 9 de mayo de 2016

Timbre automatico

Para los interesados en el timbre automático que estoy haciendo les dejo el código para la placa Arduino Uno (lo probe con la Mega y la Nano).Por el pin 13 comando una placa Relay.
Para ver su funcionamiento hago un reporte serial
Por cualquier información pueden escribirme a olafvgb61@gmail.com

/******************************************************************
* Autor  : Olaf Albrecht                                          *
* Release             : 2.0                                       *
* Soft.Date           : 20 junio, 2015                            *
* Fecha Nuevo Release : 13 mayo , 2016                            *
* Comments            : Compara con el reloj la hora y minutos    *
*                       y activa un Relay para disparar un timbre *
*                                                                 *
* Hardware Used    : - Arduino Uno R-3 module                     *
*                    - Display LCD Arduino Compatible (LCD 16x2)  *
*                    - Display (Hitachi HD44780 driver).          *
*                    - RTC Reloj base de tiempo                   *
*******************************************************************
*/
#include <Wire.h>
#include <LiquidCrystal.h>
#include "RTClib.h"
RTC_DS1307 RTC;
LiquidCrystal lcd(8, 7, 12, 11, 10,9);
int dia;
int seg;
int HORMIL;
int thisvecR;

int contrecreo[]={755,800,840,920,930,935,1010,1050,1100,1140,1220,1300,1335,1340,1455,1500,1540};
//int contrecreo[]={1905,1908,1910,1912,1915,1930,1920,1935,1940,1945,1950,1955,2000,2005,2010,2015,2020};
int cnttiporecreo[]={
  1,3,1,1,2,3,1,1,3,1,1,1,2,2,1,2,1};
// 1  R corto - 2 R largo - 3  R L&Repet
int cntvec1=17;


void setup () {
  Wire.begin(); // Inicio el puerto I2C
  RTC.begin(); // Inicio la comunicación con el RTC
  //RTC.adjust(DateTime(2016,4,4,11,49,00)); // Establece la fecha y hora (Comentar una vez establecida la hora)
  Serial.begin(9600); // Establece la velocidad de datos del puerto serie
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("Timbre IPEA 238");
  pinMode(13, OUTPUT);
}

void loop(){
  ////*
  DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC



  delay(1000); // La información se actualiza cada 1 seg.
  HORMIL=100*(now.hour())+ now.minute();

  seg=now.second();
  dia=now.dayOfWeek();
//  Serial.println();
// Serial.print(now.second(), DEC);
  // Esta rutina detecta la hora y acomoda el recreo
   if(thisvecR=0)
   {
   for (int thatvecR = 0; thatvecR < cntvec1; thatvecR++)
   {
   if(HORMIL==contrecreo[thatvecR])
   {
   thisvecR=thatvecR;
 
   }
   }
   }

  // Lee el vector secuencia horarios timbre
  if(dia>0 && dia<6){
    lcd.setCursor(0,1);
  lcd.print(now.day(), DEC); // Dia
  lcd.print('/');
  lcd.print(now.month(), DEC); // Mes
  lcd.print('/');
  lcd.print(now.year(), DEC); // Año
  lcd.print(' ');
  if (now.hour() < 10){
      lcd.print("0");
  }
  lcd.print(now.hour(), DEC); // Horas
  lcd.print(':');
  if (now.minute() < 10){
      lcd.print("0");
  }
  lcd.print(now.minute(), DEC); // Minutos
 
 //  COMPARO RELOJ CON EL VECTOR
  for (thisvecR = 0; thisvecR < cntvec1; thisvecR++)
  {
    if(HORMIL==contrecreo[thisvecR] && seg<10)
    {

      switch (cnttiporecreo[thisvecR])
      {
      case 1:
        Serial.println("Timbre Corto ");
        timbre_corto();

        break;
      case 2:
        Serial.println("Timbre Largo");
        timbre_largo();

        break;
      case 3:
        Serial.println("Timbre con Repeticion");
        timbre_corto();
        timbre_largo();

        break;
      }

      if(thisvecR == cntvec1)   // REPORTE SERIAL
      {
        thisvecR = 0;
      }
      Serial.print(now.year(), DEC); // Año
      Serial.print('/');
      Serial.print(now.month(), DEC); // Mes
      Serial.print('/');
      Serial.print(now.day(), DEC); // Dia
      Serial.print(' ');
      Serial.print(now.hour(), DEC); // Horas
      Serial.print(':');
      Serial.print(now.minute(), DEC); // Minutos
      Serial.print(':');
      Serial.print(now.second(), DEC); // Segundos
      Serial.print("  DS:");
      Serial.print(now.dayOfWeek(), DEC);
      Serial.print("  HM:");
      Serial.print(HORMIL);
      Serial.print(" contrecreo:");
      Serial.print(contrecreo[thisvecR]);
      Serial.print("  cntvec1:");
      Serial.print(thisvecR);
      Serial.println();
      Serial.print("-------------------------------------------------------------");
      Serial.println();
    }
  }    
   }
 else
 {
 lcd.setCursor(0,0);
 lcd.scrollDisplayLeft();
 lcd.print("DESCONECTADO F/S");
 lcd.setCursor(0,1);
 lcd.print("Olaf Tc:15406600");
 digitalWrite(13, LOW);
 delay(150);
 }
}
int timbre_corto()
{

  digitalWrite(13, HIGH);
  delay(2000);
  digitalWrite(13, LOW);
  delay(4000);

}
int timbre_largo()
{

  digitalWrite(13, HIGH);
  delay(4000);
  digitalWrite(13, LOW);
  delay(2000);

}
// funcion reporte serial a PC





jueves, 28 de enero de 2016

Potencia PAP CNC II

Mas Trabajo en el Taller nuevo (por lo ordenado)

Segunda version del Control para controlar 3 motores paso a paso con TB6560 de toshiba (ejes X,Y,Z).

Estos funcionan con el puerto paralelo de una PC con Linux CNC.

Para ver el funcionamiento del mismo se me ocurrio hacer un tester con un arduino uno como control disparador pera los tres ejes usando un Lcdshield que tiene un teclado.










Aqui les paso el codigo IDE para la Placa Arduino Uno que utilice

// TesterCNC Output de 1 a 6 y estas se ajustan a la entrada de la placa TB6560AHQ
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int lcd_key =0;
int adc_key_in =0;
int temp=0;

#define btnRIGHT    0
#define btnUP          1
#define btnDOWN    2
#define btnLEFT      3
#define btnSELECT  4
#define btnNONE     5

int read_LCD_buttons();

int read_LCD_buttons()//Estaesunfunciongenerdapracomandrlosbotones

  {
   adc_key_in = analogRead(0);
  if (adc_key_in>900)   return btnNONE;
  if(adc_key_in<50)      return btnRIGHT;
  if(adc_key_in<250)    return btnUP;
  if(adc_key_in<450)    return btnDOWN;
  if(adc_key_in<650)    return btnLEFT;
  if(adc_key_in<850)    return btnSELECT;
  return btnNONE;

  }

void setup()

{



 

  lcd.begin(16, 2);

  lcd.setCursor(0,0);

  lcd.print("Probador CNC");

  pinMode(6,OUTPUT);  // eje z

  pinMode(5,OUTPUT);

  pinMode(4,OUTPUT);  // eje y

  pinMode(3,OUTPUT);

  pinMode(2,OUTPUT);  //eje x

  pinMode(1,OUTPUT);



}



void loop()

{
     
             lcd.setCursor(0,0);
              lcd.print("Mueve eje :");
              lcd.setCursor(0,1);
              lcd_key=read_LCD_buttons();

 

                  if (lcd_key == btnRIGHT)

                          {

                          lcd.print("X Derecha");

                          digitalWrite(1, HIGH);

                          pulso();

                          digitalWrite(1, LOW);

                          }

                  if (lcd_key == btnLEFT)

                          {

                          lcd.print("X Isquierda");

                          digitalWrite(2, HIGH);

                          pulso();

                          digitalWrite(2, LOW);

                          }

                  if (lcd_key == btnUP)

                          {

                          lcd.print("Y Derecha ");

                          digitalWrite(3, HIGH);

                          pulso();

                          digitalWrite(3, LOW);

                          }

               

                  if (lcd_key == btnDOWN)

                          {

                          lcd.print("Y Izquierda ");

                          digitalWrite(4, HIGH);

                          pulso();

                          digitalWrite(4, LOW);

                          }

                  if (lcd_key == btnSELECT)

                          {

                          lcd.print("Subir Z");

                          digitalWrite(5, HIGH);

                          pulso();

                          digitalWrite(5, LOW);

                          }      

                  if (lcd_key == btnNONE)

                          {                    

                          lcd.clear();

                          digitalWrite(6, LOW);// apago salidas



                          pulso();

                          }

                          digitalWrite(1, HIGH);

                          pulso();

                          digitalWrite(1, LOW);      

                     

}

int pulso()//funcioncontroldepulso

{

  delay(50);



}

jueves, 14 de enero de 2016

Mecatronica VGB y Arduino LCD Keypad shield

Probando Con Arduino UNO y el Modulo LCD Keypad Shield y con una codificacion de prueba usando el IDE de arduino.
Les cuento que estoy usando linux lubuntu y este video esta hecho con Guvcvideo y realmente quede satisfecho por la compra y los resultados.




Para compartir les paso el codigo que esta para hacer modificaciones e ir estudiando


#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int lcd_key =0;
int adc_key_in =0;
int temp=0;

#define btnRIGHT    0
#define btnUP          1
#define btnDOWN    2
#define btnLEFT      3
#define btnSELECT  4
#define btnNONE     5

int read_LCD_buttons();

int read_LCD_buttons()
  { adc_key_in = analogRead(0);
  if (adc_key_in>900)   return btnNONE;
  if(adc_key_in<50)      return btnRIGHT;
  if(adc_key_in<250)    return btnUP;
  if(adc_key_in<450)    return btnDOWN;
  if(adc_key_in<650)    return btnLEFT;
  if(adc_key_in<850)    return btnSELECT;
  
  return btnNONE;
  }
  
void setup() 
{
   
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("MECATRONICA VGB");
}

void loop()
{
  temp=(millis()/1000);
    
    
    //lcd.print(millis()/1000);
    if(temp<10)
            {
              lcd.setCursor(0, 1);
              lcd.print("Esp 1 min");
              lcd.setCursor(10, 1);
              lcd.print(temp);
              lcd.setCursor(13, 1);
              lcd.print("seg");
            }
            else
            {
              
              lcd.setCursor(0, 0);
              lcd.print("Probar Teclado ");
             
              lcd.setCursor(5,1);
              
              lcd_key=read_LCD_buttons();
   
                  if (lcd_key == btnRIGHT)
                          lcd.print("1");
                  if (lcd_key == btnLEFT)
                          lcd.print("2");
                  if (lcd_key == btnUP)
                          lcd.print("3");
                  if (lcd_key == btnSELECT)
                          lcd.print("Se");
                  if (lcd_key == btnDOWN)
                          lcd.print("4");
                  if (lcd_key == btnNONE)
                      {
                          lcd.print(" Esperando datos ");
                          //lcd.clear();
                          for ( int positionCounter =0; positionCounter <13; positionCounter ++)
                              {
                               lcd.scrollDisplayLeft();
                               delay(500);
                               }
                      }
                      else
                      {
                         lcd.setCursor(0,1);
                         lcd.print("Prog:");
                      }
            }
    
    

}

lunes, 21 de septiembre de 2015

Mas Trabajo para el MiniCNC

Estoy haciendo un trabajo que me aventure hacerlo de la siguiente manera.
Con un soft que se llama Fritzing ( de origen Alemán y opensourse) desarrolle un PCB muy simple (para no usar otros mas complejos como Eagle o Kicad).Exporte a un pagina online el gerber a otro soft que se llama rapid_pcb  y con el obtuve el código G para mi maquina (que en este momento la tengo haciendo el trabajo). hasta ahora no tengo inconvenientes luego le paso las fotos como quedo el trabajo.
aqui va una fotos de los pasos. si necesitan mas detalles e información solo escriban a olafvgb61@gmail.com




sábado, 16 de mayo de 2015

MINICNC TERMINADO

Por fin termine el Minicnc y dedicarme a hacer pruebas.
La idea es probar los diferentes sistemas y aplicarlos al MiniCNC atraves de EMC2 que corre bajo Linux.Yo me baje un Ubuntu CNC y es gratuito  y realmente lo pude poner apunto.


Una imagen de la primera prueba con mi maquina que le adapte un router (tornito) sobre madera de pino .


y Un video haciendo el trabajo y una foto del Soft de Control EMC2


El Gabinete Ya lo mostré anteriormente solo que ya esta serrado  y esta fabricado en un 80% con material reciclado. La alimentación es un fuente Atx,el gabinete  era una vieja Pc  horinzontal  SABRE y las fichas que envio a los PAP son de viejos teclados, como solo uso cuatro cables pap los PAP bidireccionales
me vinieron al pelo.Para ello fabrique una plaqueta que tome prestados unas fichas DIN de tres viejos mather 386.Lo importante es que FUNCIONA.

Saludos para las pesonas que ven este blog

 Como mañana es mi cumpleaños 63 y quería compartirles con orgullo que pertenezco a esa clase de personas que tuvimos que actualizarnos ant...