Sistema PCM entre ESP32

A continuación encontrarás un bosquejo en español de la solución, cubriendo la descripción conceptual, el diagrama de bloques, los cálculos básicos de SNR y distorsión, y un ejemplo de código (solo a modo de referencia) para cada microcontrolador ESP32 usando Arduino IDE. Se han dividido las secciones en (A) Adquisición y Compresión, (B) Transmisión, (C) Recepción y Descompresión, y (D) DAC y Salida al Parlante. Finalmente, se incluyen tablas con parámetros ajustables y las fórmulas aproximadas de cuantización y mu-law.

A. Esquema general del sistema

Diagram


"Entrada de Audio \n (Mic/Señal Analógica)" "ADC ESP32 \n (0-3.3V, 12 bits)" "m(u-law) \n Compresión 8 bits" "Transmisión Serial \n (UART + Clock externo)" "Recepción Serial \n (UART + Sync)" "m(u-law) \n Descompresión a 12 bits Inte.\n (interno DSP 12-16 bits en SW)" "DAC 8 bits \n (salida analógica)" "Filtro Pasabajos \n (RC o activo)" "Driver \n (Amplificador/Puente)" "Parlante \n (5 Ohm)"
1. Descripción de bloques
  • Entradas analógicas (0-3.3V): Se recomienda ajustar la fuente de señal o micrófono para no superar 3.3V y evitar saturar el ADC.
  • ADC del ESP32: Se configura con atenuación para maximizar la linealidad en el rango 0-3.3V (en el ESP32, la atenuación de 0 dB suele ser suficiente si cuidamos la ganancia anterior).
  • Compresión μ-law: Reducción de la resolución efectiva a 8 bits utilizando una curva logarítmica (μ=128).
  • Transmisión serial síncrona: Se utilizan pines UART TX, RX y se añade una línea extra para el clock. Aunque UART típicamente no usa clock externo, se puede generar una señal de sincronización para alinear muestreos o bytes.
  • Recepción y Descompresión: El segundo ESP32 recibe los bytes comprimidos, aplica la ley inversa y reconstruye la amplitud en un buffer interno (12 o 16 bits en software), para luego enviar a un DAC de 8 bits.
  • Filtro pasabajos: Suaviza los escalones del DAC y reconstruye la señal analógica (se dimensiona para frecuencias hasta ~4 kHz * 2.5 = 10 kHz de margen).
  • Driver de parlante: El ESP32 no puede entregar mucha corriente directamente; se recomienda un pequeño amplificador de audio o un transistor en configuración push-pull.

B. Adquisición y Compresión 1. ADC del ESP32
  • Resolución nominal: 12 bits.
  • Resolución efectiva: Alrededor de 10-11 bits típicamente, debido a no linealidad interna y ruido de conversión.
  • Rango de entrada recomendado: 0-3.3 V.
  • Atenuación: 0 dB para rango de 0-3.3 V (en algunos modelos de ESP32 se puede usar 2.5 dB o 6 dB según sea necesario).
  • Error de cuantización teórico:
    • Para un ADC ideal de 12 bits y rango ( 0 - 3.3 , \mathrm{V} ), el paso es ( \Delta = \frac{3.3\text{V}}{2^{12}} \approx 0.8 \text{ mV} ).
    • SQNR (Signal-to-Quantization Noise Ratio) ideal en dB para un convertidor de (n) bits:
      SQNR(dB)6.02n+1.76\mathrm{SQNR \, (dB)} \approx 6.02\,n + 1.76
      Para ( n=12 ), (\mathrm{SQNR} \approx 6.02\times12 + 1.76 \approx 73.0 ,\mathrm{dB}).
    • En la práctica, la linealidad del ESP32 reduce algo este valor.
2. Compresión μ-law (μ=128)
  • Ley μ en su forma continua:
    F(x)=sgn(x)ln ⁣(1+μx)ln(1+μ)F(x) = \operatorname{sgn}(x)\,\frac{\ln\!\bigl(1+\mu|x|\bigr)}{\ln(1+\mu)}
  • En la práctica, se discretiza a 8 bits: se genera una tabla de 256 valores para la compresión y otra para la descompresión en software.
  • Objetivo: Reducir el ruido perceptual en señales de voz y aprovechar mejor los pocos bits en la parte baja de la amplitud.

C. Transmisión digital UART + Sincronización
  1. Protocolo
    • Se define una trama básica: cada byte (8 bits) corresponde a la muestra comprimida μ-law.
    • Velocidad de baud recomendada (por ejemplo, 250 kBaud) con una línea adicional de reloj o "sync" a 16 kHz que marque el inicio de cada muestra.
    • Distancia entre microcontroladores = 5 cm: es muy corta, un simple par UTP con nivel TTL 3.3 V y quizás una resistencia pull-up en la línea de reloj basta.
  2. Sincronización
    • Puede implementarse un pin digital que cambie de estado cada vez que se envíe un nuevo byte comprimido.
    • El segundo MCU detecta ese flanco para alinear la lectura UART o para iniciar una interrupción.
  3. Conexión física (ejemplo de pines recomendados, ajustable según ESP32):
    • ESP32 #1 (Transmisor)
      • GPIO17 → TX UART
      • GPIO16 ← RX UART (no necesariamente usado si sólo emite).
      • GPIO4 → Clock de sincronización (pulso por byte).
      • GND común.
    • ESP32 #2 (Receptor)
      • GPIO17 ← RX UART
      • GPIO16 → TX UART (solo si se requiere respuesta)
      • GPIO5 ← Clock de sincronización
      • GND común.

D. Recepción, Descompresión y DAC
  1. Descompresión
    • Se utiliza la tabla inversa de µ-law. Cada byte (8 bits) se expande a 12 o 16 bits en software (p. ej., en variable uint16_t).
    • Se implementa un filtro digital de décimas si se quiere reducir ruido extra.
  2. DAC
    • El ESP32 carece de DAC de alta resolución en muchos modelos, típicamente 8 bits en dos canales (GPIO25 y GPIO26).
    • Se escribe la amplitud reconstruida (recortada a 8 bits).
    • Se filtra de manera analógica para suavizar la señal escalonada.
  3. Driver de parlante
    • Se recomienda un pequeño amplificador en puente (ej. una etapa push-pull con transistores o un amplificador en clase D si se quiere más eficiencia).
    • Parlante de 5 Ω requiere un control de corriente mayor de lo que el pin DAC puede entregar directamente.

E. Aspectos temporales y de muestreo
  1. Frecuencia máxima de señal = 4 kHz
    • Según Nyquist, la frecuencia de muestreo mínima (f_s) debe ser > 8 kHz.
    • Para mayor margen y calidad, se podría muestrear a 16 kHz.
    • Con compresión a 8 bits, la tasa de bits es 16 kS/s * 8 bits = 128 kbps.
  2. Diagrama de tiempos (simplificado)
    1. Cada (\Delta t = 1 / f_s), generar interrupción de timer.
    2. Leer ADC (12 bits) → Comprimir a 8 bits.
    3. Transmitir 1 byte por UART.
    4. Generar pulso en señal de sincronización.
    5. El receptor detecta el pulso, lee el byte UART → Descomprime → Envía al DAC.

F. Ejemplo de Código (Arduino) – Transmisor
Nota: Este código es simplemente ilustrativo y puede requerir ajustes a la librería o a la implementación concreta de mu-law. Las funciones de compresión y la tabla deben crearse según la curva μ-law.

Cpp


/* Ejemplo Transmisor PCM con μ-law (ESP32) */

#include <driver/adc.h>
#include <HardwareSerial.h>

#define FS 16000       // Frecuencia de muestreo deseada
#define SYNC_PIN 4     // Pin de sincronización (salida)
#define ADC_CHANNEL ADC1_CHANNEL_0 // GPIO36 en algunos ESP32

HardwareSerial SerialPCM(2); // UART2

// Tabla de compresión mu-law (256 valores)
uint8_t muLawCompressTable[4096]; // Ajustar según max. 12 bits si se desea
// (Se genera offline o con una rutina setupMukawTables())

hw_timer_t *timer = NULL;

// Rutina de interrupción de muestreo
void IRAM_ATTR onTimer() {
  // 1. Leer ADC (12 bits)
  int raw = adc1_get_raw(ADC_CHANNEL); // 0-4095 (aprox. con atenuación=0)
  // 2. Comprimir a 8 bits mu-law
  //   Suponiendo que "raw" se normaliza de 0 a 4095, se centra en +/-2048, etc.
  //   Ejemplo pseudo-línea:
  uint8_t muValue = muLawCompressTable[ raw & 0xFFF ]; 

  // 3. Generar pulso de sincronización
  digitalWrite(SYNC_PIN, HIGH);

  // 4. Enviar el byte por UART
  SerialPCM.write(muValue);

  // 5. Bajar pulso
  digitalWrite(SYNC_PIN, LOW);
}

void setup() {
  // Config ADC
  adc1_config_width(ADC_WIDTH_BIT_12);
  adc1_config_channel_atten(ADC_CHANNEL, ADC_ATTEN_DB_0);

  // Config pin de sincronización
  pinMode(SYNC_PIN, OUTPUT);
  digitalWrite(SYNC_PIN, LOW);

  // Config UART
  SerialPCM.begin(250000, SERIAL_8N1, -1, -1, false); // TX default pin GPIO17
  
  // (Inicializa tabla muLawCompressTable) => setupMuLawTables();

  // Config timer a FS = 16 kHz
  timer = timerBegin(0, 80, true); 
  // A 80 MHz / 80 = 1 MHz -> se cuentan 1 microseg = 1 tick
  // Queremos 16000 Hz => 1/16000 = 62.5us, => 62.5 ticks
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 62, true);
  timerAlarmEnable(timer);
}

void loop() {
  // Hacer otras tareas
}
Comentarios principales:
  • Se deja la muestra en 12 bits, se usa la tabla muLawCompressTable[] para obtener el valor 8 bits.
  • La línea de sincronización (GPIO4) genera un pulso cada vez que se lee/senvía una muestra.
  • El baudrate de 250000 es un ejemplo; se debe ajustar para que en ~62 µs se alcance a enviar 1 byte (1 start bit + 8 data + 1 stop = 10 bits → 10/250000=40 µs aprox.). Hay un margen de ~22 µs para overhead.

G. Ejemplo de Código (Arduino) – Receptor

Cpp


/* Ejemplo Receptor PCM con μ-law (ESP32) */

#include <driver/dac.h>
#include <HardwareSerial.h>

#define FS 16000
#define SYNC_PIN 5        // Pin de entrada de sincronización
#define DAC_CHANNEL DAC_CHANNEL_1 // DAC: GPIO25 en ESP32

HardwareSerial SerialPCM(2); // UART2
hw_timer_t *timer = NULL;
volatile uint8_t lastSample = 0;

// Tabla inversa (para 8 bits a 12 o 16 bits) – de preferencia 256 valores
uint16_t muLawDecompressTable[256];

void IRAM_ATTR onSync() {
  // Leer el byte disponible en UART (blocking o buffer)
  if (SerialPCM.available()) {
    lastSample = SerialPCM.read();
  }
  // Alternativa: se podría alinear la interrupción con un timer si queremos exactitud 
  // de muestreo local. Depende del diseño final.
}

void IRAM_ATTR onTimer() {
  // Reconstruir muestra 12 bits
  uint16_t expanded = muLawDecompressTable[lastSample]; // 0..4095 (~12 bits)
  
  // Reducir a 8 bits para DAC
  uint8_t dacValue = expanded >> 4; // descartar 4 bits
  dacWrite(DAC_CHANNEL_1, dacValue);
}

void setup() {
  // Config DAC
  dacOutputEnable(DAC_CHANNEL_1);

  // Config UART
  SerialPCM.begin(250000, SERIAL_8N1, -1, -1, true); 
  // "true" => Invertir pines si es necesario. Ajustar según tu ESP32.

  // Config pin de sincronización
  pinMode(SYNC_PIN, INPUT_PULLDOWN);
  attachInterrupt(digitalPinToInterrupt(SYNC_PIN), onSync, RISING);

  // (Inicializa tabla muLawDecompressTable)

  // Config timer 
  // Nota: si se quiere un playback sin dependencia exacta del pin SYNC, 
  // se programa el timer a 16 kHz y en la callback onTimer() se lee "lastSample". 
  // O se puede directamente emplear la interrupción onSync para doEverything. 
  timer = timerBegin(1, 80, true);
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 62, true);
  timerAlarmEnable(timer);
}

void loop() {
  // Otras tareas
}
Comentarios:
  • Se asume que llega un byte cada ~62 µs.
  • lastSample se actualiza de forma asíncrona.
  • onTimer() genera la salida de audio al DAC con la última muestra recibida.
  • Se puede combinar la lectura y la reproducción en la misma ISR si se desea sincronización estricta con el pulso.

H. Protección y Filtrado
  1. Protección contra sobrevoltaje
    • Para la entrada ADC: un diodo de clamp + resistencia en serie (p.ej., 10 kΩ) para evitar picos > 3.3V.
  2. Filtros analógicos
    • Antialias en la entrada del ADC: un filtro RC pasa-bajos con (f_c \approx 5\text{ kHz}) si la señal de interés es hasta 4 kHz.
    • Reconstrucción en la salida DAC: un filtro RC o activo (op-amp) con (f_c) algo mayor a 4 kHz (p.ej., 8-10 kHz).

I. Cálculos de la Frecuencia de Muestreo y Tasa de datos
  • Muestreo: (f_s = 16\text{ kHz}).
  • Bits por muestra: 8 bits (gracias a la compresión μ-law).
  • Tasa de datos: (16,000 \times 8 = 128 \text{ kbps}).
  • Tiempo por byte: (1/16,000 \approx 62.5,\mu s).

J. Relación Señal/Ruido de Cuantización (SQNR) y Distorsión μ-law
  1. SQNR con compresión
    • Para 8 bits lineales típicos: (\mathrm{SQNR} \approx 6.02 \times 8 + 1.76 = 49.9,\mathrm{dB}).
    • Con μ-law y señal de voz, la calidad percibida supera la simple cuantización lineal de 8 bits, especialmente en señales de bajo nivel.
  2. Distorsión por compresión
    • La compresión introduce mayor error en amplitudes altas debido a la curva logarítmica; no obstante, aporta mejor relación señal/ruido en amplitudes bajas.
    • Normalmente aceptable para voz o señales de ancho de banda reducida (~300 Hz a 4 kHz).

K. Tabla de Parámetros Ajustables

Table


ParámetroValor/RecomendaciónObservaciones
Frecuencia de Muestreo (fs)16 kHzAsegura ancho de banda hasta ~8 kHz (sobrado para voz a 4 kHz).
Atenuación ADC ESP320 dB (por defecto)Ajustar si la señal de entrada excede 3.3V.
Bits finales (compresión)8μ-law.
μ (Factor de compresión)128Ajustable: 255 suele ser tambien frecuente.
Baud Rate UART250 kBaud (mín)Ajustar para no superar el tiempo de muestreo.
Filtro Antialias (RC)~5 kHzDepende de la señal de entrada.
Filtro Reconstrucción (RC)~8-10 kHzPara suavizar la salida a 8 bits.
Pin SYNC adicional1 señal digitalAlinea muestras; se puede omitir con buffers FIFO.
Amplificador de salidaTransistor push-pull o Amp audio bajo consumoPara parlante de 5 Ω.

L. Conclusiones y Siguientes Pasos
  1. Integración final: Verificar que el timing sea estable. Usar osciloscopio para comprobar la señal ADC, la trama UART y el pulso de sincronía.
  2. Ruido y distorsión: Ajustar filtro pasabajos y realizar pruebas de escucha con el parlante.
  3. Optimizaciones:
    • Ajustar interrupciones y prioridad para no introducir jitter.
    • Usar buffers circulares (colas) y DMA en UART si se requiere robustez.
    • Usar un amplificador en la salida para el parlante (p. ej., un pequeño módulo clase D de 2-3 W).
Con esto se logra un sistema de transmisión PCM comprimida (μ-law) a baja distancia (~5 cm) entre dos ESP32, capturando hasta 4 kHz de audio y reproduciéndolo en el otro extremo. Esto cubre tanto los cálculos de muestreo, la comunicación serial, la compresión logarítmica y la reconstrucción de señal con DAC + filtro.
¡Éxitos en tu proyecto!
Define project properties
Search for main components
Add ADC and DAC components
"module ALU\_N\_bits #( parameter N = 8 )( input wire \[N-1:0] A, input wire \...

@copilot "module ALU_N_bits #( parameter N = 8 )( input wire [N-1:0] A, input wire [N-1:0] B, input wire [2:0] control, // Bus de control para seleccionar la operación output wire [N-1:0] result, output wire carry_borrow );
wire [N-1:0] sum_res, and_res, or_res, xor_res, not_res, shl_res, shr_res;
wire sum_carry;

// Instanciamos los módulos de operaciones
add_sub #(.N(N)) add_sub_inst (
    .A(A),
    .B(B),
    .sel(control[0]), // Si control[0] = 0 -> Suma, si es 1 -> Resta
    .R(sum_res),
    .carry_borrow(sum_carry)
);

and_nbits #(.N(N)) and_inst (
    .A(A),
    .B(B),
    .Y(and_res)
);

or_nbits #(.N(N)) or_inst (
    .A(A),
    .B(B),
    .Y(or_res)
);

xor_nbits #(.N(N)) xor_inst (
    .A(A),
    .B(B),
    .Y(xor_res)
);

not_nbits #(.N(N)) not_inst (
    .A(A),
    .Y(not_res)
);

shift_left_nbits #(.N(N)) shl_inst (
    .A(A),
    .Y(shl_res)
);

shift_right_nbits #(.N(N)) shr_inst (
    .A(A),
    .Y(shr_res)
);

// Multiplexor para seleccionar la operación
assign result = (control == 3'b000) ? sum_res :    // Suma o Resta
                (control == 3'b001) ? and_res :    // AND
                (control == 3'b010) ? or_res  :    // OR
                (control == 3'b011) ? xor_res :    // XOR
                (control == 3'b100) ? not_res :    // NOT (Solo A)
                (control == 3'b101) ? shl_res :    // Shift Left
                (control == 3'b110) ? shr_res :    // Shift Right
                {N{1'b0}}; // Default: 0

// El carry/borrow solo tiene sentido en suma/resta
assign carry_borrow = (control == 3'b000) ? sum_carry : 1'b0;
endmodule "
Puedes hacer una construcción donde muestren cómo los módulos están interconectados. Además, realiza una breve explicación de cómo funciona y las consideraciones de diseño e implementación que tendrías en cuenta si fueras a diseñar el módulo.
1y
Let's create a diagram to illustrate how the modules in the ALU are interconnected and provide a brief explanation of how the ALU functions, along with some design and implementation considerations.
Interconnection Diagram
Here is a simplified block diagram of the ALU_N_bits module, showing the interconnections between the various operation modules and the multiplexer used to select the output based on the control signal:
graph TD;
    A[Input A $N-1:0$] --> add_sub_inst;
    B[Input B $N-1:0$] --> add_sub_inst;
    add_sub_inst -->|Sum Result| sum_res;
    add_sub_inst -->|Carry| sum_carry;

    A --> and_inst;
    B --> and_inst;
    and_inst --> |AND Result| and_res;

    A --> or_inst;
    B --> or_inst;
    or_inst --> |OR Result| or_res;

    A --> xor_inst;
    B --> xor_inst;
    xor_inst --> |XOR Result| xor_res;

    A --> not_inst;
    not_inst --> |NOT Result| not_res;

    A --> shl_inst;
    shl_inst --> |Shift Left Result| shl_res;

    A --> shr_inst;
    shr_inst --> |Shift Right Result| shr_res;

    control[Control $2:0$] --> mux;
    sum_res --> mux;
    and_res --> mux;
    or_res --> mux;
    xor_res --> mux;
    not_res --> mux;
    shl_res --> mux;
    shr_res --> mux;
    mux --> |"Result $N-1:0$"| result;

    sum_carry --> |Carry/Borrow| carry_borrow;
    control --> carry_borrow;
Functionality and Explanation
  1. Inputs and Outputs:
    • The ALU takes two N-bit wide inputs, A and B, and a 3-bit control input to determine the operation to perform.
    • It produces an N-bit wide result and a carry/borrow flag for arithmetic operations (add/subtract).
  2. Operation Modules:
    • The add_sub module performs addition or subtraction between A and B based on the least significant bit of the control signal, control[0].
    • Logical operations include AND, OR, and XOR, handled by corresponding modules.
    • The not_nbits module complements the bits of A.
    • Shift operations (left and right) manipulate the bit positions of A.
  3. Multiplexer (MUX):
    • A multiplexer selects which operation's result to output based on the control signal. Each control pattern corresponds to a different operation:
      • 3'b000: Addition or Subtraction
      • 3'b001: AND
      • 3'b010: OR
      • 3'b011: XOR
      • 3'b100: NOT
      • 3'b101: Shift Left
      • 3'b110: Shift Right
  4. Carry/Borrow:
    • The carry/borrow is only relevant for addition or subtraction, so it is passed through only when the control is for the sum operation (3'b000).
Design and Implementation Considerations
  • Parameterizability: The use of a parameter $N$ makes the module scalable for different bit-width operations.
  • Modularity: Each operation is modularized, allowing easy updates or enhancements without affecting the entire ALU.
  • Default Output: When the control signal does not match an operation, the ALU outputs a default value of zero.
  • Timing: Consideration for timing constraints, especially for larger bit-widths, as some operations might become timing-critical.
  • Resource Usage: Balance between resource usage (e.g., LUTs in FPGAs) and speed, particularly in the context of target technology (ASIC vs. FPGA).
  • Testability: Ensure thorough testing for each individual module as well as the overall ALU to verify correct functionality under various conditions.
1y
1
A


  • Generic Inductor
    A generic fixed inductor suitable for rapid circuit topology development. The footprint automatically adapts based on the selected package, supporting standard SMD sizes (e.g., 0402, 0603, 0805) as well as well-known inductor packages such as SDR1806, PA4320, SRN6028, and SRR1260. Standard inductor values: 1.0 nH, 10 nH, 100 nH, 1.0 µH, 10 µH, 100 µH, 1.0 mH 1.2 nH, 12 nH, 120 nH, 1.2 µH, 12 µH, 120 µH, 1.2 mH 1.5 nH, 15 nH, 150 nH, 1.5 µH, 15 µH, 150 µH, 1.5 mH 1.8 nH, 18 nH, 180 nH, 1.8 µH, 18 µH, 180 µH, 1.8 mH 2.2 nH, 22 nH, 220 nH, 2.2 µH, 22 µH, 220 µH, 2.2 mH 2.7 nH, 27 nH, 270 nH, 2.7 µH, 27 µH, 270 µH, 2.7 mH 3.3 nH, 33 nH, 330 nH, 3.3 µH, 33 µH, 330 µH, 3.3 mH 3.9 nH, 39 nH, 390 nH, 3.9 µH, 39 µH, 390 µH, 3.9 mH 4.7 nH, 47 nH, 470 nH, 4.7 µH, 47 µH, 470 µH, 4.7 mH 5.6 nH, 56 nH, 560 nH, 5.6 µH, 56 µH, 560 µH, 5.6 mH 6.8 nH, 68 nH, 680 nH, 6.8 µH, 68 µH, 680 µH, 6.8 mH 8.2 nH, 82 nH, 820 nH, 8.2 µH, 82 µH, 820 µH, 8.2 mH #generics #CommonPartsLibrary
  • Generic Capacitor
    A generic fixed capacitor ideal for rapid circuit topology development. You can choose between polarized and non-polarized types, its symbol and the footprint will automatically adapt based on your selection. Supported options include standard SMD sizes for ceramic capacitors (e.g., 0402, 0603, 0805), SMD sizes for aluminum electrolytic capacitors, and through-hole footprints for polarized capacitors. Save precious design time by seamlessly add more information to this part (value, footprint, etc.) as it becomes available. Standard capacitor values: 1.0pF, 10pF, 100pF, 1000pF, 0.01uF, 0.1uF, 1.0uF, 10uF, 100uF, 1000uF, 10000uF 1.1pF, 11pF, 110pF, 1100pF 1.2pF, 12pF, 120pF, 1200pF 1.3pF, 13pF, 130pF, 1300pF 1.5pF, 15pF, 150pF, 1500pF, 0.015uF, 0.15uF, 1.5uF, 15uF, 150uF, 1500uF 1.6pF, 16pF, 160pF, 1600pF 1.8pF, 18pF, 180pF, 1800pF 2.0pF, 20pF, 200pF, 2000pF 2.2pF, 22pF, 220pF, 2200pF, 0.022uF, 0.22uF, 2.2uF, 22uF, 220uF, 2200uF 2.4pF, 24pF, 240pF, 2400pF 2.7pF, 27pF, 270pF, 2700pF 3.0pF, 30pF, 300pF, 3000pF 3.3pF, 33pF, 330pF, 3300pF, 0.033uF, 0.33uF, 3.3uF, 33uF, 330uF, 3300uF 3.6pF, 36pF, 360pF, 3600pF 3.9pF, 39pF, 390pF, 3900pF 4.3pF, 43pF, 430pF, 4300pF 4.7pF, 47pF, 470pF, 4700pF, 0.047uF, 0.47uF, 4.7uF, 47uF, 470uF, 4700uF 5.1pF, 51pF, 510pF, 5100pF 5.6pF, 56pF, 560pF, 5600pF 6.2pF, 62pF, 620pF, 6200pF 6.8pF, 68pF, 680pF, 6800pF, 0.068uF, 0.68uF, 6.8uF, 68uF, 680uF, 6800uF 7.5pF, 75pF, 750pF, 7500pF 8.2pF, 82pF, 820pF, 8200pF 9.1pF, 91pF, 910pF, 9100pF #generics #CommonPartsLibrary
  • Generic Resistor
    A generic fixed resistor ideal for rapid circuit topology development. Its footprint automatically adapts based on the selected package case code—supporting 0402, 0603, 0805, 1203, and many other standard SMD packages, as well as axial horizontal and vertical configurations. Save precious design time by seamlessly add more information to this part (value, footprint, etc.) as it becomes available. Standard resistor values: 1.0 ohm, 10 ohm, 100 ohm, 1.0k ohm, 10k ohm, 100k ohm, 1.0M ohm 1.1 ohm, 11 ohm, 110 ohm, 1.1k ohm, 11k ohm, 110k ohm, 1.1M ohm 1.2 ohm, 12 ohm, 120 ohm, 1.2k ohm, 12k ohm, 120k ohm, 1.2M ohm 1.3 ohm, 13 ohm, 130 ohm, 1.3k ohm, 13k ohm, 130k ohm, 1.3M ohm 1.5 ohm, 15 ohm, 150 ohm, 1.5k ohm, 15k ohm, 150k ohm, 1.5M ohm 1.6 ohm, 16 ohm, 160 ohm, 1.6k ohm, 16k ohm, 160k ohm, 1.6M ohm 1.8 ohm, 18 ohm, 180 ohm, 1.8K ohm, 18k ohm, 180k ohm, 1.8M ohm 2.0 ohm, 20 ohm, 200 ohm, 2.0k ohm, 20k ohm, 200k ohm, 2.0M ohm 2.2 ohm, 22 ohm, 220 ohm, 2.2k ohm, 22k ohm, 220k ohm, 2.2M ohm 2.4 ohm, 24 ohm, 240 ohm, 2.4k ohm, 24k ohm, 240k ohm, 2.4M ohm 2.7 ohm, 27 ohm, 270 ohm, 2.7k ohm, 27k ohm, 270k ohm, 2.7M ohm 3.0 ohm, 30 ohm, 300 ohm, 3.0K ohm, 30K ohm, 300K ohm, 3.0M ohm 3.3 ohm, 33 ohm, 330 ohm, 3.3k ohm, 33k ohm, 330k ohm, 3.3M ohm 3.6 ohm, 36 ohm, 360 ohm, 3.6k ohm, 36k ohm, 360k ohm, 3.6M ohm 3.9 ohm, 39 ohm, 390 ohm, 3.9k ohm, 39k ohm, 390k ohm, 3.9M ohm 4.3 ohm, 43 ohm, 430 ohm, 4.3k ohm, 43K ohm, 430K ohm, 4.3M ohm 4.7 ohm, 47 ohm, 470 ohm, 4.7k ohm, 47k ohm, 470k ohm, 4.7M ohm 5.1 ohm, 51 ohm, 510 ohm, 5.1k ohm, 51k ohm, 510k ohm, 5.1M ohm 5.6 ohm, 56 ohm, 560 ohm, 5.6k ohm, 56k ohm, 560k ohm, 5.6M ohm 6.2 ohm, 62 ohm, 620 ohm, 6.2k ohm, 62K ohm, 620K ohm, 6.2M ohm 6.8 ohm, 68 ohm, 680 ohm, 6.8k ohm, 68k ohm, 680k ohm, 6.8M ohm 7.5 ohm, 75 ohm, 750 ohm, 7.5k ohm, 75k ohm, 750k ohm, 7.5M ohm 8.2 ohm, 82 ohm, 820 ohm, 8.2k ohm, 82k ohm, 820k ohm, 8.2M ohm 9.1 ohm, 91 ohm, 910 ohm, 9.1k ohm, 91k ohm, 910k ohm, 9.1M ohm #generics #CommonPartsLibrary
  • Terminal
    Terminal
    An electrical connector acting as reusable interface to a conductor and creating a point where external circuits can be connected.
  • RMCF0805JT47K0
    General Purpose Thick Film Standard Power and High-Power Chip Resistor 47 kOhms ±5% 0.125W, 1/8W Chip Resistor 0805 (2012 Metric) Automotive AEC-Q200 Thick Film Features: - RMCF – standard power ratings - RMCP – high power ratings - Nickel barrier terminations standard - Power derating from 100% at 70ºC to zero at +155ºC - RoHS compliant, REACH compliant, and halogen free - AEC-Q200 compliant
  • 875105359001
    10 µF 16 V Aluminum - Polymer Capacitors Radial, Can - SMD 30mOhm 2000 Hrs @ 105°C #commonpartslibrary #capacitor #aluminumpolymer #radialcan
  • CTL1206FYW1T
    Yellow 595nm LED Indication - Discrete 1.7V 1206 (3216 Metric)
  • 1070TR
    Battery Holder (Open) Coin, 20.0mm 1 Cell SMD (SMT) Tab bate or batt #forLedBlink
  • Push Button
    A momentary or non-latching switch which causes a temporary change in the state of an electrical circuit only while the switch is physically actuated. SWITCH TACTILE SPST-NO 0.05A 24V
  • XY301V-A-5.0-3P
    Straight 3 pin 5mm 3-pin Pitch 5mm 15A 1.5 300V Screw terminal block 01x03 #screwblock #connector #commonPartsLibrary

[Example] LED Simulator Template 529a

Simulator template for an LED part. Check out the Code editor for instructions!

Properties

1.70

V

LED

CTL1206FYW1T

LED

Pricing & Availability

DPN

Stock

Qty 1

1

21K

$0.03655

1

0

$0.113

Controls