Hay situaciones en el día a día de trabajo del profesional de electrónica que se pueden resolver con simples macetas. Una de ellas es la identificación de los terminales de los displays de 7 segmentos. ¿Cómo saber si una pantalla sin marcación es de ánodo o cátodo común, y cómo identificar los terminales correspondientes a cada segmento?

   Muchos lectores pueden adquirir en las tiendas de componentes de pantalla la oferta que no tienen marcación alguna que permita identificar sus terminales, o aún saber si son de ánodo o cátodo común.

   Otros pueden tener estos displays en stock y desear aprovecharlos en algún proyecto.

   ¿Cómo identificar los terminales?

   El procedimiento dado a continuación puede ser de gran valor para quien se enfrenta a este problema.

 

   DISPLAY BÁSICO

   No importa el tamaño, la mayoría de los displays de 7 segmentos tienen el formato de la figura 1, con los 7 segmentos identificados por letras que van desde a hasta f, eventualmente, con un terminal adicional para el punto decimal.

 

Figura 1 – El display de 7 segmentos
Figura 1 – El display de 7 segmentos

 

 

   Cada segmento consiste en uno o más LED que se deben polarizar en el sentido directo para que se enciendan.

   Hay dos formas de conexión para estos segmentos que determinan si el display es de ánodo o cátodo, como muestra la figura 2.

 

Fig. 2 - Tipos de conexión de los segmentos.
Fig. 2 - Tipos de conexión de los segmentos.

 

   En los displays de ánodo común, el ánodo se conecta al positivo de la alimentación y cada cátodo se conecta al terminal de excitación con un resistor limitador de corriente.

   Estos displays se excitan cuando la salida correspondiente a cada segmento es puesta a tierra o va al nivel bajo.

   Para los displays de cátodo común tenemos el comportamiento inverso: el terminal común es aterrizado y cada segmento se enciende cuando el terminal correspondiente va al nivel alto.

   Los resistores limitadores de corriente son necesarios cuando el circuito conductor no los posee.

   Si bien existe una estandarización para los terminales de acuerdo con la figura 3, puede haber el caso en que no se siga o cuando el lector tenga dudas.

   Por eso damos el procedimiento que sigue.

 

Figura 3 - Conexiones comunes de displays
Figura 3 - Conexiones comunes de displays

 

 

PROCEDIMIENTO

   Utilice una fuente de 3 a 4,5 V con una resistencia de 220 ohmios en serie, como indica la figura 4.

 

 Figura 4 - Circuito de prueba
 Figura 4 - Circuito de prueba

 

   No utilice tensión mayor porque cuando se polarizan en sentido inverso con más de 5 V, los LED de los segmentos pueden dañarse de forma irreversible.

 

 a) Procedimiento para el ánodo común

   Enganche la pantalla en una matriz de contactos, observe la figura 5, y fije inicialmente el polo negativo de esta fuente a cualquiera de los terminales del display.

 

Figura 5 - Prueba del display
Figura 5 - Prueba del display

 

   

Después, vaya apoyando el otro terminal de la fuente en los terminales del display, uno a uno, hasta obtener alguno en que el segmento se encienda.

   Cuando esto ocurra, el terminal positivo de la fuente estará en el ánodo del display.

   Sólo tienes que ir ahora experimentando el polo positivo uno a uno en los otros terminales e identificar cada segmento que encender.

   Si en el procedimiento anterior no se obtiene ningún terminal en el que exista un segmento que se encienda, es porque el negativo de la fuente está justamente en el terminal de anodo del display.

   Cambie y repita el procedimiento. Si al hacer la prueba descrita por segunda vez aún ningún segmento se enciende, es porque el display es de cátodo común. Pase al siguiente elemento.

 

b) Procedimiento para el cátodo común

   Haga exactamente como en el caso anterior, pero usando el polo positivo de la fuente fija en cualquiera de los terminales del display, como ilustra la figura 6.

 

Figura 6 - Procedimiento para el cátodo común
Figura 6 - Procedimiento para el cátodo común

 

   Hecha la identificación de las terminales, es importante anotarla en un papel para que podamos posteriormente usar el componente con seguridad.

   Nota: este procedimiento no es válido para las pantallas de cristal líquido.

  Para los tipos multiplexados el procedimiento podrá ser adaptado para que se identifique el ánodo o cátodo común de cada display y luego se haga el reconocimiento de los terminales de los segmentos.

 

 

18.9MBMemory Usage40.82msRequest 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" => 1743691617 "last" => 1743691617...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.67KB) (281μs)
  • afterInitialise (1.14MB) (3.73ms)
  • afterRoute (179.16KB) (967μs)
  • beforeRenderComponent com_content (100.65KB) (594μs)
  • Before Access::preloadComponents (all components) (33.45KB) (206μs)
  • After Access::preloadComponents (all components) (107.06KB) (398μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (20.04ms)
  • Before Access::getAssetRules (id:10651 name:com_content.article.14699) (514.65KB) (614μs)
  • After Access::getAssetRules (id:10651 name:com_content.article.14699) (7.38KB) (39μs)
  • afterRenderComponent com_content (382.05KB) (6.56ms)
  • afterDispatch (2.25KB) (55μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (1.6ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (325μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (91μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (1.18ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (552μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.14KB) (66μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (185μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (48μs)
  • afterRender (257.73KB) (3.16ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (49.09%)
    20.04ms
    1 x afterRenderComponent com_content (382.05KB) (16.07%)
    6.56ms
    1 x afterInitialise (1.14MB) (9.15%)
    3.73ms
    1 x afterRender (257.73KB) (7.73%)
    3.16ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.92%)
    1.60ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (2.9%)
    1.18ms
    1 x afterRoute (179.16KB) (2.37%)
    967μs
    1 x Before Access::getAssetRules (id:10651 name:com_content.article.14699) (514.65KB) (1.5%)
    614μs
    1 x beforeRenderComponent com_content (100.65KB) (1.46%)
    594μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (1.35%)
    552μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.98%)
    398μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.8%)
    325μs
    1 x afterLoad (85.67KB) (0.69%)
    281μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.5%)
    206μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (0.45%)
    185μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    91μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.14KB) (0.16%)
    66μs
    1 x afterDispatch (2.25KB) (0.13%)
    55μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.12%)
    48μs
    1 x After Access::getAssetRules (id:10651 name:com_content.article.14699) (7.38KB) (0.1%)
    39μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
21 statements were executed, 5 of which were duplicates, 16 unique11.8ms1.57MB
  • SELECT @@SESSION.sql_mode;38μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 195μ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)181μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`47μ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` = :guest88μ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`287μ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)251μ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.47ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`346μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '14699'173μ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)167μ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`186μ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)231μ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`162μ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 ASC379μ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`171μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1153μ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)88μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context58μ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)162μ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` = 170μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy