TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Simon21 en 04 de Diciembre de 2019, 18:20:06
-
Hola a todos !
Alguien podría recomendarme algún PIC con puerto serie cuyo consumo sea en el orden de los uA o menos ?
Estoy desarrollando algo para IOT, y hasta ahora venia usando el micro ATMEGA 328P, y el mismo tiene un consumo bastante elevado (mA). Estoy buscando un micro que consuma en el orden de los uA o menos, para lograr que la batería dure mayor tiempo.
En cuanto a prestaciones del micro, lo más importante es que el mismo pueda comunicarse a través de puerto serie, luego las señales a visualizar en las entradas, son básicas y no requieren demasiadas necesidades de velocidad y/o frecuencia. Lo que si necesitaría es que pueda ser programado mediante Pickit 3.
Desde ya muchas gracias por la data.
Saludos !!
-
El Atmega consume bastante poco. Lo que tienes que hacer es mantenerle en sleep mientras no hace nada.
Si de todas formas quieres probar con un pic, que tenga tecnología XLP para que consuma poco. A mí me ha ido bien con el PIC16F15313.
Un saludo.
-
El Atmega328P a 4MHz y 3 voltios de alimentación consume 1.4mA y ejecuta unas 4 millones de instrucciones por segundo.
El PIC16F15313 a 16MHz y 3 voltios de alimentación consume 1.4mA y ejecuta unas 4 millones de instrucciones por segundo.
Los dos micros consumen de forma equivalente cuando están en marcha. Ten en cuenta que el Atmega ejecuta una instrucción por ciclo de reloj y el PIC ejecuta una instrucción cada 4 ciclos de reloj.
Con ese consumo y alimentando con 3 baterías AA, tendrías unas 1500 horas (60 días) de marcha contínua para cualquiera de los dos micros. No creo que vayas a encontrar consumos más bajos.
En reposo, el Atmega328 consume cerca de 45uA y el PIC consume unos 5uA. En esto el PIC gana al Atmega, pero hay que tener en cuenta que no siempre hace falta un consumo tan bajo.
Con las mismas 3 baterías AA el Atmega puede durar en reposo unos 5 años, más tiempo del que dura la carga de baterías típicas de niquel-cadmio. Si la batería es de Litio y quieres que dure en reposo más tiempo o que no gaste casi energía para dejarla disponible para la marcha, entonces si que tiene sentido pasarse al PIC.
Un saludo.
PD. Lee el datasheet de ambos para más información.
-
Como ya habéis dicho lo suyo es que el microcontrolador esté durmiendo el 99.x% del tiempo, por lo que es importante que para dispositivos que tienen que estar con una batería años, hay que mirar el consumo cuando el micro duerme, también es importante el tiempo que tarda en despertarse, ejecuar la tarea y apagarse.
Para bajo consumo tienes de 16 bits el MSP430 de TI, Silabs y ST tienen cortex-m0 de 32 bits, y luego de 8 bits tienes los pics y los Atmega, aunque mira también los ATtiny de 8 bits que es lo mismo que el ATmega y consume menos.
Así de memoria los de silabs recuerdo que tenían el periférico de low energy uart:
This application note demonstrates how to use the Low Energy UART (LEUART™) module on the EFM32 microcontrollers. The LEUART is able to run full UART communication even when the device is in deep sleep mode EM2. Together with intelligent interrupt functions and flexible DMA integration, this enables simple and energy friendly communication .
Pero vamos muchas familias tiene también periféricos similares, y coge un microcontrolador con la RAM que vayas a necesitar, ya que cuanta más, más consumo, aunque también hay tecnologías como FRAM.
Hace unos años en bajo consumo el rey era el MSP430, ahora mismo no sé si habrá alguno mejor.
-
Muchas gracias por tu respuesta Picuino !
Tengo un inconveniente al hacerlo entrar en modo sleep y es que se debe a que el micro todo el tiempo está esperando un pulso en una de sus entradas. Todo el tiempo ingresan pulsos en esa entrada, como máximo cada 100 ms y como mínimo cada 1 minuto, por dicho motivo me entran las dudas de como utilizar el modo sleep en el Atmega328P.
Con respecto a los micros XLP, alguno para recomendar con prestaciones similares al 328P ?
Saludos y gracias !!
-
Despierta al micro cada 50ms o elige un pin que tenga asociada una interrupción que le despierte.
Te recomiendo el pic de antes. Si quieres otro, puedes buscarlo tu mismo.
https://www.microchip.com/paramchartsearch/Chart.aspx?branchID=30048
Un saludo.
-
Otro que me gusta y es similar al Atmega en memoria, pero gasta muy poco y es muy avanzado en periféricos:
http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F25K40
-
Pues por cmo se menciona la aplicación, el PIC16F15313, haría el trabajo sin problemas.
Tal como lo menciona Picuino, se coloca el microcontrolador en modo SLEEP y luego se hace uso de un pin de interrupción por el cual se ingresan los pulsos. Estos pulsos despiertan al microcontrolador del modo SLEEP pueden realizar tus operaciones. Una vez terminada la tarea, nuevamente pones el micro en modo SLEEP. De esta manera reduces el consumo del microocntrolador.
El consumo del PIC en modo SLEEP es de ¡solo 400nA! Con todos los periféricos apagados.
elreypic.
-
El PIC18LF25K40 trabajando a 31khz apenas consume 6uA.
- Tienes que ingresar para ver archivos adjuntos -
-
Muchas gracias a todos por su tiempo !
Voy a avanzar en la selección en base a lo que me proponen. He visto que el 16F18855 tiene muy buen desempeño.
Alguno trabajo con ese micro ?
Donde puedo verificar los micros compatibles con Pickit3 ? Quisiera aprovechar que dispongo del mismo y evitar tener que adquirir el Pickit4.
Saludos !!
-
Recuerda comprar la versión LF:
PIC16LF18855 (1.8V – 3.6V)
-
Donde puedo verificar los micros compatibles con Pickit3 ?
Quisiera aprovechar que dispongo del mismo y evitar tener que adquirir el Pickit4.
Saludos !!
-
Para verificar si puedes programarlo con el programamdor pickit3.
Conecta u programador al MPLAB y al seleccionar el microcontrolador te dirá si es compatible o no.
Si usas el software del propio pickit3, puedes buscar el microcontrolador en la lista de dispositivos, si no está, es que no se puede programar con pickt3.
Ahora que si quieres puedes adquirir un nuevo software de programamción para el pickit3 llamado pickit plus. Este te permite grabar cualquier microcontrolador de microchip de la serie PIC.
Este es el link para obtener el software pickit plus:
http://www.pickitplus.co.uk/
Solo tienes que hacer un pago de unos $35 USD por paypal.
elreypic.
-
Hola a todos !! Sigo aquí con el tema de los consumos.. Alguien conoce un regulador de tensión de 3.3 VDC con salida hasta 300 mA, con consumos en el orden de los uA, o nA en estado estacionario ???? Los reguladores conocidos de tipo LM consumen demasiada corriente, en el orden de los mA, lo que hace muy dificil perdurar la vida de una batería.
He encontrado el modelo MCP1755 en la línea Microchip con encapsulado 5/SOT-23, pero no puedo conseguirlo por ello busco alguna alternativa.
Agradecería una respuesta de quien conozca alguno para recomendar.
Saludos !!
-
https://www.mouser.es/m_new/microchip/microchip-mcp1810/
Algunos más:
https://www.mouser.es/Semiconductors/Power-Management-ICs/Voltage-Regulators-Voltage-Controllers/LDO-Voltage-Regulators/_/N-5cgac?P=1yx5k7vZ1z0sh7eZ1z0wa2e&Rl=5cgacZerd4Z1y9p2rvZ1y9eclqSGT&Ns=Pricing|0
-
He encontrado este regulador http://ww1.microchip.com/downloads/en/DeviceDoc/25160A.pdf
El unico inconveniente es que según el datasheet no acepta tensiones menores a 3.6 V en su entrada, es raro ya que la curva muestra que puede bajar aun mas.
En la pagina de microchip, segun el selector puede recibir tensiones de entrada hasta 2.1 Vcc.
La otra opción es http://ww1.microchip.com/downloads/en/devicedoc/22056b.pdf lo cual consume bastante mas.
-
He encontrado este regulador http://ww1.microchip.com/downloads/en/DeviceDoc/25160A.pdf
El unico inconveniente es que según el datasheet no acepta tensiones menores a 3.6 V en su entrada, es raro ya que la curva muestra que puede bajar aun mas.
En la pagina de microchip, segun el selector puede recibir tensiones de entrada hasta 2.1 Vcc.
La otra opción es http://ww1.microchip.com/downloads/en/devicedoc/22056b.pdf lo cual consume bastante mas.
Hola Simón21,
No entiendo qué es lo que buscas con el regulador. La primera opción es bastante buena, un regulador que solo necesita 300mV de diferencia entre la entrada y la salida, de tipo LDO, es buenísimo. Si tu salida es de 3.3V obviamente necesitas que el voltaje de entrada sea mayor que el de salida y en este caso el voltaje de entrada mínimo es de 3.6V para poder regularlo a 3.3V. No puede bajar a 2.1V de lo contrario no regularía. Ahora bien si la salida de tu regulador es de 1.8V, es posible, no leí ese detalle en el datasheet, que funcione para un regulador de 1.8V.
Si tu microcontrolador va a trabajar con 3.3V y si usas dos batería alcalinas de 1.5V, yo usaría un regulador tipo boost (convertidor DC-DC elevador). La inconveniencia es que usan inductores. Pero su eficiencia es mucho más alta que un regulador lineal.
Espero eso te sirva de ayuda/
elreypic.
-
He encontrado este regulador http://ww1.microchip.com/downloads/en/DeviceDoc/25160A.pdf
El unico inconveniente es que según el datasheet no acepta tensiones menores a 3.6 V en su entrada, es raro ya que la curva muestra que puede bajar aun mas.
En la pagina de microchip, segun el selector puede recibir tensiones de entrada hasta 2.1 Vcc.
La otra opción es http://ww1.microchip.com/downloads/en/devicedoc/22056b.pdf lo cual consume bastante mas.
Ninguno de esos te vale, porque tienen una corriente de alimentación en reposo (quiescent current) mucho mayor que tu micro en reposo.
¿Y este? https://www.mouser.es/ProductDetail/Microchip-Technology/MCP1811BT-033-TT?qs=sGAEpiMZZMsGz1a6aV8DcJ5wwoift2gCkTT%2FIyswJXM%3D
-
He encontrado este regulador http://ww1.microchip.com/downloads/en/DeviceDoc/25160A.pdf
El unico inconveniente es que según el datasheet no acepta tensiones menores a 3.6 V en su entrada, es raro ya que la curva muestra que puede bajar aun mas.
En la pagina de microchip, segun el selector puede recibir tensiones de entrada hasta 2.1 Vcc.
La otra opción es http://ww1.microchip.com/downloads/en/devicedoc/22056b.pdf lo cual consume bastante mas.
Hola Simón21,
No entiendo qué es lo que buscas con el regulador. La primera opción es bastante buena, un regulador que solo necesita 300mV de diferencia entre la entrada y la salida, de tipo LDO, es buenísimo. Si tu salida es de 3.3V obviamente necesitas que el voltaje de entrada sea mayor que el de salida y en este caso el voltaje de entrada mínimo es de 3.6V para poder regularlo a 3.3V. No puede bajar a 2.1V de lo contrario no regularía. Ahora bien si la salida de tu regulador es de 1.8V, es posible, no leí ese detalle en el datasheet, que funcione para un regulador de 1.8V.
Si tu microcontrolador va a trabajar con 3.3V y si usas dos batería alcalinas de 1.5V, yo usaría un regulador tipo boost (convertidor DC-DC elevador). La inconveniencia es que usan inductores. Pero su eficiencia es mucho más alta que un regulador lineal.
Espero eso te sirva de ayuda/
elreypic.
Tal como lo describes Picuino. La duda es que los dispositivos que utilizo pueden funcionar hasta 2.5 V, por lo que este regulador, en caso de caer la tensión de la batería por debajo de los 3.6Vcc no funcionaria aparentemente, de todas formas lo voy a probar y luego les cuento ! Las curvas de Vin en función de Vout muestran como mínimo un Vin de 3 Vcc, pero el selector de la web de microchip lo sugiere con tensión de 2.1 Vcc de entrada.
Estamos hablando de lo mismo, solo con la duda que te acabo de comentar.
Desde ya muchas gracias por la buena onda !!
-
He encontrado este regulador http://ww1.microchip.com/downloads/en/DeviceDoc/25160A.pdf
El unico inconveniente es que según el datasheet no acepta tensiones menores a 3.6 V en su entrada, es raro ya que la curva muestra que puede bajar aun mas.
En la pagina de microchip, segun el selector puede recibir tensiones de entrada hasta 2.1 Vcc.
La otra opción es http://ww1.microchip.com/downloads/en/devicedoc/22056b.pdf lo cual consume bastante mas.
Ninguno de esos te vale, porque tienen una corriente de alimentación en reposo (quiescent current) mucho mayor que tu micro en reposo.
¿Y este? https://www.mouser.es/ProductDetail/Microchip-Technology/MCP1811BT-033-TT?qs=sGAEpiMZZMsGz1a6aV8DcJ5wwoift2gCkTT%2FIyswJXM%3D
Ese regulador parece muy bueno !! (Me refiero al MCP1812) https://www.mouser.es/datasheet/2/268/MCP1811A-11B-12A-12B-Family-Data-Sheet-DS20006088A-1488740.pdf
Lo unico no entiendo la diferencia entre los modelos A y B con respecto al "Output Discharge"
A: Ultra-Low Quiescent Current LDO Regulator with Output Discharge and 300 mA Output Current
B: Ultra-Low Quiescent Current LDO Regulator with No Output Discharge and 300 mA Output Current
Saludos !
-
Creo que el modelo B tiene patilla de shutdown y el modelo A no la tiene.
-
Ese regulador parece muy bueno !! (Me refiero al MCP1812) https://www.mouser.es/datasheet/2/268/MCP1811A-11B-12A-12B-Family-Data-Sheet-DS20006088A-1488740.pdf
Lo unico no entiendo la diferencia entre los modelos A y B con respecto al "Output Discharge"
A: Ultra-Low Quiescent Current LDO Regulator with Output Discharge and 300 mA Output Current
B: Ultra-Low Quiescent Current LDO Regulator with No Output Discharge and 300 mA Output Current
Saludos !
La diferencia es que tienen un sistema de descarga para la salida, cuando apagamos el regulador y tenemos componentes que almacenen energía como un capacitor, aveces no tiene como descargarse, con este tipo de swtiches no vamos a tener ese problema por que el brinda la opción de descarga.
Espero haberme hecho entender.
-
Más que clara la explicación IngRandall. Es mas o menos lo que veniamos hablando con Picuino. Esa función unicamente la trae la versión que soporta shutdown.
Muchas gracias por la info !!
-
Más que clara la explicación IngRandall. Es mas o menos lo que veniamos hablando con Picuino. Esa función unicamente la trae la versión que soporta shutdown.
Muchas gracias por la info !!
Ambos tiene shutdown, nomas que la version A tambien lo descarga.
-
Más que clara la explicación IngRandall. Es mas o menos lo que veniamos hablando con Picuino. Esa función unicamente la trae la versión que soporta shutdown.
Muchas gracias por la info !!
Ambos tiene shutdown, nomas que la version A tambien lo descarga.
A lo que me refiero, es que lo de A y B hace referencia al modelo que viene con shutdown. El que finaliza con la letra S, no tiene shutdown, por lo que no aplicaria el criterio.
Gracias por sus respuestas !!
-
Despierta al micro cada 50ms o elige un pin que tenga asociada una interrupción que le despierte.
Te recomiendo el pic de antes. Si quieres otro, puedes buscarlo tu mismo.
https://www.microchip.com/paramchartsearch/Chart.aspx?branchID=30048
Un saludo.
Hola Picuino !! He logrado bajar muchisimo el consumo, sin embargo tengo que obtener el tiempo transcurrido entre flancos ascendentes en un tren de pulsos conectados a uno de los pines de entrada al micro, cada vez que el micro detecta un flanco ascendente genera una interrupción mediante la cual mido dicho tiempo. ¿De que manera se puede hacer esto durmiendo al micro?
Desde ya muchas gracias por su tiempo !
-
Hay micros con opción de bajar la frecuencia del núcleo incluso pararlo, manteniendo alta la frecuencia de los periféricos.
Pero va a gastar más que en reposo total.
¿Qué frecuencia y que precisión necesitas medir?
-
Tendrás que dejar el micro en modo Idle en vez de modo Sleep.
https://microchipdeveloper.com/16bit:doze-idle-sleep
La frecuencia del sistema puedes bajarla todo lo posible. Cuanta menor precisión necesites, más baja podrá ser la frecuencia.
Con una frecuencia de cristal de 1Mhz (relativamente baja) puedes conseguir medir tiempos entre interrupciones a 1kHz con una precisión de 0.1%, que es más que suficiente para la mayoría de las aplicaciones.
Un saludo.
-
Hola Picuino !! He logrado bajar muchisimo el consumo, sin embargo tengo que obtener el tiempo transcurrido entre flancos ascendentes en un tren de pulsos conectados a uno de los pines de entrada al micro, cada vez que el micro detecta un flanco ascendente genera una interrupción mediante la cual mido dicho tiempo. ¿De que manera se puede hacer esto durmiendo al micro?
Con el Atmega no sé si podrás hacer lo mismo que con el PIC. Los PIC están más avanzados en casi todo lo que se refiere a periféricos.
Lee esta página que lo explica:
https://microchipdeveloper.com/8avr:avrsleep
-
Tendrás que dejar el micro en modo Idle en vez de modo Sleep.
https://microchipdeveloper.com/16bit:doze-idle-sleep
La frecuencia del sistema puedes bajarla todo lo posible. Cuanta menor precisión necesites, más baja podrá ser la frecuencia.
Con una frecuencia de cristal de 1Mhz (relativamente baja) puedes conseguir medir tiempos entre interrupciones a 1kHz con una precisión de 0.1%, que es más que suficiente para la mayoría de las aplicaciones.
Un saludo.
Ahora vamos a probar con un resonador cerámico de 1 MHz, ya que no consigo cristales de esa frecuencia. Alguien probo si funciona de la misma manera o produce errores ?
-
Hola Picuino !! He logrado bajar muchisimo el consumo, sin embargo tengo que obtener el tiempo transcurrido entre flancos ascendentes en un tren de pulsos conectados a uno de los pines de entrada al micro, cada vez que el micro detecta un flanco ascendente genera una interrupción mediante la cual mido dicho tiempo. ¿De que manera se puede hacer esto durmiendo al micro?
Con el Atmega no sé si podrás hacer lo mismo que con el PIC. Los PIC están más avanzados en casi todo lo que se refiere a periféricos.
Lee esta página que lo explica:
https://microchipdeveloper.com/8avr:avrsleep
No lo se... Voy a probar.. Consultaba acá a ver si alguien se le ocurría de que manera puedo hacerlo.
El tiempo que tengo que medir es en el caso más desfavorable unos 100 ms.
-
¿Qué precisión o resolución necesitas?
¿Trabajas con Atmega o con PIC?
Deberías pasar a trabajar con PIC, que lo conocemos la mayoría mejor que el Atmega y los XLP consumen menos.
-
A mí se me ocurre que puedes poner el PIC en modo IDLE con el núcleo parado y los periféricos en marcha.
Como oscilador puedes utilizar el interno si no tienes necesidad de mucha precisión, trabajando a una frecuencia baja para que los periféricos consuman poco.
Un contador contará los pulsos de reloj. Cuando llegue el flanco, lees el contador y restas la lectura anterior. Así obtienes el tiempo entre flancos en unidades de oscilaciones de reloj.
Si necesitas más precisión tendrás que poner un resonador o un oscilador de cristal. Cuanto más baja sea la frecuencia menos consumo tendrá el contador en marcha y menos precisión en la medida.
Saludos.
-
A mí se me ocurre que puedes poner el PIC en modo IDLE con el núcleo parado y los periféricos en marcha.
Como oscilador puedes utilizar el interno si no tienes necesidad de mucha precisión, trabajando a una frecuencia baja para que los periféricos consuman poco.
Un contador contará los pulsos de reloj. Cuando llegue el flanco, lees el contador y restas la lectura anterior. Así obtienes el tiempo entre flancos en unidades de oscilaciones de reloj.
Si necesitas más precisión tendrás que poner un resonador o un oscilador de cristal. Cuanto más baja sea la frecuencia menos consumo tendrá el contador en marcha y menos precisión en la medida.
Saludos.
Apenas pueda voy a avanzar con las pruebas teniendo en cuenta esto y les comento que tal fue !!
Gracias por tu respuesta Picuino y feliz comienzo de 2020 !
-
A mí se me ocurre que puedes poner el PIC en modo IDLE con el núcleo parado y los periféricos en marcha.
Como oscilador puedes utilizar el interno si no tienes necesidad de mucha precisión, trabajando a una frecuencia baja para que los periféricos consuman poco.
Un contador contará los pulsos de reloj. Cuando llegue el flanco, lees el contador y restas la lectura anterior. Así obtienes el tiempo entre flancos en unidades de oscilaciones de reloj.
Si necesitas más precisión tendrás que poner un resonador o un oscilador de cristal. Cuanto más baja sea la frecuencia menos consumo tendrá el contador en marcha y menos precisión en la medida.
Saludos.
Hola Picuino ! Ahora estoy teniendo otro inconveniente al medir la señal analógica para saber el nivel de la batería. El consumo se va por las nubes cuando habilito el FUSE que modifica el BROWNOUTDETECTOR, ya que a partir de ese momento pasa a consumir muchisimo más corriente el micro.
Existe alguna forma de habilitar esto y des habilitarlo mientras el software está en modo run ? No he encontrado la forma aun...
Saludos !!
-
Te he respondido en el otro hilo.
https://www.todopic.com.ar/foros/index.php?topic=49172.msg413194#msg413194
-
Te he respondido en el otro hilo.
https://www.todopic.com.ar/foros/index.php?topic=49172.msg413194#msg413194
Perfecto, lo seguimos ahi entonces ! :-/