Mensajes recientes

Páginas: 1 2 3 4 5 [6] 7 8 9 10
51
Arduino / Re:Voltimetro Arduino para leer su propio voltaje de alimentacion.
« Último mensaje por Picuino en 16 de Enero de 2020, 14:07:20 »
Creo que te estás complicando con el montaje externo.

Si mides la tensión interna de referencia (por ejemplo FVR=2.048V) mientras la tensión de referencia del ADC está conectada a la alimentación (Aref = Vdd), a partir de esa medida se puede calcular fácilmente la tensión de alimentación.

Posteriormente desconectas el módulo de tensión de referencia interno (FVR) y el módulo ADC para que no consuman corriente.

Así tienes todo incluido dentro del microcontrolador y con un consumo mínimo.

Un saludo.
52
Arduino / Re:Voltimetro Arduino para leer su propio voltaje de alimentacion.
« Último mensaje por Simon21 en 16 de Enero de 2020, 13:34:51 »
Al parecer la impedancia de entrada del ADC, es de 10K aprox. por lo tanto la resistencia pull-up del divisor resistivo debe tener al menos el mismo valor, así podrás leer  la mitad del valor de la tensión de alimentación.
La idea de usar un MOSFET y no un BJT, es que el primero consume una corriente despreciable de Gate.

Los 10K o menor son la impedancia de salida del dispositivo que cuelgues en la entrada del ADC, y es por la capacidad de la entrada.
Esto tiene importancia solamente cuando se hacen lecturas multiplexando varias entradas a alta velocidad , o la señal tiene componentes de alta frecuendcia.

Tal cual, en eso estamos totalmente de acuerdo. Voy a utilizar el valor más alto posible para evitar un consumo que descargue la Batería.

Lo de los transistores está descartado, por ahora simplemente quedará un divisor resistivo.

El inconveniente que estoy teniendo ahora es 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.

Alguien conoce la forma de habilitar esto y deshabilitarlo mientras el software está corriendo ? Aún no he podido hacerlo...

Saludos !!
53
Todo en microcontroladores PIC / Re:PIC Bajo Consumo para aplicaciones IOT
« Último mensaje por Simon21 en 16 de Enero de 2020, 13:10:29 »
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 !!
54
Lenguaje C para microcontroladores PIC / Re:Ayuda con timer mplab xc8
« Último mensaje por Sebas1010 en 16 de Enero de 2020, 12:27:42 »
Holas, podrias probar con el timer como te mencionaron, asi no utilizas los delay, el timer por ejemplo que desborde cada 500mS y los valores de los dos for son apoximados tendrias que ver bien lo valores para que sean lo mas exactos posibles.
Espero que te sirva.


Código: [Seleccionar]
void Timer1_delay(void);
if(Entrada_12V == 1)
         {
          Salida_rele = 1;
          Salida_led = 1;
          // Aqui esperaras 1 minuto con rele y led encendido
           for(i=0; i<120; i++)
          {
            Timer1_delay();
         // __delay_ms(1000);
          }
          Salida_rele = 0;
          Salida_led = 1;
          // Aqui esperarás los 5 minutos ocn la luz encendida y el relé apagado
          for(i=0; i<600; i++)
          {
           Timer1_delay();
        // __delay_ms(1000);
          }
        }
void Timer1_delay(void)//Timer cada 500mS con osc de 4MHz
{
    T1CONbits.T1CKPS0 = 1;
    T1CONbits.T1CKPS1 = 1;
    T1CONbits.T1OSCEN = 0;
    T1CONbits.nT1SYNC = 0;
    T1CONbits.TMR1CS = 0;
    T1CONbits.TMR1ON = 1;
    TMR1 = 3036;       
    T1CONbits.TMR1ON = 1;
    while(PIR1bits.TMR1IF == 0);     
    TMR1ON=0;         
    TMR1IF=0;                         
}

55
Lenguaje C para microcontroladores PIC / Re:Ayuda con timer mplab xc8
« Último mensaje por KILLERJC en 16 de Enero de 2020, 11:12:56 »
Sigue siendo el mismo problema.... Deja de responder.. Si quisiera algo un poco mas acorde entonces:


Código: C
  1. while(1) {
  2.   if(Entrada_12V == 1)
  3.   {
  4.     if(contador = 0){
  5.       Salida_rele = 1;
  6.       Salida_led = 1;  
  7.     }
  8.     if(contador = 250) {
  9.       Salida_rele = 0;
  10.       Salida_led = 1;
  11.     }
  12.     if(contador = 1200)
  13.     {
  14.       contador = 0;
  15.     }
  16.     delay_ms(250);
  17.   } else {
  18.     contador = 0
  19.     Salida_rele = 0;
  20.     Salida_led = 0;  
  21.   }  
  22. }

Por supeusto, como todo delays depende de los ciclos anteriores, por lo tanto vas a fallar en obtener 5 minutos exactos. Podes probar poniendo 249 en ves de 250.
contador es una variable de 16 bits sin signo.
Se puede hacer mas pequeño el delay aumentando el error entre pasos, ya que usarias numeros mas grandes todavia. Pero un cuarto de segundo deberia ser suficiente.

lo correcto seria un Timer + interrupcion + CCP
56
Todo en microcontroladores PIC / Re:Instalar memoria de cluster para tener las mismas funciones
« Último mensaje por AccioRw en 16 de Enero de 2020, 09:26:18 »
Cual fue el resultado julio24, llegaste a probar algo ?
57
Fabricación de placas PCB / Re:Comparativa fabricantes de PCB
« Último mensaje por AccioRw en 16 de Enero de 2020, 08:55:23 »
Yo he trabajado con JLCPCB también pero en el ultimo pedido que hemos hecho nos ha pasado lo mismo que a vosotros con las aduanas, no quieren declarar un valor más bajo que el real y nos meten un sablazo importante...

Echaré un vistazo a los de ALLPCB por si sale más a cuenta pedir ahí.

También pedí a PCBWAY hace un par de años pero nos lo paro aduanas (no declaré un valor más bajo) y me gusto más la atención de JLCPCB, desde entonces pedía a JLCPCB hasta ahora y no he vuelto a probar PCBWAY.

Para los que habéis pedido por correos esperando un mes en JLCPCB, ese porte tiene número de seguimiento ¿? O mejor pedir cosas baratas por si se pierde algo ¿?
58
Lenguaje C para microcontroladores PIC / Re:Ayuda con timer mplab xc8
« Último mensaje por AccioRw en 16 de Enero de 2020, 08:45:23 »
Hola Electro_pic si quieres hacerlo funcionar con Delays prueba así, de todos modos el ejemplo que has puesto tu tambien debería funcionar
estos defines deberias usar el registro LAT para salidas si tu PIC lo tiene:

#define Salida_led  LATBbits.RB2
#define Salida_rele LATBbits.RB1

Código: [Seleccionar]
       
if(Entrada_12V == 1)
         {
          Salida_rele = 1;
          Salida_led = 1;
          // Aqui esperaras 1 minuto con rele y led encendido
           for(i=0; i<60; i++)
          {
          __delay_ms(1000);
          }
          Salida_rele = 0;
          Salida_led = 1;
          // Aqui esperarás los 5 minutos ocn la luz encendida y el relé apagado
          for(i=0; i<300; i++)
          {
         __delay_ms(1000);
          }
        }

Para ponerte un ejemplo con los timers, que version de XC8 estas usando y que modelo de Pic.

Un saludo!
59
Todo en microcontroladores PIC / Re:Puedo conectar esta eeprom al usbasp v2.0 o arduino uno??
« Último mensaje por julio24 en 16 de Enero de 2020, 04:42:18 »
ok muchas gracias, entonces para o complicarmela mucho comprare el pickit 2.
60
Todo en microcontroladores PIC / Re:Puedo conectar esta eeprom al usbasp v2.0 o arduino uno??
« Último mensaje por elreypic2 en 16 de Enero de 2020, 03:41:28 »
El usbasp solo es para programar micro controladores avr. No sirve para leer memorias eeprom.

Por otro lado el uso de un Arduino implica que realices el código para poder leer la memoria y despliegues el dato en una computadora. Es posible que ya exista algún código para leer esa memoria y te ahorras ese paso.

Yo te recomiendo usar el programador pickit2, ese programa for tiene la facilidad de leer ese tipo de memorias.

Elreypic
Páginas: 1 2 3 4 5 [6] 7 8 9 10