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!!
Veo que lleva seis salidas pwm el micro ese, ya quisieran los pics. Cuál es la mínima frecuencia que se puede conseguir con uno de estos mediante pwm de hard, da para la frecuencia de un servo?
JM, me salen bien las pcb pero esa calidad de pcb hay que pagarla, componentes aparte simplemente me gustaría comprarla por que nunca he probado nada así. Por otro lado tengo una promesa de empezar con ATMEL ya tengo bastante pic suelto. Así que me a llamado la atención. Son 30€ pero es lo que te dejas en una visita a la tienda de electrónica.
Por ese precio no es caro.
Me ha surgido una duda respecto a lo del pic y el servo. Recuerdo haber leído en este foro que un servo no se puede conotrlar por el hard pwm del pic, ya que la período no es lo suficientemente alto (30 ms a 10 ms).
El pwm va con el timer 2 cuya única entrada es el oscilador interno Fosc/4.
Si en lugar de usar un cristal de 20 MHz, usamos uno más bajo, ¿esto no sería posible?
Período máximo con 4 MHz;
T=(PR2+1)(Tosc*4*Timer2 prescale value) = (256)(1/4000000)(4)(16)=0.005 s, no lo suficiente, necesitamos almenos 0.01s.
Con 2Mhz no obtendríamos mala resolución. 10/1024
Con un cristal de 1 MHz nos llegaría de sobra. Qué me dejo para que esto no sea posible?
Con un cristal de 32 Khz nos daría un período de 0.5s aproximadamente.
No se muy bien como funciona el micro este de la Arduino, ya que yo me he limitado a trabajar con los ATMega16, mega32, mega64, mega128 y mega1281. En todos estos casos, los timers de 16 bits tienen el modo de funcionamiento de Fast PWM, (no el clàsico PWM up&down de 10 bits) que trabaja hasta 16 bits, con lo cual podemos llegar a dividir la frecuencia del micro por 65536. Esto debería ser más que suficiente para atacar cualquier servo...
Eso si, sólo deberían contar las salidas de los timers de 16 bits, que suelen llevar tres cada timer, así que no se cuantas tendría este micro en concreto. Quizás le heche una ojeada al datasheet y comente algo más al respecto.
Por otra parte, tenía la idea, un día de estos, de intentar hacer un control de servos con un solo timer de 8 bits y algo de hardware externo para así controlar hasta 8/10 servos con solo 1 timer y 4/5 E/S extras (y un demultiplexor).
Beamspot.
He mirado el datasheet del mega168 de la Arduino, y sólo tiene un timer de 16 bits y dos salidas de PWM para este, así que en un principio sólo podría manejar de manera directa dos servos.
Habría que mirar otro sistema, quizás con algo de soft, para usar también los dos timers de 8 bits, usándolos de manera que generen un solo pulso, y arrancándolos cuanto 'expire' el timer de 16 bits, que se encargaría de generar el período de 20 ms.
La suerte de estos micros es que permiten bastantes prescalers para los timers, con lo cual hay más flexibilidad de reloj de CPU.
