Está en la página 1de 32

qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklzx PROGRAMACION PIC- ENCENDER UN LED cvbnmqwertyuiopasdfghjklzxcvbnmq ROBOTICA wertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghj klzxcvbnmqwertyuiopasdfghjklzxcvbn

mqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc


07/06/2011 DENNIS HUILLCA PORTILLA MONICA VASQUEZ MAMANI PAMELA MONTES SENCE YOSELYN ROJAS ZUZUNAGA

PROGRAMACION PIC- ENCEDER UN LED

Significa ("Universal Serial Bus") su traduccin al espaol es lnea serial universal de transporte de datos.

El puerto USB al que hace mencin es el conector de entrada a un bus de tipo serie en el que es posible conectar mltiples dispositivos, tanto en fro como en caliente. Si existe un controlador ya instalado que le permita comunicarse con l, lo utilizar directamente e, incluso, pondr en marcha la aplicacin que corresponda para acceder a dicho dispositivo. Si, por el contrario, no hay un controlador preinstalado en el sistema, solicitara un controlador adecuado. El controlador, a su vez, ofrecer a las aplicaciones un API (application programming interface) de alto nivel que les permita usar el dispositivo sin tener que preocuparse de los detalles de la comunicacin USB. 1

1.1

USB
En un principio tenamos la interfaz serie y paralelo, pero era necesario unificar todos los conectores creando uno ms sencillo y de mayores prestaciones. As naci el USB (Universal Serial Bus) con una velocidad de 12Mb/seg. y como su evolucin, USB 2.0, apodado USB de alta velocidad, con velocidades en este momento de hasta 480. Una caracterstica importante es que permite a los dispositivos trabajar a velocidades mayores, en promedio a unos 12 Mbps, esto es ms o menos de 3 a 5 veces ms rpido que un dispositivo de puerto

http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/respuestas/1070173/transmision-de-datospor-puerto-usb

Programacin del PIC 18F4550-Prender un Led

Pgina 2

paralelo y de 20 a 40 veces ms rpido que un dispositivo de puerto serial.2

1.2

FUNCIONAMIENTO DEL USB Trabaja como interfaz para transmisin de datos y distribucin de energa, que ha sido introducida en el mercado de PCs y perifricos para mejorar las lentas interfaces serie (RS-232) y paralelo. Esta interfaz de 4 hilos, 12 Mbps y "plug and play", distribuye 5V para alimentacin, transmite datos y est siendo adoptada rpidamente por la industria informtica. Emplea una topologa de estrellas apiladas que permite el funcionamiento simultneo de 127 dispositivos a la vez. En la raz o vrtice de las capas, est el controlador anfitrin o host que controla todo el trfico que circula por el bus. El bus serie USB es sncrono, y utiliza el algoritmo de codificacin NRZI ("Non Return to Zero Inverted"). En este sistema existen dos voltajes opuestos; una tensin de referencia corresponde a un "1", pero no hay retorno a cero entre bits, de forma que una serie de unos corresponde a un voltaje uniforme; en cambio los ceros se marcan como cambios del nivel de tensin, de modo que una sucesin de ceros produce sucesivos cambios de tensin entre los conductores de seal.

El sistema de bus serie universal (USB) consta de tres componentes:


Controlador Hubs o Concentradores Perifricos

Es

un

conector rectangular de 4 terminales que permite la transmisin de datos entre una gran gama de dispositivos externos (perifricos) con la computadora; por ello es considerado puerto; mientras que la

http://www.monografias.com/trabajos11/usbmem/usbmem.shtml#QUEES

Programacin del PIC 18F4550-Prender un Led

Pgina 3

definicin de la Real Academia Espaola de la lengua es "toma de conexin universal de uso frecuente en las computadoras".3 El puerto USB 2.0 compite actualmente en el mercado contra el puerto FireWire. El puerto USB 3.0 compite en altas velocidades de transmisin contra el puerto eSATA.

Figura 1. Smbolo de USB. 2.1 TERMINALES DEL PUERTO USB 1.X, USB 2.0, USB 3.0

Los puertos USB 1.0, 1.1 y USB 2.0 tienen 4 contactos, mientras que el puerto USB 3.0 cuenta con 9 (2 por los cules ser capaz de enviar, 2 por los cules recibir de manera simultnea); en las siguientes figuras se muestran las lneas elctricas y su descripcin bsica:

http://www.informaticamoderna.com/El_puerto_USB.htm

Programacin del PIC 18F4550-Prender un Led

Pgina 4

1.2.3.4.-

Vbus (+ 5 Volts, alimentacin) D- (- datos) D+ (+ datos) GND (tierra)

Figura 2. Lneas elctricas del conector USB 1.0 y USB 2.0, las lneas centrales conducen datos, las laterales la alimentacin.

Lneas elctricas del puerto USB.

1.2.3.4.5.6.7.8.9.-

Vbus (+ 5 volts, alimentacin) D- (- datos) D+ (+ datos) GND (tierra) StdA_SSRX- (Recibe datos) StdA_SSRX+ (Recibe datos) GND_DRAIN (tierra-drenado) StdA_SSTX- (Enva datos) StdA_SSTX+ (Enva datos)

Figura 3. Lneas elctricas del conector USB 3.0


4

Lneas elctricas del puerto USB 3.0.

3. NIVELES DE TENSIONES DEL USB 2.0


3.1 LAS TENSIONES DEL PUERTO USB El programador se alimenta directamente con la tensin suministrada por VBUS del puerto USB. A su vez, por portabilidad y practicidad puede proporcionar el voltaje VDD para la programacin de los dispositivos Pics soportados. Esta ltima caracterstica puede ser utilizada siempre y cuando la tensin VBUS del puerto se mantenga dentro de los mrgenes mnimos admitidos en las especificaciones de programacin de estos microcontroladores. Esto es muy importante tenerlo presente y puede ser una buena referencia ante posibles fallos en la programacin de algn tipo de
4

http://www.informaticamoderna.com/El_puerto_USB.htm

Programacin del PIC 18F4550-Prender un Led

Pgina 5

PIC, debido a causas ajenas al programador y al software de programacin. Puede estar todo funcionando correctamente y sin embargo encontrarnos con la imposibilidad de grabar un Pic determinado simplemente por una deficiente alimentacin durante la programacin del microcontrolador. La tensin que suministra el puerto USB, puede variar entre un mnimo y un mximo segn la computadora. Los niveles de tensin que podemos encontrar en VBUS, de acuerdo a la tabla de especificaciones son los siguientes:

Incluso podemos medir valores an inferiores a 4.4 volts en muchas PC, situados en 4.35 volts. Teniendo presente lo anterior y volviendo especficamente a los microcontroladores PIC generales utilizados en nuestros proyectos, que funcionan con una tensin nominal de 5 volts, podemos observar en las especificaciones de programacin que la tensin mnima necesaria para realizar un borrado completo de la mayora de estos chips se sita en 4.5 volts, segn la tabla de especificaciones:

Esto significa que si la tensin que suministra el puerto USB es menor a 4.5 volts, corremos el riesgo que no pueda ser borrado el microcontrolador PIC y en consecuencia producir un error al intentar grabarlo ya que es necesario realizar

Programacin del PIC 18F4550-Prender un Led

Pgina 6

un borrado general (memoria de programa, memoria de datos y registros de configuracin) antes de la programacin. En este supuesto caso debemos recurrir a una alimentacin externa para solucionar los problemas durante la programacin. Tanto la lectura, verificacin e identificacin del dispositivo, no estn afectados por una tensin del puerto USB menor a 4.5 volts. Un microcontrolador PIC en "blanco" tambin puede ser programado. Slo afecta al borrado y a la secuencia borrado - grabacin.

4. MATERIALES UTILIZADOS KUBUNTU PINGINO _BETA9-05_LINUX PYTHON 3 LEDS DE COLORES 1 RESISTENCIA DE (46023) 1 PIC 18F4550 1 CABLE USB 2.0 1 PROTOBOARD 1 RESET 1 CAPACITOR 1 CRISTAL 4MHZ 1 ULN2003

Programacin del PIC 18F4550-Prender un Led

Pgina 7

5. PIC 18F4550

PINGINO

Programacin del PIC 18F4550-Prender un Led

Pgina 8

Programacin del PIC 18F4550-Prender un Led

Pgina 9

Programacin del PIC 18F4550-Prender un Led

Pgina 10


Caractersticas:

Memoria Flash: Mximo nmero de instrucciones simples: Memoria SRAM: Memoria EEPROM: (memoria no volatil) Entradas / Salidas: Nmero de entradas A/D: Nmero de CCP: Nmero de ECCP: Soporta SPP: Soporta SPI: Soporta mster I2C: Nmero de EAUSART: Nmero de comparadores: Nmero de temporizadores de 8 bits: Nmero de temporizadores de 16 bits: Universal Serial Bus (USB) module:

32Kbytes 16384 2048 bytes 256 bytes 35 13 1 1 Si Si Si 1 2 1 3 Si

Programacin del PIC 18F4550-Prender un Led

Pgina 11

Programacin del PIC 18F4550-Prender un Led

Pgina 12

Programacin del PIC 18F4550-Prender un Led

Pgina 13

Diagrama de bloques PIC18F4550 Microchip distribuye de forma general dos tipos de micros dependiendo del voltaje de alimentacin: Clase F: Voltaje tpico (4.2 V a 5.5V) Clase LF: Bajo voltaje (2.0 V a 5.5V) Estos son exactamente iguales slo que los micros de clase LF puedes ser usados con la nueva alimentacin de 3.3V que actualmente y poco a poco se est imponiendo a los tpicos 5V.

5.2
.

FUNCTIONS QUE NOS OFRECE LA PROGRAMACION PYTHON

G cont. 1wire.readbit 1wire.readbyte 1wire.reset 1wire.writebit 1wire.writebyte


O cont.

A Abs AnalogRead AnalogWrite

GLCD.SelectFont GLCD.SetDot GLCD.SetInverted GLCD.StringWidth GLCD.WriteCom mand GLCD.WriteData GLCD.fastWriteHi gh GLCD.fastWriteLo w GetSystemClock

CDC.print CDC.read Cos

DS18B20.configur e DS18B20.crc

I2C.get I2C.init I2C.readchar I2C.restart I2C.send I2C.sendack I2C.sendnack

OnCompare2 OnCompareAll OnCounter0 OnCounter1 OnCounter3 OnEeprom OnEvent OnLowVoltage OnOscFailed OnParallel OnSerialRX OnSerialTX OnTimer0 OnTimer1 OnTimer2 OnTimer3 OnUSB

PWM.setdutycycle PWM.setfrequency Pgina 14

Programacin del PIC 18F4550-Prender un Led

DS18B20.find DS18B20.getfirst DS18B20.getnext DS18B20.matchro m DS18B20.read DS18B20.readrom K Delay DelayMicrosecond s L DigitalRead DigitalWrite

I2C.start I2C.stop I2C.wait I2C.writechar Int.detach R

PWM.setpercentduty cycle PinMode Play Pow

KB.get S

Rand RandomSeed

EEPROM.read16 EEPROM.read8 EEPROM.write16 EEPROM.write8

Flash.erase Flash.read Flash.write

GLCD.CharWidth GLCD.ClearPage GLCD.ClearScreen GLCD.ClearScreen X GLCD.ClearSysTex tLine GLCD.CursorTo GLCD.DoReadData GLCD.DrawBitmap

Lcd Lcd.autoscroll Lcd.begin Lcd.blink Lcd.clear Lcd.command Lcd.cursor Lcd.display Lcd.home Lcd.init Lcd.leftToRight Lcd.noAutoscroll Lcd.noBlink Lcd.noCursor Lcd.noDisplay Lcd.print Lcd.printFloat Lcd.printNumber Lcd.printf Lcd.rightToLeft Lcd.scrollDisplayL eft Lcd.scrollDisplayR ight Lcd.send

SPI.init SPI.printf SPI.read SPI.write Serial.available Serial.begin Serial.flush Serial.getkey Serial.getstring Serial.print Serial.printf Serial.read Servo.attach Servo.detach Servo.read Servo.setMaximumP ulse Servo.setMinimumP ulse Servo.write Sin Sound Sprintf Sqrt Pgina 15

Programacin del PIC 18F4550-Prender un Led

GLCD.DrawCircle GLCD.DrawHoriLin e M GLCD.DrawLine GLCD.DrawRect GLCD.DrawRound Rect O GLCD.DrawVertLin e GLCD.Enable GLCD.FillRect GLCD.GotoXY GLCD.Init GLCD.InvertRect GLCD.PrintFloat GLCD.PrintNumbe r GLCD.PutChar GLCD.Puts GLCD.ReadData

Lcd.setCursor Lcd.write

Tan Toggle

Millis

OnADC OnBusCol OnChangePin0 OnChangePin1 OnChangePin2 OnChangePin4to 7 OnCompare1

USB.available USB.read USB.send USB.sendint UserInterrupt

5.3

DE
Debido a la pequea potencia que suministran los microcontroladores, slo podemos hacer funcionar directamente unos LED y poco ms. Por este motivo es necesario amplificar las salidas en funcin de las cargas que vayamos a controlar. Un mtodo sencillo y econmico es emplear el integrado ULN2003A, que es un conjunto de Darlington (darlington array) montados en un chip con el que podemos controlar cargas de hasta medio amperio. El chip lleva diodos de proteccin contra las sobretensiones producidas por cargas inductivas. Esto lo hace ideal para gobernar rels.

Programacin del PIC 18F4550-Prender un Led

Pgina 16

5.3.1 CARACTERSTICAS DEL CHIP ULN2003A


Intensidad por canal =500mA Tensin mxima de alimentacin = 50 v

Proteccin interna contra sobretensiones producidas por cargas inductivas Seal mnima de entrada = 2 v Los pares Darlington pueden colocarse en paralelo para gobernar cargas que consumen intensidades elevadas, como por ejemplo, pequeos motores. Precio aproximado = 0.6

5.3.2 CONEXIN
Es necesario tener en cuenta que los terminales de salida de este chip conectan las cargas a masa cuando llega una seal positiva a las entradas adecuadas. Por este motivo, el terminal de la carga que no est conectado al chip ha de estar unido al borne positivo del generador. En el esquema de abajo vemos como se conectara un motor al canal superior (1, 16). Tambin se puede observar que pueden existir dos alimentaciones unidas por masa. En este ejemplo, el pulsador es el encargado de dar la seal de control al pin 1, para que el pin 16 se ponga a 0 voltios y quede conectado el motor.

Programacin del PIC 18F4550-Prender un Led

Pgina 17

5.3.4 ESQUEMA INTERNO


Diagrama de un canal Esquema interno Esquema externo

Programacin del PIC 18F4550-Prender un Led

Pgina 18

5.4 CRISTAL DE 4MHZ HC49U 5.4.1 CARATERSTICAS & ESPECIFICACIONES

Lugar de Origen: NC, ANH

Nmero de modelo: Cristal de 4 Mhz HC49U

Marca: LCR

Nmero del artculo: Cristal de 4 Mhz HC49U

Frecuencia: 1.800MHz 110.000MHz

Rango de temperatura: 10C - 60 C estndar,-40C 85 C extendido

Estabilidad de la frecuencia: + /-5ppm, + /10ppm, + /-30ppm

Tolerancia de la frecuencia en 25C: + /-5ppm, + /10ppm, + /-30ppm

5.5 DIVISOR DE TENSION


Cuando dos o ms resistencias se conectan en serie, la corriente que circula por ellas es la misma. Ver el diagrama ms abajo. La resistencia equivalente (Rs) de estas resistencias en serie se obtiene sumando los valores de las resistencias. Una vez que se tenga la resistencia equivalente, se puede obtener la corriente con ayuda de la Ley de Ohm I = V / Rs En el grfico inferior de puede ver el circuito original y el equivalente

Programacin del PIC 18F4550-Prender un Led

Pgina 19

Para encontrar la tensin en cualquiera de las resistencias del circuito original se utiliza la frmula de divisin de tensin Como en resistencias en serie la corriente es la misma en todas las resistencias, utilizando la ley de Ohm para cada resistencia se obtienen las siguientes frmulas I I I I = = = = Vin / Rs V1 / R1 V2 / R2 V3 / R3.

Como I = I, se pueden igualar las ecuaciones, entonces: Vin / Rs = V1 / R1. Suponiendo que el voltaje que se desea conocer es V1, se despeja este valor. V1 = Vin x R1 / Rs. Las tensiones V2 y V3 se obtienen de igual manera, pero con el valor correspondiente de resistencia. (para V2 se cambia R1 por R2, para V3 se cambia R1 por R3) Expresando la frmula en palabras, la frmula de divisin de tensin dice: Vout = (Resistencia a travs de la salida /resistencia total del circuito) x Vin

5.7 CONTRUCCION DEL PROTOBOARD Programacin del PIC 18F4550-Prender un Led Pgina 20

Programacin del PIC 18F4550-Prender un Led

Pgina 21

PINGUINO es un KUBUNTU, UBUNTU con aplicaciones bsicas en Microchip 8-bit or 32-bit PIC microcontrollers. The goal of this project is to build an IDE (Integrated Development Environment) que es muy facil usarlo en GNU/Linux.

Programacin del PIC 18F4550-Prender un Led

Pgina 22

6.1

DESCARGAS Pinguino beta 9.05 (26-Dec-2010). Es la primera instalacin Despus de la instalacin Pinguino IDE for [ GNU/Linux ] Plataforma de programacion Boot Loader - [ bootloaderV2.12.hex ] [ bootloaderARDE.hex ] (for boards with buttons RUN and RESET)

6.2

INSTALAR EL IDE

En GNU/Linux En Windows En MacOS

6.3

BOOTLOADER El bootloader es una pequea rutina dentro del PIC. Se utiliza para la transferencia de su programa en la memoria del PIC con esto en lugar de utilizar un programador. Este codigo solo debe ser grabado en el PIC una unica vez, luego el codigo generado con IDE de Pinguino sera enviado via USB. El bootloader es el mismo para versiones basadas en el PIC 18F2550 y para el PIC 18F4550.

6.4

COMPILAR Y GRABAR TU CODIGO 6.4.1 Compilar Solo debes presionar el botn de compilar y si todo tu cdigo est bien escrito, debes poder apreciar un mensaje como este Compilacin hecha code size: XXXX / XXXXX bytes (XX% used) Lo que te indica el tamao de tu cdigo, y el porcentaje que ocupara dentro de la memoria FLASH del micro.

Programacin del PIC 18F4550-Prender un Led

Pgina 23

6.4.2 Cargar cdigo *En GNU/Linux


Presionar el botn de Reset en la placa de Pinguino. Esperar 3 segundos. Presionar el botn de Upload to Pinguino en el IDE. Aparecer un mensaje en la consola del IDE. Luego de 5 segundos el led de RUN se encendera y ya se estara ejecutando el ultimo cdigo cargado.

6.5 HERRAMIENTAS UTILIZADAS Librera PyGTK 2.0: librera que ya viene incorporada en el python Sistema operativo Linux Kubuntu 9.0 beta

import pygtk pygtk.require(2.0) import gtk

Programacin del PIC 18F4550-Prender un Led

Pgina 24

6.5

CODIGO DE PROGRAMACION PINGINO BETA PARA EL PIC

//definimos el PIC18F4550 #define PIC18F4550 //declaracin de variables int i; char c; int o; // modulo de inicializacin

void setup() { //definimos el uso del pin 22 en el PIC tanto para el OUTPUT como para LOW pinMode(22,OUTPUT); digitalWrite(22,LOW); //inicializamos la variable o en bajo cero o=0; } //mtodo void del bucle infinito void loop() {

Programacin del PIC 18F4550-Prender un Led

Pgina 25

// verificamos que hay un stream de datos esperando ser leidos if(USB.available()) // si hay entonces recuperamos ese byte ( que es un char c = USB.read(); //segun haya sido los char elegimos una accion if(c == 'O') o = 1; if(c == 'F') o = 2; if(c == 'S') o = 3; if(o == 0) { // si no se eligio ninguna accion indica que es encendido o apagado, entonces if (c=='H') digitalWrite(22,HIGH); if (c=='L') digitalWrite(22,LOW); } if(o == 1) { //en el puerto 22 escribimos ya sea en alto(HIGH) o en bajo(LOW) digitalWrite(22,HIGH); delay(100); digitalWrite(22,LOW); //frecuencia, revolucin o intensidad con la que prenderemos el led delay(100); }

Programacin del PIC 18F4550-Prender un Led

Pgina 26

if(o == 2) { digitalWrite(22,HIGH); delay(50); //escribimos por el pin 22 del PIC en bajo digitalWrite(22,LOW); delay(50); } if(o == 3) { digitalWrite(22,HIGH); delay(1000); digitalWrite(22,LOW); delay(1000); } //iniciamos nuevamente en 0 para repetir todo o = 0; }

Programacin del PIC 18F4550-Prender un Led

Pgina 27

6.7 PROGRAMACION PYTHON DEL LADO DE LA PC


#!/usr/bin/env python # -- coding: UTF-8 -*#jalamos librerias para GUI (interfaz grafica) import pygtk pygtk.require('2.0') import gtk import usb #la clase q contendra los botones class Table: def callback(self, widget, data=None): #la function que es llamada por cada boton donde data contiene el char de instruccin #que se mandara al pic print "Instruccin %s enviada." % data self.dh.bulkWrite(0x01, data, 10000)

def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

self.window.set_title("Comunicacin USB") self.window.connect("delete_event", self.delete_event) self.window.set_border_width(10)

Programacin del PIC 18F4550-Prender un Led

Pgina 28

#creamos nuestra clase que contendra los botones, y luego creamos botones con eventos table = gtk.Table(5, 1, True) self.window.add(table)

button = gtk.Button("Encender Led") button.connect("clicked", self.callback, "H") table.attach(button, 0, 1, 0, 1) button.show()

button = gtk.Button("Apagar Led")

button.connect("clicked", self.callback, "L") table.attach(button, 1, 2, 0, 1) button.show()

button = gtk.Button("Oscilar") button.connect("clicked", self.callback, "O") table.attach(button, 0, 2, 1, 2) button.show() button = gtk.Button("Ocilar rapidor") button.connect("clicked", self.callback, "F") table.attach(button, 0, 2, 2, 3) button.show() button = gtk.Button("Oscilar Lento") button.connect("clicked", self.callback, "S") table.attach(button, 0, 2, 3, 4)

Programacin del PIC 18F4550-Prender un Led

Pgina 29

button.show()

button = gtk.Button("Salir") button.connect("clicked", lambda w: gtk.main_quit()) table.attach(button, 0, 2, 4, 5) button.show()

table.show() self.window.show()

busses = usb.busses()

for bus in busses: devices = bus.devices for dev in devices: if dev.idVendor==0x04d8 and dev.idProduct==0xfeaa: pingu = dev self.dh = pingu.open() self.dh.setConfiguration(3) self.dh.claimInterface(0)

Programacin del PIC 18F4550-Prender un Led

Pgina 30

def main(): gtk.main() return 0 if __name__ == "__main__": Table() main()

Programacin del PIC 18F4550-Prender un Led

Pgina 31

7. BIBLIOGRAFIA www.rugebiker.com/wp.../Implementacion-de-un-Circuito-deControl.pdf http://spanish.alibaba.com/product-gs/4mhz-hc49u-crystal357776966.html http://www.tecnologiaseso.es/pdf/AMPLIFICADOR%20DE%20SA LIDAS.pdf

Programacin del PIC 18F4550-Prender un Led

Pgina 32

También podría gustarte