Un sistema, basado en un transductor piezoeléctrico, puede generar energía suficiente para alimentar un pequeño sistema sensor inalámbrico. Este artículo es de 2007.

   Una solución inédita aprovecha la propia vibración de motores, piezas móviles o que presenten oscilaciones para generar energía suficiente para el sistema de sensor de movimiento o, rotación.

   El sistema, basado en un transductor piezoeléctrico, puede generar energía suficiente para alimentar un pequeño sistema sensor inalámbrico capaz de enviar información a un receptor conectado a un ordenador u otro equipo de control.

   El monitoreo de rotores, engranajes y otros equipos que poseen piezas rotativas como ventiladores, bombas y compresores presenta inconvenientes que exigen cuidados especiales de los proyectistas. De hecho, un sistema inalámbrico para monitorear estos dispositivos requiere no sólo el uso de baterías (que consisten en un elemento de mantenimiento constante), sino también de circuitos especiales que reciben las señales de los sensores y los convierten a la forma digital para la transmisión.

   Ahora, la empresa inglesa Perpetuum, especialista en soluciones de energía obtenida a partir de vibraciones, desarrolló un sistema capaz de generar energía para alimentar un sistema sensor inalámbrico, obtenida de la propia vibración del motor o sistema monitoreado.

   El dispositivo consiste en un monitor de vibración inalámbrica para sistemas rotativos, basado en un microgerador PMG17 de la empresa. En este sistema, un transductor piezoeléctrico convierte la energía de la vibración del dispositivo monitoreado en energía eléctrica, ésta, a su vez, alimenta todo el circuito de sensorización y envío inalámbrico de la rotación o movimiento de la pieza. Con ello, se elimina la necesidad de batería para la aplicación.

   El microgerador PMG17 está diseñado para operar principalmente con motores de corriente alterna que poseen una vibración típica natural que es dos veces la frecuencia de la red. Con Vibraciones tan pequeñas como 25 mg (rms) en un rango de 2 Hz, la unidad produce una potencia eléctrica mínima de 0,5 mW y puede proporcionar hasta 40 mW de potencia con niveles de Vibración más elevados.

   El dispositivo que llega a producir 22 Vac (pico-a-pico) de salida, tiene un circuito típico de aplicación mostrado en la figura 1.

 

Figura 1
Figura 1

 

 

El PMG17-100 tiene niveles operativos en el rango de frecuencias entre 98 y 100 Hz y el PMG17-120 opera entre 1 18 y 120 Hz, proporcionando así dos opciones de diseño. En la figura 2 tenemos la curva típica de rendimiento obtenida en función de la frecuencia.

 

Figura 2
Figura 2 | Clique na imagem para ampliar |

 

   

La energía generada por este dispositivo permite una transferencia de datos a una velocidad de 6 kbytes por segundo, monitoreando el dispositivo utilizado en intervalos pequeños, determinados por la programación.

   El circuito y formado por un acelerómetro piezoeléctrico que mide la señal de vibración, un circuito condicionador de señales, un microcontrolador, un acondicionador de energía, un transmisor de radio, un sistema de almacenamiento de energía y el generador PMG17.

   El acelerómetro mide la frecuencia de vibración (que depende de la construcción mecánica del sistema que se está monitoreando) y también su velocidad de rotación, así como la amplitud de la vibración. Una fuente conmutada con más del 75% de rendimiento eleva la energía de 20 mJ a 27 mJ, cargando así un condensador en un circuito de acondicionador de energía.

   De esta forma, la energía AC producida en el generador se convierte a la forma DC.  En la figura 3 vemos un diagrama de bloques que muestra el principio de funcionamiento completo del sistema de sensorización inalámbrica y sin la necesidad del uso de baterías.

 

Figura 3
Figura 3 | Clique na imagem para ampliar |

 

   

En las aplicaciones que involucran la transmisión de datos a corta distancia, con características determinadas por el estándar IEEE 802.11 son necesarias potencias eléctricas muy pequeñas para alimentar los circuitos transmisores.

   La idea de utilizar energía a partir de sistemas que producen vibraciones inherentes al propio equipo, es una buena solución que elimina la exigencia de baterías y, por lo tanto, la necesidad de mantenimiento o monitoreo de su estado. El uso de generadores piezoeléctricos como los fabricados por Perpetuum, puede ser una excelente solución para muchas aplicaciones prácticas que encajen en ese contexto.

 

 

 

18.929MBMemory Usage53.58msRequest 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" => "7sudtopn4oi6jr3gs723a838r2" ]
$_SERVER
array:52 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 2 "timer" => array:3 [ "start" => 1751855904 "last" => 1751855904...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.61KB) (278μs)
  • afterInitialise (1.14MB) (3.59ms)
  • afterRoute (179.16KB) (904μs)
  • beforeRenderComponent com_content (100.7KB) (456μs)
  • Before Access::preloadComponents (all components) (33.45KB) (212μs)
  • After Access::preloadComponents (all components) (107.06KB) (388μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (10μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (32.48ms)
  • Before Access::getAssetRules (id:27564 name:com_content.article.31197) (514.65KB) (1.17ms)
  • After Access::getAssetRules (id:27564 name:com_content.article.31197) (7.38KB) (37μs)
  • afterRenderComponent com_content (382.05KB) (6.48ms)
  • afterDispatch (2.25KB) (43μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.44KB) (1.54ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (290μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (101μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.19ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (563μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (69μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (215μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (49μs)
  • afterRender (257.75KB) (3.42ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (60.63%)
    32.48ms
    1 x afterRenderComponent com_content (382.05KB) (12.09%)
    6.48ms
    1 x afterInitialise (1.14MB) (6.69%)
    3.59ms
    1 x afterRender (257.75KB) (6.37%)
    3.42ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.44KB) (2.88%)
    1.54ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.21%)
    1.19ms
    1 x Before Access::getAssetRules (id:27564 name:com_content.article.31197) (514.65KB) (2.18%)
    1.17ms
    1 x afterRoute (179.16KB) (1.69%)
    904μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.05%)
    563μs
    1 x beforeRenderComponent com_content (100.7KB) (0.85%)
    456μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.72%)
    388μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.54%)
    290μs
    1 x afterLoad (85.61KB) (0.52%)
    278μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.4%)
    215μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.4%)
    212μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.19%)
    101μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.13%)
    69μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.09%)
    49μs
    1 x afterDispatch (2.25KB) (0.08%)
    43μs
    1 x After Access::getAssetRules (id:27564 name:com_content.article.31197) (7.38KB) (0.07%)
    37μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    10μs
21 statements were executed, 5 of which were duplicates, 16 unique15.02ms1.58MB
  • SELECT @@SESSION.sql_mode;35μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 162μ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_id59μs992BParams/libraries/src/Session/MetadataManager.php:316Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`53μ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` = :guest81μ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`222μ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)221μ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` = 011.6ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`426μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '31197'146μ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)169μ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`188μ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)254μ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`189μ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 ASC523μ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`184μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1160μ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)103μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context70μ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)206μ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` = 173μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy