Sunteți pe pagina 1din 10

SEP SES TecNM

INSTITUTO TECNOLÓGICO DE TOLUCA

Práctica 1 “Control de un motor mediante una página


web”

INSTRUMENTACION

Ingeniería Mecatrónica

P R E S E N T A:

Guzmán Miranda Javier 14280049


Andres Pastelin Juan
Potenciano Galindo Luis Alberto

P R O F E S O R:

Dr. Segovia De Los Ríos José Armando

Metepec, Estado de México, Septiembre de 2019


Instrucción

Utilizar un microcontrolador para que el usuario, por medio de una página web, sea
capaz de controlar los parámetros de un motor de corriente directa siguientes:

 Dirección de giro
 Velocidad de giro
 Cantidad de giro
 Inicio y paro del motor

Marco teórico

Arduino
Arduino es una compañía de fuente abierta y hardware abierto, así como un
proyecto y comunidad internacional que diseña y manufactura placas de desarrollo
de hardware para construir dispositivos digitales y dispositivos interactivos que
puedan detectar y controlar objetos del mundo real. Arduino se enfoca en acercar y
facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos
multidisciplinarios. Los productos que vende la compañía son distribuidos como
Hardware y Software Libre, bajo la Licencia Pública General Reducida de GNU
(LGPL) o la Licencia Pública General de GNU (GPL), permitiendo la manufactura
de las placas Arduino y distribución del software por cualquier individuo. Los diseños
de las placas Arduino usan diversos microcontroladores y microprocesadores.

La mayoría de las placas Arduino pueden ser programadas a través del puerto serie
que incorporan haciendo uso del Bootloader que traen programado por defecto. El
software de Arduino consiste de dos elementos: un entorno de desarrollo (IDE)
(basado en el entorno de processing y en la estructura del lenguaje de programación
Wiring), y en el cargador de arranque (bootloader, por su traducción al inglés) que
es ejecutado de forma automática dentro del microcontrolador en cuanto este se
enciende. Las placas Arduino se programan mediante un computador, usando
comunicación serie.
Página web
Una página web, o página electrónica, página digital, o ciberpágina1 es un
documento o información electrónica capaz de contener texto, sonido, vídeo,
programas, enlaces, imágenes y muchas otras cosas, adaptada para la llamada
World Wide Web (WWW) y que puede ser accedida mediante un navegador web.
Esta información se encuentra generalmente en formato HTML o XHTML, y puede
proporcionar acceso a otras páginas web mediante enlaces de hipertexto.
Frecuentemente también incluyen otros recursos como pueden ser hojas de estilo
en cascada, guiones (scripts), imágenes digitales, entre otros.

Las páginas web pueden estar almacenadas en un equipo local o en un servidor


web remoto. El servidor web puede restringir el acceso únicamente a redes
privadas, por ejemplo, en una intranet corporativa, o puede publicar las páginas en
la World Wide Web. El acceso a las páginas web es realizado mediante una
transferencia desde servidores, utilizando el protocolo de transferencia de hipertexto
(HTTP).

Motor de corriente directa


Un motor de corriente continua, denominado también motor de corriente directa,
motor CC o motor DC (por las iniciales en inglés direct current), es una máquina que
convierte energía eléctrica en mecánica, provocando un movimiento rotatorio,
gracias a la acción de un campo magnético.

Se compone principalmente de dos partes. El estátor da soporte mecánico al


aparato y contiene los polos de la máquina, que pueden ser o bien devanados de
hilo de cobre sobre un núcleo de hierro, o imanes permanentes. El rotor es
generalmente de forma cilíndrica, también devanado y con núcleo, alimentado con
corriente directa a través de delgas, que están en contacto alternante con escobillas
fijas (también llamadas carbones).

Para controlar la velocidad de revolución del motor se puede utilizar la modulación


por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width
modulation) de una fuente de energía. Esta es una técnica en la que se modifica el
ciclo de trabajo de una señal periódica (una cuadrada, por ejemplo), para controlar
la cantidad de energía que se envía a una carga. Una gran ventaja es que mantiene
el par motor constante y no supone un desaprovechamiento de la energía eléctrica.
Se utiliza tanto en corriente continua como en alterna, como su nombre lo indica, al
controlar: un momento alto (encendido o alimentado) y un momento bajo (apagado
o desconectado), controlado normalmente por relés (baja frecuencia) o MOSFET o
tiristores (alta frecuencia).

Figura 1. Una señal de onda cuadrada de amplitud acotada ( Ymin, Ymax) mostrando el ciclo de trabajo D.

La dirección de giro del motor depende de la polaridad en la cual se conecta el


motor, por lo tanto, para un cambio de sentido es necesario invertir la corriente. Para
ello existe un circuito electrónico denominado puente en H, que generalmente se
usa para permitir a un motor eléctrico DC girar en ambos sentidos, avance y
retroceso. Son ampliamente usados en robótica y como convertidores de potencia.
Los puentes H están disponibles como circuitos integrados, pero también pueden
construirse a partir de componentes discretos.

Por otra parte, para definir la cantidad de giro se utilizan los llamados codificadores
rotatorios, también llamados codificadores del eje o generadores de pulsos. Estos
son un dispositivo electromecánico usado para convertir la posición angular de un
eje a un código digital, lo que lo convierte en una clase de transductor. Se utilizan
en robótica, en lentes fotográficos de última generación, en dispositivos de entrada
de ordenador (tales como el ratón y el trackball), y en plataformas de radar
rotatorias.
Equipo utilizado

 Arduino Mega
 Ethernet Shield para Arduino
 Computadora
 Enrutador
 Motor DC con codificador

Desarrollo

Código
#include <SPI.h>
#include <Ethernet.h>
String readString; // Cadena para lectura de los datos.
int pinPwm = 3; //pin para variar la velocidad mediante pwm
volatile long contador = 0;
long ticks;
String pulso, lectura;
boolean bandera = true;
byte a, b;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };


IPAddress ip(192,168,1,25); // Mi dirección (JASR, 180919, 23:41)
EthernetServer server(80); // Puerto 80 por defecto para HTTP

void setup() {
Ethernet.begin(mac, ip); //inicializa la conexión Ethernet y el servidor
server.begin();
Serial.begin(9600);
attachInterrupt(0, Interr, RISING);//INT 0 correspondiente al pin 2
pinMode(8,OUTPUT);
pinMode(6,OUTPUT); }

void loop() {
// Crea una conexion Cliente
EthernetClient cliente = server.available(); // Inicializa cliente como servidor
ethernet
if (cliente) {
byte x = 0;
while (cliente.connected()) {
if (cliente.available()) {
char c = cliente.read();

//Lee caracter por caracter HTTP (Esta cadena se genera cuando se acciona el
botón "STAR" o "STOP"
// Aparece en el campo de texto de la URL (en el navegador).
if (readString.length() < 150) {
//Almacena los caracteres a un String
readString += c; }

// si el requerimiento HTTP fue finalizado


if (c == '\n') {
cliente.println("<!DOCTYPE html>");
//Página Web en HTML
cliente.println("<html>");
cliente.println("<head>");
cliente.println("<title>Control de un motor</title>");
cliente.println("</head>");
cliente.println("<body style=background-color:powderblue;>");
cliente.println("<style>");
cliente.print(".box{font-size:1vw;padding: 1vw;border: solid;background:
linear-gradient(blue, red);}");
cliente.println("</style>");
cliente.println("<div class=box><p style=font-size:50px;text-
align:center>CONTROL DE UN MOTOR DE CD</p></div>");
cliente.println("<hr>");
cliente.print("<br>");
cliente.println("<form action= >");
cliente.println("<table align= center style= \"width:220px;border:0px solid
red;\">");
cliente.println("<tr>");
cliente.println("<th colspan=\"2\"><label>Numero de pulsos: </label></th>");
cliente.println("<table align=center style=\"width:50%\">");
cliente.println("<tr>");
cliente.println("<th colspan=\"4\"><input type=\"text\" name=\"Pulsos\"
value=\"0\" style= \"width:80px; text-align:center\"></th>");
cliente.println("</tr>");
cliente.println("</th>");
cliente.println("</tr>");
cliente.println("</table>");
cliente.println("<br>");
cliente.println("</th>");
cliente.println("</tr>");
cliente.println("</table>");
cliente.println("<br>");
cliente.println("<table align= center style= \"width:220px;border:0px solid
red;\">");
cliente.println("<tr>");
cliente.println("<th colspan=\"2\"><label>Velocidad (%): </label></th>");
cliente.println("<th><select name=Speed style = \"font-size: 20px;\">");
cliente.println("<option> 30");
cliente.println("<option> 40");
cliente.println("<option> 50");
cliente.println("<option> 60");
cliente.println("<option> 70");
cliente.println("<option> 80");
cliente.println("<option> 90");
cliente.println("<option selected> 100");
cliente.println("</select>");
cliente.println("</th>");
cliente.println("</tr>");
cliente.println("</table>");
cliente.println("<br>");
cliente.println("<table align= center style= \"width:220px;border:0px solid
red;\">");
cliente.println("<tr>");
cliente.println("<th colspan=\"2\"><label>Sentido de giro: </label></th>");
cliente.println("<th><select name=Sentido style = \"font-size: 20px;\">");
cliente.println("<option> Positivo");
cliente.println("<option > Negativo");
cliente.println("</select>");
cliente.println("</th>");
cliente.println("</tr>");
cliente.println("</table>");
cliente.println("<br>");
cliente.println("<table align= center style= \"width:220px;border:0px solid
red;\">");
cliente.println("<tr>");
cliente.println("<th><input type= submit name= Action1 value=START
style=\"font-size: 24px;background:green\"></th>");
cliente.println("<th><input type= submit name= Action2 value=STOP
style=\"font-size: 24px; background:red\" ></th>");
cliente.println("</tr>");
cliente.println("</form>");
cliente.println("</table>");
cliente.println("<br><br><br>");
cliente.println("Equipo: Guzman Miranda Javier");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();//Cierro conexión con el cliente

////velocidad**********************************
if(readString.indexOf("Speed=30")>0){
analogWrite(pinPwm, 75); }
if(readString.indexOf("Speed=40")>0){
analogWrite(pinPwm, 100); }
if(readString.indexOf("Speed=50")>0){
analogWrite(pinPwm, 127); }
if(readString.indexOf("Speed=60")>0){
analogWrite(pinPwm, 175); }
if(readString.indexOf("Speed=70")>0){
analogWrite(pinPwm, 195); }
if(readString.indexOf("Speed=80")>0){
analogWrite(pinPwm, 200); }
if(readString.indexOf("Speed=90")>0){
analogWrite(pinPwm, 229); }
if(readString.indexOf("Speed=100")>0){
analogWrite(pinPwm, 255); }
if(readString.indexOf("Sentido=Positivo")>0){
a= 0;
b = 1; }
if(readString.indexOf("Sentido=Negativo")>0){
a = 1;
b= 0; }
if(readString.indexOf("START")>0){
contador = 0;
if(ticks != 0){
digitalWrite(6,a);
digitalWrite(8,b); }}
if(readString.indexOf("STOP")>0){
paro();
contador = 0; }
readString=""; }}}}}

void Interr() {
contador= contador+1 ;
if (contador >= ticks){
paro(); }}
void paro(){
digitalWrite(6,0);
digitalWrite(8,0);
analogWrite(pinPwm, 0); }

Resultados

Al acceder a la dirección IP asignada a la placa Arduino, que funge como servidor


web, carga inmediatamente la página web programada donde podemos introducir
el número de pulsos deseado, elegir la velocidad de giro y el sentido de giro que
va a tomar el motor, siendo “positivo” en contra de las agujas del reloj y “negativo”
a favor de ellas. Al hacer clic en el botón [START] se realiza una acción dentro de la
página que actualiza la barra de dirección web, en donde aparecen los parámetros
ingresados de una manera especial.

Figura 2. Captura de pantalla de la página web cargada en la placa Arduino.


En la imagen anterior se puede observar que al iniciar el motor, la barra de
dirección, muestra la cadena de texto siguiente:
192.168.1.25/?Pulsos=10&Speed=100&Sentido=Positivo&Action1=START

El programa de Arduino se encarga de leer la cadena y buscar los parámetros que


posee:

 Pulsos = 10
 Velocidad (Speed) = 100%
 Sentido = Positivo
 START

Una vez identificados se recortan las partes numéricas y se transforman a un


formato numérico con el que el programa puede trabajar, y se asignan los valores
a cada uno de los parámetros de funcionamiento del motor, finalmente al leer la
cadena “START” el controlador inicia la alimentación del motor.

Una vez iniciado, el motor continuará girando hasta que el motor haya contado los
pulsos establecidos o el usuario haya hecho clic en el botón de [STOP].

S-ar putea să vă placă și