Motores de corriente continua son ampliamente usados en electrodomésticos, juguetes, fabricas, proyectos estudiantiles y universitarios, drones, robótica, automóviles, domótica, etc. de ahí su importancia de conocerlos. en este capítulo aprenderemos sobre su manejo y control con la tarjeta MICROBIT.

 

Los Motores son componentes electromagnéticos capaces de transformar energía

Eléctrica en energía Mecánica. Se clasifican principalmente en Motores de corriente alterna (AC) y motores de corriente continua (DC). Observe la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

En los motores de corriente continua, se controlan principalmente 2 características:

• La velocidad.

• El sentido de giro.

Una de las maneras de controlar la velocidad del motor de corriente continua, es variando el voltaje de alimentación y lo veremos más adelante en este capítulo. Para cambiar el sentido de giro de un motor de corriente continua, es necesario cambiar la polaridad del voltaje de alimentación como muestra la siguiente figura:

 

 


 

 

Para esto es necesario una forma de interruptor o switch que nos permita hacer el cambio de polaridad y por lo tanto el sentido de giro. La manera más sencilla para lograr esto es usar un interruptor de 3 posiciones, 2 polos y 6 patas. Para entender cómo funciona este interruptor podemos analizar el funcionamiento de un interruptor sencillo. La siguiente figura muestra un interruptor de 3 posiciones, 1 polo y 3 patas:

 


| Clique na imagem para ampliar |

 

 

Observemos que cuando el interruptor está en la posición central, no hay ningún tipo de conexión entre las patas. Cuando está hacia la derecha o izquierda, hay conexión entre la pata central y alguna de las otras patas. Para controlar el sentido de giro de un motor de corriente continua, es necesario un interruptor como el descrito anteriormente, pero doble, es decir de 2 polos. La siguiente figura muestra un interruptor de 3 posiciones, 2 polos, 6 patas:

 

 

 


| Clique na imagem para ampliar |

 

Notemos que el funcionamiento es similar al interruptor sencillo. Si observamos y analizamos la siguiente figura, nos podemos dar cuenta como con un interruptor de este tipo, podemos cambiar la polaridad del voltaje de alimentación del motor de corriente continua:

 

 


| Clique na imagem para ampliar |

 

 

La siguiente figura muestra la conexión eléctrica para invertir la polaridad con el interruptor de 3 posiciones, 2 polos, 6 pines:

 

 


| Clique na imagem para ampliar |

 

 

Notemos cómo a partir de la misma fuente de voltaje, es posible la inversión de polaridad. Entendido esto, podemos entender los circuitos integrados utilizados para hacer exactamente lo mismo que el interruptor. Hay una variedad de circuitos integrados para controlar el giro de un motor de corriente continua. En este capítulo utilizaremos el circuito integrado L9110. La mayoría de los circuitos integrados para controlar motores, están basados en un circuito llamado: “puente H”. Para entender cómo funciona este circuito, observe la siguiente figura:

 

 


 

 

 

Notamos que está formada por 4 interruptores y podemos pensar como hacer para invertir la polaridad de voltaje del motor a partir de este circuito. La siguiente imagen muestra como hacer esto:

 

 


| Clique na imagem para ampliar |

 

 

 

Notemos que al cerrar los interruptores: S1 y S4, tenemos una polaridad en el motor. Cuando se cierran los interruptores: S2 y S3, tenemos la otra polaridad. En ambos casos los otros interruptores deben estar abiertos para que el circuito funcione bien. En los circuitos integrados con puente H para el control de motores, en lugar de los interruptores, son usados transistores de potencia, como en el caso del L9110.

 

El circuito integrado L9110 es un driver para manejar motores pequeños. Sus principales características son:

 

• Rango de voltaje de 2.5 hasta 12 Vcc.

• Capacidad de manejar 800 mA continuos por cada canal.

• Es compatible con salida CMOS/TTL, lo cual permite conectarlo directamente al microcontrolador.

 

La siguiente imagen muestra los pinos de circuito integrado L9110:

 


 

 

 

La tabla de verdad para este integrado es:

 

 


 

 

 

Notemos que cuando las entradas: IA y IB están a nivel bajo o están a nivel alto, las salidas se colocan a nivel bajo, lo que hace que el motor no gire o esté apagado. Cuando la entrada: IA, está a nivel alto y IB, está a nivel bajo, entonces tenemos una polaridad en las salidas: OA y OB. Cuando la entrada: IA, está a nivel bajo y IB, está a nivel alto, tenemos la otra polaridad.

 

 

 

Controlando el sentido de giro de un motor CC.

 

Para controlar el sentido de giro de un motor CC vamos a usar un módulo con el circuito integrado L9110 como el mostrado en el siguiente circuito:

 


| Clique na imagem para ampliar |

 

 

Este módulo posee 2 circuitos integrados L9110, con el que se pueden manejar 2 motores. Las conexiones son sencillas de realizar. Desde la tarjeta microbit, conecte el positivo y tierra (GND) a el Vcc y GND del módulo. El Pin P1 a una entrada y el Pin P2 a la otra entrada. El programa para controlar el motor es mostrado en la siguiente figura:

 

 


 

 

 


 

 

 

 


 

 

 

Note que el programa en el bloque: “al iniciar”, coloca los Pines P1 y P2 a nivel bajo, con lo cual se apaga el motor. Si es presionado el Botón “A”, girará en un sentido, si es presionado el Botón “B”, girará en el sentido contrario y si es presionado los botones “A” y “B”, el motor se detendrá.

 

El bloque: “escritura digital pin a”, se encuentra en el menú: “Avanzado->Pines”, como muestra la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

De click en este bloque y arrastrarlo hasta encajar en los bloques que los usa.

 

El siguiente programa es muy similar al programa anterior, con la diferencia que cuando el botón “A” o “B” es liberado el motor se apaga.

 

 


 

 

 

 


 

 

 

El bloque: “if them entonces”, lo encontramos en el menú: “Lógica”, como muestra la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

Otra diferencia es que no se ha utilizado el bloque: “al presionarse el botón”, sino que se ha usado una expresión para evaluar cuando el botón es presionado. Esta expresión se encuentra en el menú: “Entrada” como es observado en la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

Para conseguir expandir el bloque: “si entonces”, de click en el símbolo “+”. Después de click en el bloque: “botón presionado”, y arrastre hasta encajar en el bloque: “si no, si entonces”, como muestra la siguiente figura.

 

 


| Clique na imagem para ampliar |

 

 

En el menú desplegable seleccione el botón “B”, como muestra la siguiente imagen:

 

 


 

 

 

Algo muy utilizado con motores de corriente continua es la automatización, es decir la programación de ciertos movimientos en uno o en los 2 sentidos de giro. El siguiente programa muestra un ejemplo de esto:

 


 

 

 


 

 

 

El programa comienza apagando el motor. Después lo hace girar en un sentido por 3 segundos, luego lo apaga por 1 segundo, luego lo gira en el sentido contrario por 5 segundos, luego se apaga por 2 segundos y luego gira en el mismo sentido por 4 segundos. Este bucle se repite continuamente. Esta técnica es muy usada en mecanismos. Normalmente, son usados sensores para detener las temporizaciones. Todo depende de lo que se desea hacer con el motor. Practique cambiando tiempos y sentidos de giro.

 

 

 

Controlando la velocidad de un motor CC.

 

Para controlar la velocidad de un motor de corriente continua (CC), es necesario variar su voltaje de alimentación. Una manera de controlar el voltaje es usando la técnica llamada PWM o Modulación por ancho del pulso. La siguiente figura muestra como es una señal, usando PWM:

 


| Clique na imagem para ampliar |

 

 

La técnica de modulación por ancho de pulso consiste en mantener la señal por un tiempo a nivel pósito (on) y luego mantenerla a nivel negativo (off). Dependiendo de cuánto tiempo dura la señal en positivo, se observa que hay un tiempo, el cual es llamado: ciclo de trabajo (Duty Cicle). Este ciclo es emitido varias veces por el pin y con una frecuencia constante por segundo (periodo). Así, por ejemplo, si queremos con una tensión de 5 Volts, obtener 1 volt, debemos controlar el 20% del ciclo de trabajo. Si queremos 2.5 Volts, el 50% del ciclo de trabajo. En otras palabras, se modula el ancho del pulso. Con esta técnica, podemos controlar la velocidad de los motores de Corriente Continua. Las señales PWM, en la tarjeta microbit, están en un rango de 3 Volts. Por eso es necesario que los circuitos integrados para controlar los motores acepten este nivel de tensión.

 

Con la tarjeta microbit, podemos generar señales PWM. Para esto en necesario que el pin que se va a utilizar como control PWM sea programado como un pin de señal analogica: Para hacer esto vaya al menú: “Avanzado->Pines” y de click en el bloque: “escritura analogica pin a” y arrestrelo hasta encajar en bloque: “al iniciar”, como muestra la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

Ahora es necesario programar el periodo de la señal PWM. Para hacer esto vaya al menú: “Avanzado->Pines”, de click en el bloque: “Establecer periodo analógico pin en (us)” y arrastrarlo hasta encajar en bloque: “al iniciar” como muestra la siguiente figura:

 


| Clique na imagem para ampliar |

 

 

Ahora, se puede seleccionar el pin que se desea programar como PWM, dando click en el menú desplegable del bloque: “escritura analógica pin a” y del bloque: “establecer periodo analógico pin en (us)”, como muestra la siguiente figura:

 

 


| Clique na imagem para ampliar |

 

 

El siguiente programa nos permite controlar una salida PWM usando el botón “A”, para incrementar el ciclo de trabajo y el botón “B”, para decrementar el ciclo de trabajo:

 


 

 

 

 


 

 

 

 


 

 

 

Con una señal PWM es posible cambiar el brillo de un LED y así comprender mejor cómo funciona esta técnica. Con el siguiente circuito podemos probar el programa anterior:

 


 

 

 

 

Para hacer este programa, cree una variable: “cicloTrabajo”, como muestra la siguiente imagen:

 

 


 

 

 

Y construya el programa como mostrado anteriormente. El programa también lo podemos usar para controlar la velocidad de un motor de corriente continua usando el circuito integrado L9110, como el mostrado anteriormente para controlar el sentido de giro.

 

El siguiente programa permite manejar una determinada velocidad del motor, pero en los 2 sentidos de giro:

 

 

 


 

 

 

 


| Clique na imagem para ampliar |

 

 


| Clique na imagem para ampliar |

 

 

Note que hemos usado configurado los pines P1 y P2 para ser salidas PWM.

 

 

 

Flechas para mostrar sentido o dirección.

 

Existe un bloque que permite mostrar fechas para indicar algún sentido o dirección. El bloque se llama: “mostrar flecha” y se encuentra en el menú:”Básico”, como muestra la siguiente figura:

 

 


 

 

 

El siguiente programa muestra las flechas que el bloque ofrece:

 


 

 

 

En la matriz de LEDs vamos a observar en forma secuencial la siguiente flecha:

 

 


| Clique na imagem para ampliar |

 

 

Todas esta flechas se encuentran en el menú desplegable del bloque: “mostrar flecha”, como muestra la siguiente imagen:

 

 


 

 

 

El siguiente programa es el mismo que usamos para controlar el sentido de giro del motor usando los bloques: “al presionar el botón”, pero hemos utilizado el bloque: “mostrar flecha” para indicar el sentido de giro del motor:

 

 


| Clique na imagem para ampliar |

 

 

 

18.933MBMemory Usage39.08msRequest 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
array:1 [ "c2123392c06423339225f3431360b7e6" => "8dgm72jshom3fs8j2j62kbp34g" ]
$_SERVER
array:52 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 4 "timer" => array:3 [ "start" => 1751772589 "last" => 1751772590...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.55KB) (285μs)
  • afterInitialise (1.14MB) (3.55ms)
  • afterRoute (123.27KB) (791μs)
  • beforeRenderComponent com_content (100.79KB) (423μs)
  • Before Access::preloadComponents (all components) (33.45KB) (199μs)
  • After Access::preloadComponents (all components) (107.06KB) (354μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (19.46ms)
  • Before Access::getAssetRules (id:26946 name:com_content.article.30588) (514.65KB) (872μs)
  • After Access::getAssetRules (id:26946 name:com_content.article.30588) (7.38KB) (31μs)
  • afterRenderComponent com_content (436.82KB) (5.78ms)
  • afterDispatch (2.25KB) (48μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.44KB) (1.54ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (314μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (89μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (129.21KB) (1.12ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (542μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (67μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (182μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (48μs)
  • afterRender (290.06KB) (3.27ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (49.81%)
    19.46ms
    1 x afterRenderComponent com_content (436.82KB) (14.79%)
    5.78ms
    1 x afterInitialise (1.14MB) (9.08%)
    3.55ms
    1 x afterRender (290.06KB) (8.36%)
    3.27ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.44KB) (3.93%)
    1.54ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (129.21KB) (2.86%)
    1.12ms
    1 x Before Access::getAssetRules (id:26946 name:com_content.article.30588) (514.65KB) (2.23%)
    872μs
    1 x afterRoute (123.27KB) (2.02%)
    791μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.39%)
    542μs
    1 x beforeRenderComponent com_content (100.79KB) (1.08%)
    423μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.91%)
    354μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.8%)
    314μs
    1 x afterLoad (85.55KB) (0.73%)
    285μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.51%)
    199μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.47%)
    182μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    89μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.17%)
    67μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.12%)
    48μs
    1 x afterDispatch (2.25KB) (0.12%)
    48μs
    1 x After Access::getAssetRules (id:26946 name:com_content.article.30588) (7.38KB) (0.08%)
    31μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique10.82ms1.63MB
  • SELECT @@SESSION.sql_mode;30μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 158μs1.31KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • UPDATE `incbmx_session` SET `guest` = :guest , `time` = :time , `userid` = :user_id , `username` = :username , `client_id` = :client_id WHERE `session_id` = :session_id142μs992BParams/libraries/src/Session/MetadataManager.php:316Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`57μs608B/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` = :guest75μ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`194μs3.98KBParams/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)210μ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.73ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`329μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '30588'156μ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)185μs54.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`177μ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)223μ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`160μ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 ASC373μ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`186μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1153μ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)91μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context63μ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)155μs54.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` = 174μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy