Mensajes recientes

Páginas: 1 2 3 4 5 6 7 8 [9] 10
81
La solución está en colocar la siguiente línea de configuración:

Código: [Seleccionar]
#FUSES RSTOSC_HFINTRC_32MHZ   // Oscilador interno con PLL a 32Mhz.
#FUSES NOCLKOUT               
#FUSES NOEXTOSC               // No utilizamos el oscilador externo.
82
Buenas tardes estimados.

Tengo que migrar un pequeño proyecto al PIC16F13115, del PIC12F1840 que estoy usando actualmente.

El único problema que tengo en toda la migración, es la salida RA5, que no cambia de estado.

El código que estoy utilizando para probar es el siguiente:

Código: [Seleccionar]
#INCLUDE <16F13115.h>

#FUSES WDT                    // Utilizamos el perro guardián.
#FUSES PUT_64MS               // Habilita el power uP timer en 64ms.
#FUSES NOMCLR                 // Utilizamos el pin MCLR como E/S.
#FUSES PROTECT                // Proteje el código del microcontrolador.
#FUSES NOBROWNOUT             // No hay reset por bajo voltaje.     
#FUSES NOCLKOUT               // Utiliza los pines de clk como E/S.           
#FUSES FCMEN                  // Monitor de falla de clock.                 
#FUSES NOWRT                  // No hay protección de registros especiales.
#FUSES STVREN                 // Si la pila se llena, generará un reset.     
#FUSES NODEBUG                // No utilizaremos código de debug.
#FUSES WDT2048                // Utilizamos el perro guardián cada 2 segundos.
#FUSES NOLVP                  // No utilizaremos programación a bajo voltaje.
#FUSES NOBOOTBLOCK            // No deja espacio para el booteo.

#USE delay (Clock = 32000000,restart_wdt) // Reloj = 32Mhz.


//------------------------------------------------
// Inicialización
//------------------------------------------------ 

void Inicializacion(void)
{

   setup_oscillator(OSC_HFINTRC_32MHZ);

   output_a(0x00);
   delay_ms(100);
   setup_wdt(WDT_2S);
}

//------------------------------------------------
// MAIN
//------------------------------------------------

void main()
{

Inicializacion();
setup_adc_ports(NO_ANALOGS);

   while(TRUE) {
      output_high(PIN_A5);
      delay_ms(500);
      output_low(PIN_A5);
      delay_ms(500);
      restart_wdt();
   }

}

Alguien tiene idea donde le puedo estar escapando. Vi la hoja de datos, consulté a la IA, etc. Pero no doy con la tecla.
Creia que era un error del CCS, pero los registros afectados que se ven en el archivo ensamblador, están ok.

Saludos !
83
Off Topic / AlfaDuelo
« Último mensaje por Nocturno en 09 de Marzo de 2026, 13:25:38 »
Amigos, mi último proyecto, tras el que llevo varios meses de trabajo, es un divertido juego relacionado con el idioma que nos une. Se llama AlfaDuelo.
Ahora mismo está en versión Beta y necesito beta testers. Me vendría bien que haya descargas de la app (sólo Android) y actividad en el juego.
Si alguno de vosotros está interesado en participar que me pase su correo y lo doy de alta como beta tester.
Muchas gracias

84
📟 Librería para el control de RTC basado en DS1302 (Oshonsoft PIC Basic Compiler)

RTC DS1302: reloj en tiempo real con calendario.

Librería desarrollada para trabajar con módulos basados en el circuito integrado DS1302.
Incluye librería y ejemplos de prueba.

Versión probada con:
    • Microcontrolador: PIC18F46K22 @ 64 MHz
    • Tarjeta entrenadora: HL-K18
    • Entorno de desarrollo: PIC18 Simulator IDE v5.99

🕒 RTC DS1302

El DS1302 es un circuito integrado que incorpora:

    • Un reloj en tiempo real (RTC) con calendario.
    • 31 bytes de memoria RAM interna de propósito general.
    • Circuito de respaldo de alimentación mediante batería.
En ausencia de alimentación principal si la batería de respaldo está conectada, el reloj permanece en funcionamiento y
la memoria RAM interna conserva los datos durante años.
En este ejemplo se utiliza un módulo comercial ampliamente disponible que integra todos los componentes necesarios
para realizar la práctica. El módulo incluye además un zócalo para alojar una batería de respaldo no recargable,
normalmente del tipo CR2032, encargada de mantener activo el RTC cuando se interrumpe la alimentación principal.
    • Trickle charger: deshabilitado por defecto.
Esta función se utiliza cuando, en lugar de emplear una batería no recargable como fuente de respaldo, se conecta
un supercondensador o una batería recargable.
El DS1302 incorpora un sistema de carga por goteo (trickle charge) que permite suministrar una pequeña corriente
de mantenimiento hacia el elemento de respaldo. Esta corriente puede configurarse mediante un registro específico de
control, donde se seleccionan distintas combinaciones de resistencia interna y diodo de protección.
De este modo, es posible adaptar la corriente de carga a las características del dispositivo de respaldo utilizado.

     ⚠ Advertencia importante:
No debe habilitarse el trickle charger cuando se utilice una pila de litio no recargable (por ejemplo, tipo CR2032),
ya que podría dañarse, provocar fugas o reducir significativamente su vida útil. Esta función solo debe activarse cuando
el elemento de respaldo sea recargable (batería recargable o supercondensador) adecuado para carga continua de baja corriente.


🔌 Interfaz de comunicación

El DS1302 utiliza una interfaz serie síncrona de 3 hilos:

    • CLK → Señal de reloj.
    • DATA (I/O) → Línea bidireccional de datos.
    • RST (CE) → Habilitación de comunicación.

Funcionamiento básico:

    • El pin DATA se emplea tanto para transmisión como para recepción.
    • En una operación de escritura, primero se envía un byte de dirección y a continuación el dato correspondiente.
    • En una operación de lectura, se envía la dirección del registro y posteriormente el dispositivo devuelve el dato.
    • Todas las transferencias están sincronizadas por la señal CLK.
    • El pin RST (CE) debe ponerse a nivel alto antes de iniciar la comunicación y mantenerse activo durante toda la transacción.

Las direcciones enviadas hacen referencia a los registros internos del DS1302, que incluyen:

    • Registros de segundos, minutos, horas.
    • Día semana, día mes, mes y año.
    • Registro de control.
    • Registros de RAM.

🔹 Librería

La librería implementada incluye todas las funciones necesarias para:

    • Inicializar el DS1302.
    • Leer y escribir fecha y hora.
    • Acceder a los registros de control.
    • Leer y escribir en la RAM interna.

Permite el control completo tanto del RTC como de la RAM interna, facilitando su integración en proyectos desarrollados con Oshonsoft PIC Basic.

Las funciones principales son las siguientes:

Init_DS1302() ' Inicializa el RTC.
Set_DS1302_24h() ' Configura el RTC en modo de 24 horas.
Set_DS1302_12h() ' Configura el RTC en modo de 12 horas.
Set_DS1302_AM_PM(bit) ' Establece el modo AM/PM.
Get_DS1302_AM_PM_24h() ' Obtiene el modo actual (AM, PM o 24 horas) del RTC.
RTC_Set_DateTime(day, mth, year, dow, hr, min) ' Escribe la fecha y la hora en el DS1302.
RTC_Get_Date(day, mth, year, dow) ' Lee la fecha actual.
RTC_Get_Time(hr, min, sec) ' Lee la hora actual.
RTC_Set_Hour(hr) ' Escribe la hora en el DS1302.
RTC_Set_Minutes(min) ' Escribe los minutos en el DS1302.
RTC_Set_Seconds(sec) ' Escribe los segundos en el DS1302.
RTC_Write_NVRam(address, data) ' Escribe un dato en la RAM no volátil de propósito general.
RTC_Read_NVRam(address) ' Lee un dato de la RAM no volátil de propósito general.

📂 Archivos incluidos:

• Test RTC DS1302.bas: código de test (rutina principal).
• _Pic18F46K22Lib.bas: librería para facilitar la configuración Pic18F46K22.
• _DS1302Lib.bas: librería especifica para el control del DS1302.

Los resultados se muestran por UART.
85
Electrónica de potencia / Re:Diseño de protección contra polarización inversa para panel solar
« Último mensaje por Picuino en 26 de Febrero de 2026, 12:07:15 »
Si la I de cortocircuito es de 3,5A pon un mosfet de 7A o más. Son baratos y te aseguras de que no se va a fundir.

El otro tema es el tiempo de conmutación, que no puede ser muy alto para prevenir que se queme el mosfet. Yo pondría una resistencia más pequeña en la puerta para que conmute más rápido.
86
Electrónica de potencia / Re:Diseño de protección contra polarización inversa para panel solar
« Último mensaje por Divass en 26 de Febrero de 2026, 07:38:35 »
Buenas Picuino. Gracias por responder.

Te refieres a que la corriente de drenaje (Id) del Mosfet sea incluso mayor que la de los que he seleccionado y citado en el anterior post? Con el Mosfet de la referencia 2 (BUK6Y55-80PX) no crees valdría? Pregunto desde la ignorancia.
De todas maneras, no sé ahora mismo dónde lo leí pero vi que como criterio a la hora de seleccionar el Mosfet, que para un caso como este que tiene que ver con paneles solares, recomendaban que la Id del Mosfet fuera al menos de 1.5 a 2 veces superior a la corriente de cortocircuito (Isc) del panel.
En el caso de la referencia 1 (DMP6050SFG-13) no cumple esta condición debido a que no la he tenido en cuenta, con que fuera superior como he puesto antes ya me valía, pero en el de la referencia 2 sí. Elijo quizás el segundo?

Por otro lado, cómo ves/veis que el parámetro de la Vds del Mosfet sea de 60V en lugar de 80V?

De nuevo, gracias de antemano.
87
Electrónica de potencia / Re:Diseño de protección contra polarización inversa para panel solar
« Último mensaje por Picuino en 25 de Febrero de 2026, 15:36:15 »
Creo que deberías tener en cuenta el tiempo de conmutación del mosfet, para que no sea demasiado alto y consuma mucha potencia durante la conmutación.
Lo digo porque la resistencia me parece demasiado grande.

EDITO:
Yo elegiría un mosfet que soporte mayor corriente, para tener suficiente margen.

Puedes utilizar LT-Spice para simular el circuito y comprobar que funciona correctamente.
88
Electrónica de potencia / Diseño de protección contra polarización inversa para panel solar
« Último mensaje por Divass en 25 de Febrero de 2026, 08:00:44 »
Hola buenas! Estoy diseñando un controlador solar y en la entrada, quería añadirle una protección contra polarización inversa. En mi esquema actual, la he puesto mediante un mosfet de canal P, un diodo zener conectado al source y al gate de dicho mosfet y con una resistencia. Adjunto foto:



La cuestión es que no estoy muy seguro si este mosfet y zener son válidos para este diseño o si habría algún otro tipo de opción mejor, ya sea con otros mosfet y zener u otro tipo de manera para realizar dicha protección. No sé si me podríais echar una mano...

A continuación, os pongo las especificaciones del panel solar y los criterios que he utilizado para la selección de dicho mosfet y zener:

+ESPECIFICACIONES DEL PANEL SOLAR: (el cual alimentará con 24V).
*Maximum Power: 100W (-0/+5W)
*Open Circuit Voltage (Voc) = 35.2V (+-3%)
*Shortcircuit Voltage (Isc) = 3.50A (+-3%)
*Maximum Power Voltage (Vmp) = 30.3V (+-3%)
*Maximum Power Current (Imp) = 3.31A (+-3%)


+CRITERIOS DE DISEÑO PARA EL MOSFET (Q1):
Referencia 1: DMP6050SFG-13
Referencia 2 (con la Id y Vds bastante más grandes pero que siguen cumpliendo con los siguientes criterios): BUK6Y55-80PX

1-Diseño de Mosfet con 20 - 30% de margen mínimo --> 25% seleccionado.
*Siendo valores comunes para paneles solares de 24V de Voc(max) ≈ 36 - 45V --> (Dato que he encontrado mirando un poco por internet).
VDS (VMOSFET) ≥ 1.25 × Voc(max)
VDS ≥ 1.25 × 45 --> VDS ≥ 56.25V
*Uso un Mosfet de 60V para tener una pequeña holgura respecto al valor máximo.

2-Baja RDS(on) para reducir pérdidas --> RDS(on) = 36mΩ.

3-Id debe superar la corriente máxima de cortocircuito del panel --> Id = 4.8A.
*Siendo la I short circuit panel ≈ 3.5A.


+CRITERIOS DE DISEÑO PARA EL ZENER (D1):
Referencia: MMSZ15T1G

1-Vz < VGS(max) --> 15V < 20V.

2-Vz > VGS(th) --> 15V > 3V.

3-Corriente del Zener:
Iz = (VGSmax - Vz) / R
Iz = (20 - 15) / 10K = 0.5mA

4-Potencia disipada:
P = Vz x Iz
P = 15 x 0.5 = 7.5mW = 0.0075W.


¡Gracias de antemano y cualquier ayuda es bienvenida!
89
Electrónica de potencia / Re:Ayuda para analizar una fuente Buck que he diseñado
« Último mensaje por Thulsa Doom en 13 de Febrero de 2026, 07:03:03 »
Buenos días, lo confirmo, estos IC son falsificaciones por que no conmutan a la frecuencia de los originales (malditos comerciantes tramposos), me he hecho con unas muestras originales de Texas Instruments y el funcionamiento es mucho más estable, comparto gráficas.

Pueden ver la diferencia de frecuencia con las capturas anteriores los falsos van sobre los 50Khz y los originales sobre los 150KHz


En esta he hecho zoom y se puede ver un distorsión en el flanco de subida que afecta con algo de ruido a la salida.


Todo esto está montado en una protoboard a falta de que me lleguen unos componentes para montarlo en una PCB para ver realmente el desempeño ya en un circuito impreso, ya pondré los resultados, de momento esto pinta bien, mi microcontrolador no le afectará el ruido de la fuente.
Con esto no digo que los falsos funcionen mal, por que si se les hace el cálculo correcto funcionan bien pero estamos pagando un IC falso a precio de original cuando estos falsos costarían la mitad o menos de la mitad de uno original, que rabia me da eso.
90
Fabricación de placas PCB / Re:Comparativa fabricantes de PCB
« Último mensaje por JordiWR en 11 de Febrero de 2026, 05:44:15 »
Refloto el tema por que es muy interesante, mi experiencia actual, no es nada buena, en un paquete de poco importe, el dolor de cabeza a sido astronómico, en el momento que llega a España. DHL, 19 € de gastos de gestión ( + IVA) pagar el IVA del PCB, retenido en aduanas hasta que es responsable quiera despacharlo, rellenar hasta 4 documentos para DHL ( algunos son bastante complejos para un usuario normal que no se dedique a ello), desde Enero de este año ( 2026) rellenar también un nuevo impuesto llamado CBAM que es algo de la huella de carbono, al final lo rellene. Luego ya as cerrado el tema y te llega una notificación de la AEAT que resumiendo te dice que el material despachado es para uso personal y les parece que será para comercializar. Vamos a resumidas cuentas, han decidido hacer la vida imposible a la gente que se gana un poco la vida y eso si, te ofrecen que te des de alta en varios sitios que incluso has de pagar por adelantado el coste de que dentro de 10 años el usuario final destruya la mercancía y genere residuos. Supongo que es un tema de mala suerte y que me ha tocado ser el 1% que les toca la ''china'' pero los dolores de cabeza no me han compensado
Páginas: 1 2 3 4 5 6 7 8 [9] 10