Manual Pinguino v 1.1.pdf
-
Upload
sergio-arcienaga -
Category
Documents
-
view
207 -
download
197
Transcript of Manual Pinguino v 1.1.pdf
-
Responsables:
Miguel Papadpulos
Sergio Arcinaga
Taller Prctico de Robtica
Educativa con Hardware y
Software Libre
Multiplataforma
Conocimiento al alcance de todos
Pensado para su aplicacin en el aula
-
Robtica Educativa con Pingino
2 Salta Argentina 2013
A modo de Prlogo
Estimados estudiantes y docentes: En esta cartilla hemos tratado de recopilar parte de la informacin que se encuentra fundamentalmente en la web, a los efectos de poner a disposicin del sistema educativo salteo, los conocimientos necesarios para iniciarse en el fascinante mundo de la robtica. El taller est pensado para desarrollar las capacidades de creatividad y pensamiento lgico de nuestros estudiantes y docentes, para mejorar las competencias comunicativas y de resolucin de problemas, en forma colaborativa. Toda la informacin ha sido extractada de sitios de personas que comulgan con la filosofa del hardware y el software libre, es decir de la libre circulacin del conocimiento y su intercambio. Es por ello que les decimos a todos los que tengan acceso a este material y lo consideren de utilidad, sintanse libres de modificarlo y distribuirlo. Por ltimo agradecemos a todas las instituciones educativas que, a partir de su participacin en el taller, nos hicieron llegar sus sugerencias y correcciones.
Miguel y Sergio
-
Robtica Educativa con Pingino
3 Salta Argentina 2013
NDICE
::: Introduccin a la Plataforma "Pingino" .................................................................................................4
Plataformas de Hardware Libre: ..............................................................................................................4
::: Hardware Mnimo Inicial .........................................................................................................................5
Resultado Final del armado Fsico ...........................................................................................................5
Esquema lgico de la plataforma ............................................................................................................6
::: Software inicial ........................................................................................................................................6
Instalacin del Software Pingino en Windows 7 ...................................................................................7
::: Creacin y ejecucin de mi primer programa (Hola Mundo). .......................................................... 13
::: Inicio de tu primer proyecto ................................................................................................................. 18
1 Opcin de Solucin: Fuerza Bruta ................................................................................................. 19
2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta) ............................................ 20
3 Opcin de Solucin: Utilizacin de un vector. .................................................................................. 22
:::: Encender y Apagar un led utilizando un pulsador ............................................................................... 23
:::: Armemos un semforo ........................................................................................................................ 24
:::: Combinando los ejemplos anteriores .................................................................................................. 25
:::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite............................................... 26
::: Calentando Motores! .......................................................................................................................... 29
:::: Pongamos Blanco sobre Negro o Negro sobre Blanco ........................................................................ 34
:::: Fuentes de informacin consultada .................................................................................................... 36
:::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE ..................................... 37
:::: Anexo II: Instalacin de los Drivers de Pingino en Windows 8 .......................................................... 39
-
Robtica Educativa con Pingino
4 Salta Argentina 2013
::: Introduccin a la Plataforma "Pingino"
Pingino es una plataforma de hardware y software "open source" para la experimentacin con
microcontroladores, similar a Arduino pero basada en un microcontrolador PIC18F2550/4550 y cuenta con su
propio Entorno de Desarrollo Integrado (IDE) de uso y apariencia similar al de Arduino. A diferencia de la placa
Arduino, el Pingino no necesita una Interfaz UART a USB adicional para comunicarse con la PC, debido a que el
microcontrolador PIC18F2550/4550 tiene un mdulo USB integrado, lo cual le permite comunicarse
directamente con la PC y reduce el costo del hardware, dejando adems libre el puerto UART del
microcontrolador para las aplicaciones.
Plataformas de Hardware Libre:
Arduino1 Pingino2
El circuito bsico del Pingino es muy simple y slo se precisan unos pocos componentes; todo el software
necesario est disponible para bajarse de internet gratuitamente.
En este manual vamos a ver los siguientes aspectos:
Hardware mnimo inicial
Instalacin de los programas necesarios
Compilacin
Ejecucin de un primer programa.
1 http://www.arduino.cc/es/
2 http://www.pinguino.cc/
-
Robtica Educativa con Pingino
5 Salta Argentina 2013
::: Hardware Mnimo Inicial
Un Microcontrolador Pic 18F2550/4550
1 Pulsador
1 Cuarzo 20 MHz
5 Capacitores
o 1 capacitor cermico de 0.1 uf (N 104) o 2 capacitores cermicos de 22 pf (N 22) o 1 capacitor cermico de 220 nf (N 224) o 1 capacitor electroltico de 10 uf
2 Leds
o 1 rojo o 1 verde
3 Resistencias
o 1 de 10 K Ohm o 2 de 470 Ohm
Una Protoboard/Placa de prueba
Cables para conectar en la protoboard
Resultado Final del armado Fsico
Resultado Final de la plataforma Pingino.
Imagen desarrollada con un soft ware de licencia libre llamado Fritzing. Lo pods bajar
desde su pgina oficial: http://fritzing.org/
Pata larga
Pata corta
-
Robtica Educativa con Pingino
6 Salta Argentina 2013
Esquema lgico de la plataforma
Resultado Final de la plataforma Lgico y
Fsico pingino.
Muy importante
Adems !!!
Para que el circuito funcione, el PIC18F2550/4550 debe tener grabado el cargador de arranque (bootloader) de
Pingino, el cual puede ser descargado de:
http://sites.google.com/site/pinguinotutorial/bootloader.
Se necesita un programador de microcontroladores Microchip como el Pickit 2, Pickit 3 u otro compatible para
grabar el bootloader en el PIC18F2550/4550.
::: Software inicial
Actualmente el software para Pingino est soportado oficialmente para los sistemas operativos:
Linux
Windows XP
Tener en cuenta que los Pines Lgicos estn numerados por fuera del PIC y son utilizados por el lenguaje
de programacin a la hora de programar al PIC18F2550 y las patitas fsicas estn numeradas en forma de
U por dentro del PIC y se utilizan para el armado del circuito.
Por ej. la patita 2 del micro corresponde al PIN 13/ANALGICO
-
Robtica Educativa con Pingino
7 Salta Argentina 2013
Windows 7
MACOSX
Debido a que el entorno de desarrollo integrado de Pingino, el cual permite escribir, compilar y
grabar los programas, est escrito en Python, es necesario instalar componentes Python para su
funcionamiento.
En el caso de Windows, la lista de componentes vara ligeramente segn sea el sistema operativo
(Windows XP o 7) en el cual querremos instalar, sin embargo todo esto est detallado en los tutoriales
oficiales del proyecto Pinguino.
Instalacin del Software Pingino en Windows 73
En el sitio:
https://sites.google.com/site/pinguinotutorial/installation/windows-7, se encuentra el procedimiento
para la instalacin del software en Windows 7. Como se encuentra en ingls, simplemente lo
tradujimos y desarrollamos a continuacin.
Primero es necesario instalar el driver libusb. El instalador lo puedes bajar de aqu
(http://www.hackinglab.org/pinguino/download/driver%20pinguino%20windows%207/setup.exe).
Este driver es compatible con 32 y 64 bits con mltiples arquitecturas ( X86,AMD64,IA64 ).
La instalacin de los drivers debe seguir este orden!!!
1. Setup
3 Actualmente tenemos desarrollado un sistema de instalacin desatendida de todo el software de Pingino.
-
Robtica Educativa con Pingino
8 Salta Argentina 2013
2. Una vez finalizada la instalacin del Pingino Driver conectamos la Placa Pingino en el puerto
USB de la PC. Es probable que el sistema al detectar un nuevo hardware nos muestre el Asistente
para instalarlo. Si esto sucede se debe cancelar o cerrar dicha pantalla. A continuacin
verificamos a travs del administrador de dispositivos si Windows reconoci nuestra placa
Pingino haciendo:
a) Clic en el botn Iniciar (Windows 7) o en el botn Inicio (Windows XP),
luego clic con el botn derecho sobre Equipo (Windows 7) o en Mi PC (Windows XP)
En la opcin Propiedades del men contextual hacer clic
Luego hacer clic en Administrador de dispositivos ubicado en el panel de la izquierda (Windows 7)
Las pantallas corresponden a Windows 7
Debe aparecer la siguiente pantalla:
-
Robtica Educativa con Pingino
9 Salta Argentina 2013
Vemos que el reconocimiento de la Placa Pingino debe ser curado para que Windows la
detecte adecuadamente.
3. Para ello ir a la carpeta libusb-win32-bin-1.2.6.0, luego abrir la carpeta bin y ejecutar el inf-wizard,
El asistente te gua en la instalacin haciendo clic en los botones .Cuando llegues a la
siguiente pantalla selecciona la opcin Pingino Project y contina con el botn
Cuando llegues a la pantalla con el botn hacer clic y esperar la finalizacin de la
instalacin
-
Robtica Educativa con Pingino
10 Salta Argentina 2013
Cuando este driver est instalado verifica en el Administrador de dispositivos (panel de
control/sistema/administrador de dispositivos). Se debe ver algo parecido a esto:
Ya instalamos los driver!!!
Luego debes instalar los siguientes programas:
Python 2.6.6 (http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi)
-
Robtica Educativa con Pingino
11 Salta Argentina 2013
wxpython 2.8 (http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-
2.8.11.0-py26.exe)
pyusb for python 2.6
(http://sourceforge.net/projects/pyusb/files/PyUSB%200.x/0.4.3/pyusb-0.4.3.win32-
py2.6.exe/download)
Muy Bien!!! ya instalamos todos los paquetes de Python.
-
Robtica Educativa con Pingino
12 Salta Argentina 2013
Descarga la ltima versin de Pingino:
(http://www.hackinglab.org/pinguino/download/latestpinguino/)
Por ltimo necesitamos instalar el software pingino, la versin X.2 o la X.34 haciendo clic en Siguiente > y
Finalizar
El ltimo programa que nos falta instalar es el Pingino Kit, para ello simplemente hacemos doble clic
sobre el cono del instalador y vamos aceptando los valores que por defecto nos propone el proceso
de instalacin, haciendo clic en Aceptar o en Siguiente-Next, segn sea el caso.
Ya instalamos todos los programas, es el momento de5:
4 En este Taller se trabaja con la versin X.2 por ser la ms estable en estos momentos.
5 Aqu tendramos que poner sonido de redoblantes!!!
-
Robtica Educativa con Pingino
13 Salta Argentina 2013
::: Creacin y ejecucin de mi primer programa (Hola Mundo).
En el primer ejemplo de programacin del microprocesador simplemente vamos a
prender y apagar un LED de manera intermitentemente.
Presentamos una gua paso a paso para no morir en el intento y asegurar el xito
de la tarea:
1.- Tenemos que tener en claro el objetivo:
Hacer que parpadee un LED de manera intermitente conectado a una de las patitas del micro.
2.- Los componentes necesarios son: 1 led
Tener en cuenta que la pata larga del LED tambin llamada nodo- va
hacia el microprocesador (en este caso al Pin 13 Analgico
correspondiente a la patita 2 del PIC).
3.- Montar el led en la protoboard:
Pata larga
Pata larga
Mueca del PIC
-
Robtica Educativa con Pingino
14 Salta Argentina 2013
4.- Arrancar Pingino Kit y arrastrar los bloques hasta que quede como la imagen de la columna de
la izquierda:
Desde Pingino Kit Diagrama de Flujo Cdigo:
presionando F4 aparece el siguiente cdigo (sin los comentarios en verde)
Inicio del Programa
Pin Mode 13 Analogico - Output
Enciende LED por 4 seg
Apaga LED por 1 seg
Fin del Programa
void setup() //Aqu se establece el
comportamiento de los pines
{
pinMode(13,OUTPUT); // Establecemos el
Pin 13 como salida para el led
}
void loop() // Aqu se inicia un ciclo que
repite indefinidamente lo que est
encerrado entre las dos llaves.
{ //llave de apertura
digitalWrite(13,HIGH); // El led se prende
delay(4000); //durante 4 segundo.
digitalWrite(13,LOW); // El led se apaga
delay(1000); // durante 1 segundo.
} //llave de cierre
Al cdigo que aparece en una ventanita luego de presionar F4, lo seleccionamos y lo copiamos presionando
Ctrl C o haciendo clic con el botn derecho del mouse y eligiendo la opcin Copy del men contextual.
-
Robtica Educativa con Pingino
15 Salta Argentina 2013
5.- Minimizar el Pingino Kit y arrancar el Pingino IDE X.2
Ahora hay que Compilar el cdigo con el botn "Compile" en la barra de herramientas (si apuntas los
conos con el mouse, se pueden ver las funciones de cada botn):
Hacer clic en
Archivo, luego clic
en Nuevo.
Presionar Ctrl V
para pegar el
cdigo.
-
Robtica Educativa con Pingino
16 Salta Argentina 2013
Si todo ha ido bien debe aparecer en la ventana inferior Output (la que tiene fondo negro) compilation
done. Esto significa que el Pingino IDE ha podido compilar (traducir el cdigo a un lenguaje que pueda
ser entendido por el micro) con xito.
6.- Grabar el compilado en el Microprocesador
Hacer clic en el botn "Upload to Pingino".
1.- Botn para
compilar
2.- Botn Upload to
Pingino para grabar el
programa compilado
en el micro.
Eurekas!!
!
-
Robtica Educativa con Pingino
17 Salta Argentina 2013
Aparece la ventana "Vascobootloader". En este momento debes presionar el pulsador de la placa
Pingino montada en la protoboard, esperar tres segundos aproximadamente (cuenta hasta 3) y luego
haz clic en el botn "Write" para cargar el programa en la placa Pingino.
1.- Presionar el pulsador de Reset
2.- Esperar 3 segundos y hacer clic en el botn
Write
En la ventana de VascoBootloader aparece la leyenda6:
PIC found
NoName0.hex uploaded
Esto quiere decir que el PIC ha sido encontrado o reconocido y el programa previamente compilado
llamado NoName0.hex ha sido cargado con xito. Una vez cargado, el programa empieza a ejecutarse en la
placa Pingino y en este caso el LED empieza a parpadear7.
Nota: No te olvides que para grabar otro nuevo programa en la placa, debes apretar el botn reset, contar hasta
3 y recin pulsar el botn "Write" en la ventana "Vascobootloader", de otro modo el Pingino no es reconocido
por el software.
6 Si en vez de PIC found aparece la leyenda PIC not found!! no te asustes, es probable que te hayas apresurado o
demorado en presionar Write. Simplemente vuelve a presionar reset, cuenta hasta tres y haz clic en Write nuevamente. 7 Este es el momento de los fuegos artificiales !!!
Probando, probando!!: el nmero "4000" en la instruccin "delay(4000);" representa el tiempo en milisegundos
que el LED permanece prendido (o sea 4 seg.). Cambia la cantidad a 200 u 800 para ver qu sucede. Lo mismo con
el delay(1000); que es el que define el tiempo que el LED est apagado. No te olvides del ; al final de c/lnea.
-
Robtica Educativa con Pingino
18 Salta Argentina 2013
::: Inicio de tu primer proyecto
En esta primera actividad vamos a realizar una secuencia de leds que se enciendan y se apaguen
simulando un desplazamiento de luces rojas.
Para ello contaremos con la conexin de 5 leds agregados al circuito de Pingino.
La secuencia sera la siguiente:
Tiempo 1: Led encendido conectado a la salida 3 (En el Grafico Led N 1)
Tiempo 2: Led encendido conectado a la salida 4 (En el Grafico Led N 2)
Tiempo 3: Led encendido conectado a la salida 5 (En el Grafico Led N 3)
Tiempo 4: Led encendido conectado a la salida 6 (En el Grafico Led N 4)
Tiempo 5: Led encendido conectado a la salida 7 (En el Grafico Led N 5)
Manos a la obra!!!
El esquema de conexin ser el siguiente:
Esta actividad puede ser resuelta de diferentes maneras:
-
Robtica Educativa con Pingino
19 Salta Argentina 2013
1 Opcin de Solucin: Fuerza Bruta
Desde Pingino Kit Diagrama de Flujo Cdigo
Inicio del Programa
Pin Mode 3 Analgico - Output
Pin Mode 4 Analgico - Output
Pin Mode 5 Analgico - Output
Pin Mode 6 Analgico - Output
Pin Mode 7 Analgico - Output
Enciende Led 3 por 1 Seg Apaga Led 3 por 1 Seg
Enciende Led 4 por 1 Seg Apaga Led 4 por 1 Seg
Enciende Led 5 por 1 Seg Apaga Led 5 por 1 Seg
Enciende Led 6 por 1 Seg Apaga Led 6 por 1 Seg
Enciende Led 7 por 1 Seg Apaga Led 7 por 1 Seg
Fin del Programa
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}
void loop() {
digitalWrite(3,HIGH);
delay(1000);
digitalWrite(3,LOW);
delay(1000);
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
delay(1000);
digitalWrite(5,HIGH);
delay(1000);
digitalWrite(5,LOW);
delay(1000);
digitalWrite(6,HIGH);
delay(1000);
digitalWrite(6,LOW);
delay(1000);
digitalWrite(7,HIGH);
delay(1000);
digitalWrite(7,LOW);
delay(1000);
}
-
Robtica Educativa con Pingino
20 Salta Argentina 2013
2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta)
Qu es un ciclo for?
Este tipo de ciclos es uno de los ms usados para repetir una secuencia de instrucciones, sobre todo cuando se
conoce la cantidad exactas de veces que se requiere ejecutar un tipo de instrucciones.
Su formato es:
for (valores de entrada ; condicin de terminacin ; iteracin por ciclo)
Las tres partes del ciclo se encuentran separadas por ; (punto y coma)
La primer parte del ciclo especifica valores previos a su inicio.
La segunda parte indica la condicin de terminacin para el ciclo, la cual est directamente relacionada
con los valores iniciales.
Finalmente, la ltima parte especifica cmo sern incrementados los valores iniciales en cada iteracin
o repeticin del ciclo: de uno en uno, de dos en dos, etc.
Desde Pingino Kit Diagrama de Flujo Cdigo
Inicio del Programa
Inicializamos variables
I = 0 utilizado en ciclo ForTiempo = 2000, 2 Seg
i3
i < 8
i i + 1
Pin (i, Output)
SiNo
i < 8
i i + 1
Si
Enciende Led (i) por (Tiempo) Seg
Apaga Led (i) por (Tiempo) Seg
i3
Fin del Programa
No
int tiempo=2000; // Inicializamos
la variables tiempo en 2 seg.
int i=0; // y la variable i que ser
utilizada en el ciclo for.
void setup() {
//Inicializamos las salidas
analgicas utilizando un ciclo for
for(i=3;i
-
Robtica Educativa con Pingino
21 Salta Argentina 2013
Analicemos con detenimiento lo que hace el ciclo for y el comando digitalWrite que est en su interior:
for (i=3;i
-
Robtica Educativa con Pingino
22 Salta Argentina 2013
3 Opcin de Solucin: Utilizacin de un vector.
Qu es un vector en informtica?
Un array o vector es una coleccin ordenada de elementos de un mismo tipo de datos, agrupados de forma
consecutiva en memoria. Cada elemento del array o vector tiene asociado un ndice o direccin, que no es ms
que un nmero natural que lo identifica inequvocamente y nos permite acceder a l. Por ej. el vector a puede
ser representado como una cajonera cuyo contenido son valores numricos (3,4,5,6,7):
3 Este cajn contiene el valor numrico 3. El ndice del 1 cajn es cero. Se representa: a[0]=3
4 Este cajn contiene un 4 y su ndice es 1. Se representa como: a[1]=4
5 Este cajn contiene un 5 y su ndice es 2. Se representa como: a[2]=5
6 Este cajn contiene un 6 y su ndice es 3. Se representa como: a[3]=6
7 El ltimo cajn contiene el valor numrico 7 y su ndice es 4: a[4]=7
Es decir que se identifica el vector con un nombre (puede ser una letra o una palabra) luego se encierra entre
corchetes el ndice -que es la posicin que ocupa el dato dentro del vector- teniendo en cuenta que la primera
posicin es el ndice cero- luego se coloca el signo igual y a continuacin su valor: nombre vector[ndice]=valor
Cdigo a ser escrito en el Pingino IDE X.2
En primer lugar definimos el vector llamado leds con 5 cajoncitos ({3,4,5,6,7}) cuyos contenido sern nmeros
enteros (int). La 1 posicin o ndice [0] tendr el valor 3 y la ltima posicin o ndice [4] tendr el valor 7:
int leds[]={3,4,5,6,7}; // Se define un vector llamado leds que contiene los valores enteros (int) 3,4,5,6 y 7
int tiempo=200;
int n=0;
int contador=0;
void setup() {
for (n=0;n
-
Robtica Educativa con Pingino
23 Salta Argentina 2013
void loop() {
for(n=0;n
-
Robtica Educativa con Pingino
24 Salta Argentina 2013
En el esquemtico se observa las conexiones necesarias para poner en prctica el siguiente ejemplo de cdigo: void setup() { pinMode(7,OUTPUT); pinMode(13,INPUT); } void loop() { if(digitalRead(13)== LOW) //Si el Pin 13 es LOW, el pulsador est presionado. { toggle(7); //El Pin 7 cambia de estado: si est LOW pasa a HIGH y viceversa while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador. delay(250); } } En esta secuencia de cdigo definimos por primera vez una patita del micro como entrada (INPUT), tambin
vemos como se lee dicha entrada o sea, cuando se presiona el pulsador (con el comando digitalRead). El
comando toggle nos permite prender si est apagado o apagar si est prendido el led conectado al Pin 7
(definido como de salida/OUTPUT). Por ltimo con el comando while (que significa: mientras) evitamos los
efectos de rebote que pueda tener el pulsador ya que nicamente deja que el void loop se repita si es que el
pulsador efectivamente est presionado.
:::: Armemos un semforo
Materiales: 3 leds de color
rojo, amarillo y verde
Circuito: conectar las patitas largas (nodo) de
los leds en los pines: 7(V), 6(A) y 5 (R) del micro.
Cdigo: debes completar el cdigo con los valores correctos int i=5;
int tiempo=?;
void setup() {
for(i=?;i
-
Robtica Educativa con Pingino
25 Salta Argentina 2013
:::: Combinando los ejemplos anteriores
Te proponemos combinar el ejemplo del uso de un pulsador con el encendido del semforo en un solo
proyecto.
Si te animas, puedes armar un semforo como el de
la imagen, dentro de un tubito de estao vaco. La
base est hecha con un pedazo de una disquetera
vieja y un poco de poxilina. Los agujeros para los leds
fueron hechos con el mismo soldador (ojo con
quemarse).
Una ayudita con el cdigo (una mezcla de los dos ejemplos anteriores):
int i=5;
int tiempo=?;
void setup() { pinMode(13,INPUT);
for(i=?;i
-
Robtica Educativa con Pingino
26 Salta Argentina 2013
digitalWrite(i,LOW);
delay(tiempo);
}
while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador. delay(250); } }
:::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite
A continuacin vamos a transcribir de la excelente pgina de Henry Laredo un tutorial referido al uso de estas
dos instrucciones:
Este tutorial trata sobre dos instrucciones magnficas del Pingino que son: analogRead y analogWrite.
Mediante el analogRead es posible implementar lecturas de voltajes analgicos, es decir leer niveles de tensin
que varen entre 0V y 5V. Con el analogWrite conseguiremos tener una salida de PWM8 cuyo duty cycle es
variable pero de frecuencia fija.
Vamos a explicar un poco cmo trabaja analogWrite. En el siguiente grfico vemos que el ancho del pulso o
Duty Cycle (la meseta) puede variar de tamao. A medida que es ms ancho vemos que la tensin media Vm
(representada por lnea de puntos) aumenta y se acerca al valor mximo de tensin Vp de 5 voltios en nuestro
caso. Esto hace que la seal que sale por la patita del PIC vare segn se aumente o disminuya dicho ancho
(Duty Cycle).
Ntese que el tiempo entre el inicio de una seal y otra es constante y se llamada PERODO (la distancia en
tiempo entre una meseta y otra).
8 La modulacin por ancho de pulsos (tambin conocida como PWM, siglas en ingls de pulse-width modulation)
de una seal o fuente de energa es una tcnica en la que se modifica el ciclo til de una seal (el que tiene forma de meseta), ya sea modificando el ancho del pulso o duty cycle (modulacin de ancho de pulso) o el tiempo entre pulso y pulso (modulacin por frecuencia de pulso).
-
Robtica Educativa con Pingino
27 Salta Argentina 2013
Esto significa que la frecuencia (nmero de ciclos tiles por unidad de tiempo) siempre es la misma. Por
ejemplo, si tenemos durante un segundo la seal a 5 voltios y durante otro segundo a 0 voltios, el nivel medio
en 2 segundos habr sido de 2.5 V exactos. Si utilizamos una seal, por ejemplo, que est al 40% del nivel alto
(5 vol), tendremos un nivel medio de 2.0V (0.40V*5). En definitiva esto har que si tenemos un led conectado
al pin de salida del PIC- la intensidad de su luz aumente o disminuya.
La instruccin anlogWrite hace esto a travs de los dos valores que deben definirse separados por una coma y
encerrados entre parntesis:
analogWrite(pin PWM, DutyCycle)
Recordar que el PIC tiene las patitas 12 y 13 como pines PWM (las patitas 12 y 13 corresponden a los pines 11 y
12 respectivamente, ver esquemtico de la pgina 6) y los valores de Duty Cycle pueden variar entre 0 y 1023
(0= sin seal y 1023=mximo valor de la seal).
En la siguiente tabla se ejemplifican algunos valores:
Instruccin Duty Cycle Pin de salida PWM
% de la seal Valor de la seal de salida
analogWrite(11, 64) 256 11 25% de 5 vol. 1.25 vol.
analogWrite(11, 127) 512 11 50% de 5 vol. 2.5 vol.
analogWrite(11, 191) 768 11 75% de 5 vol. 3.75 vol.
Los efectos de ambas instrucciones las veremos en el siguiente circuito de aplicacin:
Materiales:
Un potencimetro de ms de 47 k Ohm.
Un led Conexin: Del potencimetro: ubicado con el cabo regulador hacia arriba
El conector de la izquierda se conecta a 5 vol.
El conector del medio al pin 13 de Pingino
El conector derecho a tierra o negativo
Del Led:
La patita larga al pin 11 del PIC
La patita corta a tierra o negativo
-
Robtica Educativa con Pingino
28 Salta Argentina 2013
El siguiente cdigo lee el valor que el potencimetro introduce por el pin 13 del PIC, para utilizar dicho valor en
el tiempo de encendido y apagado de un led conectado al pin 11. Ntese que si el pin 13 es usado como de
ingreso de datos analgicos no necesita ser definido en el void setup. El resultado es un led que modifica su
velocidad de parpadeo segn se modifiquen los valores introducidos a travs del giro del cabo del
potencimetro.
#define LED 11 // Al pin 11 lo llamamos LED #define POT 13 // Al pin 13 lo llamamos POT int val = 0; void setup() { pinMode(LED, OUTPUT); } void loop() { val = analogRead(POT); digitalWrite(LED, HIGH); delay(val); digitalWrite(LED, LOW); delay(val); }
El siguiente cdigo permite cambiar la intensidad de la luz emitida por un diodo Led conectado al pin 11
(recordemos que es un pin de salida PWM) segn se vare la seal de entrada por el pin 13 a travs del giro del
cabo del potencimetro. Ntese que en el void setup no se define nada ya que las entradas (INPUT) como las
salidas (OUTPUT) analgicas no necesitan definirse.
#define LED 11 #define LDR 13 int valu = 0; void setup() { } void loop() { valu = analogRead(LDR); valu = valu/4;//Se divide por 4 el valor entregado por el potencimetro para que no sea tan alto
analogWrite(LED, valu); delay(10); }
-
Robtica Educativa con Pingino
29 Salta Argentina 2013
::: Calentando Motores!
En esta seccin vamos a incursionar en el mundo de los motorcitos de corriente continua de 5 vol. Te
vamos a mostrar dnde los puedes conseguir y la forma de conectarlo a la placa Pingino.
En Busca De Los Motores: Los motorcitos de cc o dc (corriente continua - los que andan si los
conectamos con una pila) se los pueden extraer de una lectora de CD/DVD en desuso. Como una imagen vale
ms que mil palabras, veamos la secuencia de imgenes para poder extraerlos:
1
8 7
6 5
4 3
2
-
Robtica Educativa con Pingino
30 Salta Argentina 2013
9 10
14
16 15
13
12 11
17
-
Robtica Educativa con Pingino
31 Salta Argentina 2013
Conectando el motor a Pingino: no se puede conectar los dos cables del motorcito directamente a la
placa Pingino ya que es necesario proteger la placa contra posibles picos de corriente inversa cuando se activa
o desactiva el motor9. Para poder proteger la placa vamos a conectar el motor a un chip llamado L293D
El L293D no solo nos permite proteger el circuito sino tambin controlar el sentido del giro del motor y tambin
combinado con las salidas PWM del Pingino- la variacin de su velocidad.
El circuito de conexin es el siguiente:
Como se ve en el esquemtico anterior se pueden conectar dos motorcitos, copiando en el lado derecho las
conexiones detalladas en el lado izquierdo.
Para que te resulte ms fcil su conexin presentamos las imgenes -desarrolladas en Fritzing- del cableado
desde Pingino al L293D y al motor:
9 Cuando un motor contina girando (debido a la inercia) despus de ser apagado se convierte en un generador
de corriente. Esta corriente generada por el motor puede daar la placa electrnica, al retornar a la placa Pingino.
Pin PWM de Pingino
Pin digital de Pingino (13)
Pin digital de Pingino (14)
-
Robtica Educativa con Pingino
32 Salta Argentina 2013
Referencia:
Cable marrn => del pin 11 del Pingino al pin 1 del L293D
Cable gris => del pin 13 del Pingino al pin 2 del L293D
Cable naranja => del pin 14 del Pingino al pin 7 del L293D
Cable verde => del pin 3 del L293D al motorcito
Cable amarillo => del pin 6 del L293D al motorcito
Cdigo para Pingino:
void setup(){
pinMode(13,OUTPUT);
pinMode(14,OUTPUT);
digitalWrite(13,LOW);
digitalWrite(14,LOW);
}
void loop(){
//giro en un sentido
digitalWrite(13,HIGH);
digitalWrite(14,LOW);
delay(2000);
//giro en el otro sentido
digitalWrite(13,LOW);
digitalWrite(14,HIGH);
delay(2000);
//para parar el giro motor
digitalWrite(13,LOW);
digitalWrite(14,LOW);
delay(2000);
}
L293D
-
Robtica Educativa con Pingino
33 Salta Argentina 2013
Explicacin del cdigo:
En primer lugar definimos a los pines 13 y 14 como pines de salida y lo ponemos en cero. Para manejar el
sentido de giro y la parada del motor debemos tener en cuenta la siguiente tabla:
Pin 13 Pin 14 Motor
LOW LOW PARADA
HIGH LOW GIRO EN UN SENTIDO
LOW HIGH GIRO EN OTRO SENTIDO
Para manejar adems la velocidad de giro debemos manejar los valores del pin PWM; a tal efecto presentamos
un ejemplo de cdigo:
#define motor 11 // Recordar que los nicos pines PWM son el 11 y el 12
void setup()
{
//Recordar que los pines analgicos no necesitan ser definidos
}
void loop(){
unsigned int a;
for (a=0;a0;a--) {
analogWrite(motor,a);
delay(100);
}
}
Explicacin del Cdigo: Definimos al pin 11 con el nombre motor, y luego variamos de 0 a 1023 los parmetros de la instruccin analogWrite a travs de un ciclo for. El motor debe empezar a aumentar su velocidad de giro hasta alcanzar el valor mximo. All se espera 1 milisegundos (casi nada) y se comienza a decrementar la velocidad de giro (de 1023 a 0). Este ciclo se repite indefinidamente hasta que desconectemos Pingino del puerto USB. Vamos por ms!!! Te proponemos combinar los dos cdigos a los efectos de poder hacer que el motor vare la velocidad y el sentido de giro. Esto puede complementarse con el uso de pulsadores que segn se presionen tengamos distintas velocidades y distinto sentido de giro.
-
Robtica Educativa con Pingino
34 Salta Argentina 2013
:::: Pongamos Blanco sobre Negro o Negro sobre Blanco
Es posible hacer que Pingino distinga entre una superficie clara/blanca (capaz de refractar la luz) y una
superficie obscura/negra (incapaz de refractar la luz). Para ello tenemos que echar mano a un componente
llamado foto diodo emisor/receptor; el sensor CNY70 que es uno de los sensores ms empleados dada su
economa y sus variadas aplicaciones prcticas.
Habitualmente se lo usa si se desea que un robot mvil siga un camino marcado por una raya en el suelo; el
CNY70 enviar al microcontrolador la informacin necesaria para que sepa si est desplazandose sobre la raya
o no. El tratamiento de dicha informacin por Pingino originar los comandos adecuados hacia las ruedas
motrices para continuar sobre la raya que hace de gua.
A continuacin se presenta cmo funciona el CNY7010 y el circuito para conectarlo a Pingino:
10 Cuando la luz del emisor infrarrojo impacta sobre la base del fototransistor se conduce una corriente entre el Colector y el Emisor que produce la
seal de salida. La salida de este circuito es analgica y viene determinada por la cantidad de luz reflejada.
Diodo IR Fototransistor A: nodo E: Emisor K: Ctodo C: Colector
-
Robtica Educativa con Pingino
35 Salta Argentina 2013
Conectamos un led al pin 7 de Pingino y el cable blanco que sale del circuito del CNY70 lo conectamos al pin
13 de Pingino, tal como lo muestra el esquema:
Una vez que se tiene todo conectado procedemos a grabar en el Pingino el cdigo para probar la
deteccin de superficies claras y obscuras. Para ello cargamos el IDE de Pingino X2 y copiamos el siguiente
cdigo:
#define ledR 7 #define CNY70 13 int rojo=0; void setup(){ pinMode(ledR,OUTPUT); digitalWrite(ledR,LOW); } void loop() { rojo = (5.0 * analogRead(CNY70) ) / 1024; if (rojo < 1) { digitalWrite(ledR,LOW); } if (rojo > 2.0) { digitalWrite(ledR,HIGH); } delay(1000); }
Como vemos el cdigo es muy sencillo y lo que hace es: 1. Bautizar (definir) al pin 7 con el nombre ledR, ya que en dicho pin vamos a conectar la patita larga del
led rojo. Al pin 13 con el nombre de CNY70 ya que en ese pin vamos a leer la informacin que mande el circuito del CNY70 (por el cablecito blanco). Inicializar una variable llamada rojo con el valor cero.
2. En el void setup definimos al pin 7 (ledR) como salida y lo pone en estado bajo (el led apagado). Recordar que los pines analgicos no hace falta definirlos como entrada o salida.
3. En el void loop tenemos una frmula que dice lo siguiente: al valor ledo del CNY70 transformarlo en un valor que represente un porcentaje en relacin a los 5 vol (que es el 100%) y 1024 (que representa el mximo valor de la seal que se lee en el pin analgico). Este valor se almacena en la variable rojo.
-
Robtica Educativa con Pingino
36 Salta Argentina 2013
4. Luego se pregunta si rojo es menor que 1, esto quiere decir si sobre el CNY70 hay una superficie blanca, el led rojo permanece apagado o se apaga si estaba encendido.
5. Si rojo es mayor a 2 quiere decir que sobre el CNY70 hay una superficie rojo y el led rojo ser encendido si estaba apagado o continuar prendido si ya lo estaba.
De esta manera le hemos enseado a Pingino a distinguir entre superficies blancas y superficies negras.
:::: Fuentes de informacin consultada
Henry Laredo, http://microembebidos.wordpress.com
Ral Alvarez Torrico, http://www.tecbolivia.com
Sitio oficial, http://www.pinguino.cc/
Yeison Cardona, http://yeisoneng2.blogspot.com.ar
http://www.crya.com.mx/manuales/atcryabot1.pdf
Ingenio Slido S.A.S., http://www.ingeniosolido.com/blog/
De la Cruz, Julio, http://micropinguino.blogspot.com.ar/
-
Robtica Educativa con Pingino
37 Salta Argentina 2013
:::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE
-
Robtica Educativa con Pingino
38 Salta Argentina 2013
-
Robtica Educativa con Pingino
39 Salta Argentina 2013
:::: Anexo II: Instalacin de los Drivers de Pingino en Windows 811
Pasos
1. Descargar el controlador de Pingino de este enlace: https://sites.google.com/site/camachomedia/home/archivos/controlador%20pinguino.zip?attredirects=0&d=1
2. Presionar la tecla que tiene el smbolo de windows y 'R' de forma simultnea.
3. Copiar en en el cuadro de texto de la ventana de ejecutar el comando entre comillas "shutdown.exe /r /o /f /t 00" y a continuacin pulsa"Aceptar".
4. Selecciona la opcin "Solucionar Problemas"
5. Selecciona "Opciones Avanzadas"
6. Selecciona "Configuracin de Inicio" y pulsa "Reiniciar".
11
Tutorial extrado de la pgina http://micropinguino.blogspot.com.ar/
-
Robtica Educativa con Pingino
40 Salta Argentina 2013
7. Una vez se reinicie el sistema aparecer un men donde se pueden elegir diferentes opciones como: Habilitar Depuracin, Habilitar el registro de arranque, Habilitar modo seguro, etc. Hay que elegir la opcin 7 "Deshabilitar el uso obligatorio de controladores firmados".
8. Conectar la tarjeta pingino y ejecutar el asistente de instalacin del controlador de pingino.
9. Verificar que est instalando en dispositivos e impresoras.