Programación de un PIC con NIPLE


En el momento actual, la electrónica utiliza microcontroladores y microprocesadores de todo tipo en profusión. Ud. en este momento está leyendo en una PC que tiene seguramente uno de los microprocesadores masivos de mayor tamaño y con una enorme cantidad de patas. Pero también existen microcontroladores de pequeño tamaño y muy fáciles de programar, que han revolucionado la electrónica por su bajo precio.



Entre estos últimos se destacan como los mas económicos, los microcontroladores de la serie PIC de microchips. Y entre ellos se encuentra aquel que es líder en el rubro economía el PIC12F629 de tan solo 8 patas y cuyo costo es de aproximadamente 2 U$S. Si Ud. se pregunta que puede hacer este micro de tan bajo precio yo le contesto que puede cumplir múltiples funciones que aun no podemos evaluar en su totalidad, pero que con el tiempo iremos conociendo poco a poco.


Como al autor le gusta enseñar construyendo dispositivos y no solo con teoría escrita sobre papeles, vamos a construir el primer dispositivo de nuestro curso que es un generador de RF modulado en AM, para la banda de OL que cubre las frecuencias de radio de 530 KHz a 1610 KHz.



Pero lo vamos a hacer explicado, de modo que el lector pueda utilizarlo para otras bandas de frecuencias y otras funciones similares. Al terminar la lectura de esta lección Ud. sabrá qué es un microprocesador y cómo se utiliza.

Pero hasta el menos versado sabe que un microprocesador requiere un programa; si Ud. compra una PC y no le carga ni siquiera el sistema operativo, no podrá hacer nada con ella. El PIC no es la excepción y parecería que allí se acaban nuestras ilusiones de explicar que es un microprocesador. Sin embargo no es así. Cuando les dije a mis alumnos que nuestro curso básico de electrónica incluía laboratorios virtuales y la programación de microcontroladores, no estaba mintiendo; ya hicimos buen uso de los laboratorios virtuales y creo que los alumnos ya les están perdiendo el miedo poco a poco y los están reconociendo como una enorme y didáctica ayuda. Ahora le toca el turno a la otra promesa. En esta lección vamos a aprender a programar.

Hasta hace algunos años los PICs se programaban en “asembler” que es el idioma básico o nativo de esos microcontroladores. Programar de ese modo requiere todo un largo aprendizaje y una ardua tarea a la antigua, o casi a la antigua. Había que escribir sentencias muy complejas y una simple coma mal puesta podía ser un dolor de cabeza para el programador. Hasta que un grupo de profesionales de la Argentina creó un programa llamado NIPLE que resuelve el problema en forma gráfica. Ud. sólo elige diferentes iconos, que representan las diferentes operaciones que realiza el PIC, el resto lo realiza el NIPLE como una tarea de fondo entregando el programa en “Asembler” sin ningún esfuerzo para el programador y sin errores de ningún tipo.

¿Qué debe generar el PIC?

Nuestro PIC tiene una tarea sencilla adecuada para aprender a usarlo. Debe generar en una de sus patas de salida una señal rectangular con un 50% de tiempo de actividad (cuadrada) de una frecuencia de 2 KHz. La amplitud de esta señal no puede ser elegida, ya que en un pata de salida del micro solo pueden existir señales que tengan la misma amplitud que su fuente de alimentación y el PIC que estamos usando se alimenta con 5V. Es decir que generaremos una señal de 5V durante 250 uS y de 0 V durante otros 250 uS para completar un periodo de 500 uS. De este modo generamos una señal de audio de 2 KHz ya que la inversa de 500 uS es 1/500.10-6 = 0,002.106 = 2.000 Hz o 2 KHz.

El PIC12F629 tiene solo 8 patas, pero es un microprocesador completo con todas las de la ley y tiene una capacidad de memoria igual a la de su hermano mayor de 18 patas el 16F84A o su versión mas moderna 16F621 que es el mas conocido de la línea de Microchip. Es evidente que con 8 patas en total y dada la necesidad de poseer una pata para fuente y otra para masa solo le restarían 6 patas activas para realizar su trabajo. Pero los microcontroladores comunes necesitan emplear tres patas mas para dos funciones imprescindibles para ellos y que pasamos a explicar.

Función de RESET

Esta palabra (que podría traducirse literalmente como restauración) se utiliza directamente en Español ya que la ciencia informática la ha adoptado definitivamente. Un microprocesador sigue un programa de trabajo. Y ese programa debe ser ejecutado desde el primer paso de programa hasta el último, en un orden predeterminado comenzando siempre por el paso 1. Si se comienza por el medio del programa el resultado será catastrófico. Por eso los microcontroladores poseen una pata que se mantiene a nivel cero por algunos instantes de tiempo luego de aplicada la tensión de fuente. En esa condición el micro sabe que debe ir a leer el primer paso de programa y ejecutarlo, pasando luego por lo general al segundo y así sucesivamente. Pero esa función de reset puede realizarse internamente si se lo requiere en un micro con pocas patas. El 629 se puede programar para que realice esa función en forma automática liberando la pata de reset para que se pueda usar como pata de entrada.  

Función de CLOCK

La mayoría de los microcontroladores requiere dos patas para utilizarlas en una función llamada “clock”. La traducción literal de esta palabra es “Reloj” pero los informáticos suelen usar directamente el termino en Inglés. La necesidad del clock es evidente. Si un micro es un dispositivo que sigue una serie de pasos de programa debemos decirle a que ritmo debe leer esos pasos. Ese ritmo se le puede dar con un circuito LC como el que vimos en la clase pasada y cuya frecuencia de trabajo era de 1 MHz (ritmo de 4 uS por paso de programa) a condición de que el circuito interno del micro se encargue de generar una señal excitando al circuito LC externo. Pero existe un componente electrónico llamado “cristal” que suplanta al circuito LC con una enorme precisión y que se utiliza junto con dos capacitores de pequeño valor para generar el clock de los micros.

El 629 posee un oscilador interno que no requiere la conexión de un cristal externo. De ese modo esas patas quedan libres para ser usadas como entradas o salidas pero hay que aclarar que ese clock interno no tiene la precisión de un cristal. Como en nuestro caso no necesitamos que el tono de audio generado sea preciso haremos uso de esa facilidad de nuestro micro. También cabe mencionar que la base de tiempo interna esta fija en 4 MHz y que tiene una precisión del 1% dentro de un margen de temperatura de 0 a 70ºC; con esto el paso de programa dura 1 uS (siempre es la frecuencia del clock dividido 4). 

Puertos GP de I/O

Con todo esto, salvo las patas de masa y fuente, las otras 6 pueden considerarse patas activas que la costumbre indica como patas del puerto (que en este integrado se llama puerto GP); y que son 5 de I/O y una de I solamente.

Suponemos que Ud. no entendió la frase anterior porque pertenece al mundo informático, que estamos develando poco a poco. La palabra puerto se utiliza para indicar el lugar a donde llegan o desde donde parten la señales de un micro. Las patas son casi siempre de entrada o de salida debiendo indicarse dicha condición al principio del programa como un paso de programa mas. En Inglés se dice que son patas de I/O de Input que significa entrada y de Output que significa salida. En nuestro caso el puerto (el nombre de las patitas indicado por el fabricante) será GP0 (pata 7), GP1 (pata 6), GP2 (pata 5) etc hasta GP5 (pata 2) y todas son de I/O salvo GP3 (pata 4) que es de I solamente.

En la figura 1 se puede observar la distribución de patas del 629 con todas sus variantes.

Fig.1 Distribución de patas del 629
En nuestro caso solo requerimos una pata de salida, pero la explicación vale para el futuro donde realizaremos otros diseños de instrumental con este mismo micro. En nuestro caso usaremos la pata 7 (GP0) como salida, indicando que en esta pata se puede colocar una carga que tome hasta 25 mA o entregue hasta 20 mA. Dentro de estos consumos el fabricante garantiza que la pata de salida pasará al estado alto o bajo sin inconvenientes.

Programación del PIC con NIPLE

El programa de nuestro generador de señales rectangulares va a ser desarrollado con NIPLE 5.2 del cual se puede descargar un demo. Instale el demo y luego genere un icono de arranque. Al arrancar aparecerá una pantalla con solapas similar a cualquier programa de Windows. Haga archivo > nuevo proyecto y aparecerá la pantalla inicial para elegir el micro.

Fig.2 Predisposición inicial
Elija su idioma preferido entre Español, Ingles y Portugués y el micro 12F629 y pulse en crear. Aparecerá la pantalla para ponerle nombre al archivo y escribir un comentario del programa que se puede observar en la Fig. 3.

Fig.3 Pantalla para nombrar el proyecto y comentar su uso
Complete la pantalla, pulse crear y aparecerá la pantalla de trabajo donde va a crear el programa.

Fig.4 Predisposición de puerto
El orlado con los 6 puntos significa que el próximo bloque se va a conectar automáticamente al que acabamos de crear.

Observe que la zona de trabajo ya posee un icono de inicio en donde el programa genera todos las sentencias de predisposición correspondientes al integrado en uso. Arriba a la derecha tenemos dos ventanas. Una correspondiente a la frecuencia de clock. Que como sabemos estará predeterminada porque el clock interno funciona solo a 4 MHz. Elegimos INT 4 MHz.

La segunda ventana pregunta si vamos a usar una pata como reset, o si el reset será automático y producido internamente. Elegimos “interno”.

Ahora comienza en realidad el programa que deseamos crear y comienza con la definición del puerto. En nuestro caso solo debemos buscar en la tabla de operaciones de la derecha abajo insertar> rutinas básicas > puerto > configuración de puerto y aparecerá la pantalla de la Fig. 5 con el layout completo del integrado en donde observamos que todas las patas están indicadas como salidas incluyendo la que nosotros necesitamos que es la GP0. Deje a las otras patas como salida aunque no las utilice en este proyecto. Es decir que solo debe pulsar “enter” y aparecerá el segundo icono del programa que se puede observar en la figura 6.

Fig.5 Definición del puerto
Fig.6 Icono de definición del puerto
El icono verde con las dos flechas significa definición de puerto. Y la leyenda interna XXSSESSS indica como quedo definido el puerto. El ultimo carácter corresponde a GP0 y hacia la izquierda aparece GP1, GP2, etc hasta GP5 porque este micro no posee un puerto completo de 8 bits. La indicación XX significa que esos bits no están habilitados para ser predispuestos como I o como S. GP3 no puede elegirse, siempre es de entrada por definición, cuando esa pata se predispone para que no sea la de reset.

Nuestro programa requiere que la pata GP0 esté 250 uS alta y 250 uS baja continuando con la oscilación hasta el infinito. Vamos a pasar primero la pata al estado alto ingresando a insertar > rutinas básicas > puerto > escribir en puerto, con lo cual aparece un cartel de aviso de que en esa parte del programa el puerto no esta predispuesto como salida ya que GP3 es una entrada. Haga caso omiso del aviso y siga adelante. Aparecerá una pantalla solicitando que aclare lo que desea hacer.

Fig.7 Pantalla para escribir datos
La opciones son escribir un valor literal o especifico en el puerto de salida o escribir un valor guardado en un registro. Elegimos la primer opción y se produce otra pantalla preguntándonos que “número desea colocar en el puerto” y con que notación. Elegimos notación binaria y colocamos el número 00000001 con lo cual la pata GP0 pasa al estado alto y todas las demás quedan en el estado bajo (las patas virtuales GP6 y GP7 se ponen en cero aunque sabemos que dichos bits no tienen como ser sacados del PIC.

Fig.8 Escritura en un puerto
Al pulsar en ingresar aparece el icono que indica que se envió el numero binario al puerto de salida y por lo tanto la pata GP0 pasó al estado alto.

Fig. 9 Sacando un número binario por el puerto


En este punto del programa necesitamos que el micro se quede detenido con GP0 en alto durante 250 uS. Y eso se logra con un temporizador por loop obtenido de la tabla de herramientas de la derecha haciendo insertar > rutinas básicas > temporizadores > tiempos por ciclos, para que aparezca una pantalla como la indicada en la figura siguiente.

Fig.10 Deteniendo el programa por 250 uS.
Al pulsar “Ingresar” aparece el icono del temporizador en el programa que estamos construyendo.

Fig.11 Demora de 250 uS
Al llegar a este punto vamos a acelerar las explicaciones porque el programa se vuelve repetitivo. Todo lo que nos queda por hacer es escribir 00000000 en el puerto de salida y realizar otra temporización de 250 uS.

En la figura 12 se puede observar el programa terminado para realizar un solo ciclo de nuestra onda rectangular de salida.
Fig.12 Programa para generar un solo ciclo
Y en la figura 12 se puede observar el programa completo con repetición permanente del ciclo. Todo lo que se agregó es un línea del diagrama de flujo para que el control del programa de un salto hacia atrás. Esa línea de regreso se realiza orlando el ultimo icono y luego pulsando en su punto central y arrastrando hasta el icono de retorno.

Fig.13 Programa final
Como se puede observar la programación no puede ser mas sencilla ya que construir todo este programa puede haber llevado un tiempo de un par de minutos como mucho. Y además existe la posibilidad de modificarlo muy fácilmente editando los iconos y cambiando su contenido. Por ejemplo si Ud. quiere generar un tono de 1 KHz solo debe picar dos veces sobre cada temporizador para editarlo. Cuando aparece la pantalla del temporizador, ponga el nuevo tiempo y pulse en “ingresar”. Dejamos como un tarea para el lector la generación de una señal rectangular de 2 KHz con un 40% en alto y un 60% en bajo.

Carga del PIC

El Niple ya realizó nuestro programa, pero ¿Cómo se carga en el PIC? Es evidente que el programa está en la PC pero la PC no tiene zócalo para ubicar un PICs. Si queremos cargar un PIC debemos tener un dispositivo adecuado que haga de interfaz entre la PC y el PIC; ese dispositivo tiene tres nombres; de acuerdo al país de origen del alumno se lo conoce como programador, cargador o quemador de Pics.

Un programador se conecta al puerto serie o paralelo de su PC (también existen programadores para puerto USB) y posee un zócalo que admite los diferentes PICs que existen en la actualidad, a saber de 8, 18 y 28 patas. El autor recomienda comprar un programador para puerto paralelo, debido a que dicho puerto por lo general está libre debido a que las impresoras ya no se conectan allí.

Si Ud. sabe algo de PCs sabe que un dispositivo para la misma no sirve de nada sino posee el correspondiente programa para controlarlo. Nuestro programador utiliza un programa llamado ICprog que se consigue gratuito en la red. Cuando ingrese podrá comprobar que dicho programa es utilizado por 4 millones de personas en el mundo y por lo tanto podemos asegurar que es el elegido por los programadores de PICs.

El instrumento completo

Como el lector ya sabe nuestro curso básico de electrónica lo capacita para reparar radios de AM y FM. El instrumento que le estamos proponiendo hoy es un generador de AM que le servirá para iniciarse en la reparación de esas radios. En nuestro curso solo le pediremos que Ud posea las herramientas clásicas, un tester digital, un tester analógico y el generador de RF que le indicamos en la presente lección.

Un generador de RF para AM debe emitir en diferentes frecuencias de radio. Mas adelante en este mismo curso vamos a indicarle que existe una frecuencia llamada de FI que generalmente es de 455 KHz y es imprescindible para ajustar una radio; luego existen otras dos frecuencias importantes que son los extremos de la banda de AM que en América son 530 y 1650 KHz. Por último se requieren tres frecuencias mas que sirven par observar el funcionamiento dentro de la banda y ajustar eventualmente el circuito de la radio en reparación y que son de 680, 950 y 1250 KHz.

Hasta ahora nuestro generador de RF solo permitía emitir una sola frecuencia. Para realizar un instrumento versátil es necesario que tenga la posibilidad de emitir en toda la banda de AM. Esto posee dos alternativas; usar un inductor variable o un capacitor variable. Si bien los inductores variables existen los mismos no son aptos para lograr el cubrimiento completo de la banda de AM mas la de FI. En cambio los capacitores variables son los mas indicados en este caso, porque están fabricados para cubrir la banda de AM y un poco mas, permitiéndonos construir un dispositivo muy sencillo.

En realidad el circuito completo que se puede observar en la figura14 no difiere mucho del propuesto en la lección anterior. Solo posee un capacitor variable de plástico para radios de AM y un capacitor fijo debajo de la bobina para adaptar la impedancia de salida, que es un parámetro de los componentes reactivos tal como lo explicaremos en la próxima entrega. Y por supuesto posee un PIC12F629 programado como generador de funciones para generar la modulación. Luego le explicaremos el uso de la SW2 y C4.

Fig.14 Circuito final del generador de RF
Nosotros conocemos hasta ahora todos los componentes de este circuito, salvo el inductor y capacitor variables (tienen una flecha cruzada). El inductor variable posee un conductor enrollado sobre un carretel de ferrite y una tapa cazoleta que lo cubre y puede tapar al carretel total o parcialmente ya que está montada sobre un dado de plástico roscado tal como puede observarse en la figura 15.

Fig.15 Inductor variable con cazoleta roscada
Esta disposición logra que el campo magnético generado por la bobina se cierre prácticamente por un camino de material concentrador del campo magnético como es el ferrite (hierro pulverizado mezclado con resina epoxi) pero dejando un espacio variable de aire para ajustar la inductancia de la bobina a su valor exacto. Este ajuste de la bobina se realiza cuando se prueba el circuito es decir que no es accesible al reparador una ves que el instrumento está terminado. El cambio de frecuencia se realiza con otro componente variable que es el capacitor C1. Este capacitor se conoce con el nombre de capacitor en tándem de plástico. Ese nombre tan extraño se debe a que esta dividido en dos secciones que se mueven en forma sincrónica ya que están montadas en un mismo eje. El eje tiene chapas semicirculares móviles que se pueden enfrentar con chapas fijas también semicirculares de acuerdo a la posición del eje. Cuando las chapas están totalmente enfrentadas, la capacidad es máxima y cuando no lo están es mínima. Antiguamente los tándens tenían dieléctrico de aire pero actualmente entre chapa y chapa existe una capa de polietileno que aumenta la capacidad y mantiene la aislación entre las chapas.

Fig.16 Capacitor variable en tandem
Observe que las dos secciones del capacitor tienen montados otros dos capacitores construidos con chapas semicirculares mas pequeñas en paralelo con las secciones mas grandes (no visibles en la foto). Esta sección llamada de los “trimmers” ajusta la capacidad mínima del tánden cuando está totalmente abierto ajustando los correspondientes tornillos.

Así las cosas con el tánden cerrado debemos llegar a una frecuencia dada por la formula de Thomson de 400 KHz ajustable con la cazoleta de la bobina y con el tánden abierto a una frecuencia de 1700 KHz ajustable con los trimmers.

Conclusiones

En está lección entramos al mundo de los microprocesadores y de la programación de los mismos. Sabemos que es atípico hablar de microprocesadores cuando aun no explicamos el funcionamiento de los dispositivos activos como el diodo y el transistor. Pero el autor considera que se pueden diseñar dispositivos con microprocesadores sin tener ni siquiera una idea de su funcionamiento interior. Solo considerando al mismo como una caja negra con entradas y salidas y un programa que le indica que debe hacer con esas entradas para obtener las salidas.

La prueba de este criterio la tenemos a la vista y la vamos a completar en las próximas entregas cuando encaremos prácticamente el armado de nuestro generador de RF o nuestro transmisor de telegrafía sin hilos que es lo mismo.

También marcamos en esta lección otro importante hito. Diseñamos un programa para PIC en forma enteramente gráfica utilizando la herramienta mas moderna que se tenga noticia: el NIPLE. Este programa debe hacer sentir dichosos a todos nuestros compatriotas, porque casi sin medios se ha logrado realizar un programa extraordinario que ya se esta exportando a todo el mundo (prueba de ello es que se lo puede predisponer en tres idiomas diferentes, Español, Portugués e Inglés).

Por supuesto que no todos están de acuerdo con un criterio tan avanzado. Uno de ellos escribe en Internet ….. “¿Porque no estoy de acuerdo con el uso del NIPLE?”…. Yo lo conozco y se la verdadera razón de su desacuerdo: Tiene miedo, un miedo terrible a quedarse sin trabajo, porque se gana la vida programando con los métodos antiguos. Yo considero que los programas los debe hacer un ingeniero en electrónica o un técnico con conocimientos de programación y nunca un programador con conocimientos de electrónica. La programación de microcontroladores así como el diseño electrónico de hoy están abiertos a todos. Si Ud. es un químico que quiere realizar un dispositivo electrónico que lo ayude en su profesión, puede estudiar electrónica con toda facilidad y realizar su propio dispositivo.