DÍA 061 DE 365

Fase 2: Fundamentos de Hardware y Electrónica

📖 Teoría a Estudiar

Ley de Ohm y el Divisor de Tensión

En el diseño de PCBs, el microcontrolador (Cerebro) y los sensores industriales (Músculos) rara vez hablan el mismo idioma eléctrico. El STM32 es sumamente delicado (3.3V máximo), mientras que el entorno industrial es ruidoso y de alto voltaje (5V a 24V).

DIVISOR DE TENSIÓN Vin (Sensor 5V) R1 5.1 kΩ Vout (3.3V máx) Al pin ADC del STM32 R2 10 kΩ GND Fórmula Vout: Vout = Vin * (R2 / (R1 + R2))

El Puente Analógico

El Divisor de Tensión es el circuito de acondicionamiento de señal más básico y vital. Utiliza dos resistencias pasivas (R1 y R2) conectadas en serie para "frenar" la fuerza del voltaje original. El microcontrolador se conecta justo en el nodo central entre ambas resistencias.

Reconstrucción Matemática en C

Si usas resistencias de 5.1k y 10k, tu hardware reduce los 5V a 3.3V. Pero a tu Súper Bucle (Día 60) no le interesan los 3.3V del pin; le interesa saber que el sensor originalmente mandó 5V para calcular la presión del gas correctamente. El software debe multiplicar la lectura del ADC por el inverso del factor del divisor para recuperar el dato original.

⚙️ Ejercicios Prácticos

Ejercicio 1: Programa una función en C de Punto Fijo que tome la lectura cruda del ADC de tu STM32 y, conociendo los valores de las resistencias de tu placa electrónica, reconstruya el voltaje real que está emitiendo el sensor industrial.


#include <stdint.h>

// --- 1. CONSTANTES DEL HARDWARE (Divisor de Tensión de la PCB) ---
// R1 = 5100 Ohms, R2 = 10000 Ohms
// Factor de atenuación física = R2 / (R1 + R2) = 10000 / 15100 = 0.66225

// Para no usar floats (Día 38), guardamos el factor multiplicado por 10,000
const uint32_t FACTOR_DIVISOR_X10000 = 6622; 


// --- 2. LECTURA Y RECONSTRUCCIÓN ---
uint32_t leer_voltaje_real_sensor(uint32_t adc_raw) {
    
    // PASO A: Convertir lectura digital (0-4095) a milivoltios del pin (0-3300 mV)
    // 3300 mV es el tope físico de referencia del ADC del STM32
    uint32_t milivoltios_pin = (adc_raw * 3300) / 4095;
    
    // PASO B: Reconstruir el voltaje original (antes del divisor de tensión)
    // Voltaje_Original = Voltaje_Pin / Factor_Atenuacion
    // Al usar matemáticas de punto fijo: multiplicamos por 10,000 y dividimos entre el factor
    uint32_t milivoltios_originales = (milivoltios_pin * 10000) / FACTOR_DIVISOR_X10000;
    
    // Si el sensor emitió 5V (5000 mV), el ADC leerá ~4095, 
    // y esta función devolverá ~5000 mV matemáticamente exactos.
    return milivoltios_originales; 
}


int main(void) {
    
    // Simulación del Súper Bucle
    while(1) {
        
        // 1. El DMA (Día 39) nos entrega la lectura cruda del ADC
        uint32_t lectura_adc_cruda = 2048; // Aprox a la mitad (1.65V en el pin)
        
        // 2. Recuperamos el voltaje que el sensor emitió ANTES de entrar a la PCB
        uint32_t voltaje_sensor_mv = leer_voltaje_real_sensor(lectura_adc_cruda);
        
        // 3. Ahora sí, calculamos la presión en PSI (Día 38)
        // uint32_t presion_psi = mapear_adc_entero(voltaje_sensor_mv, 0, 5000, 0, 250);
        
        // evaluar_limites_seguridad(presion_psi);
    }
    
    return 0;
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Acondicionamiento de Señal Analógica Industrial.

El despachador de gas operará con transductores de presión y temperatura industriales que se alimentan con 5V o 12V para resistir el ruido eléctrico de las bombas. Al diseñar el circuito electrónico de adquisición de datos, colocarás estas dos simples resistencias (5.1k y 10k) en la pista de cobre justo antes de que la señal llegue a los pines del microcontrolador.

Con este hardware económico pero infalible, y combinándolo con el código de Punto Fijo que acabas de escribir, logras que tu STM32 tenga una "traducción" perfecta. Tu código sabe exactamente lo que ocurre en la tubería de gas a 5V, manteniendo el silicio del procesador operando en su zona de máximo confort y seguridad a 3.3V.

📝 Resumen del Día

❓ Cuestionario de Autoevaluación

1. Si invertimos físicamente las resistencias en la placa electrónica (ponemos R1=10k y R2=5.1k), ¿qué pasaría con los 5V del sensor?
Respuesta: El factor de división cambiaría drásticamente. Siguiendo la fórmula 5V * (5.1k / 15.1k), el voltaje de salida sería de solo 1.68V en el peor de los casos. Aunque no quemarías el STM32 (lo cual es bueno), estarías desperdiciando la mitad de la resolución (precisión) de tu ADC de 12 bits. El divisor se diseña para que el voltaje máximo de salida se acerque lo más posible a los 3.3V de referencia del chip, sin pasarse.

2. ¿Por qué usamos 5.1k y 10k en lugar de usar 5.1 Ohmios y 10 Ohmios (valores súper bajos) si el factor de división sería el mismo?
Respuesta: Por la corriente y el calor (Ley de Joule). Si usas resistencias de 5 Ohmios a 5 Voltios, la corriente total sería de casi 1 Amperio fluyendo constantemente por ellas hacia tierra. Las resistencias explotarían en humo. Al usar Kilohmios (miles de Ohmios), limitas el paso de corriente a menos de 1 miliamperio; logras reducir el voltaje sin consumir potencia inútil ni calentar la PCB.