El proyectista actual trabaja fundamentalmente con placas de microcontroladores traís como el Arduino, PIC, MSP430. Si bien los miles de circuitos que tenemos en nuestro sitio pueden ser utilizados solos como montajes completos, muchos de ellos pueden servir de Shields o interfaces para proyectos microcontrolados. Como hacer esto es lo que muchos no saben y que enseñar en este artículo.

    Hubo tiempo en que los montadores de aparatos electrónicos fabricaban incluso sus propios componentes.

    Con la evolución de la tecnología, los componentes pasaron a estar disponibles y luego placas y ahora incluso circuitos completos que hacen el "grueso" del trabajo de un proyecto, que son las placas de los microcontroladores.

   El "maker" moderno, que es montador o creador de proyectos electrónicos incluso para la comercialización, puede contar con soluciones fantásticas para sus proyectos que son los microcontroladores teniendo como ejemplo el Arduino.

   Sin embargo, el microcontrolador no lo hace todo, sólo el principal, lo que es decir lo que el resto del circuito debe hacer. El resto, sin embargo no está incluido en el proyecto y admite dos soluciones: o se adquiere un escudo listo o se fabrica uno. En nuestro sitio existen miles de circuitos que pueden servir de Shields para Arduinos y otros microcontroladores.

   Sin embargo, muchos no se crearon en la época en que estas placas estaban disponibles. Ellos fueron, en su mayoría creados para funcionar solos.

    Son controles de motores de paso, drivers de relés, sirenas, accionadores de circuitos de potencia conectados a la red de energía, controladores de solenoides, accionadores de lámparas y mucho más.

    Los Arduinos y otros microcontroladores tienen salidas que permiten muchos tipos de controles de periféricos, sin embargo, poseen características específicas.

   Así, si vamos a utilizar uno de nuestros miles de proyectos para un proyecto que deba ser controlado por un Arduino, por ejemplo, necesitamos tener en cuenta estas características y debemos tener un modo específico y correcto de hacerlo.

    Si no tomamos en cuenta, eso dos cosas malas pueden ocurrir: nuestro proyecto no funciona o nuestra placa de microcontrolador quema.

   Como adaptar un bloque constructivo que es un proyecto de nuestro sitio para operar como un Shield para Arduino u otro microcontrolador es lo que veremos a continuación.

 

 

   Las salidas del Arduino

 

      El Arduino posee 14 pinos de entradas y salidas, siendo seis de ellos pudiendo ser usados ​​como moduladores PWM.

   Cuando se utilizan como salidas tenemos la posibilidad de operar con 3,3 V caso en que la corriente máxima de cada salida es de 50 mA y con 5 V la corriente máxima es de 40 mA.

    Esta corriente permite el accionamiento de LEDs, relés y otros dispositivos de menor consumo, pero existe el problema del accionamiento simultáneo. Si todos los pines suministran 40 mA corriente total del dispositivo pueden sobrepasar la capacidad de disipación del microcontrolador, causando problemas.  Así, para el accionamiento de varias cargas o de cargas con corrientes mayores, es importante usar un circuito externo o Shield.

   Por ejemplo, si vamos a utilizar el Arduino en una alarma y deseamos que en lugar de un simple bocadillo conectado a la salida tengamos una sirena potente que a partir de un MOSFET excite con varios vatios (y cientos de miliamperios) un altavoz, no podemos hacer su conexión directa.

    La sirena debe tener una alimentación separada por una fuente adicional y sólo la excitación será hecha por el Arduino.

    Vamos a dar un ejemplo de cómo se puede hacer.

   

 

Controlando Una Sirena

 

   Tomemos como ejemplo el oscilador de potencia encontrado en nuestro sitio con la designación ART645S.  Vamos a utilizarla como un Shield para nuestro proyecto de alarma utilizando el Arduino Uno, por ejemplo.

   En nuestro programa vamos a hacer que la sirena sea habilitada a intervalos regulares de 2 segundos, cuando entonces emitirá el sonido de una sirena.

   Su circuito básico se da en la figura 1.

 

Figura 1 - El circuito original
Figura 1 - El circuito original | Clique na imagem para ampliar |

 

   

Este circuito fue originalmente sugerido como un oscilador para la práctica de la telegrafía. Podemos utilizar un MOSFET de potencia o incluso un Darlington para obtener mayor intensidad de sonido. Para ello tenemos que hacer algunos cambios.

   Al analizar el circuito vemos que el oscilador está habilitado cuando el pino 1 del 4093 se encuentra en el nivel alto. Si este pino se coloca en el nivel bajo, el oscilador se paraliza.

    Así, podemos controlar la sirena por el pino 1, pero debemos alimentar el circuito integrado con 3,3 V o 5 V según el caso.  Se separa entonces la alimentación del circuito integrado para ser hecha por el propio Arduino, pues el consumo es bajo.

    Otra preocupación es no dejar la salida del pino 4 en el nivel alto cuando el circuito está deshabilitado. Si esto ocurre, el transistor estará en una condición de plena conducción que significa una corriente elevada que puede quemar.

 Así, unimos el pino 5 al 6. Con eso cuando el pino es al nivel bajo, la salida 3 del bloque correspondiente irá al nivel alto y el pino 4 invertido yendo al nivel bajo nuevamente, y manteniendo el transistor en el corte.

    Vea que el transistor puede ser alimentado con 12 V y con ello se obtiene mayor tensión.  El circuito final quedará entonces como se muestra en la figura 2.

 

 

Figura 2 - El circuito cambiado
Figura 2 - El circuito cambiado | Clique na imagem para ampliar |

 

   

En la figura 3 tenemos otro ejemplo de circuito que publicamos (ART2234 - Señal Sonora Controlada Lógicamente) que también puede ser adaptado para funcionar con un Shield aislado.

 

Figura 3 - Otro ejemplo de circuito
Figura 3 - Otro ejemplo de circuito | Clique na imagem para ampliar |

 

    

El resistor R2 será de 270 ohmios para salidas de 3 V y de 470 ohmios para salidas de 5 V.

  

 

Conclusión

 

    Tenemos en el sitio miles de circuitos como este que, con pequeños cambios pueden funcionar como Shields controlados por las salidas de Arduino.

   Todo depende de la habilidad del lector y de un conocimiento básico para saber qué debe ser modificado.

 

 

 

18.932MBMemory Usage39.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" => 1744363090 "last" => 1744363090...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.73KB) (228μs)
  • afterInitialise (1.14MB) (3.3ms)
  • afterRoute (179.16KB) (815μs)
  • beforeRenderComponent com_content (100.65KB) (412μs)
  • Before Access::preloadComponents (all components) (33.45KB) (176μs)
  • After Access::preloadComponents (all components) (107.06KB) (355μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (20.31ms)
  • Before Access::getAssetRules (id:27405 name:com_content.article.31038) (514.65KB) (747μs)
  • After Access::getAssetRules (id:27405 name:com_content.article.31038) (7.38KB) (37μs)
  • afterRenderComponent com_content (390.18KB) (6.28ms)
  • afterDispatch (2.25KB) (49μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (1.55ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (299μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (94μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (1.1ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (550μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (67μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (183μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (56μs)
  • afterRender (261.73KB) (3.07ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (51.07%)
    20.31ms
    1 x afterRenderComponent com_content (390.18KB) (15.78%)
    6.28ms
    1 x afterInitialise (1.14MB) (8.29%)
    3.30ms
    1 x afterRender (261.73KB) (7.71%)
    3.07ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.89%)
    1.55ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (2.77%)
    1.10ms
    1 x afterRoute (179.16KB) (2.05%)
    815μs
    1 x Before Access::getAssetRules (id:27405 name:com_content.article.31038) (514.65KB) (1.88%)
    747μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.38%)
    550μs
    1 x beforeRenderComponent com_content (100.65KB) (1.04%)
    412μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.89%)
    355μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.75%)
    299μs
    1 x afterLoad (85.73KB) (0.57%)
    228μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.46%)
    183μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.44%)
    176μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.24%)
    94μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.17%)
    67μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.14%)
    56μs
    1 x afterDispatch (2.25KB) (0.12%)
    49μs
    1 x After Access::getAssetRules (id:27405 name:com_content.article.31038) (7.38KB) (0.09%)
    37μ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.99ms1.58MB
  • SELECT @@SESSION.sql_mode;32μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 165μ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)145μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`50μ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`226μ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)206μ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.83ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`342μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '31038'140μ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)174μ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`181μ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)235μ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`166μ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 ASC413μ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`173μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1150μ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)90μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context61μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)164μ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