Automodelo_IP

50
http://automodeloip.blogspot.com/ 1-5-2015 Por: Byron Ganazhapa ARDUINO Y LABVIEW AUTOMODELO IP

Transcript of Automodelo_IP

http://relojcalendariotemyhum.blogspot.com/ Página 0

http://automodeloip.blogspot.com/

1-5-2015

Por: Byron Ganazhapa

ARDUINO

Y

LABVIEW

AUTOMODELO

IP

http://automodeloip.blogspot.com/ Página 1

CONTENIDO INTRODUCCIÓN .................................................................................................................. 1

¿QUÉ NECESITAMOS? ........................................................................................................ 1

DESARROLLO.................................................................................................................... 4

CONFIGURACIÓN DE EQUIPOS ...................................................................................... 4

TRASMISIÓN Y RECEPCIÓN DE DATOS............................................................................ 9

ACONDICIONAMIENTO DE VOLTAJES PARA LECTURA DE BATERÍAS ............................... 13

CONEXIÓN DE PINES DE ENTRADAS Y SALIDAS DEL ARDUINO.......................................... 2

ESQUEMÁTICOS .................................................................................................................. 1

DISEÑO DE PCB ................................................................................................................. 1

CODIGO EN ARDUIN O ................................................................................................ 1

CODIGO EN LABVIEW................................................................................................... 1

IMÁGENES DEL PROYECTO CONCLUIDO ....................................................................... 2

http://relojcalendariotemyhum.blogspot.com/ Página 1

INTRODUCCIÓN

Un Automodelo IP, es un vehículo a escala desarrollado en Arduino y

controlado desde LabVIEW a través de comunicaciones inalámbricas

wifi, también llamada WLAN o estándares IEEE 802.11.

Este proyecto consiste en el diseño y construcción de un vehículo a

escala en la plataforma Arduino y control en la plataforma LabVIEW

2012 desde cero incluida la tarjeta Arduino, con funcionalidades

similares a un auto a escala mecánica y electrónicamente.

La tarjeta Arduino recibe y transmite la información necesaria para el

cálculo y control respectivo, como por ejemplo: control de velocidades

desde la 1ra hasta la 5ta marcha y reversa, control de direcciones

(izquierda y derecha) con luces intermitentes, control de ventiladores

para los circuitos electrónicos y motor, control de luces delanteras y

traseras, medida de niveles de energía de batería(s), y cálculo de

revoluciones por minuto (RPM).

El programa desarrollado en LabVIEW dispone de una interfaz idéntica a

un tacómetro vehicular, donde visualiza la velocidad actual del

vehículo, RPM, nivel de voltaje de la batería, etc.

http://relojcalendariotemyhum.blogspot.com/ Página 1

¿QUÉ NECESITAMOS?

Para este proyecto es muy indispensable disponer de un conjunto de

herramientas básicas de un laboratorio de electrónica: un soldador,

alambre de estaño, unos alicates de punta de aguja y cables.

Para el desarrollo de nuestro proyecto dispondremos de los siguientes

materiales:

1x Arduino UNO (o si prefieres puedes desarrollarla desde cero

para que el proyecto sea 100% original)

Un motor DC de 12 o 24 Volt ios

1x WIZnet Serial-to-Ethernet Gateway - WIZ110SR (o por

preferencia se puede usar un Módulo Ethernet de Arduino).

1x servomotor

1x Router

1x Batería t ipo Lipo de 11.1 Volt ios a 4000 o 5000 mA

2x Kit de llantas

2x ventiladores de 5 Volt ios

2x transitores TIP32, y 4 x TIP31

2x transitores 2N2222, 1 x BC548, 1 X 2N3906

1x transistor Mosfet IRF630

5x diodos 1N4007

2x diodos BY206

1x diodo Zener 1N4733A (5.1 Volt ios)

2x Resistencias de 27 Ohms, y 1x 2.2Ohms. 2Watts C/U

4x Resistencias de 1KOhms, 1 x 100Ohms, 1 x 100KOhms, 3 x

4.7KOhms, 2 x 10KOhms, 2 x 220 Ohms, y 6 x 330Ohms. ¼ Watts C/U

http://automodeloip.blogspot.com/ Página 2

2x potenciómetros lineales de 50KOhms.

2x condensadores electrolít icos de 470uF,

1x condensador poliéster de 470 nF, 3 x 100uF, y 2 x 10uF

3x condensadores cerámicos de 100nF, 2 x 10nF, y 4 x 20nF

2x reguladores de voltaje 7805, y 1 x 7808

2x Leds de alto brillo blanco de 10mm, 2 Rojos de bajo brillo

10mm, y 4 amarillos de bajo brillo de 5mm,

1x Buzzer.

Regletas de espadines hembra y macho

3x Plugs DC

Moles de 3 y 4 pines (lo que sean necesarios)

Placa PCB (simple placa y doble)

Cable de red

Arduino UNO

WIZnet WIZ110SR

Router

Batería de Lipo

Kit de llantas

Ventilador de 5V

http://automodeloip.blogspot.com/ Página 3

Transistores Resistencias Potenciómetro lineal

Transistores

Diodos

Condensadores

cerámicos

Condensadores

electrolít icos

Reguladores de

voltaje

Diodos LED

Buzzer

Espadines hembra y

macho

Plugs DC

motor DC

Molex

PCB

http://automodeloip.blogspot.com/ Página 4

Servomotor

Cable de red

DESARROLLO

CONFIGURACIÓN DE EQUIPOS

Con el objet ivo de realizar la comunicación entre el protot ipo y una

Laptop es necesario disponer de un módulo convert idor Serial a Ethernet

o Wifi. En este proyecto de usa una configuración entre la tarjeta Wiznet

WIZ110SR y un router para la comunicación entre la PC y la placa

Arduino. Es decir se crea una red LAN para dicha tarea.

A. CONFIGURACIÓN DEL MÓDULO WIZNET

Para realizar la tarea de transmisión de datos es necesario configurar

el módulo WIZ110SR como servidor, de tal manera que, permita a un

cliente conectarse a su red para el intercambiar de información

respectiva y que permita visualizarlos.

Los parámetros de configuración del servidor WIZ110SR son:

Dirección IP: 192.168.11.2

Máscara de Subred: 255.255.255.0

Puerta de enlace: 192.168.11.1

Dirección MAC: 0x00.0x08.0xDC.0x17.0xCF.0x3F

http://automodeloip.blogspot.com/ Página 5

Puerto local: 5000

Configuración serial del servidor WIZ110SR:

Velocidad de transmisión serial: 9600

Tamaño de bits de datos: 8 bits

Paridad: ninguna

Bit de parada: 1 bit

http://automodeloip.blogspot.com/ Página 6

B. CONFIGURACIÓN DEL ROUTER

Se puede usar cualquier router, basta que se pueda configurar para

diseñar la red, en m i caso dispongo de un router Trendnet TEW-6528Rp

de 300Mbps.

El router es configurado como un punto de acceso a la red, de tal

modo que ofrezca direcciones IP dinámicamente para que cualquier

host que pueda conectarse a él.

Tanto para User Name y Password es admin.

Para Wireless la configura es básica: canal, ancho de banda del

canal, y estándar 802.11 b/g/n. Se escoge el canal uno para evitar

interferencias entre otros redes y canales.

http://automodeloip.blogspot.com/ Página 7

Para la red LAN definimos las direcciones IP dinámicamente para que

las entregue a los equipos que se conecten ya sea por cable o por wifi.

http://automodeloip.blogspot.com/ Página 8

C. CONFIGURACIÓN DE LA PC

Ingresamos al Centro de redes y recursos compart idos de la PC para

configurar el adaptador de red inalámbrico

Configuramos en propiedades el protocolo de internet versión 4

(TCP/IPv4).

De tal manera que ingresamos una dirección IP a la PC dist inta a las

IP ya ocupadas (192.168.11.3), puerta de enlace que es la dirección IP

http://automodeloip.blogspot.com/ Página 9

del router (192.168.11.1) y la máscara de subred (225.225.225.0) para

estar en la misma red.

Si todo salió excelente podemos verificar la conectividad haciendo

ping desde la PC al módulo Wiznet

TRASMISIÓN Y RECEPCIÓN DE DATOS

Arduino trasmite y recibe información de la red LAN a través del

puerto serial del micro-controlador de para ser visualizada en un host las

variables de RPM y niveles de energía de la(s) batera(s), etc.

Un host se conecta a la red para trasmit ir los datos de control al

protot ipo como velocidades, direcciones, luces y buzzer mediante un

programa desarrollado en LabVIEW en protocolos TCP/IP disponibles en

las herramientas de la plataforma LabVIEW.

A. TRANSMISIÓN DE DATOS DESDE ARDUINO HACIA UN HOST

Arduino transmite su información por el puerto serial a una velocidad

de 9600 Baudios/s. Ojo es importante configurar el Modulo Wiznet y

Arduino a la misma velocidad, tamaño de datos, paridad, etc.

La trasmisión se la realiza durante cada 500 mili-seg. En una sola

trama de longitud estát ica como lo indica en la siguiente imagen:

http://automodeloip.blogspot.com/ Página 10

RPM en un tamaño de 3 digitos.

V1 y V2 trasmite el valor de voltaje en las baterías 1 y 2

respectivamente. Batería 1 es usada para energizar los circuitos, y

Bateria 2 es para el motor. Si prefieres puedes usar una sola batería para

conectar todo el proyecto y leer el nivel de voltaje en un solo punto de

la batería. V1 es conectado al puerto analógico 4 del Arduino y V2 al

puerto analógico 5 del Arduino.

V1 y V2 son t rasmit idos en tamaños de 4 dígitos.

En importante trasmit ir en tamaños de 21 caracteres toda la

información, de tal manera que no exista inestabilidad, desplazamiento

y lectura de datos erróneos al momento de recibir toda la información

en la plataforma LabVIEW.

B. RECEPCIÓN EN ARDUINO

Arduino recibe información desde cualquier host conectado a la red

para el control respectivo del protot ipo:

Recibe el carácter ‘W’ para dar marcha al motor hacia

delante

Recibe el carácter ‘V’ para neutralizar marchas

Recibe el carácter ‘S’ para dar marcha al motor hacia tras

(giro reverso del motor).

http://automodeloip.blogspot.com/ Página 11

Recibe el carácter ‘0’ para realizar el cambio cero o neutral (el

motor no realizara la marcha hacia delante si este está en

cero)

Recibe el carácter ‘1’ para realizar el primer cambio (el motor

realizara la marcha hacia detente si la 1ra o hasta la 5ta están

activas)

Recibe el carácter ‘2’ para realizar el segundo cambio para

aumentar la velocidad.

Recibe el carácter ‘3’ para realizar el tercer cambio para

aumentar a velocidad media.

Recibe el carácter ‘4’ para realizar el cuarto cambio

Recibe el carácter ‘5’ para realizar el quinto cambio para

aumentar la velocidad máxima.

Recibe el carácter ‘A’ para dar giro a la izquierda, este

depende de cómo se conecta el servomotor. Y para la acción

intermitente de luces.

Recibe el carácter ‘H’ para neutralizar el giro del servomotor.

Recibe el carácter ‘D’ para dar giro a la derecha, y para la

acción intermitente de luces.

Recibe el carácter ‘G’ para el encendido de luces delanteras

Recibe el carácter ‘g’ para el apagado de luces delanteras

Recibe el carácter ‘F’ para el encendido de luces traseras

Recibe el carácter ‘f’ para el apagado de luces traseras

Recibe el carácter ‘T’ para el encendido del Buzzer

Recibe el carácter ‘t’ para el apagado del Buzzer.

C. TRANSMISIÓN DE DATOS DESDE LABVIEW HACIA UN ARDUINO

LabVIEW trasmite su información para el control del protot ipo en el

protocolo TCP/IP disponibles en la paleta de funciones. LabVIEW 2012 o

una versión superior t iene que ser instalada en el computador que se

quiera conectar a la red.

http://automodeloip.blogspot.com/ Página 12

La información trasmit ida es la información recibida por la tarjeta

Arduino, por ejemplo:

‘HV0tgf’

Donde ‘H’ es para no girar el vehículo, ‘V’ para neutralizar marchas,

‘0’ para no tener ningún cambio accionado, ‘t’ para apagar el buzzer,

‘g’ para apagar luces delanteras y ‘f’ para mantener apagadas las

luces traseras.

Los caracteres ‘W’, ‘S’, ‘A’ y ‘D’ son accionados por las teclas del

computador

Los caracteres ‘G’, ‘g’, ‘T’ y ’t’ son accionados por las teclas F2 y F3

del computador. F2 controla los caracteres ‘G’ y ‘g’, encendido o

apagado de las luces delanteras y F3 para el encendido y apagado del

buzzer.

Los caracteres ‘0’, ‘1’, ‘2’, ‘3’, ‘4’ y ‘5’ son accionados por las teclas

‘regpág’ y ‘avpág’ en HP o ‘PGUP’ y ‘PGON’ en cualquier computador.

‘regpág’ aumenta y ‘avpág’ decrementa los cambios que se desea.

http://automodeloip.blogspot.com/ Página 13

D. RECEPCIÓN DE DATOS EN LABVIEW

Como se ha mencionado antes, LabVIEW recibe toda la información

en una sola trama de longitud estát ica, por ejemplo:

RPM:120V1:0674V2:0509

Una vez recibida toda la información se desentrama cada variables

por separado para realizar los cálculos y visualizaciones respectivas

como por ejemplo: cálculo de velocidad actual del vehículo en cm/s,

RPM, niveles de energía en las baterías de 0 a 12V y de 0% al 100% tanto

para el motor como para los circuitos.

ACONDICIONAMIENTO DE VOLTAJES PARA LECTURA DE BATERÍAS

Es importante acondicionar los niveles de voltaje para lectura en los

puertos analógicos del Arduino de 0 a 5V. En nuestro caso se

acondiciona los niveles de voltajes para baterías de 11.5 volt ios para 5

volt ios de entrada en la tarjeta.

Entonces aplicando la ecuación de división de voltaje se obtendrá el

resultado de los potenciómetros.

𝑉𝑜𝑢𝑡 =𝑅2

𝑅1 + 𝑅2

𝑉𝑖𝑛

𝑅1 =(𝑉𝑖𝑛 − 𝑉𝑜𝑢𝑡 )𝑅2

𝑉𝑜𝑢𝑡

𝑅2 = 10𝑘Ω,𝑉𝑖𝑛 = 11.5𝑉, 𝑉𝑜𝑢𝑡 = 5𝑉

𝑅1 = 13𝑘Ω

http://relojcalendariotemyhum.blogspot.com/ Página 1

En LabVIEW se realiza el proceso inverso para obtener los niveles de

voltaje reales de las baterías, es decir de 5V a 11.5 volt ios como nivel

máximo de la batería. Y adicionalmente se realiza un cálculo en

porcentaje de los niveles de energía de las baterías; como niveles

mínimos de las baterías es de 7.5V y máximos de 11.5V, es decir 7.5V =

0% y 11.5V = 100%.

50%

12

3

RV1

50k

R1310k

50%

12

3

RV2

50k

R1410k

BAT1 BAT2

1 2

BATERIASCONN-SIL2

Acondicionamiento de baterias

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

5 6 7 8 9 10 11 12

Po

r ci

en

to(%

)

Voltaje Bateria (V)

http://automodeloip.blogspot.com/ Página 2

Cuya ecuación es: 𝑦 = 25𝑥 − 187.5

CONEXIÓN DE PINES DE ENTRADAS Y SALIDAS DEL ARDUINO

La asignación de los pines de la tarjeta Arduino esa distribuida de la

siguiente manera:

1) Puerto Analógico A4 para batería 1, ya acondicionada

2) Puerto Analógico A2 para batería 2, ya acondicionada

3) Puerto digitales 0 (RX) y 1 (TX) para comunicación serial

4) Puerto D2 entrada para RPM

5) Puerto D3 salida para PWM del motor principal

6) Puerto D4 salida para control del motor en sentido horario

7) Puerto D5 salida para luces frontales

http://automodeloip.blogspot.com/ Página 3

8) Puerto D6 salida para control del motor en sentido anti- horario

9) Puerto D7 salida para control del ventilador 1

10)Puerto D8 salida para control del ventilador 2

11)Puerto D9 salida para control de luces traseras

12)Puerto D10 salida para Buzzer

13)Puerto D11salida para servomotor

14)Puerto D12 salida para luces intermitentes izquierda

15)Puerto D13 salida para luces intermitentes derecha.

http://relojcalendariotemyhum.blogspot.com/ Página 1

ESQUEMÁTICOS

Arduino UNO. (Opcional)

Nota: Si prefieres puedes hacer tu propia tarjeta Arduino en proteus.

PB0/ICP1/CLKO/PCINT014

PB1/OC1A/PCINT115

PB3/MOSI/OC2A/PCINT317

PB2/SS/OC1B/PCINT216

PD6/AIN0/OC0A/PCINT2212

PD5/T1/OC0B/PCINT2111

PD4/T0/XCK/PCINT206

PD3/INT1/OC2B/PCINT195

PD2/INT0/PCINT184

PD1/TXD/PCINT173

PD0/RXD/PCINT162

PB4/MISO/PCINT418

PB5/SCK/PCINT519

PB7/TOSC2/XTAL2/PCINT710

PB6/TOSC1/XTAL1/PCINT69

PC6/RESET/PCINT141

PC5/ADC5/SCL/PCINT1328

PC4/ADC4/SDA/PCINT1227

PC3/ADC3/PCINT1126

PC2/ADC2/PCINT1025

PC1/ADC1/PCINT924

PC0/ADC0/PCINT823

AVCC20

AREF21

PD7/AIN1/PCINT2313

ATMEGA

ATMEGA 328

12

BATERIA9V

R1

22

C2220uF

D1

1N5399V

in

C1100uF

VI1

VO3

GN

D2

78057805

D2

1N4004

C3100uF A

K

ONLED-RED

1

6

2

7

3

8

4

9

5

SERIAL (DB-9)

CONN-D9F

Q12N3906

R3

10k

R4

10k

R5

4.7k

D4

1N4148

C410uF

R610k

Q2BC547

D51N4148

R7

1k

R810k

1

2

3

4

5

6

ANALOG IN

CONN-SIL6

1

2

3

4

5

6

7

8

DIGITAL 2

CONN-SIL8

1

2

3

4

5

6

7

8

DIGITAL 1

CONN-SIL8

1

2

3

4

5

6

POWER

CONN-SIL6

XTAL1

XTAL2

X1CRYSTAL

C5

22pF

C6

22pF

XTAL2

XTAL1

R910k

1 3

2 4

RESET

SW-DPST

D0

D7

D8

D13

A0

A5

AREF

AREF

C7100nF

C8100nF

Vin

reset

reset

MISO

SCK

reset

MOSI

MIS

O

MO

SI

SC

K

1

2

3

4

SERIAL (RJ-11)

90325-0004

JUM-TXJUMPER2

JUM.RXJUMPER2

TX

RX

R101k

R111k

AK

TXLED-YELLOW

AK

RXLED-YELLOW

RJ11-TXD

RJ11-RXDDB9-RXD

DB9-TXD

TXD

RXD

RJ11-TXD

RJ11-RXD

A-RST

JUMPER

C9

100nF

AUTO-RESET

AUTO-RESET

AUTO-RESET

L1

100uH

R21k

1

2

3

IC

CONN-SIL3

1

2

3

SP

CONN-SIL3

RX

TX

DB9-RXD

DB9-TXD

TX

D

RX

DRX

TX

http://automodeloip.blogspot.com/ Página 2

Puente H con transistores para motor

12

VS112V

Q3TIP31

Q4

TIP31

Q1TIP32

Q2

TIP32

D11N4007

D21N4007

D31N4007

D41N4007

Q52N2222A

R1

1k

Q6

2N2222A

R4

1k12

MOTOR_1

12V

VS

1

VS

1

1

2

3

4

5

6

7

8

J2

CONN-SIL8

1

2

3

4

5

6

7

8

J1

CONN-SIL8

M_1_L

M_1_R

R5

100

R6100k

Q9IRF630

D6BY206

C1470n

VS

1

D5BY206

M_1_L M_1_R

PWM_1

PWM_1

1

2

3

4

5

6

ANALOG IN

CONN-SIL6

1

2

3

4

5

6

POWER

CONN-SIL6

R2

27

R3

27

http://automodeloip.blogspot.com/ Página 3

Tarjeta de reguladores de voltaje y ventiladores

12

MOTOR_212V

12

MOTOR_312V

1

2

3

4

5

6

7

8

J1

CONN-SIL8

1

2

3

4

5

6

7

8

7 6 5 4 3 2 1 0

CONN-SIL8

MOT2

MOT1

1

2

3

4

5

6

ANALOG IN

CONN-SIL6

1

2

3

4

5

6

POWER

CONN-SIL6

12

VWIZNETVRouter

C110nF

D1

1N4007

C4100nF

R1

2.2

C6100nF

VI1

VO3

GN

D2

U27805

C720nF

C5100uF

C810uF

C920nFD2

1N4733A

1

2

WIZNET

WIZNET

12

VROUTERVWiznet

C1010nF

C11100uF

C12100nF

VI1

VO3

GN

D2

U47805

C1420nF

C1510uF

C1620nF

1

2

ROUTER

ROUTER

VI1

VO3

GN

D2

U37808

C13100uF

Fuentes para wiznet

Fuente para Router

VW=VR

JUMPER

VW

iznet

VR

ou

ter

VRouter

VWiznet

C2470u

C3470u

Q1TIP31

Q2TIP31

VR

VR

VR

R2

4.7k

R3

4.7kMOT1 MOT2

C17100nF

C18100nF

Ventilador 1 Ventilador 2

http://automodeloip.blogspot.com/ Página 4

Placas de luces, Buzzer , servo, Fototransistor para PRM y acondicionamiento de voltajes para medir el nivel de voltaje en las baterías

R1220

AK

LEFT 1LED-YELLOW

AK

LEFT 2LED-YELLOW

R3330

R410k

AK

FRONT1LED-BLUE

AK

FRONT2LED-BLUE

R2220

AK

RIGHT1LED-YELLOW

AK

RIGHT2LED-YELLOW

R5330

R610k

AK

T1LED-RED

AK

T2LED-RED

R7330

R810k

Luces Frontales Luces intermitentes de Izquierda Luces intermitentes de Derecha Luces Traseras

Q1BC548

BUZ1

BUZZER

R9

1.2k

1

2

3

RPM

CONN-SIL3

R10330

R11

4.7k

Q22N3906

R121.2k

40%

12

3

RV1

1k

R1310k

40%

12

3

RV2

1k

R1410k

1

2

3

SERVO

CONN-SIL3

1 2 3 4

FRO1CONN-SIL4

1 2 3 4

TR1CONN-SIL4

F L R T

L F R RTL

Servo

Servo

Buzz

Buzz

1

2

3

4

DIGITAL

CONN-SIL4

1

2

3

ANALOG/RPM

CONN-SIL3

BAT1 BAT2RPM

RPM

BAT1

BAT21

2

3

4

PLA

CONN-SIL4

1

2

3

4

FRO2

CONN-SIL4

L

F

R

1

2

3

4

TR2

CONN-SIL4

L

T

R

L

F

T

R

1 2

BATERIASCONN-SIL2

Buzzer Acondicionamiento de baterias circuito del foto-transistor para RPM

Conexiones de molex

http://relojcalendariotemyhum.blogspot.com/ Página 1

DISEÑO DE PCB

Arduino UNO

Puente H con transistores para motor

Tarjeta de reguladores de voltaje y ventiladores

http://automodeloip.blogspot.com/ Página 2

Placas de luces, Buzzer , servo, Fototransistor para PRM y acondicionamiento de

voltajes para medir el nivel de voltaje en las baterias

http://relojcalendariotemyhum.blogspot.com/ Página 1

CODIGO EN ARDUINO

#include <Servo.h>

//------- Variable para luces intermitentes ---------//

long tiempo_anterior_luces=0;

//------- Variable para transmisión de datos ---------//

long tiempo_anterior_tx=0;

boolean estado = false;

//------- Variables para medir RPM---------//

byte rpmcount;

unsigned int rpm;

unsigned long timeold;

long timer_3=0;

//------- Variables para medir Voltajes---------//

int analogico4 = A4;

int analogico5 = A5;

//------- Variables de control---------//

int datoserial;

const int avanzar = 6;

const int control_motor = 3;

const int retroceder = 4;

const int ventilador_1 = 7;

const int ventilador_2 = 8;

const int luces_delanteras = 5;

const int luces_traceras = 9;

const int luces_intermitentes_izq = 12;

const int luces_intermitentes_der = 13;

const int buzzer = 10;

Servo volante; // PIN 11

int alta_veloc = 0; // para encender ventilador del motor

void rpm_fun() {

rpmcount++;

}

void setup() {

Serial.begin(9600);

volante.attach(11);

pinMode(control_motor, OUTPUT);

pinMode(luces_intermitentes_izq,OUTPUT);

pinMode(luces_intermitentes_der,OUTPUT);

pinMode(luces_delanteras,OUTPUT);

pinMode(luces_traceras,OUTPUT);

pinMode(avanzar,OUTPUT);

pinMode(retroceder,OUTPUT);

pinMode(ventilador_1,OUTPUT);

pinMode(ventilador_2,OUTPUT);

pinMode(buzzer ,OUTPUT);

attachInterrupt(0, rpm_fun, FALLING);

rpmcount = 0;

rpm = 0;

timeold = 0;

http://automodeloip.blogspot.com/ Página 2

}

void loop() {

//---------Lunces intermitentes--------//

long tiempo_actual_luces = millis();

long tiempo_luces = tiempo_actual_luces - tiempo_anterior_luces;

//------------ Calculo de voltajes------------//

int bateria_circuitos = analogRead(analogico4);

int bateria_motor = analogRead(analogico5);

//------------ Encendido de ventiladores ------------//

long tiempo_ventilador = millis();

if (tiempo_ventilador >= 60000) {

digitalWrite(ventilador_1,HIGH);

}

else {

digitalWrite(ventilador_1,LOW);

}

if (alta_veloc == 1) {

digitalWrite(ventilador_2,HIGH);

}

else {

digitalWrite(ventilador_2,LOW);

}

//------------ Calculo de RPM ------------//

long timer_1 = millis();

long timer_2 = timer_1 -timer_3;

if (timer_2 >= 1000){

detachInterrupt(0);

rpm = 60000/(millis() - timeold)*rpmcount;

timeold = millis();

rpmcount = 0;

attachInterrupt(0, rpm_fun, FALLING);

timer_3 = millis();

}

///------------ Transmisión de datos Ethernet------------//

if (estado == true){ // Transmite información cuando recibe

long tiempo_actual_tx = millis();

long tiempo_tx = tiempo_actual_tx - tiempo_anterior_tx;

if (tiempo_tx >=500){ // trasnmision de datos cada 500ms

Serial.print("RPM:");

if (rpm <= 30)Serial.print("0.0");

if ((rpm>30)&&(rpm<=99)){

Serial.print("0");

Serial.print(rpm);

}

if ((rpm>=100)&&(rpm<=999))Serial.print(rpm);

if (rpm>=1000) Serial.print("0.0");

Serial.print("V1:");

if (bateria_circuitos <=9) {

Serial.print("000");

Serial.print(bateria_circuitos);

}

else if ((bateria_circuitos >=10)&&(bateria_circuitos <=99)) {

Serial.print("00");

http://automodeloip.blogspot.com/ Página 3

Serial.print(bateria_circuitos);

}

else if ((bateria_circuitos >=100)&&(bateria_circuitos <=999)) {

Serial.print("0");

Serial.print(bateria_circuitos);

}

else Serial.print(bateria_circuitos);

Serial.print("V2:");

if (bateria_motor <=9) {

Serial.print("000");

Serial.println(bateria_motor);

}

else if ((bateria_motor >=10)&&(bateria_motor <=99)) {

Serial.print("00");

Serial.println(bateria_motor);

}

else if ((bateria_motor >=100)&&(bateria_motor <=999)) {

Serial.print("0");

Serial.println(bateria_motor);

}

else Serial.println(bateria_motor);

tiempo_anterior_tx = millis();

}

}

//------------ Recepción de datos Ethernet------------//

if(Serial.available()>0){

estado = true; // recibe información para despues transmitir

datoserial = Serial.read();

if (datoserial=='W'){ // Marcha delante

digitalWrite(avanzar, HIGH);

digitalWrite(retroceder, LOW);

}

if (datoserial=='V'){ // Marcha neutral

digitalWrite(avanzar, LOW);

digitalWrite(retroceder, LOW);

}

if (datoserial=='S'){ // Marcha retro

digitalWrite(avanzar, LOW);

digitalWrite(retroceder, HIGH);

}

if (datoserial=='0'){ // motor apagado

analogWrite(control_motor, 0);

alta_veloc = 0;

}

if (datoserial=='1'){

analogWrite(control_motor, 250); // motor a 50 de velocidad

alta_veloc = 0;

}

if (datoserial=='2'){

analogWrite(control_motor, 175);// motor a 100 de velocidad

alta_veloc = 0;

}

if (datoserial=='3'){

analogWrite(control_motor, 200);// motor a 150 de velocidad

alta_veloc = 1;

}

if (datoserial=='4'){

analogWrite(control_motor, 225);// motor a 200 de velocidad

alta_veloc= 1;

http://automodeloip.blogspot.com/ Página 4

}

if (datoserial=='5'){

analogWrite(control_motor, 255);// motor a maxima velicidad

alta_veloc = 1;

}

if (datoserial=='A'){ //Dirección al giro izquierdo del vehículo

volante.write(115);

digitalWrite(luces_intermitentes_der, LOW);

if (tiempo_luces <= 500)

digitalWrite(luces_intermitentes_izq, HIGH);

if ((tiempo_luces >= 501)&&(tiempo_luces <

1000))digitalWrite(luces_intermitentes_izq, LOW);

if (tiempo_luces >= 1001) tiempo_anterior_luces = millis();

}

if (datoserial=='H'){ // Dirección neutral del vehículo

volante.write(90);

digitalWrite(luces_intermitentes_der, LOW); // intermitentes

apagadas

digitalWrite(luces_intermitentes_izq, LOW);

}

if (datoserial=='D'){ //Dirección al giro derecha del vehículo

volante.write(65);

digitalWrite(luces_intermitentes_izq, LOW);

if (tiempo_luces <= 500)

digitalWrite(luces_intermitentes_der, HIGH);

if ((tiempo_luces >= 501)&&(tiempo_luces <

1000))digitalWrite(luces_intermitentes_der, LOW);

if (tiempo_luces >= 1001) tiempo_anterior_luces = millis();

}

if (datoserial=='G'){ // encendido de Luces delanteras

digitalWrite(luces_delanteras, HIGH);

}

if (datoserial=='g'){ // apagado de Luces delanteras

digitalWrite(luces_delanteras, LOW);

}

if (datoserial=='F'){ // encendido de Luces traceras

digitalWrite(luces_traceras, HIGH);

}

if (datoserial=='f'){ // apagado de Luces traceras

digitalWrite(luces_traceras, LOW);

}

if (datoserial=='T'){ // encendido de Buzer

digitalWrite(buzzer, HIGH);

}

if (datoserial=='t'){ // apagado de buzer

digitalWrite(buzzer, LOW);

}

}

}

http://relojcalendariotemyhum.blogspot.com/ Página 1

CODIGO EN LABVIEW

Panel Frontal

Diagrama de bloques

http://automodeloip.blogspot.com/ Página 2

IMÁGENES DEL PROYECTO CONCLUIDO

http://automodeloip.blogspot.com/ Página 3

http://automodeloip.blogspot.com/ Página 4

http://automodeloip.blogspot.com/ Página 5

http://automodeloip.blogspot.com/ Página 6

http://automodeloip.blogspot.com/ Página 7

http://automodeloip.blogspot.com/ Página 8

http://automodeloip.blogspot.com/ Página 9

http://automodeloip.blogspot.com/ Página 10

http://automodeloip.blogspot.com/ Página 11

http://automodeloip.blogspot.com/ Página 12

http://automodeloip.blogspot.com/ Página 13

http://automodeloip.blogspot.com/ Página 14

http://automodeloip.blogspot.com/ Página 15

http://automodeloip.blogspot.com/ Página 16

http://automodeloip.blogspot.com/ Página 17

http://automodeloip.blogspot.com/ Página 18

http://automodeloip.blogspot.com/ Página 19

http://automodeloip.blogspot.com/ Página 20

http://automodeloip.blogspot.com/ Página 21

REFERENCIAS

https://sites.google.com/site/controltechnologyperu/home/Tutoriales/tutorial-labview/comunicacion-por-tcp

http://www.rcelectrico.es/

http://www.automodelismoparatodos.blogspot.com/

Si deseas descargar el proyecto completa visita el siguiente blog: http://automodeloip.blogspot.com/