En este artículo, vamos a ver cómo los medios puentes H y puentes H completo se puede utilizar para controlar motores de corriente continua. Los puentes H son muy importantes para los diseñadores de robótica y mecatrónica. A medida que simplifican los circuitos, permitiendo el control de motores de corriente continua directamente de señales eléctricas sin necesidad de relés u otras partes mecánicas que describimos en capítulos anteriores. El propósito de este artículo es mostrar cómo funciona el puente H y dar algunos ideales sobre cómo usarlo. Estos circuitos también se pueden utilizar en el control de otras cargas sensibles a la polaridad tales como solenoides y electroimanes.

Nota:. Este texto fue originalmente escrito por el autor para una revista en Brasil y después incluido en su libro Robótica, Mecatrónica e Inteligencia Artificial (Robotics, Mechatronics and Artificial Intelligence) publicado en Estados Unidos.

 

   La inversión de un motor es una tarea sencilla utilizando un relé con contactos DPDT. Pero el uso de relés presenta algunos inconvenientes: los relés son relativamente caros, algunos son grandes y pesados y usan partes mecánicas que pueden fallar.

   Además, puede ser difícil encontrar modelos con las características deseadas.

   El uso de transistores como conmutadores ofrece al diseñador nuevos recursos para el control de cargas de corriente continua. En esta sección se mostrará cómo utilizar transistores para esta tarea.

   Pero, por desgracia, invertir un motor de esta manera requiere un interruptor DPDT, mientras que un transistor que funciona como un interruptor es una unidad SPST.

 

   ¿Cómo resolvemos este problema?

   La solución se proporciona aquí. Dos o cuatro transistores se pueden instalar juntos en algunas configuraciones especiales, permitiendo el control de un motor de CC de la misma manera que un interruptor DPDT.

   Para esta tarea se utilizan dos configuraciones especiales: la media puente y el puente H o puente completo, como también se denomina.

   Veamos cómo funcionan y cómo podemos usarlos en proyectos que involucran robótica y mecatrónica.

 

El medio puente

  Dos baterías y dos interruptores SPST se utilizan en el circuito de la Figura 1.

 

Figura 1 - El puente de media base con conmutadores
Figura 1 - El puente de media base con conmutadores

 

 

   En el funcionamiento normal, son posibles dos condiciones:

 

1. Si SW1 está cerrado, la corriente es suministrada por B1 y el motor avanza.

2. 2. Si SW2 está cerrado, la corriente fluye a través del motor en la dirección opuesta, ahora suministrada por B2. Y corre hacia atrás.

 

   Debe quedar claro para el lector que tener SW1 y SW2 cerrados al mismo tiempo es una condición prohibida, ya que hace que las dos baterías funcionen en un cortocircuito.

   Reemplazando los interruptores con transistores (bipolares o FET), podemos controlar el motor mediante la polarización de los transistores desde fuentes de tensión externas como se muestra en la figura 2.

 

Figura 2 - Uso de dos conmutadores de transistor
Figura 2 - Uso de dos conmutadores de transistor

 

 

   La polaridad de la tensión de control depende del tipo del transistor. Los FET de potencia de NPN y P-canal se hacen conductores cuando se aplican tensiones positivas a sus bases o compuertas.

   Alternativamente, los transistores PNP se hacen conductores cuando se aplican voltajes negativos (o están conectados a tierra).

   La principal desventaja de esta configuración (utilizando sólo dos transistores) es que necesitamos una fuente de alimentación dual o simétrica. Esta configuración aumenta el grado de complejidad al diseñar los circuitos de accionamiento.

   La solución está dada por una configuración que utiliza cuatro transistores como se muestra a continuación.

 

Puente H o puente completo

   Empecemos desde un circuito básico en el que ahora usamos cuatro conmutadores SPST. Como se muestra en la Figura 3.

 

Figura 3 - Puente completo con conmutadores
Figura 3 - Puente completo con conmutadores

 

 

En funcionamiento, podemos imaginar dos situaciones:

1. En la Figura 3a. Cuando cerramos SW1 y SW4, la corriente fluye en una dirección. Y el motor corre hacia adelante.

2. En la figura 3b, cuando cerramos SW2 y SW3, la corriente fluye en la dirección opuesta. Y el motor corre hacia atrás.

 

   Es obvio que SW1 y SW3 no se pueden cerrar al mismo tiempo, ya que este procedimiento causará un cortocircuito en las baterías. Por la misma razón, SW2 y SW4 no se pueden cerrar al mismo tiempo.

   Vamos a reemplazar los interruptores con transistor bipolar o FET como se muestra en la Figura 4.

 

Figura 4 - Puente completo utilizando cuatro transistores bipolares
Figura 4 - Puente completo utilizando cuatro transistores bipolares

 

 

   Dependiendo de la polarización, podemos hacer que los transistores actúen como interruptores o llaves, conduciendo o no conduciendo la corriente.

   En este caso, también tenemos la condición prohibida donde Q1 y Q3 conducen, haciendo que la batería funcione en un cortocircuito, y la misma condición para Q2 y Q4.

   Para lograr el control adecuado de este puente, tenemos dos posibilidades:

1. Podemos excitar directamente los transistores de sensores, interruptores, u otro circuito en una configuración que sea "inteligente" bastante para evitar las condiciones prohibidas.

2. Podemos añadir la configuración o lógica "inteligente" al puente, evitando así los estados prohibidos.

 

En el segundo caso, la configuración "inteligente" depende del tipo de transistores utilizados. Si se utilizan transistores PNP y NPN, por ejemplo, es suficiente conectar juntos las bases de cada par de transistores, polarizándolos de acuerdo con la dirección que debe ejecutar el motor.

   Si utilizamos sólo un tipo de transistor, transistores bipolares NPN o potencia MOSFET de canal P, se deben agregar inversores al circuito para proporcionar la lógica necesaria para evitar condiciones prohibidas.

   En todos estos casos, podemos ver que las señales deben ser aplicadas al transistor para que Q1 y Q3 no conduzcan al mismo tiempo (también, Q2 y Q4).

Estas dos posibilidades nos llevan a varios tipos de circuitos para el control de motores de corriente continua con un puente medio o puente completo, dependiendo de las fuentes de señal o de las fuentes de tensión de control.

  En la figura 5a, tenemos sólo una entrada, y el motor corre en una dirección cuando la entrada es alta (tensión positiva).

 

Figura 5 - Dos puentes básicos que utilizan transistores bipolares
Figura 5 - Dos puentes básicos que utilizan transistores bipolares

 

 

    Se mueve en la dirección opuesta cuando la entrada es baja (masa). Observe que esta configuración puede hacerse compatible con dispositivos lógicos tales como TTL y CMOS.

   La otra opción, mostrada en la figura 5b, utiliza dos fuentes de señal. En este caso, tenemos cuatro posibilidades de operación, dadas en la siguiente tabla:

   Esta combinación de entradas puede cambiar de acuerdo con la configuración, ya sea que usemos sólo transistores NPN, sólo transistores PNP, o ambos NPN y PNP en el mismo puente.

   Los circuitos prácticos que el lector puede encontrar en esta sección mostrarán cómo las configuraciones pueden cambiar.

 

 

19.013MBMemory Usage40.42msRequest 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:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1748853330 "last" => 1748853330...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.3KB) (187μs)
  • afterInitialise (1.14MB) (3.75ms)
  • afterRoute (179.21KB) (897μs)
  • beforeRenderComponent com_content (100.98KB) (386μs)
  • Before Access::preloadComponents (all components) (33.45KB) (176μs)
  • After Access::preloadComponents (all components) (107.06KB) (476μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (19.57ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (2.08ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (29μs)
  • afterRenderComponent com_content (436.6KB) (5.38ms)
  • afterDispatch (2.25KB) (42μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (1.55ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (360μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (102μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (1.15ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (548μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.22KB) (74μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (190μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (51μs)
  • afterRender (304.81KB) (3.31ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (48.42%)
    19.57ms
    1 x afterRenderComponent com_content (436.6KB) (13.3%)
    5.38ms
    1 x afterInitialise (1.14MB) (9.28%)
    3.75ms
    1 x afterRender (304.81KB) (8.2%)
    3.31ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (5.14%)
    2.08ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (3.83%)
    1.55ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (2.84%)
    1.15ms
    1 x afterRoute (179.21KB) (2.22%)
    897μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.36%)
    548μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.18%)
    476μs
    1 x beforeRenderComponent com_content (100.98KB) (0.95%)
    386μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.89%)
    360μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.47%)
    190μs
    1 x afterLoad (85.3KB) (0.46%)
    187μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.44%)
    176μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.25%)
    102μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.22KB) (0.18%)
    74μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.13%)
    51μs
    1 x afterDispatch (2.25KB) (0.1%)
    42μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.07%)
    29μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
23 statements were executed, 5 of which were duplicates, 18 unique11.27ms1.58MB
  • SELECT @@SESSION.sql_mode;31μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 182μ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)167μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`49μ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` = :guest72μ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`245μ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)320μ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` = 07.67ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`316μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.2220'80μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`281μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '2220'119μ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)148μ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`171μ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)219μs3.97KBParams/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`163μ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 ASC436μs6.06KBParams/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`166μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1158μs656B/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)92μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context59μ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)160μ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` = 170μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content
  • warningassets - No asset found for com_content.article.2220, falling back to com_content