Anda di halaman 1dari 66

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 los cables desde el PicKit para los
microcontroladores18f2550 y 18f4550.
Se sugiere emplear colores en los cables para una fácil verificación.

Esquema del PicKit2

Conexión real
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
1. 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
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.

Anda mungkin juga menyukai