Describimos el montaje de una llave biestable que puede servir de base para el desarrollo de diversos tipos de controles de automatismos a partir de sensores con acción ligera sin repiques. Con el cambio de los valores de los componentes, las aplicaciones son ilimitadas y el montaje en matriz de contactos tiene un excelente aspecto didáctico, además de servir para que el propio lector haga los cambios de los valores de los componentes, experimentando los que mejor cumplan sus necesidades de diseño.

    Un circuito biestable tiene una acción tipo aleatoriamente. En otras palabras, con un pulso de mando en la entrada se conecta una carga y con el pulso siguiente se apaga.

   Se trata de una configuración de gran utilidad para la mecatrónica, pues puede ser usada en diversos tipos de automatismos que hagan uso de sensores de contacto momentáneo como micro-switches, reed-switches, sensores de tacto, sensores de luz e incluso circuitos controlados por microprocesadores y por el puerto paralelo del PC.

   Entre los automatismos que pueden ser desarrollados en base al circuito que describimos podemos citar los siguientes:

• Sensores de golpes o obstáculos para robots

• Comandos remotos del tipo aleación

• Alarmas

• Claves de fin de carrera

• Inversores de sentido de giro para motores de corriente continua

• Sistema de iluminación por tacto

   En la versión básica, usamos un sensor tipo reed de alarma y dos LEDs indicadores con la programación de tiempo para facilitar las demostraciones.

   Así, en un toque, el LED1 se enciende durante unos segundos al mismo tiempo que el LED2 se conmuta (si está encendido, se apaga y se apaga).

   En el toque siguiente nuevamente tenemos el encendido del LED1 y la conmutación del LED2. Como carga para el relé, el lector puede utilizar otros dispositivos.

   Evidentemente, con cambios de valores de componentes y montaje posterior en una placa de circuito impreso, el lector podrá tener la versión definitiva para la aplicación deseada.

 

Como funciona

   El corazón del proyecto es el circuito integrado 4013 que consta de dos flip-flops tipo D, con la configuración mostrada en la figura 1.

 

Figura 1 - Configuración del 4013
Figura 1 - Configuración del 4013

 

   

En nuestro proyecto utilizaremos sólo uno de los flp-flops, de modo que el lector puede usar el otro en aplicaciones similares o diferentes.

   En un montaje definitivo, en el que sólo se utilice uno de los flip-flops, es interesante aterrizar todos los pines no utilizados del flip-flop no utilizado para evitar inestabilidades de funcionamiento. Esto implica la puesta a tierra de los pines 1 a 6.

  Uno de los problemas que existe en el accionamiento de un flip-flop o cualquier otro dispositivo de conmutación es el llamado repique de los contactos del sensor.

   Lo que ocurre es que cuando el sensor se cierra no hay una variación única de corriente en sus contactos sino una vibración que produce diversos pulsos antes de que se estabilice.

   Así, estas muñecas pueden hacer que el dispositivo conmutador interprete su acción como varias aberturas y cerramientos de contactos, como muestra la figura 2.

 

Figura 2 - El circuito anti-repique (debouncer)
Figura 2 - El circuito anti-repique (debouncer) | Haga click en la imagen para ampliar |

 

   La solución para el problema consiste en un circuito que traba por unos instantes en el primer pulso, de modo que los demás no sean contados, como muestra la misma figura.

   Este circuito es el llamado anti-repique o debounce que, en nuestro proyecto se elabora con un circuito integrado 555 conectado en la configuración monoestable.

   Cuando su entrada (pino 2) es puesta a tierra por un instante, la salida va al nivel alto por un intervalo de tiempo determinado por R2 y C1. En este intervalo, el LED1 se mantiene encendido.

   En el diseño original, el LED se encender durante aproximadamente 2 segundos, pero el reproductor puede cambiar de acuerdo con la aplicación. Los tiempos menores son preferidos para las aplicaciones con sensores de robots, en cuyo caso C2 debe tener valores entre 47 nF y 100 nF.

   El resistor R1 determina la corriente en el sensor. Para los sensores tipo aleación como microswitches, reed-switches, sensores de contacto, etc, los valores recomendados están entre 10 k y 47 k.

   Para sensores resistivos como un LDR, se debe utilizar un resistor de 100 k ohms en serie con un trimpot de 2,2 M ohms para hacer el ajuste de sensibilidad.

   La salida del circuito consiste en un paso con un transistor accionando un relé. El tipo de relé utilizado depende de la carga que se va a controlar.

   El relé sugerido en el proyecto es para 2 A y acciona simplemente el LED2.

   Los otros dos contactos del mismo relé se pueden utilizar para controlar un circuito externo.

 

Montaje

   El circuito completo del Biestable para Sensores se muestra en la figura 3,

 

Figura 3 - Circuito completo de la llave biestable
Figura 3 - Circuito completo de la llave biestable | Haga click en la imagen para ampliar |

 

 

La disposición de los componentes para la versión básica se muestra en la figura 4.

 

Figura 4 - Aspecto del montaje
Figura 4 - Aspecto del montaje | Haga click en la imagen para ampliar |

 

   

Vea que pequeñas variaciones para esta disposición son perfectamente normales, dependiendo de los componentes usados. El relé, por ejemplo, puede tener una disposición de terminales distinta de la indicada.

   La foto muestra el montaje final usando un sensor tipo reed de alarma.

 

Figura 5 - Uso del circuito para invertir la rotación de un motor
Figura 5 - Uso del circuito para invertir la rotación de un motor

 

   La aproximación de un imán de este sensor provoca el disparo del circuito.

   En el montaje observe con cuidado la posición de los circuitos integrados, del diodo, del transistor y la polaridad de los LED.

   La alimentación se puede hacer con 4 pilas comunes (AA) o fuente. Recuerde que el consumo más grande ocurrirá cuando el relé esté energizado, es decir, con LED2 encendido.

 

Prueba y uso

   Para probar el aparato, basta con conectar el soporte de pilas a la matriz observando su polaridad.

   Aproximando y alejando un imán del sensor, como muestra la figura 3, el LED1 debe encenderse durante unos segundos y el relé conmutar. Si LED2 estaba encendido, se apaga y se apagó se enciende.

   Al acercar y alejar el imán de nuevo, el LED1 se enciende durante unos segundos y el relé conmuta de nuevo.

   Una posibilidad interesante para eliminar el relé del montaje, en caso de que pequeñas cargas alimentadas por la misma tensión de la batería sean controladas, consiste en el uso de un transistor Darlington de potencia, como muestra la figura 6.

 

  Figura 6 - Uso de un Darlington de potencia
  Figura 6 - Uso de un Darlington de potencia

 

   Este circuito puede controlar cargas hasta 1,5 A, debiendo el transistor montarse en un radiador de calor.

   En la condición de relé desenergizado y LEDs apagados, el consumo del circuito es muy bajo, del orden de 1 mA.

   Consumo menor aún puede obtenerse con el uso de la versión CMOS del circuito integrado 555.

   Observamos que el circuito también puede ser alimentado por una tensión de 12 V, bastando para ello usar un relé para esa tensión.

 

CI-1 - 555 - circuito integrado - temporizador

CI-2 - 4013 - circuito integrado CMOS - Flip-flop tipo D

Q1 - BC548 - transistores NPN de uso general

D1 - 1N4148 - diodo de silicio de uso general

LED1, LED2 - LEDs comunes de cualquier color

 

Resistores: (1/8 W, 5%)

R1 - 10 k ohms - marrón, negro, naranja (*)

R2 - 100 k ohms - marrón, negro, amarillo (*)

R3, R5 - 560 ohms - verde, azul, marrón

R4 - 1,2 k ohms - marrón, rojo, rojo

 

Capacitores:

C1 - 2,2 uF - electrolítico - cualquier tensión superior a 6 V (*)

C2 - 33 0 uF - electrolítico - cualquier tensión superior a 6 V

 

Varios:

X1 - sensor (magnético, microswitch, etc.) (*)

K1 - Relé de 6 V x 100 A

B1 - 6 V - 4 pilas comunes o fuente

Matriz de contactos, soporte de pilas, cables, etc.

 

 

 

18.925MBMemory Usage47.31msRequest 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" => 1749215548 "last" => 1749215548...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.91KB) (365μs)
  • afterInitialise (1.14MB) (3.9ms)
  • afterRoute (179.21KB) (976μs)
  • beforeRenderComponent com_content (100.98KB) (411μs)
  • Before Access::preloadComponents (all components) (33.45KB) (185μs)
  • After Access::preloadComponents (all components) (107.06KB) (526μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (26.56ms)
  • Before Access::getAssetRules (id:18752 name:com_content.article.22603) (514.65KB) (782μs)
  • After Access::getAssetRules (id:18752 name:com_content.article.22603) (7.38KB) (32μs)
  • afterRenderComponent com_content (407.04KB) (6.19ms)
  • afterDispatch (2.25KB) (41μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (1.52ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (366μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (98μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.1ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (605μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (74μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (206μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (48μs)
  • afterRender (265.75KB) (3.22ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (56.14%)
    26.56ms
    1 x afterRenderComponent com_content (407.04KB) (13.08%)
    6.19ms
    1 x afterInitialise (1.14MB) (8.25%)
    3.90ms
    1 x afterRender (265.75KB) (6.8%)
    3.22ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (3.2%)
    1.52ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.32%)
    1.10ms
    1 x afterRoute (179.21KB) (2.06%)
    976μs
    1 x Before Access::getAssetRules (id:18752 name:com_content.article.22603) (514.65KB) (1.65%)
    782μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.28%)
    605μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.11%)
    526μs
    1 x beforeRenderComponent com_content (100.98KB) (0.87%)
    411μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.77%)
    366μs
    1 x afterLoad (85.91KB) (0.77%)
    365μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.44%)
    206μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.39%)
    185μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.21%)
    98μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.16%)
    74μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.1%)
    48μs
    1 x afterDispatch (2.25KB) (0.09%)
    41μs
    1 x After Access::getAssetRules (id:18752 name:com_content.article.22603) (7.38KB) (0.07%)
    32μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique17.76ms1.58MB
  • SELECT @@SESSION.sql_mode;33μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 171μ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)222μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`39μ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` = :guest67μ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`280μ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)368μ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` = 014.27ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`365μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '22603'123μ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)163μs22.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`205μ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)276μ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`178μ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 ASC401μ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`167μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1144μ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)89μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context62μ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)169μs22.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` = 168μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy