Pinguino.docx

NUEVO CONTROLADOR PARA PINGÜINO Después de muchas pruebas logre la fácil instalación de la tarjeta pingüino para Windows

Views 210 Downloads 87 File size 12MB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

NUEVO CONTROLADOR PARA PINGÜINO Después de muchas pruebas logre la fácil instalación de la tarjeta pingüino para Windows XP y 7. Este instalador para el controlador de la tarjeta o driver se hace por medio de un asistente que se encuentra en la versión libus-win32-bin-1.2.6.0 el instalador que aparece en la página oficial de pingüino utiliza una versión anterior de libusb. Este asistente o wizard hace todo el solo y no hay que preocuparse si el sistema es de 32 o 64, solo hay que conectar la tarjeta y ejecutar el asistente.  Enlace para descargar el instalador Controlador Pingüino  Enlace para descargar el entorno de programación PinguinoX3

MONTAJE DEL SISTEMA PINGÜINO Montaje En Protoboard Del Sistema Pingüino Una de las más destacables ventajas de Pingüino es su facilidad de montaje, sobre todo si no se tiene experiencia haciendo circuitos impresos o soldando y montando en tarjetas universales. En esta publicación mostrare como se arma el sistema microcontrolado Pingüino utilizando los PIC18F2550 y PIC18F4550. Montaje De Pingüino Con El PIC 18F2550 El PIC 18F2550 es un microcontrolador fácil de conseguir y de manipular en el protoboard. En los siguientes esquemas se reemplazó el valor sugerido del capacitor VUSB de 220nf a 10uf por que presento mayor estabilidad en la comunicación con Processing.

Esquema de montaje Pingüino 18F2550

Montaje y componentes Pingüino 18F2550

Foto de montaje con el 18F2550

Montaje De Pingüino Con El PIC 18F4550 Prácticamente el montaje es igual al del 18F2550, con algunas variaciones en la disposición de los terminales por tener más. Se puede ver el vídeo de como montar el Pingüino 18F2550 como guía indicativa.

Montaje pingüino 18f4550

Esquema de montaje del pingüino 18f4550

Enlaces De Interés        

Archivo bootloader para programar el microcontrolador como pingüino bootloader.hex Programador de PIC PicKitClone Presentación de funcionalidades del PicKit Descarga del software PicKit para windows PicKit v2.61.0 Descarga del software PicKit para Linux/Mac PK2CMD Página con el plano del tiny4550 Planos de tarjeta impresa del tiny4550 Página de Jeyson con varios planos

Montaje De Pingüino En Circuito Impreso En la red existen varios planos para hacer la tarjeta impresa (PCB) de Pingüino. Aquí dejo la del Pingüino con el 18F4550 tomado del blog del creador de Pingüino. El documento pdf con la tarjeta impresa hay que imprimirlo sin ajustar documento si se utiliza acrobat para imprimir, puesto que esto afecta el tamaño original de la imagen.

 Página con el plano del tiny4550  Planos de tarjeta impresa del tiny4550  Página de Jeyson con varios planos Aspectos A Tener En Cuenta  Es muy importante tener en cuenta que en los esquemas el conector es un USB hembra y que en caso de colocar uno macho el microcontrolador estaría alimentado inversamente y dañarse.  Los capacitores de 0.01uf (104) y 10uf no son críticos en el montaje y pueden temporalmente ser omitidos (son importantes sobre todo si estamos trabajando con motores).  No es necesario resetear el microcontrolador para desconectarlo del computador.

Descarga Del Bootloader Para Convertir El Microcontrolador En Pingüino. Para hacer esto necesitaremos el archivo de extensión hex que encontramos en la siguiente ruta de la versión X4 del IDE de Pingüino extra/bootloaders/8bit/bootloaderV2.12_PIC18Fx550.hex. En la sección de enlaces de interés esta el enlace para descargar el bootloader. Para hacer la descarga necesitaremos el PicKit que es una herramienta de Microchip para la descarga de programas en los microcontroladores PIC, también puede emplearse programadores tipo PicKitClone

Como Conectar El Microcontrolador Al Programador PicKit 2 Las imágenes muestran como se conectan microcontroladores18f2550 y 18f4550.

los

cables

Se sugiere emplear colores en los cables para una fácil verificación.

Esquema del PicKit2

Conexión real

desde

el PicKit para

los

Terminales de programación para el 18f2550

Conexión para el 18F2550

Vista de conexiones del 18f2550

Terminales de programación para el 18f4550

Vista de conexiones del 18f4550

GUÍA DE MONTAJE EN PROTOBOARD PINGUINO 18F4550 DIAGRAMA ESQUEMÁTICO

Diagrama tomado de http://wiki.pinguino.cc/index.php/PIC18F4550_Pinguino#Board_overview Este es el diagrama esquemático base que se puede encontrar en la Wiki de pingüino CC 1. Los capacitores del cristal también puedes ser de valores en el rango de 15pf a 30pf 2. El capacitor de 220nf puede ser electrolítico, cerámico o de poliéster. Se puede reemplazar incluso por el capacitor electrolítico de 1uf. 3. El capacitor de 10uf es opcional y está conectado entre los terminales de fuente. 4. La alimentación la provee el puerto USB, así que hay ser cuidadosos de no hacer un corto circuito en el montaje. 5. En este montaje el conector USB es hembra del tipo B

ESQUEMA DE MONTAJE

Esquema de montaje Pingüino 18F4550 1. En el esquema el capacitor indicado 224 (código) es el capacitor de 220nf o 0.22uf que puede reemplazarse por un valor similar incluso por uno electrolítico de 1uf 2. Se recomienda diferenciar el cableado con colores para evitar un posible corto por malas conexiones. En el esquema el cable Rojo indica 5 Voltios y el cable Negro Tierra. 3. Verificar que el Led este bien conectado, el ánodo o pata más larga de un Led nuevo estará conectada a la resistencia. 4. El conector que aparece en el montaje es un conector tipo hembra que necesita una extensión macho - macho para conectar al computador. (TENER CUIDADO SI SE EMPLEA UN CONECTOR MACHO, LAS POLARIDADES DE ALIMENTACIÓN SON CONTRARIAS AL CONECTOR HEMBRA)

Componentes Pingüino 18F4550 LISTADO DE COMPONENTES BÁSICOS  PIC 18F4550  Cristal de 20Mhz  LED Rojo  Una resistencia de 470 Ohm  Una resistencia de 10K Ohm  Dos capacitores de 22 pf  Un capacitor de 220 nf  Un pulsador de dos terminales  Un conector USB hembra  Una extensión USB macho - macho

MONTAJE EN EL PROTOBOARD

Montaje en Protoboard Pingüino 18F4550

Pingüino 18F4550 en protoboard

1. Verifique que el microcontrolador no este invertido, el terminal uno está marcado con un punto además de tener una musca en media luna que indica la posición correcta del microcontrolador. Conectarlo en forma invertida puede ocasionar que dispositivo se queme. 2. Verifique con el multímetro que haya corto entre los terminales de alimentación y tierra. 3. Verificar polaridad del LED. 4. Si el pulsador es de 4 terminales, identifique con el multímetro cuales son los extremos. 5. Soldar cables de extensión al conector USB hembra. 6. Antes de conectar la el dispositivo USB hembra verifique el voltaje entre terminales con un multímetro. Una mala conexión ocasionaría un corto circuito en el computador. PROBLEMAS COMUNES EN EL MONTAJE 1. El microcontrolador está sin programar con el bootloader de pingüino. Para esto se emplea el programador PicKit y el archivo bootloader. 2. El microcontrolador está invertido. 3. El LED está invertido. 4. Se empleó un conector macho, por lo que la polaridad de alimentación esta invertida. 5. El cristal esta defectuoso.

MONTAJE PINGUINO 18F4550 PCB

PCB Pinguino y entrenador PIC FUENTES PARA REALIZAR EL MONTAJE  Guía de montaje  Fuentes en eagle

GUÍA DE MONTAJE PINGUINO Y ENTRENADOR PIC

PCB pingüino 4550 La tarjeta está diseñada para soportar microcontroladores PIC de 40 terminales y puede emplearse como entrenador PIC y o como tarjeta Pingüino.

COMPONENTES RESISTENCIAS Las resistencias se recomiendan a un cuarto de vatio.  3- Resistencias de 470 ohm.  1- Resistencia de 10 kohm. CAPACITORES Los capacitores electrolíticos están marcados con + para indicar el ánodo. El ánodo en un capacitor electrolítico nuevo es el terminal más largo.  3- capacitores de 100 nf (104).  2- capacitores de 20pf (pueden ser otros en el rango de 15 a 30 pf).  3- capacitores de 47uf (pueden ser también de 10uf).  1- capacitor de 220nf (224) Puede reemplazarse por uno de valor similar. LEDS Se recomienda leds sencillos rojo y verde.  1- Led rojo 3mm (Led de ON) el ánodo del led esta indicado con +.  1- Led verde 3mm (Led de RUN) el ánodo del led esta indicado con +. REGULADORES Los reguladores se emplean si el dispositivo se alimenta con fuente externa, aunque se recomienda una alimentación externa de 12 voltios, puede ser cualquier otra con un voltaje cercano (7v a 15v).  1-Regulador 7833 de 3.3 voltios . Se consigue también como LD33V  1-Regulador 7805 de 5 voltios. CONECTORES  2- Regletas header hembra (Como las de Arduino).  1- Regleta header macho para las conexiones SELP y 5v GND.  1- Regleta header macho en L para la conexión PICKIT.  1- Conector USB hembra.  1- Plug hembra para alimentación con adaptador de voltaje. OTROS  1- Pulsador de 4 terminales.  1- Diodo 1n4148.  1- Cristal de cuarzo de 20 Mhz, para la tarjeta Pinguino es obligatorio este valor.  1- Cable USB macho – macho.

CONFIGURACIÓNES CONFIGURACIÓN SIN FUENTE EXTERNA DE ALIMENTACIÓN

Sin fuente de alimentación externa Esta configuración es la que tiene solo los componentes necesarios para que la tarjeta opere desde la alimentación suministrad por el computador.

Selección de alimentación por USB

El Jumper SELP de selección de alimentación se coloca como indica el gráfico para seleccionar alimentación desde USB. Esta selección por Jumper previene que dos fuentes de alimentación estén simultáneamente alimentando el microcontrolador. La tierra GND si es común para los dos circuitos posibles de alimentación. En el modo USB los terminales 12V y 5V de los conectores EXT SUPPLY no operan. Solo el terminal de 3.3 está en operación para alimentación de dispositivos o sensores que operen en este rango CONFIGURACIÓN CON FUENTE EXTERNA DE ALIMENTACIÓN

Alimentación externa En esta configuración se cuenta con dos opciones de alimentación desde fuente externa o USB por medio de la selección con el Jumper SELP.

Selección alimentación externa El Jumper SELP de selección de alimentación se coloca como indica el gráfico para seleccionar alimentación externa. Esta selección por Jumper previene que dos fuentes de alimentación estén simultáneamente alimentando el microcontrolador. La tierra GND si es común para los dos circuitos posibles de alimentación. El adaptador recomendado para alimentación externa recomendado es de 12 voltios donde el exterior del plug es tierra (GND) y el interior es alimentación 12 voltios. El diodo previene el caso de que adaptador conectado tenga polaridad invertida con respecto al circuito.

Terminales para tomar alimentación Con la alimentación externa se tiene salidas de de 3.3 Voltios, 5 Voltios y 12 Voltios en los conectores indicados como EXT SUPPLY.

DIAGRAMA ESQUEMÁTICO

MONTAJE PINGUINO 18F4550 ENCONTRADO EN LA PAGINA WIKI.PINGUINO.CC TARJETAS DE 8 BITS En la pagina wiki del proyecto pinguino se encuentran varios esquemas y montajes para la tarjeta pinguino con el PIC 18F4550. En esta publicación pretendo dar una mejor explicación de estos montajes. Montaje Este montaje tiene como característica que tiene conexión a un programador de PIC como el PicKit asi que puede emplearse como tarjeta base para microcontroladores PIC de 40 terminales como el popular 16F877a La fuente de de este montaje se puede encontrar en el siguiente enlace: Diagrama esquemático

1. En el diagrama esquemático se observa que tiene protección contra inversión de voltaje en la fuente de externa de alimentación y un regulador de 5V, así que la tarjeta pude ser alimentado externamente con 12V o más sin exceder la capacidad del regulador. 2. Tiene un Jumper JP1 para seleccionar si la tarjeta se alimenta con fuente externa o desde el computador por el puerto USB. 3. Tiene un interruptor S1 para encender y apagar la tarjeta.

Circuito Impreso PCB

1. Entre el conector USB y el interruptor de encendido y apagado se puede observar los tres puntos de conexión del Jumper de selección fuente de alimentación Para USB el Jumper se conecta entre el punto central y el punto cercano al conector USB, para alimentación externa sera entre el central y el punto cercano al interruptor. 2. Tiene conexión para programador de PIC indicado con un triangulo blanco en el terminal VPP, en caso de emplear el PicKiT se recomiendo que los terminales de este conector sean en angulo.

Guía de componentes

Los valores de los capacitores de 22pf pueden ser reemplazados por capacitores en el rango de 15pf a 30pf. 2. El capacitor que aparece como de 0.33uf puede reemplazarse por uno de valor similar como de 1uf. 3. El voltaje soportado por los capacitores electrolíticos puede ser menor a 50 V, por ejemplo a 25V o incluso hasta 16V, esto depende de la fuente externa de alimentación que vaya a emplearse. 4. El capacitor de VUSB que aparece como de 0.22uf puede reemplazarse por uno de valor similar como de 1uf. También puede emplearse capacitores cerámicos o de poliester. 5. En el listado falta el conector Jumper 1.

Circuito Impreso Para Pinguino Con El PIC 18F2550 Este es el un PCB o tarjeta impresa para montar Pinguino con el 18f2550. El documento esta en formato PDF en formato carta. El documento se dejó para que pueda ser planchado en papel fotográfico propalcolte o especial para la fabricación de circuitos impresos.  

PCB Pingüino 18F2550 Más información sobre el montaje de Pingüino.

En el siguiente gráfico se muestra cómo deben ir los componentes. El conector USB es hembra y necesita una extensión para realizar la conexión al computador.

Montaje en protoboard del pingüino con el 18f2550

Este es el montaje de la tarjeta, en el caso del conector USB hembra le soldé unos terminales para que entrara bien en el protoboard, también sugiero soldarle cables, la cuestión es de que no debe despegarse el conector cuando se conecte al computador. Este es el enlace para descargar la guía de montaje https://sites.google.com/site/camachomedia/home/archivos/montaje2550.pdf?attredirects=0&d=1

LDR con Pingüino

En este montaje se utiliza el terminal 13 de pingüino como entrada analógica para medir la intensidad de luz en el LDR. El potenciómetro es de 5K y se utiliza para adecuar el rango de operación. Se puede reemplazar el potenciómetro y la resistencia de 330 por una resistencia de valor fijo ya sea de 5K o 10 sin que esto sea crítico para el montaje.

Este montaje proporciona una salida digital, el ldr se configura en modo on - off, es decir enciende o apaga según registre o no luz. El potenciómetro es de 5K y sirve para ajustar el rango de operación. El LM339 es un amplificador operacional en la configuración de comparador de voltaje.

Esta es otra configuración en modo on - off con el cd40106, el potenciómetro es de 5k.

CNY70 con Pingüino

Esta es la conexión modo on - off para el CNY70 como sensor para un robot seguidor de linea. La salida digital se indica como RC0 y también hace referencia al terminal 10 de pinguino, el que sera configurado como entrada digital.

Este es el esquema de montaje, se utiliza el terminal 10 configurado como entrada digital. Se eligió el terminal 10 para poder probar este montaje desde processing.

Con este gráfico se pueden identificar los terminales del cny70 visto desde arriba

Esta es otra configuración utilizando un LM339 como comparador de voltaje. El potenciómetro es de 5K

Motores DC con Pingüino

Montaje básico con un transistor para un motor pequeño de bajo consumo

Montaje utilizando en ULN2003.

Puente H con el L298 la señal de enable está conectada a 5V para habilitar permanentemente el motor. Vdd que hace referencia al voltaje de alimentación del motor también está a 5V para este ejemplo, en caso de requerir otro voltaje para el motor Vdd se conectara el voltaje requerido.

Aquí el terminal de enable se controla con la señal PWM de pingüino, esto es para manipular la velocidad del motor.

Este montaje corresponde al puente H utilizando los integrados LM386. Para todos los montajes que corresponden al puente H, el sentido de giro se controla con los terminales 0 y 1 de pingüino. Código correspondiente al montaje con el L298 y LM386 void setup(){ pinMode(0,OUTPUT); pinMode(1,OUTPUT); } void loop(){ //giro en un sentido digitalWrite(0,HIGH); digitalWrite(1,LOW); delay(2000); //gira en el otro sentido digitalWrite(0,LOW); digitalWrite(1,HIGH); delay(2000); //para el giro motor digitalWrite(0,LOW); digitalWrite(1,LOW); delay(2000); }

Control de sentido de giro y velocidad para un motor DC

En este esquema utilizamos la entrada análoga 13 para leer el valor entregado por el potenciómetro y así asignar este valor a la salida PWM del terminal 11. Se lee el estado del pulsador en el terminal 21 configurado como entrada. Con las salidas 0 y 1 controlamos el sentido de giro del motor. Se utiliza para este ejemplo el puente H L298.

#define PIC18F4550 int velocidad; void setup(){ pinMode(21,INPUT); pinMode(0,OUTPUT); pinMode(1,OUTPUT); } void loop(){ velocidad=analogRead(13); if(digitalRead(21)){ digitalWrite(0,LOW); digitalWrite(1,HIGH); analogWrite(11,velocidad); }else{ digitalWrite(0,HIGH); digitalWrite(1,LOW); analogWrite(11,velocidad); } }

Como hacer menús en Pingüino MENÚS Los menús de navegación se utilizan para configurar, mostrar y ejecutar procesos en una aplicación, su forma más común de implementación en aplicaciones con microcontroladores es la de utilizar una pantalla LCD y unos cuantos botones para selección o un teclado matricial dependiendo de la aplicación a realizar. En esta publicación se tratara de un menú sencillo con 4 botones pulsadores para la selección de opciones. MONTAJE DE PANTALLA LCD Y BOTONES

Este esquema muestra configurado el LCD a 4 bits y 4 botones pulsadores con resistencias dePull Up, es por esto que cuando se presiona un pulsador tenemos un bajo y en el código aparece en la condición que se evalúa si los pulsadores son LOW. APLICACIÓN A REALIZAR Descripción General Realizar un menú de navegación que permita controlar un motor paso a paso de manera que el usuario pueda indicar el sentido de giro, el número de secuencias de pasos a ejecutar y el retardo entre pasos: Planeación Del Menú De Navegación Se enumeran las diferentes etapas o instancias en el programa:     

Presentación y bienvenida. Selección del sentido de giro. Indicación del número de secuencias a realizar. Indicación del retardo entre pasos para controlar la velocidad del motor. Ejecución del giro del motor.

Descripción De Los Menús y Los Procesos Se describe en detalle que hace cada menú y el proceso a realizar en este.  Menu0: Menú de presentación y bienvenida, este menú se presentara por primera a vez al iniciar por primera vez la aplicación, deberá mostrar el nombre de la aplicación y el nombre de la institución, esperara a que se presione cualquier tecla para continuar. Una vez en ejecución la aplicación, no se debe retornar más a este menú.  Menu1: Menú de selección de sentido de giro, este menú mostrara el mensaje sentido giro, que se seleccionaran con las opciones Izq o Der respectivamente. Presionada la opción ENT, se pasara al Menu2.  Menu2: Menú de selección del número de secuencias de pasos a realizar, mostrara el mensaje secuencias y tendrá el valor de 12 por defecto, equivalente a un giro completo para un motor paso a paso de 7.5 grados con las opciones Dec o Inc se podrá incrementar o disminuir el número de secuencias. Presionada la opción ENT se pasara al Menu3 o si es presionada la opción ESC ser retornara al Menu1.  Menu3: Menú de selección del retardo entre pasos, mostrara el mensaje retardo y tendrá el valor de 100 mili segundos por defecto, con las opciones - o + se podrá incrementar o disminuir el tiempo. Presionada la opción ENT se pasara al Menu4 o si es presionada la opción ESC ser retornara al Menu2.  Menu4: Menú de ejecutar el giro del motor, mostrara el mensaje Salir o Ejecutar. Presionada la opción ENT se ejecutara el giro del motor según la configuración realizada en los anteriores menús o si es presionada la opción ESC ser retornara al Menu1. Prototipos De Pantalla Se muestra gráficamente como se verán las opciones en la pantalla para cada uno de los menús.

Diagrama De Estados Indica cómo se navega en el sistema de menús según las teclas presionadas.

Las transiciones se dan por medio de las teclas que se presionen, las teclas ENT y ESC son las que permiten avanzar o retroceder entre menús. Cuando se entra a un menú se llama una subprograma o rutina que ejecuta el procedimiento indicado según el menú. Diagrama De Flujo

Para entrada a cada menú se empleara una variable que indicara en qué estado o menú estoy, esta variable cambiara de estado según la tecla que se presione. Se empleara un ciclo mientras por cada menú y así representar los estados.

CÓDIGO DEL PROGRAMA DE NAVEGACIÓN El presente código contempla solo la navegación entre menús, no están las rutinas o funciones correspondientes a las partes operativas que tiene que ver con el motor paso a paso. Este código se presente como una plantilla que pueda ser utilizada para la construcción de otros menús. NOTA: El código esta escrito para Pingüino IDE 9.05, por la tanto las instrucciones de LCD deben ser modificadas para llevarlo a las versiones PinguinoX3 y PinguinoX4. // Manejo de menus // Realizado en Pinguino Beta 9-05 // Julio Fabio De La Cruz G. 2013 #define PIC18F4550 //Definiciones para el LCD #define EN 21 //21 es el terminal Enable del LCD #define RS 22 //22 es el terminal RS del LCD #define D4 25 //25 es el terminal de dato 4 del LCD #define D5 26 //26 es el terminal de dato 5 del LCD #define D6 27 //27 es el terminal de dato 6 del LCD #define D7 28 //28 es el terminal de dato 7 del LCD //Definiciones para los pulsadores por defecto #define S1 17 //pusador S1 #define S2 18 //pusador S2 #define S3 19 //pusador S3 #define S4 20 //pusador S4 //Definiciones para los pulsadores segun la aplicacion #define ESC 17 //Pulsador S1 como escape #define DEC 18 //Pulsador S4 como enter #define INC 19 //Pulsador S1 como escape #define ENT 20 //Pulsador S4 como enter int menu;//Varaible de navegacion o de estado actual void setup(){ menu=0;//Por primera vez en cero para entrar al menu 0 lcd(RS, EN, D4, D5, D6, D7, 0, 0, 0, 0); // RS, E, D4 ~ D8 lcd.begin(2, 0); //Configuro los terminales de entrada pinMode(17,INPUT);//Pulsador S1 pinMode(18,INPUT);//Pulsador S2 pinMode(19,INPUT);//Pulsador S3 pinMode(20,INPUT);//Pulsador S4 } void loop(){ while (menu==0) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Motor Paso-Paso"); lcd.setCursor(0, 1); lcd.print("UNIAJC 2013 633"); delay(200); if (digitalRead(ESC)==LOW||digitalRead(DEC)==LOW||digitalRead(INC)==LOW|| digitalRead(ENT)==LOW) { menu=1;//pasa el menu 1 } } while (menu==1) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Sentido Giro"); lcd.setCursor(0, 1); lcd.print(" Izq Der Ent");

delay(200); if (digitalRead(ENT)==LOW) { menu=2;//pasa al menu 2 } } while (menu==2) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Secuencias"); lcd.setCursor(0, 1); lcd.print("Esc Dec Inc Ent"); delay(200); if (digitalRead(ENT)==LOW) { menu=3;//pasa al menu 3 } if (digitalRead(ESC)==LOW) { menu=1;//retorna al menu 1 } } while (menu==3) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Retardo ms"); lcd.setCursor(0, 1); lcd.print("Esc Dec Inc Ent"); delay(200); if (digitalRead(ENT)==LOW) { menu=4;//Pasa al menu 4 } if (digitalRead(ESC)==LOW) { menu=2;//Retorna al menu 2 } } while (menu==4) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Salir Ejecutar"); lcd.setCursor(0, 1); lcd.print("Esc Ent"); delay(200); if (digitalRead(ESC)==LOW) { menu=1;//Retorna al menu 1 } } }

CONTROL DE UN MOTOR PASO A PASO CON PINGUINO

Motor paso a paso con Pingüino

El montaje corresponde a un motor paso a paso tipo unipolar con dos terminales comunes, el circuito de potencia para el manejo del motor corresponde al ULN2003 que puede emplearse para manejar motores pequeños. Para el manejo de dos motores un solo circuito integrado se emplea el ULN2803. En el esquema el común del motor está conectado a 5 Voltios y a la misma fuente del microcontrolador. La conexión del común puede ser también a 12V, también el común del ULN se conectara a los 12V.

Conexión motor paso a paso

Componentes Sin Cableado Cableado del motor

Cableado de pulsadores

Cableado Display De 7 Segmentos

EEPROM AT28C16 El emplear memorias EEPROM para la realización de circuitos digitales combinatorios y secuencial puede ahorrar el uso de compuertas y facilitar modificaciones y correcciones al los circuitos. Una memoria EEPROM básicamente es un dispositivo lógico programable y puede ser empleado como tal para la realización de circuitos digitales tanto combinatorios como secuenciales.

Terminales EEPROM AT28C16

LECTURA DE DATOS EN LA MEMORIA EEPROM Una forma fácil de leer los datos de una memoria EEPROM, es empleando Led en la salida para visualizar el dato y emplear un Dip Swicht para generar la dirección que se desea consultar

Lectura EEPROM AT28C16 En el gráfico se observa que la configuración permita la lectura desde 00H hasta FFH y que los bits más significativos del registro de direccionamiento que no son empleados son llevados a GND. Hay que tener presente que la configuración del Dip Swicht es con resistencias de Pull Up Otra forma de verificar los datos es empleando un microcontrolador como Pingüino.

Lectura EEPROM AT28C16 con Pingüino

El emplear un microcontrolador trae la facilidad de leer los datos secuencialmente o solo los que sean de nuestro interés por medio de un programa. En el ejemplo se emplea escritura directa al puerto B empleando la instrucción PORTB que en Pingüino corresponde al conjunto de terminales que van de 0 a 7.

ESCRITURA DE DATOS EN LA MEMORIA EEPROM Este tipo de memoria pude ser programada de forma manual sin la necesidad de algún voltaje especial de programación como ocurre en muchos dispositivos programables.

Programación manual EEPROM AT28C16

Para la programación manual se siguen los siguientes pasos  En el Dip Swicht de la izquierda se fija la dirección.  En el Dip Swicht de la derecha se coloca el dato que se desea guardar.  Se presiona el pulsador para escribir el dato. Para un nuevo dato en otra dirección se repite nuevamente el procedimiento descrito.

Aunque la escritura de datos se puede hacer de forma manual, es más fácil empleando un microcontrolador.

Programación EEPROM AT28C16 con Pingüino El emplear un microcontrolador, permite editar y cambiar los datos, así como direccionar en diferentes segmentos los datos que queremos escribir. En el ejemplo los datos son guardados en formato hexadecimal empleando un arreglo.

Pingüino RS232 Uno de los modos de comunicación con pingüino es la comunicación serial asíncrona con el protocolo RS232, aunque ya es poco frecuente encontrar computadores con el conector DB9 de comunicación serial se puede utilizar un adaptador USB - RS232. Existen muchos aparatos electrónicos sobre todo de uso industrial o de laboratorio que operan con este protocolo. También la gran mayoría de lenguajes de programación cuentan con librerías para la realización de aplicaciones con comunicación serial asíncrona.

Comunicación RF con los módulos RWS y TWS

COMUNICACIÓN POR RADIOFRECUENCIA CON LOS MÓDULOS RWS434 Y TWS434

Transmisor TWS 434

Receptor RWS 434

Estos módulos el receptor RWS y el transmisor TWS son económicos y fáciles de emplear. La prueba que se hizo con estos módulos consistió en comunicar dos sistemas microcontrolados Pingüino. La configuración empleada fue la siguiente.  

Comunicación serial asíncrona a 1200 baudios Configuración 8N1, 8 bits de datos ninguno de paridad y un bit de parada.

La configuración propuesta es soportada casi por la mayoría de sistemas microcontrolados. Estos módulos de comunicación son buenos en sitios abiertos y sin mucho ruido eléctrico pero es frecuente que algunos datos lleguen con errores ya sea por desfase en la frecuencia de transmisión o por ruido eléctrico que afecte la recepción de datos. En la búsqueda que hice sobre el tema encontré que en arduino se desarrolló una librería de nombre virtualwire para resolver los inconvenientes con este tipo de transmisores y receptores. Sin embargo para aplicaciones que no necesiten ser muy robustas puede ser empleado logrando buenos resultados en cualquier tipo de sistema microcontrolado. PROBLEMAS  Opera bien a 1200 baudios, pero al incrementar la tasa de transmisión por ejemplo a 9600 baudios se observa distorsión de la señal recibida.  Las antenas emisora y receptora deben estar casi paralelas una a la otra para un buena recepción si las antenas están inclinadas o acostadas la comunicación es inestable.  En sitios ruidosos eléctricamente se ve afectada la señal de recepción y esto ocasiona errores en los datos recibidos.  Si el emisor tiene el terminal de datos flotante es decir si no está conectado, el receptor recibirá ruido.  En algunas publicaciones encontré que la señal de recepción la adecuaban con un comparador porque esta no era digital, sin embargo en el módulo probado la señal de salida es completamente digital y no se necesitó de adecuación. ENLACES DE INTERÉS    

Conexión con arduino empleado la librería VirtualWire Trabajo de grado en robótica en donde utilizan un comparador para adecuar la señal Hoja técnica de los módulos TWS y RWS Tabla con el código ASCII

PRUEBA CON OSCILOSCOPIO Para realizar la prueba con un osciloscopio se empleó la siguiente configuración:    

Tarjeta Pingüino conectada al módulo transmisor TWS Punta de osciloscopio conectada a la salida del módulo receptor RWS Base de tiempo del osciloscopio 1 ms Canal A señal DC a 5 voltios por división

Envío del carácter U mayúscula En la realización de esta prueba se envió la letra U mayúscula por que su código ASCII en formato binario es fácil de identificar. También pueden enviarse otros caracteres como los numéricos, en particular el 3 que tiene un patrón binario fácil de reconocer en el osciloscopio.  U en ASCII decimal corresponde a 85 por lo tanto su valor binario es 01010101.  3 en ASCII decimal corresponde a 51 por lo tanto su valor binario es 00110011. PROGRAMA EN PINGUINO PARA EL ENVÍO DE LA U Este programa corresponde al envío del carácter U en formato ASCII void setup(){ Serial.begin(1200); } void loop(){ Serial.print("U"); }

MONTAJE EN PINGUINO

Montaje pingüino con el transmisor TWS

Montaje Pingüino del receptor RWS 434

PROGRAMA EN PINGUINO PARA EMISIÓN RECEPCIÓN Este programa corresponde al envío de los caracteres numéricos 0 y 1 void setup(){ Serial.begin(1200); } void loop(){ Serial.print("0"); delay(1000); Serial.print("1"); delay(1000); } Este programa corresponde al recepción de los caracteres numéricos 0 y 1. int caracter; void setup(){ Serial.begin(1200); pinMode(0,OUTPUT); } void loop(){

if (Serial.available()) { caracter = Serial.read(); if (caracter = ='0'){ digitalWrite(0,LOW); } if (caracter = ='1'){ digitalWrite(0,HIGH); } } }

Medidor de distancia por ultrasonido HC-SR04 con pingüino

HC-SR04 MEDICIÓN DE DISTANCIA POR ULTRASONIDO CON EL HC-SR04 El HC-SR04 es modulo sensor de distancia por ultrasonido que trae 4 terminales, dos de alimentación y dos para envío y recepción. Uno de los terminales se llama trigger o disparador, es el encargado de indicarle al dispositivo que envíe la señal ultrasónica este terminal por lo menos debe estar 10 microsegundos en alto para que envíe una señal ultrasónica. El otro terminal se llama echo o terminal de detección de eco, este terminal se coloca en alto cuando se hace el envío de la señal ultrasónica, y se coloca en bajo cuando hace recepción por medio de eco o rebote de esta sobre un objeto. Para determinar la distancia recorrida en centímetros, se cuenta el tiempo que trascurre desde que se coloca en alto el terminal de eco y este regresa a bajo, se puede contar cada 58 microsegundos para obtener una relación en centímetros. Calculo De La Velocidad Del Sonido En este ejemplo se trabajara con la velocidad a 20 grados centígrados que es V=343 m/s. Se aplica el siguiente procedimiento para hallar el tiempo en microsegundos equivalente a un centímetro.  Pasamos la velocidad a centímetros por segundo, esto da V=34300 cm/s  Calculamos el tiempo con la ecuación distancia = velocidad/tiempo, despejamos tiempo y tenemos la ecuación t=d/v, reemplazando por los valores : t=1cm/(34300cm/s) luego t = 0,000029155s  Como la señal va y vuelve hace el doble de la distancia que se desea medir, por lo tanto tomara el doble de tiempo, así que mediremos el doble de tiempo luego t=0,000058309s, finalmente pasamos este valor a microsegundos t=58,309us que para efecto práctico lo aproximaremos a t=58us en el programa.

 Tener en cuenta que la velocidad del sonido es mayor cuando aumenta la temperatura, aproximadamente 0.6m/s por cada grado centígrado. MONTAJE DE PRUEBA

Montaje básico HC-SR04 en Pingüino CÓDIGO DE PRUEBA //Codigo probado en Pinguino 9-05 //Julio Fabio De La Cruz 28-05-2013 #define Trig 8 //Defino el terminal 8 como trigger o disparador #define Echo 9 //Defino el 9 como el de recepcion del eco int Dato;//Dato sin procesar equivalente a la distancia a medir en centimetros void setup(){ pinMode(Trig, OUTPUT);//Disparador como salida pinMode(Echo, INPUT);//Eco como entrada Dato=0;//Inicio dato en 0 TRISB=0;//Configuro puerto B como salida } void loop() { while (digitalRead(Echo) == LOW) {//Pin del eco en bajo digitalWrite(Trig, HIGH);//Activa el disparador delayMicroseconds(50);//Espera 50 microsegundos (minimo 10) digitalWrite(Trig, LOW);//Desactiva el disparador } while (digitalRead(Echo) == HIGH) {//Pin de eco en alto hasta que llegue el eco Dato++;//El contador se incrementa hasta llegar el eco delayMicroseconds(58);//Tiempo en recorrer dos centimetros 1 de ida 1 de vuelta } PORTB=Dato;//Muestro dato por el puerto B delay(1000);//Espera un segundo para visualizar el dato Dato=0;//Reinicio dato a 0 }

CÓDIGO DE PRUEBA EN GREAT COW BASIC También dejo el código de prueba en basic empleando great cow basic con el fin de que pueda ser llevado a otro microcontrolador como por ejemplo el 16F877A '**************************************************************** ' Generated by Prithvi Development Studio 0.0.1 (Build: 560) ' ' Description : Porgrama basico para el HC-SR04 ' Author : Julio Fabio De La Cruz Gomez ' Date : 30/05/2013 10:32:05 a.m. ' '**************************************************************** #chip 16F877A, 4 #define trig PORTC.6 #define echo PORTC.7 TRISB = 0 'Configuro puerto B como salida dir trig out 'terminal para menejar el disparardo trigger dir echo in 'terminal para detectar el eco echo PORTB = 0 'Limpio el puerto B colocandolo en cero trig = OFF 'Terminal del disparador trigger en cero dato = 0 'Variable para guardar dato de la medicion Inicio: do while echo = OFF trig = ON 'Activa el disparador wait 50 us 'Espera 50 microsegundos trig = OFF 'Desactiva el disparador loop do while echo = ON dato = dato+1 'Contador se incrementa hasta llegar el eco wait 58 us 'Tiempo en recorres dos centimetros 1 de ida 1 de vuelta loop PORTB=dato 'Muestro dato por el puerto B wait 1 s 'Espera un segundo para visualizar el dato dato=0 'Reinicio dato a 0 goto inicio

Pingüino Android con App Inventor vía BlueTooth Comunicación De Pingüino Con Un Dispositivo Móvil Android

Módulo BlueTooth Hay varios módulos de comunicación serial asíncrona de modo inalámbrico por Bluetooth, como lo son el HC-04, HC-05. HC-06 todos para la aplicación básica de comunicación uno a uno entre un dispositivo móvil Android y un microcontrolador operan igual.

Descripción del BLK MD BC04 El modulo que se adquirió no tenía terminales de conexión directos para Protoboard, así que se procedió a soldar los terminales con cuidado. Se recomienda adquirir estos módulos ya listos para conexión en Protoboard o escudos Pingüino Arduino.

Montaje Bolutek BC-04 La alimentación para todos estos dispositivos es de 3.3 voltios los módulos que ya están listos para usar tienen regulación de voltaje y pueden alimentarse directamente a 5 voltios

Conexión En el esquema de conexión se observa que el microcontrolador está alimentado a 3.3v pero puede estar alimentado a 5v siempre y cuando el módulo Bluetooth este a 3.3v o tenga un regulador que permita alimentación a 5v.

Montaje Para La Recepción De Datos

Montaje recepción Pingüino BlueTooth Para la recepción de datos se conecta el terminal TX del módulo BlueTooth con el terminal RX de la tarjeta Pingüino. En el esquema se observa que por utilizar 5V se empleó un regulador de 3.3V para alimentar el módulo BlueTooth, los módulos que están listos para usar en el protoboard tienen el regulador ya integrado.

Programa de recepción y encendido de un Led

Este es el programa que se descarga en Pingüino, en el momento de las pruebas este no opero empleando Pingüino X4 así que se compilo con Pingüino 9.05 y funciono correctamente.

Pantalla de diseño en App Inventor

Bloques del programa App Pingüino BlueTooth Los bloques son de guía para otros programas más elaborados, de manera fácil se agregan otros botones para enviar diferentes textos, es de tener en cuenta que en la recepción de Pingüino se espera un carácter por esto los textos tienen una sola letra.