¿Es posible cancelar un ruido con un anti-ruido? - vea la respuesta en este artículo.

Una tecnología muy importante que se está implantando en los vehículos modernos es la de la cancelación de ruido ANC o Active Noise Cancel. Vea en este artículo cómo se puede cancelar un ruido con un anti-ruido.

Los vehículos deben ser cada vez más silenciosos, pero es imposible evitar que partes móviles, como el motor, no emiten ruidos. Lo que se hace normalmente es tratar de sofocar al máximo esos ruidos, utilizando las más diversas técnicas como materiales acústicos, etc.

Sin embargo, la electrónica puede ayudar a eliminar los ruidos de una forma bastante simple, basada en un principio de la física que la mayoría de la gente conoce: la interferencia.

Lo que ocurre en este caso es que dos señales acústicas de la misma frecuencia cuando combinados van a crear puntos en que la amplitud del sonido es la suma de sus amplitudes (interferencia constructiva) y puntos donde la amplitud es nula (interferencia destructiva), o sea, simplemente la cancelación del sonido, como muestra la figura 1.

 

Figura 1- Las señales de la misma frecuencia y las fases opuestas se cancelan.
Figura 1- Las señales de la misma frecuencia y las fases opuestas se cancelan.

 

Así, la idea de muchos fabricantes de chips que trabajan con procesamiento digital de señales, como Texas Instruments, es colocar micrófonos en lugares estratégicos del coche y procesando la señal captada, generar señales de fases opuestas y enviarlas, obteniéndose así la cancelación del ruido. En la figura 2 tenemos un diagrama de bloques de una solución de este tipo sugerida por Texas Instruments.

 

Figura 2- Solución de Texas Instruments para la cancelación de ruido.
Figura 2- Solución de Texas Instruments para la cancelación de ruido.

 

En esta solución, los micrófonos captan el ruido, amplifican y lo aplican a un CODEC de audio que procesa la señal para aplicación en un DSP (Digital SIgnal Processor o Procesador Digital de Señales. La señal es entonces trabajada para tener su fase invertida digitalmente y después aplicado al CODEC ahora en el sentido inverso, pues el CODEC codifica y decodifica las señales.

De nuevo en la forma analógica la señal con la fase invertida se amplifica en un amplificador de potencia y se reproduce de tal forma que se cancela el ruido.

El sistema recibe la denominación ANC (Active Noise Cancel) para ser diferenciado de los sistemas pasivos (PNC) que se basan en materiales capaces de absorber los ruidos.

 

Limitaciones y ventajas

El sistema ANC es más eficiente con los ruidos de baja frecuencia, pues teniendo una longitud de onda mayor, en una cierta banda de cancelación tenemos sonidos con amplitud suficiente pequeños para no ser percibidos.

Con un sonido agudo, los picos de cancelación y no cancelación quedar muy próximos pudiendo ser percibidos cuando se mueve la cabeza en el ambiente en que el sistema opera.

La ventaja del sistema está en la no necesidad de materiales que pueden ser pesados o difíciles de instalar, como los revestimientos.

 

Conclusión

Si bien en un entorno de dimensiones limitadas como es el del coche esta solución puede ser implantada con cierta facilidad, nada impide que la cancelación de ruido con el anti-ruido pueda encontrar otras aplicaciones.

En la aviación e incluso en otros tipos de vehículos sujetos a ruidos el sistema puede operar y hasta ser su aplicación extendida a ambientes domésticos, comerciales y principalmente industriales.

Finalmente tenemos su aplicación en auriculares que pueden ser muy útiles en ambientes ruidosos, como los mostrados en la figura 3.

 

Figura 3 - Teléfono con cancelación de ruido (ANC).
Figura 3 - Teléfono con cancelación de ruido (ANC).

 

 

 

18.924MBMemory Usage38.71msRequest 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" => 1747636670 "last" => 1747636670...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.39KB) (262μs)
  • afterInitialise (1.14MB) (3.33ms)
  • afterRoute (179.16KB) (980μs)
  • beforeRenderComponent com_content (100.65KB) (397μs)
  • Before Access::preloadComponents (all components) (33.45KB) (187μs)
  • After Access::preloadComponents (all components) (107.06KB) (359μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (18.63ms)
  • Before Access::getAssetRules (id:18935 name:com_content.article.22761) (514.65KB) (588μs)
  • After Access::getAssetRules (id:18935 name:com_content.article.22761) (7.38KB) (33μs)
  • afterRenderComponent com_content (382.07KB) (6.31ms)
  • afterDispatch (2.25KB) (53μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.76KB) (1.63ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (334μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (1.51KB) (128μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.7KB) (1.14ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (563μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (69μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (188μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (48μs)
  • afterRender (257.77KB) (3.36ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (48.12%)
    18.63ms
    1 x afterRenderComponent com_content (382.07KB) (16.31%)
    6.31ms
    1 x afterRender (257.77KB) (8.68%)
    3.36ms
    1 x afterInitialise (1.14MB) (8.6%)
    3.33ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.76KB) (4.22%)
    1.63ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.7KB) (2.94%)
    1.14ms
    1 x afterRoute (179.16KB) (2.53%)
    980μs
    1 x Before Access::getAssetRules (id:18935 name:com_content.article.22761) (514.65KB) (1.52%)
    588μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (1.45%)
    563μs
    1 x beforeRenderComponent com_content (100.65KB) (1.03%)
    397μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.93%)
    359μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.86%)
    334μs
    1 x afterLoad (85.39KB) (0.68%)
    262μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.49%)
    188μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.48%)
    187μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (1.51KB) (0.33%)
    128μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.18%)
    69μs
    1 x afterDispatch (2.25KB) (0.14%)
    53μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.12%)
    48μs
    1 x After Access::getAssetRules (id:18935 name:com_content.article.22761) (7.38KB) (0.08%)
    33μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
21 statements were executed, 5 of which were duplicates, 16 unique10.64ms1.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 170μ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)136μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`48μ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` = :guest74μ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`228μ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)208μ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.51ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`326μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '22761'145μ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)159μ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)230μ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`165μ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 ASC382μ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`179μ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)89μ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)187μ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` = 166μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy