56
http://automodeloip.blogspot.com/ ()tructura basica de programacion. 1-5-2015 Por: Byron Ganazhapa http://relojcalendariotemyhum.blogspot.com/ Página 1 ARDUIN O Y LABVIE AUTOMODELO IP

Automodelo Ip

  • Upload
    byrosw

  • View
    6

  • Download
    2

Embed Size (px)

DESCRIPTION

Este es un proyecto que consiste como diseñar y construir un Automodelo desde cero en la plataforma Arduino y el entorno LabVIEW.

Citation preview

AUTOMODELO IP

Por: Byron Ganazhapa

ContenidoIntroduccin1Qu necesitamos?1Desarrollo4Configuracin de equipos4Trasmisin y Recepcin de datos9Acondicionamiento de voltajes para lectura de bateras13Conexin de pines de entradas y salidas del Arduino2Esquemticos1Diseo de PCB1Codigo en ARDUINO1Codigo en LabVIEW1Imgenes del proyecto concluido2

http://relojcalendariotemyhum.blogspot.com/Pgina 1

http://automodeloip.blogspot.com/ Pgina 2

Introduccin

Un Automodelo IP, es un vehculo a escala desarrollado en Arduino y controlado desde LabVIEW a travs de comunicaciones inalmbricas wifi, tambin llamada WLAN o estndares IEEE 802.11.Este proyecto consiste en el diseo y construccin de un vehculo 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 mecnica y electrnicamente.La tarjeta Arduino recibe y transmite la informacin necesaria para el clculo 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 electrnicos y motor, control de luces delanteras y traseras, medida de niveles de energa de batera(s), y clculo de revoluciones por minuto (RPM).El programa desarrollado en LabVIEW dispone de una interfaz idntica a un tacmetro vehicular, donde visualiza la velocidad actual del vehculo, RPM, nivel de voltaje de la batera, etc.

Qu necesitamos?

Para este proyecto es muy indispensable disponer de un conjunto de herramientas bsicas de un laboratorio de electrnica: un soldador, alambre de estao, 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 Voltios 1x WIZnet Serial-to-Ethernet Gateway - WIZ110SR (o por preferencia se puede usar un Mdulo Ethernet de Arduino). 1x servomotor 1x Router 1x Batera tipo Lipo de 11.1 Voltios a 4000 o 5000 mA 2x Kit de llantas 2x ventiladores de 5 Voltios 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 Voltios) 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 2x potencimetros lineales de 50KOhms. 2x condensadores electrolticos de 470uF, 1x condensador polister de 470 nF, 3 x 100uF, y 2 x 10uF 3x condensadores cermicos 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 UNOWIZnet WIZ110SRRouter

Batera de LipoKit de llantas Ventilador de 5V

TransistoresResistenciasPotencimetro lineal

TransistoresDiodosCondensadores cermicos

Condensadores electrolticosReguladores de voltajeDiodos LED

BuzzerEspadines hembra y machoPlugs DC

motor DCMolexPCB

ServomotorCable de red

Desarrollo

Configuracin de equipos

Con el objetivo de realizar la comunicacin entre el prototipo y una Laptop es necesario disponer de un mdulo convertidor Serial a Ethernet o Wifi. En este proyecto de usa una configuracin entre la tarjeta Wiznet WIZ110SR y un router para la comunicacin entre la PC y la placa Arduino. Es decir se crea una red LAN para dicha tarea.A. Configuracin del mdulo WIZNETPara realizar la tarea de transmisin de datos es necesario configurar el mdulo WIZ110SR como servidor, de tal manera que, permita a un cliente conectarse a su red para el intercambiar de informacin respectiva y que permita visualizarlos.Los parmetros de configuracin del servidor WIZ110SR son: Direccin IP: 192.168.11.2 Mscara de Subred: 255.255.255.0 Puerta de enlace: 192.168.11.1 Direccin MAC: 0x00.0x08.0xDC.0x17.0xCF.0x3F Puerto local: 5000

Configuracin serial del servidor WIZ110SR: Velocidad de transmisin serial: 9600 Tamao de bits de datos: 8 bits Paridad: ninguna Bit de parada: 1 bit

B. Configuracin del RouterSe puede usar cualquier router, basta que se pueda configurar para disear 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 dinmicamente para que cualquier host que pueda conectarse a l. Tanto para User Name y Password es admin.

Para Wireless la configura es bsica: canal, ancho de banda del canal, y estndar 802.11 b/g/n. Se escoge el canal uno para evitar interferencias entre otros redes y canales.

Para la red LAN definimos las direcciones IP dinmicamente para que las entregue a los equipos que se conecten ya sea por cable o por wifi.

C. Configuracin de la PCIngresamos al Centro de redes y recursos compartidos de la PC para configurar el adaptador de red inalmbrico

Configuramos en propiedades el protocolo de internet versin 4 (TCP/IPv4).

De tal manera que ingresamos una direccin IP a la PC distinta a las IP ya ocupadas (192.168.11.3), puerta de enlace que es la direccin IP del router (192.168.11.1) y la mscara 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 mdulo Wiznet

Trasmisin y Recepcin de datosArduino trasmite y recibe informacin de la red LAN a travs del puerto serial del micro-controlador de para ser visualizada en un host las variables de RPM y niveles de energa de la(s) batera(s), etc.Un host se conecta a la red para trasmitir los datos de control al prototipo 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. Transmisin de datos desde Arduino hacia un HostArduino transmite su informacin por el puerto serial a una velocidad de 9600 Baudios/s. Ojo es importante configurar el Modulo Wiznet y Arduino a la misma velocidad, tamao de datos, paridad, etc. La trasmisin se la realiza durante cada 500 mili-seg. En una sola trama de longitud esttica como lo indica en la siguiente imagen:

RPM en un tamao de 3 digitos.V1 y V2 trasmite el valor de voltaje en las bateras 1 y 2 respectivamente. Batera 1 es usada para energizar los circuitos, y Bateria 2 es para el motor. Si prefieres puedes usar una sola batera para conectar todo el proyecto y leer el nivel de voltaje en un solo punto de la batera. V1 es conectado al puerto analgico 4 del Arduino y V2 al puerto analgico 5 del Arduino.V1 y V2 son trasmitidos en tamaos de 4 dgitos.En importante trasmitir en tamaos de 21 caracteres toda la informacin, de tal manera que no exista inestabilidad, desplazamiento y lectura de datos errneos al momento de recibir toda la informacin en la plataforma LabVIEW.B. Recepcin en ArduinoArduino recibe informacin desde cualquier host conectado a la red para el control respectivo del prototipo: Recibe el carcter W para dar marcha al motor hacia delante Recibe el carcter V para neutralizar marchas Recibe el carcter S para dar marcha al motor hacia tras (giro reverso del motor). Recibe el carcter 0 para realizar el cambio cero o neutral (el motor no realizara la marcha hacia delante si este est en cero) Recibe el carcter 1 para realizar el primer cambio (el motor realizara la marcha hacia detente si la 1ra o hasta la 5ta estn activas) Recibe el carcter 2 para realizar el segundo cambio para aumentar la velocidad. Recibe el carcter 3 para realizar el tercer cambio para aumentar a velocidad media. Recibe el carcter 4 para realizar el cuarto cambio Recibe el carcter 5 para realizar el quinto cambio para aumentar la velocidad mxima. Recibe el carcter A para dar giro a la izquierda, este depende de cmo se conecta el servomotor. Y para la accin intermitente de luces. Recibe el carcter H para neutralizar el giro del servomotor. Recibe el carcter D para dar giro a la derecha, y para la accin intermitente de luces. Recibe el carcter G para el encendido de luces delanteras Recibe el carcter g para el apagado de luces delanteras Recibe el carcter F para el encendido de luces traseras Recibe el carcter f para el apagado de luces traseras Recibe el carcter T para el encendido del Buzzer Recibe el carcter t para el apagado del Buzzer.

C. Transmisin de datos desde LabVIEW hacia un ArduinoLabVIEW trasmite su informacin para el control del prototipo en el protocolo TCP/IP disponibles en la paleta de funciones. LabVIEW 2012 o una versin superior tiene que ser instalada en el computador que se quiera conectar a la red.La informacin trasmitida es la informacin recibida por la tarjeta Arduino, por ejemplo:HV0tgfDonde H es para no girar el vehculo, V para neutralizar marchas, 0 para no tener ningn 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 regpg y avpg en HP o PGUP y PGON en cualquier computador.

regpg aumenta y avpg decrementa los cambios que se desea.

D. recepcin de datos en LabVIEWComo se ha mencionado antes, LabVIEW recibe toda la informacin en una sola trama de longitud esttica, por ejemplo:RPM:120V1:0674V2:0509Una vez recibida toda la informacin se desentrama cada variables por separado para realizar los clculos y visualizaciones respectivas como por ejemplo: clculo de velocidad actual del vehculo en cm/s, RPM, niveles de energa en las bateras de 0 a 12V y de 0% al 100% tanto para el motor como para los circuitos.Acondicionamiento de voltajes para lectura de baterasEs importante acondicionar los niveles de voltaje para lectura en los puertos analgicos del Arduino de 0 a 5V. En nuestro caso se acondiciona los niveles de voltajes para bateras de 11.5 voltios para 5 voltios de entrada en la tarjeta.Entonces aplicando la ecuacin de divisin de voltaje se obtendr el resultado de los potencimetros.

En LabVIEW se realiza el proceso inverso para obtener los niveles de voltaje reales de las bateras, es decir de 5V a 11.5 voltios como nivel mximo de la batera. Y adicionalmente se realiza un clculo en porcentaje de los niveles de energa de las bateras; como niveles mnimos de las bateras es de 7.5V y mximos de 11.5V, es decir 7.5V = 0% y 11.5V = 100%.

Cuya ecuacin es: Conexin de pines de entradas y salidas del ArduinoLa asignacin de los pines de la tarjeta Arduino esa distribuida de la siguiente manera:

1) Puerto Analgico A4 para batera 1, ya acondicionada2) Puerto Analgico A2 para batera 2, ya acondicionada3) Puerto digitales 0 (RX) y 1 (TX) para comunicacin serial4) Puerto D2 entrada para RPM5) Puerto D3 salida para PWM del motor principal6) Puerto D4 salida para control del motor en sentido horario7) Puerto D5 salida para luces frontales8) Puerto D6 salida para control del motor en sentido anti- horario9) Puerto D7 salida para control del ventilador 110) Puerto D8 salida para control del ventilador 211) Puerto D9 salida para control de luces traseras12) Puerto D10 salida para Buzzer13) Puerto D11salida para servomotor14) Puerto D12 salida para luces intermitentes izquierda15) Puerto D13 salida para luces intermitentes derecha.

EsquemticosArduino UNO. (Opcional)

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

Puente H con transistores para motor

Tarjeta de reguladores de voltaje y ventiladores

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

Diseo de PCBArduino UNO

Puente H con transistores para motor

Tarjeta de reguladores de voltaje y ventiladores

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

Codigo en ARDUINO

#include

//-------Variableparalucesintermitentes---------//long tiempo_anterior_luces=0;

//-------Variableparatransmisindedatos---------//long tiempo_anterior_tx=0;boolean estado = false;

//-------VariablesparamedirRPM---------//byte rpmcount;unsigned int rpm;unsigned long timeold;long timer_3=0;

//-------VariablesparamedirVoltajes---------//int analogico4 = A4;int analogico5 = A5;

//-------Variablesdecontrol---------//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 11int 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;}

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();}

///------------ Transmisin de datos Ethernet------------//if (estado == true){ // Transmite informacin cuando recibelong tiempo_actual_tx = millis();long tiempo_tx = tiempo_actual_tx - tiempo_anterior_tx; if (tiempo_tx >=500){ // trasnmision de datos cada 500msSerial.print("RPM:");if (rpm 30)&&(rpm=100)&&(rpm=1000) Serial.print("0.0");Serial.print("V1:");if (bateria_circuitos =10)&&(bateria_circuitos =100)&&(bateria_circuitos = 1001) tiempo_anterior_luces = millis();}if (datoserial=='H'){ // Direccin neutral del vehculovolante.write(90);digitalWrite(luces_intermitentes_der, LOW); // intermitentes apagadasdigitalWrite(luces_intermitentes_izq, LOW);}if (datoserial=='D'){ //Direccin al giro derecha del vehculovolante.write(65);digitalWrite(luces_intermitentes_izq, LOW);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 delanterasdigitalWrite(luces_delanteras, HIGH);}if (datoserial=='g'){ // apagado de Luces delanterasdigitalWrite(luces_delanteras, LOW);}if (datoserial=='F'){ // encendido de Luces tracerasdigitalWrite(luces_traceras, HIGH);}if (datoserial=='f'){ // apagado de Luces tracerasdigitalWrite(luces_traceras, LOW);}if (datoserial=='T'){ // encendido de BuzerdigitalWrite(buzzer, HIGH);}if (datoserial=='t'){ // apagado de buzerdigitalWrite(buzzer, LOW);}}}

Codigo en LabVIEW

Panel Frontal

Diagrama de bloques

Imgenes del proyecto concluido

Referencias

https://sites.google.com/site/controltechnologyperu/home/Tutoriales/tutorial-labview/comunicacion-por-tcphttp://www.rcelectrico.es/http://www.automodelismoparatodos.blogspot.com/

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