Hola ya teníamos tiempo que no subíamos practicas nuevas, empezaremos a subir ejemplos y practicas Saludos a todos.

 Integración de Csharp – Arduino – Motor a Pasos

La siguiente practica consiste en mover un motor a pasos con arduino  (Unipolar) 7.5º/paso desde un programa de cSharp (C#) al ángulo que se desee con una barra desde 1 a 360 grados. En si la practica es un control de motor a pasos

Material
  • Arduino.
  • 4 TIC  41 o 120.
  • Resistencias.
  • Motor paso a paso.
  • Protoboard.
  • Cables.
  • Motor a Pasos
Desarrollo

Para que la práctica se llevara a cabo se debe mencionar como se simularon cada uno de los componentes que se necesitan para posicionar el eje del motor.

  1. Inicializar la posición inicial o home.
    Para colocar el motor a pasos es necesario realizar un recorrido al arreglo, para que no brinque en el primer recorrido.
  2. Mover el eje a los grados como prueba.
    Para mover el eje se tomo en cuenta que el motor realiza 48 pasos para dar una vuelta completa, pero si solo se tomarán los 48 pasos no se apreciaría bien el movimiento así que se optó por considerar los medios pasos, es decir, para que el motor de una vuelta completa se deben de dar 96 medios pasos. Cada medio paso es equivalente a 3.75 grados. Para hacer que el eje se moviera fue necesario crear una interfaz en CSharp, la cual contiene un trackbar, el cual tiene señalados ciertos parámetros los cuales permiten hacer girar el motor hacia los grados señalados únicamente en el scroll. Para hacer girar el motor, se posiciono el trackbar a 180 grados.
  3. Regresar a grados para comprobar funcionamiento.
    Para hacer que el motor regrese 90 grados se posicionó el trackbar a 90 grados hacia atrás.

Diagrama Bloque

Diagrama Bloque

Interfaz Gráfico

 

Form

Como se puede apreciar en la imagen del interfaz, los elementos agregados al formulario son los siguientes:

  • 1 TrackBar.- renombrado como barra, el Maximo se configuro a 96 (ya que 360 grados son 96 medios pasos para nuestro motor) será el control de motor a pasos.
  •  2 Label.- uno para Grados =   y otro para los grados (numero)
  • 1 serialport.- renombrado como rs232, a 9600 BaudRate y en el COM 4 en este caso ya que el arduino se encuentra en ese # de puerto.
Circuito

circuito

 

En la figura 1 se muestra como están acomodados todos los componentes, se puede apreciar que el motor paso a paso está conectado al Arduino con la siguiente relación: cable A conectado al PIN5, cable B conectado al PIN6, cable C conectado al PIN7, cable D conectado al PIN8 y el cable común del motor se encuentra conectado a una fuente de 5V.

Código en CSharp

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace proyecto2{

public partial class Form1 : Form{

byte[] enviar = new byte[1];

public Form1(){

InitializeComponent();

rs232.Open();

enviar[0] = 0;

}

private void barra_Scroll(object sender, EventArgs e){

int dato = barra.Value;

lblgrados.Text = ((Convert.ToDouble(barra.Value)) * 360 / 96).ToString() + ‘º’;

enviar[0] = Convert.ToByte(dato);

rs232.Write(enviar, 0, 1);

}

}

}

Código Arduino

int pin []={5,6,7,8};
int arreglo []={1,3,2,6,4,12,8,9};

byte Csharp=0;
int i;
int datoactual;
int dato, error;
int k=0;
void setup(){

Serial.begin(9600);

for(i=0;i<4;i++){

pinMode(pin[i],OUTPUT);

}

datoactual=0;
error=0;

}

void loop(){

if (Serial.available() > 0) {

Csharp=Serial.read();
if(Csharp!=datoactual){

error=Csharp-datoactual;
if(error<0){

error=-1*error;

for(int i=error;i>=0;i–){

k–;
if(k<0) k=7;

for (int j=0;j<4;j++){

digitalWrite(pin[j],bitRead(arreglo[k],j));

}
delay(50);

}

datoactual=Csharp;

}else{

for(int i=0;i<error;i++){

k++;
if(k==8) k=0;

for (int j=0;j<4;j++){

digitalWrite(pin[j],bitRead(arreglo[k],j));

}
delay(50);

}
datoactual=Csharp;

}

}

}

}

 ESPEREMOS LES GUSTE LA PRACTICA
DEJAMOS EL CÓDIGO EN EL SIGUIENTE LINK:  Arduino – Control MPaP

Leave a reply

required