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);
}
No hay comentarios:
Publicar un comentario