Parte importante de proyectos que utilizan microcontroladores es el shield. Microcontroladores con sensores y dispositivos de salida que requieren altas corrientes son fundamentales para el control de solenoides, relés, motores y otros dispositivos de alta potencia. Vea en este artículo cómo trabajar con estas interfaces importantes.

Las salidas de un microcontrolador, tales como los utilizados en el Arduino juntas sólo pueden suministrar corrientes de 40 mA a 5 V y 50 mA con 3 V.

 

Figura 1 – Arduino Uno
Figura 1 – Arduino Uno

 

 

Esto significa que si queremos controlar circuitos o dispositivos de corriente más alta no se puede hacer su conexión directa en estas placas.

Incluso teniendo en cuenta las situaciones en que controlar cargas de mayor potencia, si usamos todas las salidas simultáneamente para ello, corremos el riesgo de sobrecargar el microcontrolador, llevándolo al límite de su disipación.

Para controlar cargas de mayor potencia por encima de 50 mA, tenemos que utilizar algún tipo interfaz de capacidad más alta, generalmente conocida como "Shields".

Un Shield de salida no es más que un circuito de potencia, que a partir de las salidas del microcontrolador como Arduino, puede controlar una carga determinada.

Algunos Shields ofrecen la posibilidad para aislar la salida del circuito microcontrolado o el dispositivo controlado, agregando la seguridad que es especialmente importante cuando el circuito o dispositivo administrado está conectado a la red eléctrica.

En General, los Shields se pueden montar con facilidad, tanto experimentalmente en matrices de contactos (protoboards) o en definitivo en placas universales, y hay también la posibilidad de comprar la unidad montada.

Placas que contienen conjuntos de relés, puentes H son comunes para control de cargas de mayor potencia o con la característica de retrotracción.

Figura 2 – Shield con 4 relés
Figura 2 – Shield con 4 relés

 

 

Sin embargo, hay casos donde no existe la placa pronta o si hay el ofrece mucho más allá de lo que necesitamos.

Por ejemplo, podemos necesitar controlar una carga de potencia a través de un relé, pero sólo tenemos shields en venta con 4 relés.

Pagar cuatro y utilizar sólo uno, que además de ser un desperdicio, puede poner en peligro un proyecto en que se quiera ocupar el menor espacio posible.

En este caso, incluso es mejor montar el shield y para ello es necesario tener un circuito para este propósito.

En nuestro sitio web (www.newtoncbraga.com.br) tenemos varias opciones para estas interfaces usando componentes comunes para agregar funciones adicionales como, por ejemplo, una sincronización externa u otro dispositivo que no necesita ser programado.

Otra posibilidad es que si no existe un shield para lo que queremos hacer lo que requiere no un circuito proprio así como el circuito de sí mismo.

Por ejemplo, si estamos creando una alarma audible de alta potencia, más allá del circuito de potencia que implica, por ejemplo, un relé, también necesitamos de una sirena que será controlada.

Con la construcción de un escudo para esto, tenemos un enfoque diferente al problema: podemos hacer la sirena controlada por microcontrolador, por ejemplo, con la eliminación de muchos componentes de Arduino.

Eliminamos el relé y el control digital de la sirene. En este libro tenemos varios circuitos para ello.

Podemos usar shields, como el de la figura 3 que contiene una matriz de contactos para desenvolvimiento.

 

 

Figura 3 – Shield de desenvolvimiento
Figura 3 – Shield de desenvolvimiento

 

 

Más que eso, podemos usar nuestras simulaciones para verificar si un proyecto funciona no necesariamente utilizando un microcontrolador que está disponible en el simulador.

Por ejemplo, podemos simular el funcionamiento de un bloque, como se muestra en la figura siguiente, usando el generador de funciones ajustando la salida de pulsos rectangulares como los obtenidos en una salida de Arduino, como se muestra en la figura 4.

 

Figura 4 – Simulando el funcionando de un Shield con el Multisim
Figura 4 – Simulando el funcionando de un Shield con el Multisim

 

 

Basta ajustar el la salida del generador a para señales rectangulares de 3.3 V o 5 V y verificar si el bloque funciona, según sea el caso.

Veja que esta simulación tiene una lámpara de 5 V, pero la tensión puede ser mayor. En el ejemplo tenemos una lámpara de alta potencia controlado por el microcontrolador.

 

La electrónica

Placas de microcontroladores como el Arduino, MSP430, PIC y otros contienen la mayor parte de la electrónica que necesitan nuestros proyectos, más conocimientos básicos de electrónica son fundamentales para el desarrollo de un proyecto, excepto en algunos casos en que los shields no los hagan todo.

Conocer electrónica para saber qué conectar, cómo conectarse y qué programación debe hacer es esencial para los proyectos de estos tableros.

En la web del autor, además de una gran cantidad de artículos teóricos sobre circuitos, proyectos e interpretación de diagramas, tenemos el principio de funcionamiento de todo lo que es utilizado, e también el lector tendrá la posibilidad de comprar libros y cursos.

En particular, recomendamos los libros de nuestra serie de cursos como el Electrónica - Curso Básico, Curso – Electrónica Analógica - Electrónica Digital 1 y 2, y Electrónica de Potencia. (Brevemente en español)

 

Figura 5 – Nuestros libros
Figura 5 – Nuestros libros

 

 

Y por supuesto, al comprar su placa, Arduino, por ejemplo, será interesante contar con una serie de contactos y un buen stock de componentes básicos como transistores, resistores, capacitores, diodos, relés, LEDs, que en muchos casos pueden adquirirse en forma de kits.

Desde allí es solo crear tus circuitos, recordando la programación que tratamos más adelante.

 

 

 

 

Shields Sensores

De la misma manera que tenemos los circuitos actuadores, las señales que controlan nuestro proyecto pueden venir de los más diversos tipos de sensores.

Muchos de ellos pueden conectarse directamente a las placas, porque proporcionan señales compatibles como LDRs, termistores, micro switches, etc.

Sin embargo, en algunos casos, las señales no son compatibles con las entradas lo que requiere shields especiales para procesamiento en una forma apropiada de excitación.

En este caso, tenemos shields de sensores inerciales y señales de radio hasta los que reciben una señal de un teléfono celular, o control a través de conexión WiFi del tablet.

Aunque en algunos casos también se pueden montar estos shield, hay muchos de ellos que se pueden comprar.

 

Figura 6 – Shields sensores
Figura 6 – Shields sensores

 

 

Donde conseguir Shields

Analizando la información de Google, el lector encontrará varios proveedores de shield en este país, además de las propias placas Arduino y otros microcontroladores.

Los precios varían según que hace cada shield.

MOUSER ELECTRONICS también ofrece shields de una excelente calidad, únicos ofrecedoresde shields y no lo que le permite poner en duda su fiabilidad.

Simplemente accede a su web a través de nuestra publicidad y escriba en la búsqueda en la palabra « Shields » que el lector verá todas las opciones disponibles.

 

 

Programación

El lenguaje de programación utilizado en la mayoría de los casos no ofrece dificultades de aprendizaje.

El lenguaje C y C++ es la más ampliamente utilizada en muchos cursos y tutoriales en Internet.

En muchos casos, se puede encontrar programas de " sketchs " listos, que fácilmente pueden ser utilizados o adaptados para lo que deseamos.

 

Conclusión

De una época en la que incluso los componentes eran montados en casa, con cosas improvisadas, pasando a través de los componentes comunes y circuitos integrados en mercado se ha llegado al "maker" del siglo 21.

A partir de placas microcontroladas y shields casi cualquier proyecto se puede crear, desde robots y drones hasta vestibles, artículos para el hogar que en muchos casos pueden llegar a ser excelentes productos comerciales.

 

18.992MBMemory Usage53.77msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
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" => 1741906949 "last" => 1741906949...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.61KB) (231μs)
  • afterInitialise (1.14MB) (4.05ms)
  • afterRoute (179.16KB) (973μs)
  • beforeRenderComponent com_content (100.65KB) (458μs)
  • Before Access::preloadComponents (all components) (33.49KB) (194μs)
  • After Access::preloadComponents (all components) (107.06KB) (400μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (28.24ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.18KB) (2.6ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (41μs)
  • afterRenderComponent com_content (439.81KB) (6.65ms)
  • afterDispatch (2.25KB) (62μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (2.32ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (563μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (120μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (1.39ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (725μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (91μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (233μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (70μs)
  • afterRender (300.23KB) (4.22ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (52.52%)
    28.24ms
    1 x afterRenderComponent com_content (439.81KB) (12.37%)
    6.65ms
    1 x afterRender (300.23KB) (7.85%)
    4.22ms
    1 x afterInitialise (1.14MB) (7.54%)
    4.05ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.18KB) (4.83%)
    2.60ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (4.32%)
    2.32ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (2.59%)
    1.39ms
    1 x afterRoute (179.16KB) (1.81%)
    973μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.35%)
    725μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (1.05%)
    563μs
    1 x beforeRenderComponent com_content (100.65KB) (0.85%)
    458μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.74%)
    400μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.43%)
    233μs
    1 x afterLoad (85.61KB) (0.43%)
    231μs
    1 x Before Access::preloadComponents (all components) (33.49KB) (0.36%)
    194μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    120μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.17%)
    91μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.13%)
    70μs
    1 x afterDispatch (2.25KB) (0.12%)
    62μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.08%)
    41μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
23 statements were executed, 5 of which were duplicates, 18 unique11.54ms1.57MB
  • SELECT @@SESSION.sql_mode;31μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 174μ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)163μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`58μ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` = :guest83μ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`270μ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)237μ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.8ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`298μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.377'60μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`264μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '377'213μ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)186μ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`199μ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)237μ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`186μ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 ASC420μ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`190μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1151μ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)89μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context68μ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)193μ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` = 166μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content
  • warningassets - No asset found for com_content.article.377, falling back to com_content