Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola gente!!!!
Hace unos meses postee sobre qué microcontrolador elegir (el post aún está visible en la página principal).
Pues bien, en su día elegí un PIC16F616 para recibir datos de un sensor y transmitirlos por el UART en RS232. El sensor varía en función de la aplicación: puede ser de humedad, de conductividad o de presión.
El caso es que elegí este PIC con algo de prisa por terminar el proyecto y entregarlo, peroi ahora que he vuelto a retomarlo con la intención de implantarlo, vuelvo a requerir de vuestra sabia opinión.
Mi principal duda es porqué ultimamente en los foros parece que los únicos microcontroladores que existen son los PIC. Yo lo poco que he trabajado lo he hecho con Motorola y Atmel y sobretodo los Atmel me han dejado muy buena impresión. ¿Alguien me puede decir que ofrece el trabajar con un PIC que lo haga tan popular?
Por último y un poco continuando o cerrando el post anterior, qué os parece la decisión final? Lo cambiaríais por otro?
Y la última y más importante de las preguntas:
Alguno sabeis donde puedo conseguir un diagrama con el circuito necesario para manejar el microcontrolador? Es decir, instalación del cristal, reset, condesadores, resistencias, conexión de todos los puertos a un zócalo externo, etc. Es que de electrónica ando muy verde.
Gracias y saludos!!
Los que decíais de los 6PWM del Arduino, en Microchip he encontrado esto:
8 PWM de hasta 14bits de resolución para control de motores.
S2
Ranganok Schahzaman
http://www.atmel.com/dyn/resources/prod ... /2549S.pdf
Doce programables desde 2 a 16 bits (según modo, hasta 14 bits solo)
Mas 4 PWM de 8 bits.
Los hay más gordos...
Dejando aparte el 'a ver quien la tiene más larga', me gustaría que alguien me explicara tanta demanda de PWM's.
Como creía que era para manejar servos a mansalva, ayer me puse a escribir un programilla para probar una cosa. Y es que, con un timer de 16 bits del ATmega32 (que es lo que tenía a mano), unos cuantos bytes de RAM, y una hora de escribir código, consultar el datasheet y poco más, resulta que controlo 8 servos, con sólo un timer. Si dicho timer tuviese 3 registros OCR en lugar de dos, me atrevería a controlar 16 servos, añadiendo dos líneas de código, y un poco más de RAM.
Así que con dos timers de 16 bits, si tengo tres registros OCR, como pasa por ejemplo con los ATmega64 y superiores (y algunos más más pequeños y nuevos) puedo controlar tres motores de CC, y 16 servos.
Es más, hay una placa que controla 32 servos con un ATmega8, con secuenciadores y todo, con código abierto, y eso que tiene pocos timers.
Así que, ¿puede alguien explicarme por que se necesitan tantos PWM? ¿Hace falta de verdad que los motores de CC se controlen con 16 bits de PWM, o basta con uno de 8 bits?
¿Puede alguien iluminar a este pobre ignorante?
Gracias,
Beamspot.
No sé como sera en los Atmel, en los pics hay un módulo que se llana CCP, una de sus funciones es la de generar una señal PWM, para ello tiene dos registros. Uno general que determina el período de pwm usando el timer 2 del pic, este sería el mismo para todos los modulos CCP del pic, y otro registro que determina el ancho de pulso.
Por lo que para crear una señal de pwm en el pic, sólo debes meter estos valores en sus correspondientes registros. Es decir por cada módulo pwm puedes controlar un motor o servo.
Si lo haces por soft pues tb puedes controlar más con un sólo timer, pero esto ya es más complicado o menos directo que en el caso anterior.
En los ATmega, cada timer tiene su contador, un registro OCR para cada canal PWM, y un registro ICR para el canal de captura. Entre los diferentes modos de funcionamiento, hay unos en los que cuando el contador ascendente llega a un registro predefinido (puede ser uno de los OCR o el ICR, por desgracia, no hay registro específico para tal efecto), vuelve a cero. De manera que este registro se convierte en el que determina el periodo. Luego, cuando el contador es igual o superior a OCR, cambia de valor el pin de Output Compare. Así un timer tiene tantos PWM's como registros OCR (dos o tres, según).
Todos los timer suelen tener esta opción. Además, también tienen un modo de PWM de 8, 9, o 10 bits, de manera que el periodo es fijo (dependiendo del prescaler y la frecuencia de reloj).
Pero también se pueden generar interrupciones para cada caso, y jugando con ellas, es como genero yo 8 PWM's diferentes, con solo un timer y dos registros OCR, uno para poner a 0, y el otro para poner a 1. No es tan complicado, aunque si menos directo, y requiere más tiempo de CPU.
Beamspot.