sábado, 27 de noviembre de 2010

MPLAB, C18 y PIC18F - [PDF + VIDEO]

A continuación les dejo un documento recien terminado. Este contien los principios básico para empezar a trabajar con el MPLAB en lenguaje c, por medio del compilador C18 y con los micros de la familia 18F.

Este documento contiene:

-Configuración del MPLAB y compilador
-Creación de nuevo proyecto
-Configuracion de los fusibles (palabras de configuración)
-Ejemplo "Hola Mundo" (El clásico de prender y apagar leds del puerto B)
-Simulación del programa con el MPLAB.

This document contents the basic principles to work with MPLAB and the Microchip C18 C compiler. It contents: MPLAB and compiler configuration, Making a new project, Setting the Configuration Words of the PIC18F, Hello World with leds, Simulating the code with MPLAB.



Right now this document is not available on english, but i've posted a video with all the steps. Hope it helps you.

MPLAB,C18 y PIC18F - "Hola Mundo"



domingo, 10 de octubre de 2010

Tarjeta de prácticas PerfectAlgorithm-1

A continuación les presento la tarjeta de prácticas/entrenadora PerfectAlgorithm-1 (:P), con la cuál podrán realizar y probar los códigos que vaya subiendo al blog, de igual forma les puede ayudar para sus propios proyectos.

La tarjeta cuenta con:

-Conector USB
-LCD doble línea de 16 carácteres
-6 Push buttons (6 a puertos, 1 reset).
-8 Leds.
-1 Block de 3 entradas para Potenciometro conectado al puerto A0.
- PIC18F2550
- Posibilidad de alimentarse directamente del usb o fuente externa.

La tarjeta esta probada, realizada con máquina. Si alguien la realiza con otro método, sería muy bueno que comparta como lo hizo o fotos aquí en el blog para que otros puedan realizar su tarjeta en caso de no disponer de una máquina.




Tarjeta entrenadora PA-1 PIC18F - (PA-1 PIC18F training board.)


Aquí esta un archivo rar con el esquematid (.sch) y el pcb (.brd) para EAGLE.



desde MEGAUPLOAD...

RECUERDA QUE ESTE MATERIAL POSEE LICENCIA CREATIVE COMMONS Y ESTÁ PROHIBIDO SU USO PARA FINES DE LUCRO.


Licencia de Creative Commons
Tarjeta entrenadora PerfectAlgorithm-1 by Ing.Jonatan Yam. is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Based on a work at perfectalgorithm.blogspot.com.
Permissions beyond the scope of this license may be available at http://perfectalgorithm.blogspot.com.

viernes, 10 de septiembre de 2010

4.- Palabras de configuración. - PIC24FJ256

El documento que acontinuación dejo, explica brevemente y con ejemplos como establecer las palabras de configuración del microcontrolador, así como la configuración del oscilador mediante sus registros de control relacionados usando el compilador MPLAB C30.

Para complementar el documento se adjunta el proyecto completo realizado en MPLAB v8.56 y C30 v 3.24.


Palabras de configuración PIC24FJ256GB106


Para complementar el documento dejo un video con todos los pasos explicados en el mismo. Se puede ver en HD.





Y el código fuente.

Descargue el archivo desde cualquiera de los servidores, la CONTRASEÑA del archivo rar es: http://perfectalgorithm.blogspot.com

Palabras_de_configuracion_(LED).rar.html

Palabras_de_configuracion_(LED).rar








domingo, 5 de septiembre de 2010

Introducción a MPLAB IDE - Microchip WebSeminars


A continuación les dejo una video introductorio al MPLAB. Este video pertenece a los seminarios web de microchip (www.microchip.com).







Más seminarios en: http://techtrain.microchip.com/webseminars/QuickList.aspx

sábado, 4 de septiembre de 2010

Squiggle Motor - Motor miniatura piezoeléctrico.

Primera prueba de un Motor Sguiggle de Newscale manipulado con microcontrolador, que recibe instrucciones de movimiento vía inalámbrica. Este motor será usado para controlar la profundidad de electrodos en la corteza cerebral del ratones para el estudio de las señales eléctricas de las neuronas.






Para más detalles de los motores squiggle: http://www.newscaletech.com/


jueves, 29 de julio de 2010

3.- El oscilador y su configuración. - PIC24FJGB256



Esto micro es muy flexible en cuanto a la parte del reloj, ya que tiene la opción de usar dos xtales externos e incluso alternar el uso de estos durante el programa.
También posee un reloj RC interno de 8Mhz (FRC), el cuál nos permite trabajar el microcontrolador sin necesidad de xtales externos, sin embarco este oscilador no es tan exacto como un xtal, por lo cuál se recomiendo para aplicaciones donde el timing no sea muy importante. Y posee tambien un reloj RC interno lento (LPRC) de 31Khz para el ahorro de energía.
Contien un módulo PLL para aumentar la frecuencia del xtal externo para alcanzar hasta 48Mhz para el módulo USB con un xtal de 4MHz. El PLL está disponible tambien para el reloj RC interno (FRC), sin embargo debido a la baja presición de este no se recomienda para uso en aplicaciones relacionadas con el USB.



En la imagen de arriba se aprecia un diagrama de los osciladores con las posibles opciones de trabajo del módulo del oscilador.
Cabe mencionar que las instrucciones se realizan en 2 ciclos máquina en el datasheet se simboliza con FCY que es igual a Fosc/2. Por lo que, con un reloj de 4Mhz el PLL es capaz de elevar hasta 32Mhz, y teniendo encuenta lo anterior, la velocidad de trabajo del cpu es de 16Mhz es decir 16MIPS.

En la siguiente imagen se muestra un diagrama mas detallado del PLL usando el oscilador primario POSC o el FRC.



Hay 3 registros para la configuración del oscilador:

• OSCCON
• CLKDIV
• OSCTUN

con los cuales se puede selecciónar el reloj asi como las divisiones de frecuencia, etc...

Página 123 datasheet para mas información.

Quizá al principio pueda resultar un poco confuso si nunca se ha trabajado con el PLL. En caso de estar familiarizado con el PIC18F esto es incluso más fácil que el módulo de dicho modelo. Al fin, en nuestro programa todo se reduce a un par de líneas, que una vez entendiendo el funcionamiento, se vuelve casi como respirar :P.

martes, 27 de julio de 2010

2.- Básicos. Regulador de voltaje - PIC24FJGB256

El núcleo de la familia PIC24FJ256GB110 tiene la caracteristica eléctrica de funcionar con un voltaje de 2.5V, por lo que podria pensarse que puede existir un poco de incompatibilidad en nuestros diseños o en diseños donde generalmente usamos voltajes para otros dispositivos digitales de 5V o 3.3V, pero en realidad no es así.

En el caso de trabajar con un diseño utilizando voltajes de 3.3V no presenta mayor reto, ya que simplemente con habilitar el regulador de voltaje interno del micro, podremos alimentar directamente con los 3.3V los pines y estar seguros que el núcleo tendra la alimentación constante de 2.5V.

Ahora, cuando usemos voltajes de 5V o mayores, tendremos que dedicar unos cuantos componentes extras que no representan costos altos y nada de complejidad en su implementación. En mi caso uso el regulador de 5V a 3.3V LM1117IMP-3.3 y el regulador interno del micro para obtener los 2.5V en el núcleo.

La configuración del regulador se realiza mediante las patillas:
-ENVREG-VDDCORE/VCAP



Habilidar regulador interno
.

Entonces, en caso de trabajar con un regulador de 3.3V, habilitamos el regulador interno conectando el PIN ENVREG y todos los pines VDD a los 3.3V. VDDCORE/VCAP se conecta a un capacitor de 10uF a tierra.



Deshabilitar regulador interno.

En caso de tener los 2.5V en nuestro diseño, desabilitamos el regulador interno conectando el PIN ENVREG a tierra y el PIN VDDCORE/VCAP así como todos los pines VDD del micro a los 2.5V.




Algunos pines de este micro pueden soportar voltajes de 5V a pesar de trabajar con 2.5V o 3.3v. Estos se encuentran descritos en el datasheet, y proveen mayor compatibilidad con nuestros diseños.

domingo, 25 de julio de 2010

1.- Conexión Básica. - PIC24FJ

Para esta serie de post sobre los PIC24FJ, quizá vaya omitiendo explicaciones sobre procedimientos usados entre otras cosas, dependiendo de la "simplicidad" de los mismos, ya que esto no busca profundizar en todos los detalles de esta familia de micros ni mucho menos en el lenguaje C ni en el compilador, si no que busca dar información objetiva y concreta para poner en marcha de manera rápida estos dispositivos e incluso generar mas dudas para el lector y así indagar mas en este mundo maravilloso de los microcontroladores.
Antes de empezar con el tema quisiera aclarar que estoy muy lejos de ser experto o dominar totalmente el tema, pero si me gusta compartir los muchos o pocos conocimientos que he adquirido con la ayuda de otros blogs y documentos encontrados en la red, por lo que espero que este blog sea útil para otra gente interesada en la electrónica. Cualquier duda o recomendación, así como correcciones y críticas son bien recibidas.


En el siguiente post describiré el hardware básico para empezar a trabajar con un microcontrolador PIC24FJ, en lo particular para este documento PIC14FJ256GB106, sin embargo se puede trabajar con cualquier microcontrolador de la familia 24FJ256GB110 de 64, 80 y 100 pines. Lo que hay que tener en cuenta es el patillaje dependiendo del dispositivo que se este utilizando, es muy recomendable leer por lo menos los puntos principales en la hoja de datos de esta familia.
A continuación pongo los materiales usados, sin contar los materiales para realizar el pcb para esto. De igual manera pongo el esquematico y el pcb. Trataré de poner los videos de la realización de la placa y la manera de soldar el micro y los componentes superficiales de manera casera. (EN CONSTRUCCIÓN).

Material necesario:

- PIC24FJ256GB106 (Montaje superficial, si no tienes la posibilidad, usar uno con empaquedado DIP de la misma familia como puede ser el PIC24FJ64GB002-I/SP , solo hay que adaptar los registros, aunque recomiendo usar este, ya que de la familia 24 es de los que tienen mas prestaciones.)
- Regulador de 3.3V, en mi caso uso el LM1117IMP-3.3 de National Semiconductor también de montaje superficial. DATASHEET

- Programador compatible con esta familia de micros y que pueda programar ICSP. En mi caso uso el PicKit2 de Microchip.

-Resistencias 10K, 470

- Capacitor 1uF, 33pF, 100nF,100 uF


Para la conexión básica nos basamos en el esquema propuesto en el datasheet de esta familia, la cuál presenta los requerimientos mínimos para poner a volar el microcontrolador.

Como se aprecia en este esquema, todos los pines VDD deben estar conectados a la fuente de alimentación de 2.5V o 3.5V dependiendo de si se tiene habilidado o no el regulador interno que posee el microcontrolador (en otro post se indicará como habilidar o deshabilitar el regulador) y todos los VSS a tierra.

Entre todos los pines VDD y VSS es MUY RECOMENDABLE incluir un capacitor localizado lo mas cerca posible de estos pines. Los valores recomendados para los capacitores del C1 a C6 es de 0.1uF a 20V cerámicos.

Para el C7 se recomienda 10uF a 6.3V de tantalio o cerámico, pero como comente anteriormente, dependerá de la configuración del regulador interno. Este tema lo trataré brevemente en el siguiente post.

Para mas información página 27 del datasheet PIC24FJ256GB110.

..... EN CONSTRUCCIÓN.....

sábado, 5 de junio de 2010

Conexión CDC PIC18F <-> LabView.


En el siguiente documento se detallan algunas funciones y procedimientos para realizar una conexion mediante CDC ( Emulación de puerto serie) con un microcontrolador de la familia 18F con soporte para USB y LabView. Son bienvenidas las observaciones, correciones y/o correciones sugerencias para este documento.


Conexion CDC PIC<->LabView






El hardware utilizado para este ejemplo dispone de 5 pushbuttons conectados en el puerto A (A1..A5) y 8 leds en el puerto B (B0..B7).




#include <18f2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL4,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)

#define LED1 PIN_B0
#define LED2 PIN_B1
#define LED3 PIN_B2
#define LED4 PIN_B3
#define LED5 PIN_B4
#define LED6 PIN_B5
#define LED7 PIN_B6
#define LED8 PIN_B7

#define LED_ON output_low
#define LED_OFF output_high


#include
#include

void main(void) {

char c;
usb_init();

while (TRUE) {
if (usb_enumerated()) {
if (usb_cdc_kbhit()) {

c=usb_cdc_getc();

if (c=='1') output_toggle(LED1);
if (c=='2') output_toggle(LED2);
if (c=='3') output_toggle(LED3);
if (c=='4') output_toggle(LED4);
if (c=='5') output_toggle(LED5);
if (c=='6') output_toggle(LED6);
if (c=='7') output_toggle(LED7);
if (c=='8') output_toggle(LED8);

}

if (input_STATE(PIN_A5)==0){
delay_ms(800);
printf(usb_cdc_putc,"5\r");
}

if (input_state(PIN_A4)==0){
delay_ms(800);
printf(usb_cdc_putc,"4\r");
}

if (input_state(PIN_A3)==0){
delay_ms(800);
printf(usb_cdc_putc,"3\r");
}

if (input_state(PIN_A2)==0){
delay_ms(800);
printf(usb_cdc_putc,"2\r");
}

if (input_state(PIN_A1)==0){
delay_ms(800);
printf(usb_cdc_putc,"1\r");
}

}
}
}







A continuación un video para complementar el documento...






.

jueves, 3 de junio de 2010

DAQ mediante CDC y LabView



Esta es una aplicación de la conectividad USB, en este caso en particular, usando la emulación de un puerto serie RS232 mediante un microcontrolador PIC18F2550 (Puede usarse cualquiera de esta familia) para la adquisición de datos analógicos usando el convertidor analógico-digital del mismo, y enviando estos datos a la PC y procesarlos mediante LabView.
Con el LabView se pueden realizar una cantidad de cosas impresionantes, y lo mas impresionante es el tiempo de implementación que es muy corto, en cuestión de minutos uno puede obtener una aplicación bastante poderosa.

Para esta aplicación se utilizaron los componentes VISA de labview para realizar la conexión serial de manera rápida pero eficaz, se utiliza un GRAPH CHART para graficar los datos adquiridos, y la función WRITE TO SPREED SHEET para guardar estos datos a una hoja de cálculo de exel.

CLICK AQUÍ PARA VER CÓDIGO [-/+]



//-----------------------------------------------------------------------------------
//
// Mas proyectos en: http://perfectalgorithm.blogspot.com
//
//----------------------------------------------------------------------------------
// Esta obra está bajo una licencia
// Atribución-No comercial-Licenciamiento Recíproco 2.5 México de Creative Commons.
// Para ver una copia de esta licencia, visite:
// http://creativecommons.org/licenses/by-nc-sa/2.5/mx/
// o envie una carta a Creative Commons, 171 Second Street, Suite 300,
// San Francisco, California 94105, USA.
//-----------------------------------------------------------------------------------

#include <18F2550.h>
#device ADC=10
#fuses XTPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)


#include <usb_cdc.h>
#include <lcd1.c> //Cambie por libreria LCD adecuada.
#include <string.h>

#BYTE TRISA = 0x0F92
#BYTE TRISB = 0x0F93
#BYTE PORTA = 0x0F80
#BYTE PORTB = 0x0F81
#BYTE ADCON0 = 0x0FC2
#BYTE ADCON1 = 0x0FC1
#BYTE CMCON = 0x0FB4



char comando[10];
char adc_string[10];
int16 adc_dato;
int len=0;
char c;

void commando();



void main(void) {

LCD_init();
usb_init();

TRISA = 0x0FF;
TRISB = 0x00;
ADCON1 = 0x0F;
CMCON = 0x07;


setup_comparator(NC_NC_NC_NC);
setup_adc_ports(AN0);
setup_adc(vss_vdd);
set_adc_channel(0);
setup_adc(adc_clock_internal);


printf(lcd_putc,"\fPerfectAlgorithm");
len=0;


while (TRUE) {
if (usb_enumerated()) {
if (usb_cdc_kbhit()) {
c=usb_cdc_getc();
Comando[len]=c;
len++;
}
if (len>2) {
commando();
len=0;
}
}
}
}

void envia_dato() {
int i;
read_adc(ADC_START_ONLY);
while (bit_test(ADCON0,1));
adc_dato = read_adc(ADC_READ_ONLY);
sprintf(adc_string,"%Lu",adc_dato);
for(i=0;i<strlen(adc_string)+1;i++) {
usb_cdc_putc(adc_string[i]);
while(!usb_cdc_putready());
}

}

void commando() {

if (Comando[0]=='G') { //----------- GDT
if (comando[1]=='D') {
if (comando[2]=='T') {
envia_dato();
}
}
}

}

CLICK AQUÍ PARA VER DESCARGAR SOURCE LABVIEW/PIC [-/+]



El archivo contiene el Firmware para el PIC (.C para copilador PCW CCS) y SOURCE para LabView v8.6

http://rapidshare.com/files/395453831/Conexion_CDC_con_Labview.rar.html







Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger