Un circuito de gran utilidad, disponible en forma integrada, presentando características que permiten su utilización en una infinidad de proyectos es el comparador de tensión. En este artículo mostramos cómo funciona y cómo podemos utilizarlo en las aplicaciones prácticas.

Un comparador de tensión más es que un amplificador operacional que tiene una ganancia muy alta y que puede funcionar normalmente con una fuente de alimentación sencilla.

Tenemos básicamente dos formas de utilizar un comparador, que determinan el tipo de salida obtenida.

En la primera manera, mostrada en la figura 1, conectamos la entrada inversora del comparador a un par de resistores cuyos valores determinar la tensión de referencia en esa entrada.

 

Figura 1 - Uso de resistores como referencia
Figura 1 - Uso de resistores como referencia | Haga click en la imagen para ampliar |

 

Si utilizamos dos resistores del mismo valor, por ejemplo, la tensión de referencia será la mitad de la tensión de alimentación o Vcc / 2.

Para otras relaciones de valores, por ejemplo, usando R1 y R2 cualesquiera, la tensión de referencia será dada por:

Vref = Vcc (R1 / R1 + R2)

Otra posibilidad de fijar la tensión de referencia es con el uso de un diodo zener, como muestra la figura 2.

 

Figura 2 - Fijación de la referencia con un zener
Figura 2 - Fijación de la referencia con un zener | Haga click en la imagen para ampliar |

 

En la otra entrada del comparador, aplicamos la tensión a ser comparada, es decir, la tensión de entrada.

Si esta tensión es menor que la tensión de referencia, la salida del comparador presentará una tensión muy cercana a 0 V.

Si esta tensión es mayor que la tensión de referencia, la salida del comparador irá al nivel alto, es decir, presentará una tensión muy próxima a la tensión de alimentación.

Este comportamiento se puede ilustrar a través de un gráfico como el de la figura 3.

 

Figura 3 - Característica del comparador
Figura 3 - Característica del comparador | Haga click en la imagen para ampliar |

 

Ver que la región en que las tensiones de entrada son muy cercanas, tenemos un comportamiento indefinido de salida, ya que ocurre la transición.

La ganancia muy alta del circuito hace que esta banda indefinida sea muy estrecha, con apenas algunos milivolts o como máximo, algunas decenas de milivolts.

En la segunda modalidad de operación, la tensión de referencia se aplica a la entrada no inversora (+) y la tensión de entrada se aplica a la entrada inversora, como se muestra en la figura 4.

 

Figura 4 - Segundo modo de operación
Figura 4 - Segundo modo de operación | Haga click en la imagen para ampliar |

 

En estas condiciones, si la entrada es menor que la tensión de referencia, la tensión de salida será positiva, muy próxima a la tensión de alimentación.

Si la tensión de entrada es mayor que la tensión de referencia, la tensión de salida será muy próxima a cero.

Un gráfico que representa este comportamiento se muestra en la figura 5.

 

Figura 5 - Gráfico para el segundo modo de operación
Figura 5 - Gráfico para el segundo modo de operación | Haga click en la imagen para ampliar |

 

En la práctica las tensiones no pueden llegar a Vcc ni a cero, debido a las pérdidas en los componentes del circuito.

Sin embargo, existen comparadores en los que la tensión es muy cercana a estos valores, por lo que se denominan rail-to-rail, es decir, la tensión de salida oscila entre las dos líneas de alimentación (rail).

Las corrientes que podemos obtener en una salida de un comparador son normalmente pequeñas, del orden de algunos miliamperios o poco más de una decena de miliamperios, lo que permite que sólo LEDs comunes, como máximo, sean excitados, como muestra la figura 6.

 

Figura 6 - Excitación de LEDs
Figura 6 - Excitación de LEDs | Haga click en la imagen para ampliar |

 

El resistor R tiene su valor determinado de acuerdo con la tensión de alimentación, para limitar la corriente en el LED a un valor que esté dentro de los límites de la capacidad del comparador.

Para una etapa de potencia, accionando relés, lámparas o motores, por ejemplo, podemos usar los circuitos de la figura 7.

 

Figura 7 - Accionando circuitos de potencia
Figura 7 - Accionando circuitos de potencia | Haga click en la imagen para ampliar |

 

En el primer circuito tenemos el accionamiento de cargas hasta 100 mA, cuando la salida del comparador está en el nivel alto, o sea, cerca de la tensión de alimentación.

En el segundo circuito tenemos el accionamiento de una carga del mismo orden, cuando la tensión de salida es nula.

El tercer circuito corresponde a una etapa de mayor potencia con un transistor Darlington, con capacidad del orden de 1 A.

Para un Darlington PNP tenemos el accionamiento con una tensión nula, mientras que en el ejemplo indicado, el accionamiento ocurre cuando la salida del comparador es positiva.

La alimentación del comparador con una tensión de 5 V puede excitar cargas TTL, y con otras tensiones tenemos la compatibilidad con cargas CMOS, exigiéndose sólo la conexión de un resistor de pull-up externo típicamente de 10k a 100 k, como muestra la figura 8.

 

Figura 8 - La resistencia de pull-up
Figura 8 - La resistencia de pull-up | Haga click en la imagen para ampliar |

 

Este resistor es necesario pues la salida del comparador normalmente consiste en un transistor que está con el colector apagado (abierto).

Sin una resistencia externa, el transistor no se polariza.

 

Aplicaciones

Damos a continuación algunas aplicaciones importantes, cuyos valores básicos de los componentes pueden ser dejados en abierto, pues dependen del comportamiento deseado para el circuito.

 

1. Alarma de luz

En la figura 9 tenemos el circuito básico para el disparo de un sistema de alarma con el corte o con la incidencia de luz, teniendo como base un comparador.

 

Figura 9 - Alarma de luz o de sombra
Figura 9 - Alarma de luz o de sombra | Haga click en la imagen para ampliar |

 

Las cargas pueden ser uno de los circuitos indicados en la figura 7, y la sensibilidad o punto de disparo se ajusta variando la tensión de referencia a través de un potenciómetro.

Este circuito tiene como principal característica la velocidad de respuesta ya que, con una mínima variación de luz desde el punto de ajuste, se dispara.

Los sensores pueden ser LDR o incluso foto-transistores con aumento de los calores de los resistores.

 

2. Alarma de temperatura

Con la utilización de termistores (NTC o PTC) como sensores, podemos controlar una carga con pequeñas variaciones de la temperatura, utilizando la configuración en termostatos sensibles.

En la figura 10 mostramos cómo hacerlo.

 

Figura 10 - Utilizando NTC y PTC como sensores
Figura 10 - Utilizando NTC y PTC como sensores | Haga click en la imagen para ampliar |

 

 

El punto de disparo del circuito se ajusta en el potenciómetro.

 

3. Comparador de Ventanas

Dos comparadores de tensión conectados como muestra la figura 11 forman una configuración denominada "comparador de ventana" o "window comparator".

Esta configuración se debe al hecho de que en el gráfico que representa el comportamiento de este circuito, mostrado en la figura 12, tenemos una "ventana" en la que la salida va al nivel alto o al nivel bajo (Vcc o 0V), determinada por la relación entre los " valores de los resistores de referencia o de las tensiones de referencia.

 

Figura 11 - El comparador de ventana
Figura 11 - El comparador de ventana | Haga click en la imagen para ampliar |

 

 

 

Figura 12 - Característica del comparador de ventana
Figura 12 - Característica del comparador de ventana | Haga click en la imagen para ampliar |

 

Así, para el circuito indicado, la carga será accionada solamente cuando la tensión de entrada esté en el rango de V1 a V2. Debajo de V1 y encima de V2 la carga estará desactivada.

Si conectamos a la entrada de este circuito un LDR, como muestra la figura 13, y ajustamos los potes P1 y P2 para que la salida permanezca desactivada con la iluminación normal, cualquier perturbación de la iluminación ambiente, aumentando o disminuyendo de intensidad, causará el disparo del sistema .

 

Figura 13 - Alarma de perturbación luminosa
Figura 13 - Alarma de perturbación luminosa | Haga click en la imagen para ampliar |

 

En lugar del LDR, podremos utilizar en este circuito otros tipos de sensores como NTCs PTC, sensores de presión, posición, etc.

 

4. Comparador Escalonado

Diversos comparadores conectados a una red de resistencias en serie capaz de proporcionar tensiones de referencias escalonadas, como muestra la figura 14, permiten la elaboración de un comparador escalonado.

 

Figura 14 - El comparador escalonado
Figura 14 - El comparador escalonado | Haga click en la imagen para ampliar |

 

 

Podemos utilizar este circuito en un VU-meter, añadiendo la entrada de audio mostrada en la figura 15.

 

Figura 15 - Entrada para VU-meter
Figura 15 - Entrada para VU-meter | Haga click en la imagen para ampliar |

 

 

Para tener un termómetro escalonado, podemos conectar en la entrada el circuito mostrado en la figura 16.

 

Figura 16 - Termómetro bargraph
Figura 16 - Termómetro bargraph

 

 

5. oscilador

Un comparador de tensión también se puede utilizar para oscilar y con ello generar señales en un rango de hasta algunos cientos de kilociclos.

La configuración para este propósito se muestra en la figura 17.

 

Figura 17- Oscilador con comparador
Figura 17- Oscilador con comparador | Haga click en la imagen para ampliar |

 

 

El capacitor C1 y el resistor R1 determinan la frecuencia de operación del oscilador (ver en la sección de Matemáticas para Electrónica cómo calcular la frecuencia).

Otras configuraciones se pueden obtener para generar formas de onda diferente.

También existe la posibilidad de utilizar el comparador como amplificador, pero eso no será abordado en este artículo.

Veremos ahora algunos tipos de comparadores con los que puede realizar proyectos actualmente.

 

El Comparador en la práctica

En principio, cualquier amplificador operacional puede utilizarse como comparador.

Así, si sólo necesitamos un comparador en un proyecto, podemos utilizar el amplificador operacional 741, sin problemas.

En la figura 18 tenemos la envoltura y los pinos del amplificador operacional 741.

 

Figura 18 - El 741
Figura 18 - El 741

 

 

Las principales características de este operativo son:

• Tensión máxima: 18 + 18 V

• Resistencia de entrada: 2 M ohmios

• Ganancia típica: 300 000

• Resistencia de salida: 75 ohmios

• Corriente máxima de salida: 25 mA (tip.)

Una serie de comparadores común es la formada por los LM293, 393 y LM2903 cuyos pinos se muestran en la figura 19.

 

Figura 19 - Amplificadores LM193, 293 y 393 más LM2903
Figura 19 - Amplificadores LM193, 293 y 393 más LM2903

 

 

Las características de estos amplificadores son las siguientes:

Rango de tensión de alimentación: 2 a 36 V (18 + 18 V)

Ganancia: 200 V / mV (tip.)

Otra familia popular es la formada por los LM139, 239, 339 y LM2901, mostrados en la figura 20.

 

Figura 20 - Los LM139 / 239/339 y LM2901
Figura 20 - Los LM139 / 239/339 y LM2901 | Haga click en la imagen para ampliar |

 

 

En una misma envoltura tenemos cuatro comparadores que pueden operar con tensiones de 1 a 18 V y tienen ganancias de 100 000 a 200 000 según el tipo.

La corriente máxima de salida es de 16 mA y requiere una resistencia de pull-up de 2k2 típicamente.

 

Conclusión

No hay límite sobre lo que se puede hacer con un comparador de tensión.

En nuestro sitio tenemos una infinidad de proyectos que utilizan estos componentes.

Consulte tanto los artículos como también nuestro enorme banco de circuitos escribiendo, por ejemplo, LM339 en la búsqueda.

 

 

18.975MBMemory Usage51.58msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:49 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "PATH_TRANSLATED" => "redirect:/ind...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1750198364 "last" => 1750198364...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.44KB) (217μs)
  • afterInitialise (1.14MB) (3.89ms)
  • afterRoute (179.16KB) (1.02ms)
  • beforeRenderComponent com_content (100.7KB) (462μs)
  • Before Access::preloadComponents (all components) (33.45KB) (233μs)
  • After Access::preloadComponents (all components) (107.06KB) (536μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (28.8ms)
  • Before Access::getAssetRules (id:5313 name:com_content.article.10508) (514.65KB) (1.03ms)
  • After Access::getAssetRules (id:5313 name:com_content.article.10508) (7.38KB) (50μs)
  • afterRenderComponent com_content (437.84KB) (7.6ms)
  • afterDispatch (2.25KB) (66μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (1.77ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (349μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (96μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.13ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (573μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (69μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (186μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (49μs)
  • afterRender (281.75KB) (3.35ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (55.82%)
    28.80ms
    1 x afterRenderComponent com_content (437.84KB) (14.74%)
    7.60ms
    1 x afterInitialise (1.14MB) (7.53%)
    3.89ms
    1 x afterRender (281.75KB) (6.49%)
    3.35ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (3.43%)
    1.77ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.19%)
    1.13ms
    1 x Before Access::getAssetRules (id:5313 name:com_content.article.10508) (514.65KB) (2%)
    1.03ms
    1 x afterRoute (179.16KB) (1.97%)
    1.02ms
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.11%)
    573μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.04%)
    536μs
    1 x beforeRenderComponent com_content (100.7KB) (0.9%)
    462μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.68%)
    349μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.45%)
    233μs
    1 x afterLoad (85.44KB) (0.42%)
    217μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.36%)
    186μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.19%)
    96μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.13%)
    69μs
    1 x afterDispatch (2.25KB) (0.13%)
    66μs
    1 x After Access::getAssetRules (id:5313 name:com_content.article.10508) (7.38KB) (0.1%)
    50μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.09%)
    49μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
21 statements were executed, 5 of which were duplicates, 16 unique13.5ms1.63MB
  • SELECT @@SESSION.sql_mode;29μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 168μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)166μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`46μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest74μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`259μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)347μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 09.92ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`402μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '10508'199μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)203μs46.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`223μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)270μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`177μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC391μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`188μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1134μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)81μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context61μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)187μs46.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 169μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy