ProyectosOlafVGB: 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 Nan...
Les comento que el timbre ya hace dos mese que esta funcionando si inconvenientes si quieren aplicarlo no tengo inconvenientes de darle una mano si no se entiende algo. pónganse en en contacto olaf
«Nunca sabes de lo que eres capaz, hasta que lo intentas» Aprende a construir de forma sostenible y creativa con proyectosolaf.blogspot.com. Descubre proyectos con materiales reciclados, Arduino, hidroponía, bobinado, transformadores, FreeCAD y más. ¡Empieza a construir hoy mismo!
martes, 19 de julio de 2016
ProyectosOlafVGB: Controlador Pap
ProyectosOlafVGB: Controlador Pap: Para un proyecto para controlar un motor paso a paso Este controlador esta siendo diseñado para poder trabajar con motores paso a paso ha... (primera parte)
Se muestra el codigo que le aplico al arduino uno
Se muestra el codigo que le aplico al arduino uno
lunes, 18 de julio de 2016
Controlador Pap
Para un proyecto para controlar un motor paso a paso
Este controlador esta siendo diseñado para poder trabajar con motores paso a paso hasta 3 amp y una tensión de 35 volt (siendo recomendados unos 24v. Tiene un LCD para ver el Menú del Programa y todo esta manejado con un arduino uno, keyLcd shield y un TB6560 de toshiba un driver pap que lo utilizo en todos mis proyectos y con éxito. Vean la versión I y II en estos vídeos se muestra la ubicación de los componentes
Este controlador esta siendo diseñado para poder trabajar con motores paso a paso hasta 3 amp y una tensión de 35 volt (siendo recomendados unos 24v. Tiene un LCD para ver el Menú del Programa y todo esta manejado con un arduino uno, keyLcd shield y un TB6560 de toshiba un driver pap que lo utilizo en todos mis proyectos y con éxito. Vean la versión I y II en estos vídeos se muestra la ubicación de los componentes
El programa que estoy utilizando
/*
***********************************************************************************************
* *
* > Control de MOTOR a Pasos en Secuencia Normal *
* *
* *
* > Programar la marcha de Pasos y Num de Giros *
* *
* > Materiales + Placa arduino uno *
* + Teclado Matris de 4x4 *
* + Display LCD1602 *
* + CI ULN2003 *
* + Fuente de alimentacion externa(transformador) *
* *
* > Programador Olaf Albrecht *
* *
***********************************************************************************************
*/
#include <LiquidCrystal.h>
#include <Keypad.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Variables del motor pap
int delayTime = 150; // DelayTime determina la espera entre uno y otro paso
int delayTime1 = 0; // DelayTime1 determina la velocidad de giro entre uno y otro paso
int count = 0;
int sumex=0;
int paso=0;
int vuelt=0;
int veloc=0;
// Variable del Teclado
int lcd_key =0;
int adc_key_in =0;
int key=0;
int ajuste=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()
{
pinMode(13,OUTPUT); // Out motor pap paso
pinMode(12,OUTPUT); // Direccion
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("PaPVGB CONTROL");
}
void loop()
{
lcd_key=read_LCD_buttons();
switch(lcd_key)
{
case btnSELECT: //Set Variable to change
{
lcd.setCursor(0, 0); /* Linea 1 */
lcd.print("PaPVGB CONTROL");
ajuste++;
lcd.setCursor(0, 1); /* Linea 2 */
if (ajuste == 1){
Serial.println("Menu");
lcd.print("MENU");
}
if (ajuste == 2) {
Serial.println("Paso");
lcd.print("Paso");
}
if (ajuste == 3) {
Serial.println("Vueltas");
lcd.print("Vueltas");
}
if (ajuste == 4) {
Serial.println("Velocidad");
lcd.print("Velocidad");
}
if (ajuste == 5) {
Serial.println("Ayuda");
lcd.print("Ayuda");
}
if (ajuste == 6) {
Serial.println("S Tecnico");
lcd.print("S Tecnico");
}
if (ajuste > 6 ) {
ajuste = 1;
}
delay(1000);
break;
}
case btnLEFT: // acero variables
{
Serial.println("Stop");
ajuste=0;
sumex=0;
vuelt=0;
veloc=0;
break;
}
case btnRIGHT:
{
if(ajuste==2)
{
for (count = 0; count < sumex; count++)
{
Serial.print("Marcha: ");
Serial.println(count);
motor();
}
}
if(ajuste==3)
{
for (count = 0; count < vuelt*4; count++)
{
Serial.print("Marcha: ");
Serial.println(count);
motor();
}
}
if(ajuste==4)
{
for (count = 0; count < veloc; count++)
{
Serial.print("Marcha: ");
Serial.println(count);
motor();
}
}
break;
}
case btnUP:
{
if(ajuste==2)
{
sumex++;
Serial.println(sumex);
delay(delayTime);
}
if(ajuste==3)
{
vuelt++;
Serial.println(vuelt);
delay(delayTime);
}
if(ajuste==4)
{
veloc++;
Serial.println(veloc);
if(veloc<100)
{
delayTime1 = veloc*10;
}
else
{
delayTime1 = 0;
}
delay(delayTime);
}
if(ajuste==5)
{
Serial.println("Elija con el menu la opcion y aumente o decremente el paso,vueltas,velocidad");
break;
}
if(ajuste==6)
{
Serial.println("Mail: olafvgb61@gmail.com");
}
break;
}
case btnDOWN:
{
if(ajuste==2)
{
sumex=sumex-1;
if(sumex==0)
{
sumex==0;
break;
}
Serial.println(sumex);
delay(delayTime);
}
if(ajuste==3)
{
vuelt=vuelt-1;
Serial.println(vuelt);
delay(delayTime);
}
if(ajuste==4)
{
veloc=veloc-1;
Serial.println(veloc);
delay(delayTime);
}
break;
}
case btnNONE:
{
lcd.setCursor(0,0);
break;
}
} /* Switch end */
}//End Loop
int motor()
{
digitalWrite(13, HIGH);
delay(delayTime1);
digitalWrite(13, LOW);
delay(delayTime1);
}
jueves, 30 de junio de 2016
MiniCnc y el Paso a Paso
Acá tengo compilado todos los vídeos que fui elaborando y estudiando fabricar mi MiniCnc. También agregaré en un futuro inmediato como a la par en el taller pensaba en las diferentes maneras de hacer los drivers para el paso a paso.cosa que rescato el tiempo de investigación y aprendizaje.
Siempre con la misma idea de reciclar cada elemento,componente etc. Simplemente para desmitificar que con sin plata no se puede..... pero me llevo mas tiempo.
En la actulidad ya estoy haciendo cosas con el y me doy cuenta que tengo que perfeccionar y ir haciendo mejoras. El soft que uso sigue siendo el EMC2 de UbuntuCnC que es libre totalmente gratuito y puede manejar hasta nueve ejes (yo con tres me siento bien ).Muchos utilizan programas como Mach3 pero no quiero crackear nada y no encontrarme con sorpresas que a la pasa 300000 se bloquea .. Tambien les iré mostrando el pasa a paso para hecer la impresora 3d.
lunes, 23 de mayo de 2016
Aprendiendo a EDITAR con YOUTUBE EDITOR
Hace rato que me pongo como objetivo que mis vídeos tengan un aspecto mas profesional.
Bien no usando un editor instalado podemos usar uno que viene con YOUTUBE que para cosas simple le dan un aspecto interesante. Me tome un rato y con videos que ya tenia en mi canal me puse a jugar un rato y salio esto, esta un poco largo y tengo mucho para aprender.Espero que les guste y acepto criticas.
Bien no usando un editor instalado podemos usar uno que viene con YOUTUBE que para cosas simple le dan un aspecto interesante. Me tome un rato y con videos que ya tenia en mi canal me puse a jugar un rato y salio esto, esta un poco largo y tengo mucho para aprender.Espero que les guste y acepto criticas.
viernes, 20 de mayo de 2016
Catalogo de ProyectosOlafVGB
Se me ocurrió armar un catalogo para ordenar un poco los proyectos
su link es http://proyectosolafvgb.simplesite.com/
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
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
Suscribirse a:
Entradas (Atom)
Oktober Fest y Siamo Fuori
Siamo Fuori Banda de la Sociedad Italiana de Villa General Belgrano Enclavada en el corazón de Villa General ...
-
Trabajos Realizados con Transformadores de Alta tensión (con ayuda de mi amiga Elena vamos a explicarte) Ayudando a estos amigos y apr...
-
Transformadores de alta tensión a media(13kvolt/400v) Estoy trabajando con unos amigos arreglando este tipo de transformadores el cual s...
-
Siamo Fuori Banda de la Sociedad Italiana de Villa General Belgrano Enclavada en el corazón de Villa General ...