En 2018, dos de mis estudiantes, Leonardo Araujo Lion y Elton Shinji Okuma Hayachigui presentaron en el 15 FEBRACE en la USP en São Paulo, un trabajo interesante en el que, bajo mi guía, desarrollaron un detector de rayos basado en la emisión de señales eléctricas de la descarga y cambios en el campo eléctrico que acompañan al fenómeno. La idea surgió de un artículo anterior y, para nuestra sorpresa, la compañía estadounidense Sparkfun lanza un Shield para Arduino que opera precisamente con el mismo principio y tiene un rendimiento sensacional. Veámoslo en este artículo.

En los artículos de nuestro sitio exploramos el hecho de que una descarga eléctrica a la atmósfera genera voleas de baja frecuencia o "silbidos" que pueden capturarse a miles de kilómetros de distancia. Las estaciones meteorológicas usan estas señales para detectar rayos y triangular su ubicación.

Dos de mis estudiantes, basados en esto, desarrollaron un proyecto interesante destinado a detectar rayos, que pueden emitir señales incluso antes de que ocurra la descarga, alertando así a las personas, por ejemplo, al aire libre o en la playa, a refugiarse.

Presentado en FEBRACE, el proyecto obtuvo la mención de honor de la American Meteorological Society.

Por supuesto, el diseño original basado en un receptor de radio y un sensor electrostático con el 4093 era bastante simple, ya que los estudiantes en cuestión no eran estudiantes de ingeniería sino un graduado de secundaria.

En la figura 1 tenemos el diagrama del detector que tenía un principio operativo muy simple en su versión experimental demostrada en FEBRACE.

 

Figura 1 - El sensor
Figura 1 - El sensor

 

En este circuito tenemos una radio AM sintonizada en frecuencia en la cual no hay estaciones operando para detectar la salva que normalmente ocurre en un rayo. Se manifiesta en la salida de audio como un chasquido.

El sensor es una antena pequeña que detecta cargas estáticas en el aire que pueden variar en intensidad en presencia de descarga.

Las señales de los dos sensores se combinan y si hay una coincidencia tenemos la activación de un LED. En una versión final, en lugar del LED podemos tener un relé o un sistema de advertencia.

No obstante. Sparkfun, una empresa que fabrica shields y dispositivos microcontrolados en los Estados Unidos, exploró la idea. Esta compañía lanzó el AS3935 en 2019, un detector de rayos que opera a 500 kHz y alcanza 40 km con una precisión de 1 km. Vea más en el sitio web de Mouser Electronics, donde puede comprarlo para sus experimentos e incluso para crear un nuevo producto. https://www.mouser.com/new/sparkfun/sparkfun-as3935-lightning-detector/ 

 

Figura 2 - La tarjeta Sparkfun
Figura 2 - La tarjeta Sparkfun

 

 

Como funciona

Para una detección precisa de la distancia a la que ocurre un rayo o donde se encuentra una tormenta, los sistemas avanzados utilizan un proceso de triangulación que ya hemos explorado en nuestros artículos.

La tarjeta Sparkfun, por otro lado, usa otro proceso de detección. Se basa en un algoritmo que compara la frecuencia de descarga con la distancia estimada, como se muestra en la figura 3.

 

Figura 3 - Cómo se estima la distancia en función de las descargas
Figura 3 - Cómo se estima la distancia en función de las descargas

 

A través de este algoritmo, la distancia mínima desde el núcleo de la tormenta se puede encontrar a partir de un conteo de descargas. La placa contiene un sistema receptor que generará una señal al microcontrolador que contiene el valor de la distancia estimada a la fuente de los pulsos producidos por las descargas.

La integración del sistema es relativamente simple. Puede elegir la interfaz SPI o I2C según la aplicación. La placa contiene un regulador interno que permite que el circuito se alimente con un rango de tensión de 2.4 a 3.6 V. El circuito básico se muestra en la figura 4.

 

Figura 4 - Circuito básico para SPI
Figura 4 - Circuito básico para SPI

 

Entonces, además de los condensadores, tenemos el circuito resonante y una resistencia.

En la hoja de datos disponible en https://mouser.com/ds/2/588/ams_AS3935_Datasheet_EN_v5-1214568.pdf  el lector tendrá otras configuraciones posibles dependiendo de la unidad de control (MCU).

Una característica muy interesante del algoritmo utilizado es que puede distinguir los patrones de señal capturados de una descarga atmosférica, patrones de señal generados por el hombre, fuentes de ruido, etc. Solo si la señal se identifica como proveniente de una descarga atmosférica, se calcula para estimar la distancia desde la tormenta.

El dispositivo tiene varios modos de operación.

En el modo de apagado, entra en una condición de baja potencia, drenando una corriente típica de 1uA. En el modo de audición, el dispositivo evalúa el ruido de fondo en el sitio y establece una condición de baja potencia de solo 60 uA.

También tenemos el modo de verificación de señal en el que opera en función del algoritmo que analiza la señal recibida.

En la hoja de datos, el lector puede encontrar varios gráficos y tablas en los que se analizan las diversas señales producidas por el circuito, por ejemplo, los datos de registro al registrar datos y enviarlos a las interfaces.

Se da un ejemplo en el diagrama de tiempo de la interfaz I2C que se muestra en la figura 5.

 

Figura 5 - Diagrama de tiempo I2C
Figura 5 - Diagrama de tiempo I2C | Haga click en la imagen para ampliar |

 

Finalmente, Sparkfun proporciona un gráfico que muestra la eficiencia del dispositivo en la detección de tormentas.

 

Figura 6 - Eficiencia
Figura 6 - Eficiencia

 

El diagrama de bloques del dispositivo se muestra en la figura 7.

 

Figura 7 - Diagrama de bloques AS3935
Figura 7 - Diagrama de bloques AS3935

 

 

Ideas de proyectos

Evidentemente basado en las características de este dispositivo, usando un microcontrolador y eventualmente algo más, el fabricante puede crear un gran producto y los estudiantes pueden escribir un TCC de características inauditas. Sugerimos algunas aplicaciones.

- Estaciones meteorológicas

- Relojes inteligentes

- Equipamiento deportivo

- Seguridad de campo abierto

- UPS

- Sistemas de GPS

- Teléfonos celulares

- Equipamiento deportivo

- Estadios y clubes

Todo depende de la imaginación de uno.

Puede obtener información adicional sobre este producto en el sitio web de Mouser Electronics que lo vende: https://mouser.com/new/sparkfun/sparkfun-as3935-lightning-detector/ . Ver el video.

 

18.97MBMemory Usage48.69msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1748828225 "last" => 1748828225...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.42KB) (867μs)
  • afterInitialise (1.14MB) (5.31ms)
  • afterRoute (179.21KB) (1.25ms)
  • beforeRenderComponent com_content (100.98KB) (567μs)
  • Before Access::preloadComponents (all components) (33.45KB) (314μs)
  • After Access::preloadComponents (all components) (107.06KB) (565μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (23.46ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (2.04ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (27μs)
  • afterRenderComponent com_content (440.72KB) (6.05ms)
  • afterDispatch (2.25KB) (65μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (1.82ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (450μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (112μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (1.17ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (595μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (98μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (186μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (51μs)
  • afterRender (296.81KB) (3.54ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (48.18%)
    23.46ms
    1 x afterRenderComponent com_content (440.72KB) (12.43%)
    6.05ms
    1 x afterInitialise (1.14MB) (10.91%)
    5.31ms
    1 x afterRender (296.81KB) (7.27%)
    3.54ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (4.18%)
    2.04ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (3.74%)
    1.82ms
    1 x afterRoute (179.21KB) (2.57%)
    1.25ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (2.4%)
    1.17ms
    1 x afterLoad (85.42KB) (1.78%)
    867μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.22%)
    595μs
    1 x beforeRenderComponent com_content (100.98KB) (1.16%)
    567μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.16%)
    565μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.92%)
    450μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.64%)
    314μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.38%)
    186μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    112μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.2%)
    98μs
    1 x afterDispatch (2.25KB) (0.13%)
    65μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.1%)
    51μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.06%)
    27μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
23 statements were executed, 5 of which were duplicates, 18 unique12.03ms1.58MB
  • SELECT @@SESSION.sql_mode;46μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 193μ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)191μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`59μ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` = :guest78μ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`256μ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)417μ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.91ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`392μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.5853'79μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`276μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '5853'127μ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)177μ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`203μ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)352μ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`195μ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 ASC450μ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`198μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1136μ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)79μ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)179μ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` = 172μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content
  • warningassets - No asset found for com_content.article.5853, falling back to com_content