Archivo

Archive for the ‘Pinguino tiny 18F4550’ Category

Ya tenermos nuestra primera shield funcional

Buenas. desde hoy tenemos una shield funcional para el control de una pantalla LCD, el r/w esta conectado al pin 25, el 8 al Enable y el 9 al Register select. Los pines 0-7 serán el bus de datos para la comunicación de datos (envio y recepcion de datos. Está hecha muy rapido y sin cuidar detalles tales como que dejé el potenciometro bajo el LCD o que no se tiene en cuenta la retroiluminación. Así pues está shield es provisional hasta tener una algo más bonita. Bien la parte izquierda es la parte dedicada al display, el pin 1 está reservado en la zona inferior. Mientras que la parte de la derecha está dedicada para la conexión con la placa, donde la parte superior debe coincidir con la placa en el pin 7. Ahora estoy intentando aprender a manejar eso, pero no existe mucha información a pesar de existir una gran cantidad de funciones para el LCD para pinguino, no encuentro apenas información, así pues, me voy a tener que dedicar a experimentar con el código.

Si tienen alguna duda solo pregunten.

Un Saludo!

 

Los LCDs Funcionan.

Buenas tras mucho lio de cableado y dolores de cabeza por tonterias, tanto cable se desconecta «mu fasi» xD, he conseguido hacer funcionar la pantalla LCD, con no más intención que probar que funciona para emitir el voto de Ebay, satifactorio, aunque no tanto con lo que tardó, pero es otra historia. Así que para evitar tanto jaleo de cable, tendré que hacerme una shiel para colocarlo sobre el pinguino y de esta forma tener mas comodidades. Una vez tenga esto podré investigar sobre el mundo de los LCD y publicar mis avances por estos lares.

Respecto al tema de los motores, voy a dejarlo un poco de lado, pues me da tremenda pereza que no me funcionen las cosas. Así que lo dejaré un poco de lado y voy a darle un poco más de caña a la LCD, que se ve que me funciona mejor, jejejeje.

Un saludo.

PD Debido a que tengo que hacer el diseño de la PCB testeo y demás es muy posible que tarde un poquitín en actualizar.

Pinguino simple y mibreadboard.

Ahora os dejo un archivo subido a MU, donde contiene los archivos necesarios para la creación de las placas. Además os dejo una imagen de la minibreadboard.

Descargar archivos

Pinguino Tiny 4550 Khazus V 2.0 MiniBreadBoard

Buenas, por fin os traigo de forma definitiva el Pinguino Tiny 4550 Khazus V 2.0 MiniBreadBoard. Se distinge del oficial en que en este pinguino tenemos la posibilidad de colocar los pines hembras, por ejemplo, para la insersición de módulos sobre nuestro pinguino, Además se ha mejorado el diseño de la placa para que quede más campacto en longitud ya que el anterior es realmente largo, y a mi gusto incomodo. Respecto a lo demás es exactamente igual, trabajamos a 20 MHz. Quería ademas hacerlo para miniUSB pero no encuentro estas piezas, así que por el momento seguiré usando USB B. Además en la versión que hoy os presento. Esta placa incluye una pequeña BreadBoard de 9 nudos con 4 pines cada uno, para hacer pequeñas pruebas o simplemente como un nudo auxiliar. Aqui os dejo la pegatina que uso sobre la parte superior de la placa (para que quede mas vistosa), ademas de la placa a revelar por supuesto.

Componentes:

D= Diodo Led
BUTTON = Botón de dos patas.
C1 = Capacitor 220nF
C2 = Capacitor 10uF electrolitico
22p = Condesador ceramico 22pF
XTAL = Cristal 20MHz
USB = USB tipo B hembra
Zocalo 4o Pines
Microchip PIC18F4550 (programado)
Resistencia 470 ohm
Resistencia 10k ohm
Barras de pines hembra.

Esto es todo. Un saludo!! y ya me contarán

Nuevo diseño de las placas Pinguino Tiny 4550

Buenas, pues eso digamos que estoy creando unas nuevas placas de pinguino tiny 4550, las cuales bautizare como «Pinguino Tiny 4550 Khazus V 2.0». No mejora ninguna de la caracterísiticas intrinsecas del sistema pinguino tiny 4550, sin embargo, en esta placa se ha hecho para que su realización se más facil y práctica. Llevando en lugar de pines machos para colocar sobre una breadboard pines hembras, donde se pueden tirar cables a las breadboard e incluso colocar perifericos sobre nuestros pinguinos.

Además estoy dedicando tambien espacios a submodelos sobre el diseño «Pinguino Tiny 4550 khazus V 2.0» como el «Minibreadboard» que llevará una minibread borad de 4×9, o el «servo-controller» k aún está en desarrollo pero quiero k pueda tener pines para conectar directamente sobre la placa entre 3 y 5 motores. Por supuesto estas placas podrán ser usadas como un pinguino normal. Ahora mismo estoy en fase de creación y me encuentro realizando pruebas. En cuanto verifique que funcionan, subiré en esta página toda la información sobre el mismo.

Por supuesto si tienen algún proyecto donde se necesita algo especifico no tienen más que comentarmelo, si está dentro de mis posibilidades haré lo posible por sacar un nuevo modelo, o por que no, hacer un periférico. Al igual que si desean compartir algún periferico o mejora que hallais hecho sobre pinguinos, puedes hacerlo aquí.

Un Saludo.

 

Programación II

Buenas, Ayer publique un circuitillo que trabajaba en parte en analógico, sin embargo no hemos hablado aún de lo analógico. Sabemos que los microcontroladores solo entienden digital es decir 0 ó 1, o lo que es lo mismo, tensión alta, tensión baja. Además también sabemos que todo en general es analógico. Así pues necesitamos digitalizar estas señales para poder trabajar con ellas, por suerte, disponemos de 8 pines de entrada analógicas. Es decir el propio PIC nos traducirá un valor analógico en un numero entre 0 y 1023 (por ello lo dividíamos entre 4 para establecer la posición del servo (0-250)). Para leer este dato debemos usar los pines del 13 al 20 ambos incluidos mediante la función analogRead(pin) . Además también necesitaríamos de una salida analógica para comunicarnos con el mundo exterior, ya que por ejemplo de esta forma se podría controlar la velocidad de un motor RC, la luminosidad de led, incluso la emisión de una señal analógica de baja frecuencia. Sin embargo para esto utilizaremos el módulo PWM, de los cuales solo disponemos de dos, y peor aún, solo podremos usar uno a la vez. Así pues tan solo podremos usar los pines  11 y 12. Ademas solo podremos darle valores entre 0 y 1023 mediante la función analogWrite(pin,valor). Leí por ahí la posibilidad de incluir mas módulos PWM mediante interrupciones, pero antes quisiera enseñaros de que se trata y como hacer una.

Un saludo!!

PD. aun no puse el esquematico del circuito de ayer ya que aún no explique lo que es un potenciometro, pero ya mañana sin faltas lo pongo.

Programación I

Buenas, como dije, hoy voy a empezar un tutorial sobre programación para el Pinguino. Bueno, por lo pronto comentar que en Pinguino existen tres tipos de funciones esenciales. La de incialización donde se inicializan y declaran todos los parametros de nuestro programa: void setup() . La de programa, donde se ejecutará el programa, es decir la principal: void loop(void) . Y la de interrupción, la cual se ejecutara cuando se produzca un evento de interrupción (se explicara en breve, no os preocupeis): void UserInterrupt() . Para hacer otra función (que ya veremos con detenimiento que son) se han de declarar y por supuesto deben tener otro nombre. Está PROHIBIDO la RECURSIVIDAD!!!

Bueno y por que os cuento esto, si ni siquiera he explicado que es una función, pues bueno digamos por que sin esto no somos capaces de hacer un programa, y así pueden ir jugando con lo que se os explique.

Bueno ahora vamos a comentar un poquitín sobre el PIC 18F4550. Este es el microcontrolador que usa el pinguino tiny 18f4550. Tiene un procesador capaz de trabajar a una velocidad máxima de 48MHz, en nuestro caso a lo usamos a 20MHz. 35 pines que pueden ser usados como entrada o salida, en nuestro caso solo disponemos de 26 ya que las otras seis están ocupadas a otros propósitos. 13 entradas analógicas, que darán un numero analógico normalmente entre 0 y 1023. Dos comparadores analógicos, 4 contadores y otros elementos de los que hablaremos más adelante.

Lo primero que nos debe de llamar la antención es que tenemos 29 (0-28) pines que podemos usar como entrada y como salida. Esto obviamente debemos de configurarlos para que en cada ejecución el micro sepa si vamos a usar el pin como entrada o como salida, de otra forma podriamos ocacionar algun daño en los componentes o en el contrador mismo, pero no os preocupeis, si no lo declarais no os dejará compilar. El comando que vamos a utilizar es PinMode(pin,mode), donde pin podemos usar cualquiera, y donde mode INPUT de entrada y OUTPUT de salida.

Muy bien ahora ya podemos usar nuestros pines, pero, ¿y ahora que?. Ahora podemos encenderlos o apagarlos si son de salida, o leerlos si son de entrada. Para escribir sobre un pin podemos usar el comando digitalWrite(pin,mode) donde el pin selecciona el pin y el mode si es HIGH encendido o LOW apagado. Y para leerlos podemos usar digitalRead(pin), donde si vale uno, significa que esta encendido y si vale 0 apagado.

Bueno por hoy hemos terminado, mañana seguiré con la lección y nos meteremos en el mundo de las variables.

PD en sobre mi puse mi dirección de mail, si teneis alguna duda o sugerencia do dudeis en hacermelo saber. MUCHAS GRACIAS.

Detector de Proximidad

Buenas, acabo de realizar un pequeño detector de proximidad, la verdad no es para nada difícil detecta aproximadamente unos 10 en blanco y unos siente en negro. el codigo es extremadamente parecido al detector de infrarrojos de hecho es un derector de infrarojos pero con L1 (pin  0) siempre en nivel alto.

Bueno os pongo un esquemático un poco informal pero para que veáis como va conectado. El fototransistor (M1 en la imagen) es un vbpw77nb 822, para que el sensor de proximidad sea valido este transistor solo debe detectar la luz que le llega en la dirección perpendicular a la base, por ello lo cubrimos con un pequeño canuto de cartulina negra como se ve en la imagen. Además el led infrarojo (L2), de otro color es menos efectivo,debe estar en paralelo a el, a la altura aproximada del cartoncillo, o minimamente mas retrasado, nunca adelantado, lo mas pegado posible. al canuto. Así los fotones que rebotan en la pared volverán con una dirección similar llegando a nuestro sensor. (nota: en M1 la pestaña es el emisor)

Eso si, el circuito lo he probado en interiores, con la luz encendida y apagada, no se como puede responder en exteriores, posiblemente tendremos que extender el canutillo o subir la sensibilidad. A ver si termino los exámenes y puedo ver la luz del sol para probarlo.

Un saludo y buenas noches

PD: No me he olvidado del esquemático del circuito de ayer, simplemente lo quiero hacer más serio que este circuito usando proteus o microcap.

PPD: Ya tengo hechas un par de plaquitas, en cuanto tenga la primera tirada y tiempo para enviarlo ‘in facto’, publicaré precios, me informaré como hacer ventas por paypal, o usare ebay, ya veré lo que hago, la idea es vender estos circuitos a casi precio de costo (12 eurillos) y hacer unos más curradillos a unos 15 o 20 euros. Los que tengo ahora son el tiny 18f4550 tal y como aparecen en la web: www.hackinglab.com. La idea es mejorar el diseño y quizás la posibilidad agregarle un regulador de tension de 5V, pero esto subirá algo el precio final. Quiero hacerlo lo más barato posible así que to es probar.

Solucionado

Ciertamente no se por que es así, pero cuanto menor es el valor, indica que le entra mayor cantidad de luz al fototransitor, estoy esperando a ver si me llegan unos motores e intentaré construirme un sensor que detecte obstáculos tales como una pared etc.. además jugando con los servos podría mirar a los lados antes de decidir que camino escojer.

Bueno prometí código y esquemático, pero por ahora solo os pondré el código, y mañana más tranquilamente os coloco el esquematico.

………………….

/*Cuando se pulsa el botón del pin 7, este enciende el led infrarojo asociado al pin 0, entonces el transistor leerá que hay luz y encenderá un led asocioado al pin 6. Puesto que el transistor produce una seña analógica, se leera como tal por una de las posibles entradas analogicas. Si se quiere ver el efecto de tapar el transistor no tienen mas que eliminar la parte del boton y cambiar el < por el >. Un Saludo, Khazus.*/
#define PIC18F4550
void setup()
{
pinMode(6,OUTPUT);
pinMode(0,OUTPUT);
pinMode(7,INPUT);
}

void loop()
{
if(digitalRead(7)==0)
digitalWrite(0,HIGH);
else
digitalWrite(0,LOW);

if(analogRead(13) <= 50)
digitalWrite(6,HIGH);
else
digitalWrite(6,LOW);
}

…………..

PD. Una imagen de las plaquitas que tengo por ahora:

Pinguinos

Nuevas Ideas

Buenas, hoy he invertido un poquitín más en esto de la robótica y  pensé que podría hacer algo para subvencionarme mis pequeños proyectos, ahora mismo se que es muy pronto para empezar a pedir, así que pensé en la posibilidad de vender placas pinguino a un precio económico. Como comenté, hoy invertí un poco más, compre los cacharros necesarios tales como taladro, pcbs virgenes, los liquidos atacantes… etc…. Así que realizé mi primer en un pcb impresa. En fin todo es cuestion de subir unas fotos, y hacer cuentas.

Realmente espero que salga economico calculo que saldrán por unos 12 o 15 euros completa.(más el envio)

Ahora sigo investigando lo que dejé ayer a medias.

Un Saludo y hasta ahorita.