Archivo del sitio
Escudo de Ethernet W5100 – II
Esta entrada es una evolución de la anterior «Escudo de Ethernet W5100 – I» . Esta vez nos centraremos en representar los valores de las seis entradas analógicas de las que cuenta el Arduino UNO, además puliremos un poco el interface de la página para darle un aspecto uno poco más profesional (solo un poco).
Programamos el aspecto de un botón y lo sustituimos por el del enlace anterior.
Otro de los aspecto que debemos programar es la visualización de las entradas analógicas.
Esquema de los LED
Circuito teórico
Circuito Práctico.
Otra Foto
Programa Arduino
Página Web
Códigos Fuente Arduino
Vídeo resumen:
Escudo de Ethernet W5100 – I
Vamos a conectar un arduino duemilanove con un escudo Ethernet W5100 y realizaremos un servidor Web.
Cuando conectamos un Arduino Ethernet Shield en un Router, éste le asigna una dirección IP dentro de tu propia Red que se encuentre libre, es decir, una identificación que le permite diferenciar a tu Arduino del resto de ordenadores y demás elementos que tengas conectados a la red local de tu casa. Si no conocemos esa IP, el sistema dejará de funcionar. Para solucionar esto, lo que realizamos es asignarle mediante programación un IP conocida que se encuentre libre en nuestra Red Local con los siguientes pasos:
- Pulsa el botón de inicio.
- En la barra de búsquedas, escribe “cmd” y ejecuta el programa encontrado.
- Te habrá salido otra ventana de fondo negro.
- Escribe en ella “ipconfig”.
- Vamos a mirar si la dirección IP 192.168.1.177 se encuentra libre
- Escribe ping 192.168.1.177
IP Libre
IP Ocupada
Todas los dispositivos que conectas a tu red poseen un número identificativo “MAC”, de cara a la red, es como su DNI. Al igual que la IP, no debe haber otro dispositivo con el mismo MAC. El MAC de tu Arduino puede ser fijado por ti, por defecto puede ser: byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }, salvo que tengas especial interés por utilizar otra.
Vamos a crear un página Web con seis enlaces, tres enlaces encenderán un LED, o otros tres lo apagarán de la siguiente forma:
- Cargamos las librerías y realizamos la asignaciones de la dirección IP, MAC y puerto del servidor.
- Establecemos los pines de Salida para los LED
- Inicializamos la conexión Ethernet
- Creamos una conexión Cliente
- Creamos la página Web
- Y por último evaluamos si ha sido pulsado algún enlace
Esquema de los LED
Circuito teórico
Circuito Práctico.
Programa Arduino
Página Web
Códigos Fuente Arduino
Vídeo resumen:
Polímetro 2
Basándome en la entrada anterior, he construido una simulación de lo que podría ser un polímetro.
Las características son la siguientes:
Intensidad entro 0 y 5 A
Tensión entre 0 y 5 V
Resistencia, lo he dejado para un posterior cálculo, aunque basándose en la ley de Ohm la implementación es muy sencilla.
Desarrollo en Arduino.
Está basado en la entrada anterior (https://ardubasic.wordpress.com/2016/10/01/midiendo-intensidad/) y lo que hace es sacar la media de las medidas que realiza el sensor. Anteriormente el sensor debe estar calibrado.
Desarrollo en Visual Basic
Está basado en la entrada (https://ardubasic.wordpress.com/2013/11/04/comunicacion-con-visual-basic/) . Lo que he realizado es una mejora del diseño y la introducción de un sensor medidor de intensidad. He aumentado a tres las lecturas y el registro de los datos utilizando lo explicado en la entrada ( https://ardubasic.wordpress.com/2015/11/01/exportando-a-excel-los-valores/ ).
Obtener datos
Se realiza una escritura del carácter ASCII 10 para que el Arduino mande los datos. Leyéndolos la aplicación a continuación.
Representar en la Pantalla de Medida
Dependiendo de la escala y el parámetro que hemos seleccionado, realiza la representación en pantalla.
Representación Gráfica.
Se realizan los cálculos para que la representación se realice entre unos puntos definidos.
Configuración del SerialPort.
En el cuadro verde, señalo el puerto de comunicación de la aplicación con Arduino.
En el cuadro azul, señalo el parámetro «DtrEnable» que debe ser True para el Arduino Leonardo, si no se realiza así, hay problemas en la comunicación, envía datos pero no recibe. Si es otra placa distinta esta última consideración, no se tiene que tener en cuenta.
Código Arduino
Circuito Teórico
Fotos
Midiendo tensión y registrando los datos
Midiendo Intensidad y registrando los datos
Código Fuente Arduino Completo
Proyecto VB 2015
Vídeo resumen:
Midiendo Intensidad
En esta entrada realizaremos medidas de intensidad a través del sensor ACS712 – 5A, dicho sensor internamente trabaja con un sensor de «Efecto Hall» que detecta el campo magnético que se produce por inducción de la corriente que circula por la línea que se está midiendo y nos entrega un voltaje proporcional a la corriente.
Edwin Hall(1855-1938) descubrió que si por una fina lámina de oro circula una corriente y se le aplica un campo magnético elevado perpendicular al movimiento de las cargas, aparece una separación de cargas que da lugar a un campo eléctrico en el interior de la lámina, perpendicular al movimiento de las cargas y al campo magnético aplicado, a este campo eléctrico se le denomina “Voltaje Hall”
En el mercado podemos encontrar el ACS712 para diferentes rangos de intensidad:
El sensor necesita alimentación de +5v y este nos entrega un valor de +2.5 voltios más una tensión proporcional a la intensidad que circula por él, con una relación lineal entre la salida de voltaje del sensor y la corriente. Dicha relación es una línea recta donde la pendiente es la sensibilidad y la intersección en el eje Y es 2.5 voltios. La ecuación de la recta seria la siguiente:
Tensión de Salida del Sensor = Sensibilidad * Intensidad que Circula + 2.5
de donde se despeja que:
Intensidad=(Tensión de Salida del Sensor -2.5)/Sensibilida
Circuito ACS712
Sensor
Calibración del punto intensidad cero sin carga.
Para realizar el calibrado inicial del punto cero (sin carga) realizaremos un programa que en ausencia de intensidad debería de dar una salida de 2.5 v.
Para evitar ruido, realiza 1.000 medidas y luego realizo la media.
Pero como se puede observar el valor es ligeramente superior 2.503 v
Calibrando la sensibilidad del Sensor.
Como hemos dicho anteriormente el sensor responde a una ecuación de la resta con una pendiente que es el valor de la sensibilidad, pues bien calculando dos valores, seremos capaces de calcular la pendiente de la recta con la formula siguiente:
Sensibilidad del sensor = (V1-V0)/(I1-I0)
Para realizar el ensayo coloco una carga de aproximadamente 230 mA y realiza una nueva medida con el programa anterior, obteniendo los siguientes resultados:
Con estos valores calculamos la pendiente.
Sensibilidad del sensor = (2.530-2.503)/(230-0)=0.117
Sensibilidad=0.117 V/A
Realizando Mediciones
Circuito teórico
Circuito Práctico.
Medida del Polímetro
Medida del Sensor
No se varia mucho de lo que hemos medido con el polímetro, aunque para ser sinceros, para obtener unos resultados aceptables hay que realizar una calibración cada vez que realicemos la medida.
Código del Programa de Medida
Códigos Fuente Arduino Completo
Vídeo resumen:
Movimiento de Brazos
He tardado un poco en publicar esta entrada pero por problemas de recepción de los servos y el periodo vacacional no ha sido posible antes.
Por fin el ArduRobot ya mueve los brazos pero al hacerlo tiene problemas de estabilidad, por lo que he tenido que ponerle unos zapatos un poco más grandes y el problema se ha solucionado.
Como la calidad de los servos es la que es, he diseñado una rutina para mover los brazos que realiza el movimiento en diez submovimientos, con lo que mejora la respuesta y los servos sufren meno.
Rutina de Movimientos de los brazos.
Fotos
Frontal
Perfil
Zapatos Nuevos
Video:
Midiendo Sensores
He decidido dotar al ArduRover de tres entradas analógicas para poder medir y representar sensores externo que se conecten a él.
Es una evolución de la anterior entrada. En esta ocasión, doto al programa de un panel de configuración, para que se pueda personalizar las medidas que se realicen.
Como podemos ver se puede configurar el nombre del sensor a representar, el valor de aviso(por si queremos que al llegar a un valor dado nos avise), si se representa o no, el valor máximo en la escala y un último valor que ajustará los valores recibidos a una escala real de medición.
Si conectásemos el sensor siguiente, el valor de conversión sería -> 0.4882
Continuamos con la posibilidad de almacenar los valores en una hoja de Excel, para su posterior análisis.
La programación con VB es casi idéntica al realizado en la entrada «Conociendo el Estado de los Sensores» y el posterior « Exportando a Excel los valores» con unos pequeños ajustes para parametrizar las medidas.
Una mejora que puede dar muy buen resultado es realizar una media de diez mediciones antes de enviar el valor desde Arduino a la aplicación, con esta minimizamos parte de los errores por ruido.
Esquema Práctico del Sensor LM35:
Esquema Práctico de las Entradas Analógicas:
Lista de Piezas
Dibujo de la Pieza | Nombre | Nº Piezas |
Soporte Hembra | 1 | |
Soporte Macho | 1 | |
Porta Soporte | 2 |
Extracto del Programa Arduino:
Fotos:
Detalle con sensores
Primer plano
Visión General del Programa
Detalle del Panel de Configuración
Código Fuente Arduino Completo
Proyecto VB 2015
Vídeo resumen:
ArduRobot – Equilibrios
Esta entrada es continuación de la anterior (Arduino – Primeros Pasos).
He aumentado la superficie de apoyo, y le he puesto unos zapatos para dar mayor estabilidad.
He creado un cuerpo y en su interior he alojado el paquete de pilar y el «Arduino»; es una versión preliminar para ver la posible configuración final. Cuando sea definitivo publicare las piezas en 3D para poder reproducirlo.
Como se puede observar lleva dos servos laterales que serán utilizados para los brazos y un servo superior que será para la cabeza.
Procedimiento del movimiento 90º Pierna
Fotos
Modelado 3D
ArduRobot de Frente
ArduRobot de Perfil
Perfil Trasero
Sentado
Código Fuente Arduino Completo
Vídeo resumen:
ArduRover puede Seguir Líneas
¿Qué pretendo realizar?
Básicamente lo que pretendo realizar es que el Rover sea capaz de desplazarse a lo largo de una línea de un color negro diferente al fondo blanco, para ello he colocado cuatro sensores, de los que en principio solo utilizaré dos.
El funcionamiento básicamente consta de tres ordenes y son las siguientes:
Los dos sensores están sobre la línea, avanzamos
El sensor de la derecha ha salido de la línea, giramos hacia la izquierda
El sensor de la izquierda ha salido de la línea, giramos hacia la derecha
Los dos sensores están fuera de la línea, sigue con lo que estabas realizando.
Para ampliar información – pulsa aquí
Lista de Piezas
Dibujo de la Pieza | Nombre | Nº Piezas |
Soporte CNY70 | 1 | |
Porta Soporte | 2 |
Bloque Sigue Líneas
Esquema Parcial Teórico:
Esquema Práctico Simplificado:
Extracto del Programa Arduino:
Fotos:
Frontal
Detalle Frontal
Panza
Detalle Panza
Código fuente Completo
APP de Proyecto:
Ficha del Proyecto:
ArduRover_XI_Sigue_Linea_Ficha_39
Vídeo resumen:
Controlar el Brazo Robot con Android
Controlar el Brazo Robótico con la App diseñada.
Como continuación a la entrada anterior he seguido diseñando partes del brazo robot que quiero para el ArduRover, he introducido un grado más de libertad y he diseñado la interfaz que lo controla.
La primera dificultad que me he encontrado es la alimentación con la suficiente energía para abastecer a los cuatro servos. La solución aunque no muy buena, es utilizar un 7806 cuya alimentación proviene directamente de las baterías del ArduRover y a través de el alimentar los servos.
Las características del 7806 son muy parecidas a las del ya utilizado 7805, pero con tensión de salida 6 voltios. Al aumentar la tensión el requerimiento de intensidad es menor y si disponemos de un buen refrigerador(en mi caso no lo he puesto aunque es necesario)solucionaremos el problema.
Lista de Piezas
Dibujo de la Pieza | Nombre | Nº Piezas |
Base Muñeca | 1 | |
Muñeca | 1 | |
Lateral Brazo | 4 | |
Repy 1.1 Head | 2 | |
Repy 1.1 Body | 2 |
Transmisión de datos entre Android y Arduino:
En principio y de manera muy resumida el funcionamiento de la transmisión de los datos de la posición que definimos en el programa desde la Tablet al ArduRover es el siguiente:
- Definimos la posición de cada servo
- Memorizamos dichas posiciones en unas variables
- Transmitimos una «F» y a continuación una cadena separada con el carácter «;» con todas las variables anteriores por Bluetooth
- Arduino recibe la cadena, la separa y asigna a cada servo la posición futura
- Mediante el procedimiento «posicionServo» los servos recorren desde la posición actual hasta la futura. Con esto los movimientos son más suaves
Los procedimientos «recibirCadenaServo», «valorServos» y «posicionar» podrían haberse juntado, pero por claridad los he separado
He incluido la posibilidad de memorizar cuatro posiciones del brazo robot para dar mayor funcionalidad a la interfaz
Bloques de Memorizar posición
Bloques de Grabar la Posición de los Servos
Bloques de Transmisión de la posición de los servos al Arduino
Esquema Teórico:
Esquema Práctico:
Extracto del Programa Arduino:
Fotos:
Pantalla Principal
Pantalla de control del Brazo Robot
Vista con el Brazo Plegado
Vista con el Brazo Extendido
Detalle de conexión
Código fuente
APP de Proyecto:
Ficha del Proyecto:
Vídeo resumen:
Brazo Robot
Realización de un brazo Robótico.
Como continuación a la entrada anterior he seguido diseñando partes del brazo robot que quiero para el ArduRover. Como os comenté, las piezas las he diseñado con el programa «FreeCad» y las he impreso con la impresora 3D «BQ Prusa i3 Hephestos».
De la web de «Juan González Gómez» he utilizado los «Módulos Y1» nuevos y basándome en ellos he desarrollado las nuevas piezas.
He utilizado un programa para cargar los objetos y crear el archivo que tras grabarlo en una SD lo imprimira la impresora.
Lista de Piezas
Dibujo de la Pieza | Nombre | Nº Piezas |
Base Muñeca | 1 | |
Muñeca | 1 | |
Lateral Brazo | 2 | |
Repy 1.1 Head | 1 | |
Repy 1.1 Body | 1 |
Faltaría la articulación del hombre que en un futuro deberé decidirlo.
Esquema Teórico:
Esquema Práctico:
Programa Arduino:
Fotos:
Vista Lateral
Otra vista Lateral
Detalle codo
Detalle brazo
Detalle Muñeca
Vista Superior
Vista 360 grados