Según altos estándares industriales

Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Servo Motor with Arduino based PLC

Introducción

En este post controlaremos la velocidad de un servomotor 57HSE2N-D25. Para ello también necesitaremos un controlador, HSS57 Hybrid Servo Driver,for the servo motor that will be connected to our Arduino based PLC for the automation of the speed control. Para el software, se implementa una biblioteca pulses.h (el software sin usar la biblioteca pulses.h también está conectado). 

Requisitos

Conexiones


Servo Motor - Driver connections:

Red     ->       A+
Green      ->       A-
Yellow   ->       B+
Blue  ->       B-

Ethernet PLC - Driver connections: 

PIN 3   ->  PUL - (pulses)      
PIN2    ->  DIR- (rotational direction)
PIN 50 (MISO)  ->  ENA- (enable)                     
GND    -> PUL- , DIR - , ENA -

* Signals = 5Vdc

Servo Motor with Arduino based PLC Connections


*Recuerde alimentar el PLC entre 12 y 24V.

*En este caso estamos utilizando señal de 5V, por lo que, no se necesitan resistencias entre PUL+,ENA+, DIR+ y PIN2, PIN3, PIN50.

*El controlador es M-Duino 21+ 

*Codificador en no utilizado en este post


Software

Con este codigo puedes controlar la velocidad del paso a paso, la dirección y el número de revoluciones.

Cambie PIN2 para controlar la dirección, cambie NUM_REVOLUTIONS para decidir cuántas revoluciones necesita y cambie FREQ para cambiar la frecuencia(velocidad de rotación).

A continuación se muestra el código:

/*
   Copyright (c) 2018 Boot&Work Corp., S.L. All rights reserved
   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Lesser General Public License for more details.
   You should have received a copy of the GNU Lesser General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include <Pulses.h>

#define PIN_STEPPER_PUL 3
#define PIN_STEPPER_DIR 2
#define PIN_STEPPER_ENA 50
#define STEPPER_PULSES_PER_REV 1600UL
#define FREQ (2000UL) // Hz
#define NUM_REVOLUTIONS 10
#define STEPPER_STEPS ((NUM_REVOLUTIONS) * (STEPPER_PULSES_PER_REV))
 
volatile uint32_t stepsCnt = STEPPER_STEPS;
ISR(TIMER3_COMPA_vect) {
  if (stepsCnt) {
    --stepsCnt;
    if (stepsCnt == 0UL) {
      stopPulses(PIN_STEPPER_PUL);
    }
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  pinMode(PIN_STEPPER_DIR, OUTPUT);
  pinMode(PIN_STEPPER_PUL, OUTPUT);
  pinMode(PIN_STEPPER_ENA, OUTPUT);
  digitalWrite(PIN_STEPPER_DIR, HIGH);
  digitalWrite(PIN_STEPPER_ENA, HIGH);
  // It depends on the PIN_STEPPER_PUL
  TIMSK3 |= 1 << OCIE3A;
  startPulses(PIN_STEPPER_PUL, FREQ, 3);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
}

 
 


Check our Case Studies :

Automation Case Studies >>                                             

¿Estás buscando tu PLC ideal?


Mira esta comparativa con otros controladores industriales

Comparamos entradas, salidas, comunicaciones y otras características con las de algunas de las marcas relevantes


Comparativa PLCs >>

¿Quieres más información? 

¡Solo llena el formulario! 

¡Quiero saber más!  Por favor, llene el formulario correctamente.