Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Carmona
Programacin en pinguino
USB 2.0 4 temporizador/contador (1/3 de 8/16 bit). 5 Entradas analgicas 10 bit. Hasta 18 I/O digital (5 analogicas) Cristal de 20Mhz. 2 salidas PWM (3Khz) USART .
RST 13 14 15 16 17 RUN
7 6 5 4 3 2 1 0
8 9
10 11 12
Pin Digital Analog Otros name I/O usos input 0 1 2 3 4 5 6 7 8 9 10 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes yeshw yeshw yeshw yeshw yeshw Serial Tx Serial Rx -
Microchip name RB0/AN12/INT0/FLT0/SDI/SDA RB0 RB1/AN10/INT1/SCK/SCL RB1 RB2/AN8/INT2/VMO RB2 RB3/AN9/CCP2/VPO RB3 RB4/AN11/KBI0 RB4 RB5/KBI1/PGM RB5 RB6/KBI2/PGC RB6 RB7/KBI3/PGD RB7 RC6/TX/CK RC6 RC7/RX/DT/SDO RC7 RC0/T1OSO/T13CK RC0
Pin Digital Analog Otros name I/O usos input 11 12 13 14 15 16 17 Run Yes Yes Yes Yes Yes Yes Yes No Yesall Yesall Yesall Yesall Yesall PWM PWM USB USB -
Microchip name RC1/T1OSI/CCP2/UOE RC1 RC2/CCP1 RC2 RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA2/AN2 RA3/AN3/VREF+ RA3/AN3 RA5/AN4/SS/HLVDIN/C2OU RA5/AN4 RA4/T0CKI/C1OUT/RCV RC5/D+/VP RC4/D-/VM MCLR/VPP/RE3
D. Carmona - CurRo 2k11 7
Servos
Alimentacin 5V Sensores
Expansin
Sensores analgicos
Alimentacin de bateras
Sensores digitales
Algunas de las caractersticas del PIC 18F2550 no estn implementadas (aun) en el software de pingino. El circuito dispone de dos pulsadores:
RESET:
Reset hardware del PIC. Prepara el PIC para programar.
RUN:
Inicia la ejecucin del programa cargado en memoria.
USB
Para seleccionar la forma de alimentar el circuito se utiliza un jumper situado junto al conector USB.
Externa
10
Programacin en pinguino
11
Tamao
Rango con signo -128, +127 -32.768, +32.767 -32.768, +32.767 -2.147.483.648, +2.147.483.647 ---
float
signed generic
pointer 1, 2, 3 or 4 bytes
12
Loop: Loop
Funcin principal. Es un bucle infinito.
UserInterrupt: UserInterrupt
Funcin que se ejecuta cuando se activa alguna interrupcin del microcontrolador. El cdigo debe averiguar que produjo la interrupcin.
13
void setup () { //configuracin } void userinterrupt() { //Manejador de interrupciones } void loop () { //Programa principal }
14
Programacin en pinguino
15
Los pines de pingino nombrados del 0 al 17 son pines que pueden utilizarse como entradas o salida digitales.
Los pines 13 al 17 se pueden utilizar con entradas analgicas.
Para configurarlos pines como entrada o salida se utiliza la funcin pinMode(). pinMode La configuracin de los pines de E/S digital se hace normalmente en la funcin setup(). setup
16
pin:
Numero de pin de 0 a 17. (para el PIC18F2550)
modo:
Modo de funcionamiento:
INPUT: INPUT El pin funciona como entrada. OUTPUT: OUTPUT El pin funciona como salida.
17
18
19
Para escribir en un pin se utiliza la funcin digitalWrite(). Sintaxis: Sintaxis digitalWrite(pin,valor) Pin:
Pin que se quiere escribir.
Valor:
Nivel lgico que se quiere escribir en el pin
HIGH (alto, salida a la tensin de alimentacin) LOW (bajo, salida a masa).
Antes de poder escribir en un pin, debe configurarse como salida (OUTPUT) con pinMode.
20
Para leer el estado de un pin se utiliza la funcin digitalRead(). Sintaxis: Sintaxis bool digitalRead(pin) Pin:
Pin que se quiere leer.
Resultado:
Devuelve un valor booleano (0 1) en funcin del nivel de tensin del pin.
Antes de leer el estado un pin, debe configurarse como entrada (INPUT) con pinMode.
Si leemos un pin de salida, se lee el valor del latch.
21
En los PIC 18F se utilizan tres registros para la configuracin y uso de los puertos de E/S.
Registro PORTx: PORTx
Registro que contiene el estado lgico de los pines del puerto x.
22
23
PORTA=0xA5; LATA=0xA5;
Escribiendo bit a bit:
PORTBbits.RB2=1; //Setea el pin2 del puerto B (RB2) LATBbits.LATB2=1; PORTCbits.RC0=0; //Resetea el pin0 del puerto C (RC0) LATCbits.LATC0=0;
D. Carmona - CurRo 2k11 24
25
Los pines del 13 al 17 de pinguino pueden usarse como entradas analgicas de 10 bit. Para leer el valor de las entradas analgicas se utiliza la funcin analogRead(). Sintaxis: unsigned int analogRead(pin)
Pin Pin: pin a leer (entre 13 y 17). Resultado: Resultado Devuelve un valor entre 0 y 1023 (10 bit) proporcional a la tensin en el pin indicado.
1023=5V 0=0V.
26
No es necesario configurar con pinMode. pinMode. Debe estar configurado como entrada (por defecto).
27
En pingino podemos utilizar la funcin analogWrite, analogWrite para generar una seal PWM.
La precisin del PWM es de 10 bit. La frecuencia es de 3Khz. Solo se puede utilizar en los pines 11 y 12.
Sintaxis: Sintaxis
analogWrite(pin,ratio);
Pin: Pin
pin que se configura como PWM (solo 11 o 12)
Ratio: Ratio
valor entre 0 y 1023. El tiempo en alto del PWM es proporcional a este valor. P.Ej: 513 PWM 50%
28
Programacin en pinguino
29
Sintaxis: Sintaxis
delay (unsigned int milisegundos);
Funcionamiento: Funcionamiento
La ejecucin del programa queda pausada durante la cantidad de milisegundos indicada.
30
Sintaxis: Sintaxis
delayMicroseconds (unsigned microsegundos);
Funcionamiento: Funcionamiento
La ejecucin del programa queda pausada durante la cantidad de microsegundos indicada.
31
Programacin en pinguino
32
Desde la Beta 9 el IDE de pinguino se incluyen funciones para controlar servomotores. Cualquier pin de I/O de pinguino puede utilizarse para controlar un servo.
Incluso todos los pines simultneamente.
Las funciones de control de servos hacen uso del Timer1 del microcontrolador, por lo que si se usan las funciones no podr usarse este temporizador.
33
Para configurar un pin como driver para servos se utiliza la funcin servo.attach. Sintaxis:
servo.attach (PIN); PIN);
PIN es un valor entre 0 y 17 que indica el n de pin que se quiere usar para controlar un servo.
Tambien se puede utilizar una variable de tipo unsigned char con este fin.
34
35
Una vez configurado el pin como driver de servos, segenera automaticamente la seal de control del servo. Para poder volver a utilizar el pin como entrada o salida normal, se utiliza la fincion servo.detach. Sintaxis:
servo.detach (PIN); PIN);
Ejemplo:
36
Para controlar la posicin del servo se utiliza la funcin servo.write. servo.write Sintaxis:
servo.write ( PIN,posicion PIN,posicion); posicion); PIN es un valor entre 0 y 17 que indica el n de pin que se quiere usar para controlar un servo. posicion es un valor entre 1 y 250 que indica la posicin deseada en el servo:
1 posiciona el servo a la posicin -90 90 125 posiciona el servo a la posicin 0 250 posiciona el servo a la posicin 90
Se pueden utilizar variables de tipo unsigned char con para indicar en la funcin el nmero de pin y la posicin.
37
38
En el caso de servo modificados para giro continuo, la funcin servo.write, servo.write permite el control de sentido se giro y velocidad. posicion indica:
1 El servo gira en sentido anti-horario a mxima velocidad. XX mantiene en servo parado. 250 El servo gira en sentido horario a mxima velocidad.
39
El valor que detiene el servo vara de un motor a otro, y es necesario averiguar ese valor para cada servo.
Idealmente ese valor es 125, aunque puede variar hacia arriba o abajo.
En valores prximos al de paro del motor, la velocidad de giro es menor. La relacin entre el valor posicion y velocidad de giro no es lineal.
Normalmente el motor ya gira a velocidad mxima cuando la diferencia entre el valor posicion y el valor que para el motor es mayor de 20 o 30.
D. Carmona - CurRo 2k11 40
41
42
Pinguino Wiki
http://pinguino.koocotte.org/index.php/Main_Page
Pinguino tutorial
http://sites.google.com/site/pinguinotutorial/
SDCC
http://sdcc.sourceforge.net/
Control de servos:
http://linuxdroids.wordpress.com/2010/07/29/pin guino-rutina-para-controlar-18-servos/
43