El monitoreo de la calidad del aire a través de recursos electrónicos puede ser la base de numerosas aplicaciones que se están volviendo cada vez más importantes hoy en día. La contaminación que puede afectarnos es cada vez más peligrosa, lo que lleva no solo a enfermedades respiratorias sino, lo que es peor, a una mayor facilidad para la propagación de virus. En este artículo, analizamos el principio de funcionamiento de algunos sensores que se utilizan para controlar la calidad del aire.

La calidad del aire se puede evaluar por dos características: partículas suspendidas y composición química. Para los dos tipos de cambios que pueden ocurrir en el aire ambiente, existen tecnologías de monitoreo específicas, utilizando sensores apropiados.

En Mouser Electronics, los lectores pueden encontrar sensores de ambos tipos para el desarrollo de proyectos y también placas de evaluación y desarrollo, lo que hace que un diseñador interesado sea mucho más fácil.

Analizamos los principales tipos.

 

Sensores infrarrojos NDIR

NDIR es el acrónimo de infrarrojo no dispersivo, es decir, infrarrojo no dispersivo.

Lo que sucede es que en el aire ambiente u otra mezcla de gases, la dispersión de la radiación infrarroja a ciertas longitudes de onda ocurre en función de la concentración de dióxido de carbono (CO2) o monóxido de carbono (CO).

Por lo tanto, un sensor básico consiste en un emisor de infrarrojos y un sensor de infrarrojos en una cámara donde se puede colocar el aire de muestra o donde este aire entra por las aberturas, como se muestra en la figura 1.

 

Figura 1 - Un sensor NDIR
Figura 1 - Un sensor NDIR

 

La señal obtenida en la salida del circuito tiene una intensidad proporcional a la atenuación de la radiación infrarroja, que a su vez depende de la concentración de los contaminantes analizados.

 

Sensores electroquímicos

Este tipo de sensor se basa en cambios en las propiedades eléctricas de ciertos materiales en presencia de contaminantes. Este tipo de sensor se utiliza en la sonda lambda de automóviles que mide la concentración de oxígeno en la salida de escape y, por lo tanto, determina si se ha producido una combustión completa de combustibleLa sonda lamda).

En la figura 2 tenemos la estructura básica de un sensor de este tipo.

 

Figura 2 - Un sensor electroquímico
Figura 2 - Un sensor electroquímico

 

 

Se utiliza una variación de este tipo de sensor para detectar el escape de gases combustibles en alarmas.

 

 

Sensor electroacústico

Para la detección de CO y CO2, también contamos con la tecnología de sensores electroacústicos que, en cierto modo, se asemeja a la tecnología utilizada en el caso de los sensores infrarrojos.

Lo que sucede es que, al igual que en el caso de la radiación infrarroja, los ultrasonidos tienen un comportamiento alterado cuando se propagan en el aire debido a la concentración de CO y CO2.

Por lo tanto, podemos medir la reflexión del ultrasonido en una cámara en la que ingresa el aire ambiental y, por lo tanto, tener una idea de su grado de contaminación, como se muestra en la figura 3.

 

Figura 3 - sensor ultrasónico
Figura 3 - sensor ultrasónico

 

 

 

Sensores de ozono

Aunque una pequeña cantidad de ozono en el aire es interesante hoy en día, debido a las propiedades bactericidas que presenta, el exceso es peligroso y puede afectarnos.

Por lo tanto, en el control del aire ambiente, los sensores de ozono encuentran aplicaciones específicas. Veamos cómo funcionan.

En este tipo de sensor, el aire pasa a través de un filtro que llega a un electrodo sensor, donde se produce una reacción química. Esta reacción hace que se genere un voltaje que luego puede ser medido por un circuito externo.

En la figura 4 tenemos la estructura básica de este tipo de sensor.

 

 

Figura 4 - Sensor de ozono
Figura 4 - Sensor de ozono

 

 

Sensores de partículas (PM)

Los tipos más comunes son aquellos que aprovechan la reflexión o la refracción de la luz cuando pasa a través del aire en el que están suspendidas las partículas. Estas partículas se iluminan y pueden ser detectadas por un sensor fotoeléctrico común.

La Figura 5 muestra el PM 2.5 de Alta, un sensor de calidad del aire capaz de medir partículas en el rango de 0.3 a 10 µm en tres categorías. Acceda a la hoja de datos en: https://br.mouser.com/datasheet/2/945/ADS-063-PM25-Sensor-Data-Sheet-1493984.pdf 

 

Figura 5 - Sensor de partículas disponible de Mouser
Figura 5 - Sensor de partículas disponible de Mouser

 

 

Sensores de dióxido de azufre y sensores de óxido nitroso

Estos también son sensores importantes para monitorear la calidad del aire. El grado de complejidad varía según la aplicación.

En la figura 6 tenemos un sensor infrarrojo piroeléctrico Pyreos para detección de gas Pyyreos, vendido por Mouser Electronics.

 

Figura 6 - Sensor de gas piroeléctrico
Figura 6 - Sensor de gas piroeléctrico

 

 

Este tipo de sensor funciona con filtros que permiten el paso de las moléculas de gas que deben detectarse y que luego alteran la propagación de la radiación infrarroja.

Sugerimos visitar el sitio web de Mouser Electronics donde hay una gran cantidad de dispositivos sensores de calidad del aire, desde los cuales las hojas de datos permiten analizar la operación, las aplicaciones y también tener circuitos prácticos y placas de desarrollo.

 

18.974MBMemory Usage40.64msRequest 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:49 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "PATH_TRANSLATED" => "redirect:/ind...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1741950969 "last" => 1741950969...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.91KB) (310μs)
  • afterInitialise (1.14MB) (3.56ms)
  • afterRoute (179.16KB) (839μs)
  • beforeRenderComponent com_content (100.65KB) (417μs)
  • Before Access::preloadComponents (all components) (33.5KB) (192μs)
  • After Access::preloadComponents (all components) (107.06KB) (382μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (9μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (19.82ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.16KB) (1.73ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (33μs)
  • afterRenderComponent com_content (431.52KB) (5.98ms)
  • afterDispatch (2.25KB) (49μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (1.62ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (319μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (90μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (1.14ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (558μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (71μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (184μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (49μs)
  • afterRender (296.8KB) (3.18ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (48.77%)
    19.82ms
    1 x afterRenderComponent com_content (431.52KB) (14.7%)
    5.98ms
    1 x afterInitialise (1.14MB) (8.76%)
    3.56ms
    1 x afterRender (296.8KB) (7.81%)
    3.18ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.16KB) (4.27%)
    1.73ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (3.98%)
    1.62ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (2.8%)
    1.14ms
    1 x afterRoute (179.16KB) (2.06%)
    839μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.37%)
    558μs
    1 x beforeRenderComponent com_content (100.65KB) (1.03%)
    417μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.94%)
    382μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.78%)
    319μs
    1 x afterLoad (85.91KB) (0.76%)
    310μs
    1 x Before Access::preloadComponents (all components) (33.5KB) (0.47%)
    192μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.45%)
    184μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    90μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.17%)
    71μs
    1 x afterDispatch (2.25KB) (0.12%)
    49μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.12%)
    49μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.08%)
    33μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    9μs
23 statements were executed, 5 of which were duplicates, 18 unique12.11ms1.57MB
  • SELECT @@SESSION.sql_mode;33μ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)189μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`51μ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` = :guest77μ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`203μ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)222μ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` = 08.53ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`256μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.6834'71μ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` = '6834'142μ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`191μ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)297μ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`181μ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 ASC386μ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`213μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1143μ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` = :context67μ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)158μ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` = 176μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content
  • warningassets - No asset found for com_content.article.6834, falling back to com_content