Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Pgina 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.
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
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
Pgina 4
1.2.3.4.-
Figura 2. Lneas elctricas del conector USB 1.0 y USB 2.0, las lneas centrales conducen datos, las laterales la alimentacin.
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)
http://www.informaticamoderna.com/El_puerto_USB.htm
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
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
Pgina 7
5. PIC 18F4550
PINGINO
Pgina 8
Pgina 9
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:
Pgina 11
Pgina 12
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
.
O cont.
GLCD.SelectFont GLCD.SetDot GLCD.SetInverted GLCD.StringWidth GLCD.WriteCom mand GLCD.WriteData GLCD.fastWriteHi gh GLCD.fastWriteLo w GetSystemClock
DS18B20.configur e DS18B20.crc
OnCompare2 OnCompareAll OnCounter0 OnCounter1 OnCounter3 OnEeprom OnEvent OnLowVoltage OnOscFailed OnParallel OnSerialRX OnSerialTX OnTimer0 OnTimer1 OnTimer2 OnTimer3 OnUSB
DS18B20.find DS18B20.getfirst DS18B20.getnext DS18B20.matchro m DS18B20.read DS18B20.readrom K Delay DelayMicrosecond s L DigitalRead DigitalWrite
KB.get S
Rand RandomSeed
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
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
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.
Pgina 16
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.
Pgina 17
Pgina 18
Marca: LCR
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
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.
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
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.
Pgina 23
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
Pgina 24
6.5
//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() {
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); }
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; }
Pgina 27
def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
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("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)
Pgina 29
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)
Pgina 30
Pgina 31
Pgina 32