Réalisation d’une jauge à pellets

Ils fonctionnent plutôt bien nos poêles à pellets, mais il leur manque une fonction. Quand ils préviennent qu’il n’y a plus de pellets c’est trop tard, il faut se payer un cycle nettoyage final, refroidissement, avant de pouvoir relancer l’engin.

Je vous propose donc un dispositif qui vous préviendra à temps quand la quantité de pellets disponible deviendra critique.

A -Le principe

Le principe consiste à immerger dans la réserve de pellets, une barrière optoélectronique constitué d’une led et d’une photorésistance. Tant que le trajet de la lumière est obstrué par des pellets il ne se passe rien. Quand les pellets ne coupent plus le faisceau lumineux un buzzer se met en marche pendant quelques secondes. Si on n’intervient pas on continue d’être sollicité à intervalles réguliers de quelques minutes.

B -Le schéma électronique

Le schéma est en deux parties l’émetteur et le récepteur. Chaque partie est câblée sur une carte différente. Les piles, le bouton marche/arrêt et le buzzer sont placés dans un petit boîtier déporté à l’extérieur.

Voici le schéma.

schemaJaugePellets
Figure 1 : cadre rouge : émetteur ; cadre vert récepteur. Voir dans le texte la discution des valeurs.

Le fonctionnement de l’émetteur repose sur l’utilisation d’un très classique NE555. Le montage astable utilisé n’est pas très courant, mais c’est une solution des plus simples lorsqu’on a besoin d’oscillations très dissymétriques avec un long temps à l’état haut et un temps beaucoup plus court à l’état bas. Notez que l’inverse n’est pas possible avec ce schéma.

La durée de l’état haut est définie par la résistance R1 et le condensateur C1. Elle vaut 0,7 x R1 x C1 .

La durée de l’état bas est définie essentiellement par la résistance R2 et le condensateur C1. Elle vaut 0,7 x R2 x C1.

En définitive, j'ai pris 470k pour R1 et 10k pour R2.

L’allumage de la led pendant l’état bas est obtenu en la branchant coté +V à travers la classique résistance de limitation du courant R3. Le 555 est plus limité en courant absorbé qu’en courant sortant, on est à la limite mais ça passe.

Le fonctionnement du récepteur est on ne peut plus simple.

Lorsqu’elle est dans l’obscurité, la photorésistance possède une valeur très élevée. Le peu de courant qu’elle laisse passer est dérivé par la résistance R4. La tension chutée par R4 étant inférieure au seuil de conduction de la base du transistor, celui-ci est bloqué.

Quand elle est éclairée par la led, (sortie du Ne555 à l’état bas et pas de pellet sur la trajectoire de la lumière) la photorésistance présente une valeur de l’ordre de quelques kΩ. La tension de base étant d’environ 0,7V, il passe 0,7 mA dans R4 et le surplus alimente la base du 2N2222 (de préférence BC107)  qui passe largement en saturation. Le buzzer est alimenté et le fait savoir bruyamment.

Pour un calcul plus précis de R4 voir en fin d'article.

C -La réalisation

Elle doit satisfaire quelques contraintes mineures.

Chez moi, les pellets sont introduits à travers une grille dont les mailles font 55 x 35 mm. Le circuit ne devra donc pas dépasser 54mm de largeur tout compris et 35 mm de hauteur (sauf si la grille peut être facilement démontée). Par contre, la longueur totale n’est pas contraignante.

Il faut songer que les composants vont recevoir une pluie de pellets (cependant la face horizontale de la cornière --voir plus loin-- les abrite un peu ). La plupart ne risque rien, mais j’ai tout de même renforcé le maintient de la led et de la photorésistance en faisant couler un peu de colle à chaud au pistolet.

Le circuit est alimenté par 4 piles AA (3 pourraient suffire, mais j’ai pas essayé). Il faudra donc qu’il consomme aussi peu que possible. On ne l’activera qu’en fin de réserve de pellets.

C’est le moment de s’interroger sur cette consommation.

Le NE555 est le plus gourmand avec ses 5mA La led demande 10 à 15 mA mais seulement pendant quelques secondes toutes les quelques minutes. Disons 2s toutes les 4 minutes. Cela nous fait une consommation moyenne de 0,125mA.

Le buzzer consomme 10 mA pendant au pire quelques dizaines de secondes par jour. Autant dire rien !

On peut rester sur une consommation moyenne de 5 mA.

  Avec une consommation de 5mA, la durée d’utilisation sera de 400h (en acceptant une rédustion de la tension à 5V). Si on allume le circuit quand il reste une autonomie estimée à 4h, on peut faire 100 cycles soit plus de 3 mois à raison d’un cycle par jour.

C.I -Les cartes de circuit imprimé

Comme je n’ai plus de quoi faire des circuits imprimés, je me suis rabattu sur une platine pré-percée au pas d’un 10eme de pouce avec des bandes de cuivre sur une face.

La figure 2 montre les deux circuits vus coté composants. Les bandes de cuivre sont verticales.

jaugePelletscartes
Figure 2 :

Les deux cartes sont découpées suivant les grands rectangles noirs.

Les croix bleues montrent où les bandes de cuivre doivent être interrompues.

Un truc commode consiste à agrandir un peu les trous depuis la face supérieure là où l’on doit couper les bandes de cuivre.

Les coupures se font avec un foret de 4mm qu’on tourne à la main. Bien vérifier qu’il ne reste pas un peu de cuivre sur les bords.

Le trait magenta en bas à gauche, correspond au + du gros condensateur.

Les traits rouges représentent la ligne + 6V soudée en-dessous. Les traits bleus représentent le – de l’alimentation soudé en-dessous.

Les lignes vertes montrent les parties utiles des bandes de cuivre.

Les lignes magenta R1-R2 et bleu clair B1-B2, représentent respectivement les liaisons des lignes + et – d’alimentation tirées entre les deux cartes.

Les cercles rouges correspondent aux trous de fixation à percer au diamètre 2,5mm.

Les traits noirs représentent des straps. Ils doivent être mis en place coté composants avant les composants car certains chevauchent ces straps.

Les deux parties du circuit doivent être maintenues à quelques cm de distance. Ceci est assuré par un bout de cornière d’aluminium de 16cm de long et une plaque de plastique de 16 x 5 cm et 2mm d’épaisseur.

Le fil rouge est à souder au point R (l’autre extrémité dans le boîtier à l’interrupteur). Le fil bleu est à souder au point B ( l’autre extrémité au moins de la pile). L’extrémité du fil noir est à souder au point Bz (l’autre extrémité au moins du buzzer). Le plus du buzzer est commun avec le fil rouge. La borne libre de l’interrupteur va au plus de la pile.

JaugePelletsGlobal
Figure 3 :

Le circuit est maintenu à la bonne hauteur par une barre plate en aluminium de 2 cm de largeur et 1 mm d’épaisseur.. Celle-ci peut pivoter par rapport au circuit pour permettre son introduction à travers la grille avant de ramener le circuit à l’horizontale (figure 3). Le pivotement est assuré par une vis bloquée sur la cornière par un écrou ; ensuite on passe la pièce d’aluminium, on visse un écrou sans bloquer, on passe une rondelle et on bloque un contre-écrou.

JaugePelletsPivot
Figure 4 : Le pivot de la barre plate et le U en butée contre la cornière.

La longueur de cette barre est à mesurer entre environ quelques cm au dessus du fond du réservoir et la maille de la grille où sera pendu l’appareil.

Le blocage à la perpendiculaire est assuré par un profilé en U. Ce profilé est maintenu plaqué contre la pièce plate et contre la cornière avec une vis et un écrou, placés tout en haut. (figure 4 et 5).

Pour faciliter le vissage, le U est dégarni de ses deux faces parallèles sur quelques cm . La vis est suffisamment longue pour s’accrocher à la grille (voir figure 5).

JaugePelletsAvecU
Figure 5 :

Un petit boîtier placé à l’extérieur contient les piles, (4 x AA) un interrupteur et le buzzer. Une nappe à 3 fils assure les liaisons nécessaires : + 6V(rouge), masse(bleu) et coté négatif du buzzer(noir). Le + du buzzer est directement branché sur l’interrupteur. On peut bien sûr remplacer les piles par une petite alimentation. Une tension entre 6V et 12V conviendra (en fonction du buzzer).

NB : Mon buzzer 12V fait déjà bien du boucan avec 6V.

D -Les tests

On commencera par s’assurer que le NE555 oscille correctement. Pas besoin d’appareil pour cela puisque la led nous renseigne de façon évidente. Toutefois, la longue durée de l’état éteint peut faire perdre patience (surtout si on a choisi un temps de plus de 10mn!). On peut alors souder provisoirement une résistance en parallèle sur R1 ou mieux câbler une résistance en série avec un mini-interrupteur. Toutefois la résistance équivalente ne devra guère descendre en dessous de 3 fois R2. Sinon le circuit n’oscillera pas. Je laisse aux plus curieux le soin de deviner pourquoi.

Mais en définitive il faudra bien tester dans les conditions normales de fonctionnement pour s’assurer que les fuites du condensateur ne sont pas rédhibitoires. À ce propos, vous pouvez lire cet article.

Avant de souder le transistor, il serait bon de mesurer la tension aux bornes de R4 avec et sans lumière de la led en atténuant autant que possible la lumière ambiante. On devrait avoir nettement moins de 0,6V quand la led est éteinte et au moins 0,8V quand elle est allumée. Si on a plusieurs Volts, on pourra diminuer le courant de la led en augmentant R3. Mais ne cherchez pas trop la limite. Pensez que le circuit doit continuer à fonctionner avec un peu de sciure sur la photorésistance et sur la led. Pour faire ce test, il n’est pas obligatoire d’attendre le basculement à l’état bas du 555. Il suffit de le retirer de son support et placer un strap entre les bornes 1 et 3.

Si le transistor est déjà soudé, assurez vous que le circuit sonne, même en occultant à moitié la photorésistance.

À l’inverse, si le courant de la photorésistance semble insuffisant, rapprocher les deux cartes.

E -Recommandations

Votre circuit va être soumis à des vibrations qui pourraient dévisser les différents boulons. Il pourrait être dommageable qu’ils tombent à proximité de la vis sans fin. Bien serrer ne sera peut-être pas suffisant. Il vaudrait mieux envisager une solution plus radicale : frein filet, rondelles éventails ou grower ou simplement un petit coup de pince coupante pour écraser quelques filets, mais si vous serrez trop fort, vous ne pourrez plus dévisser…

F -Mise en place

Il faut attendre qu’il n’y ait plus guère de pellets dans le réservoir.

  • Orienter le circuit parallèlement à la barre plate.
  • Passer le circuit par une maille de la grille.
  • Faire pivoter le circuit pour qu’il soit perpendiculaire à la barre plate.
  • Le laisser descendre presque jusqu’en bas.
  • Introduire le profilé en U plaqué contre la barre plate.
  • Mettre en place la vis qui assemble la barre plate et le U ; visser l’écrou.
  • Faire pendre l’ensemble après la grille.
  •  placer le petit boîtier à l’extérieur.
  • Remplir de pellets.
  • Mettez le boitier dans le réservoir (ou en dehors)
  • Fermez le réservoir.
  • C’est prêt !

G -Un autre avertisseur

Certains trouverons agaçant le son du buzzer. On pourrait alors se rabattre sur un signal lumineux. Cependant celui-ci devra être permanent et demandera une certaine vigilance.

On peut utiliser une led. On peut même en monter jusqu'à 3 en série (avec 6V d'alimentation)pour la même consommation. Notez que la consommation sera nettement augmentée puisqu’entre le début de l’avertissement et l’arrêt le débit des piles sera augmenté de 10 mA. Il faudrait donc envisager le remplacement des piles par une petite alimentation. N’importe quel modèle entre 5V et 12V pourra convenir. Quand a l’intensité, toute valeur supérieure à 20 mA sera adéquat. En la matière, qui peut le plus peut le moins !

G.I -Le schéma

Coté émetteur, vous pourrez choisir un temps d’allumage de la led très court, mais suffisant pour que la photorésistance aie le temps de réagir.

Coté récepteur, on remplace dans le schéma initial, le transistor par un thyristor et le buzzer par une led montée en série avec une résistance.

La résistance se calcule ainsi :

R = (Va – 1,6) / 10 . Avec R en kΩ et Va tension d’alimentation en Volts.

Pour Va = 6V le calcul donne 440Ω. On pourra prendre 470Ω.

 N'importe quel petit thyristor conviendra tel que les 2N2322 et suivants.

La cathode du thyristor prend la place de l’émetteur, la gâchette celle de la base, et l’anode celle du collecteur. Vous pouvez, en principe, garder la résistance de 1k.

Le fil noir abouti à la cathode de la led avertisseuse (placée dans le boîtier) et une résistance va de l’anode à l’interrupteur là où était le coté + du buzzer..

Notez que je n'ai pas réalisé ce circuit.

comment calculer R4

Commencez par tester votre ldr (photorésistance)

Placez vous dans une ambiance aussi sombre que possible et occultez la ldr.

Mesurez sa résistance Ro à l’l’ohmmètre. Pour moi > 220kΩ.

Faites un montage sommaire par exemple avec une plaque d’essais, incluant un groupe de piles, une résistance et une led montés en série.

La résistance Rs se calcule de la façon suivante :

Rs = (Vp -1,6) / 10

avec Vp la tension des piles en Volts, Rs en kΩ , 10 correspond à l’intensité souhaitée (ici 10mA)

Ex 4 piles AA donent 6V Rs = (6-1,6) / 10 = 0,44 kΩ soit 440Ω . On prendra la valeur normalisée 470Ω.

Placez la led face à la ldr à une dizaine de cm de distance.

Cachez au maximum la lumière ambiante.

Mesurez la ldr Rl . Pour moi 4,3kΩ.

NB : Dans ce qui suit, j’exprime les courants en mA et les résistances en kΩ.

On considère le rapport Ro / Rl. Pour moi 220 / 4,3 = 51.

(Étant donné les marges, un calcul à la louche nous conviendra tout à fait.)

On en prend la racine Ra. De tête, Ra ≈ √49 = 7 nous conviendra.

On pose Rm = Ro / Ra ;    Rm = 220 / 7 = 31.

On veut avoir 0,6V aux bornes de Rb (limite de conduction) quand Rm = 31k

VRm= 6 – 0,6 = 5,4V .

On fait une règle de 3. Une tension de 5,4V correspond à une résistance de 31k

                                     Pour avoir 1v, il faudrait diviser la résistance par 5,4

                                    Et pour avoir 0,6V il faut multiplier par 0,6.

Rb = 31 / 5,4 x 0,6   ;   Rb = 3,4k. On prendra 3,3k.

Vérifions: Dans l'obscurité, Vb = 6 x 3,3 / 223 = 0.072V Le transistor est largement bloqué

                Sous éclairement Le courant dans la photorésistance vaut: (6-0.7) / 4,3 = 1.23 mA

                                            Le courant dans R4 est de 0,7 / 3,3 = 0,21 ma

                                           il reste dans la base 1,23 - 0,21 = 1,02mA de quoi largement saturer le transistor.

***** © M Guignard 2023 *****

Comments (0)

    Attach images by dragging & dropping or by selecting them.
    The maximum file size for uploads is 10MB. Only gif,jpg,png files are allowed.
     
    The maximum number of 3 allowed files to upload has been reached. If you want to upload more files you have to delete one of the existing uploaded files first.
    The maximum number of 3 allowed files to upload has been reached. If you want to upload more files you have to delete one of the existing uploaded files first.
    Posting as

    Comments powered by CComment

    8.178MBMemory Usage1.39sRequest Duration
    Joomla! Version5.3.0-alpha1
    PHP Version8.3.19
    Identityguest
    Response200
    Templatecassiopeia
    Database
    Server
    mysql
    Version
    10.11.11-MariaDB-0+deb12u1
    Collation
    utf8mb3_general_ci
    Conn Collation
    utf8mb4_general_ci
    $_GET
    []
    $_POST
    []
    $_SESSION
    array:1 [ "joomla" => "***redacted***" ]
    $_COOKIE
    []
    $_SERVER
    array:51 [ "PATH" => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" "PP_CUSTOM_P...
    session
    array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1744261202 "last" => 1744261202...
    registry
    array:3 [ "data" => [] "initialized" => false "separator" => "." ]
    user
    array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
    plg_system_webauthn
    array:1 [ "returnUrl" => "https://doubsastuces.fr/index.php/bricolage/astuces-de-bricoleur/150-rea...
    • afterLoad (357.2KB) (149ms)
    • afterInitialise (2.24MB) (355ms)
    • afterRoute (283.7KB) (63.98ms)
    • beforeRenderComponent com_content (168.41KB) (34.43ms)
    • Before Access::preloadComponents (all components) (100.91KB) (41.29ms)
    • After Access::preloadComponents (all components) (114.77KB) (3.29ms)
    • Before Access::preloadPermissions (com_content) (1.66KB) (60μs)
    • After Access::preloadPermissions (com_content) (94.63KB) (4.28ms)
    • Before Access::getAssetRules (id:332 name:com_content.article.150) (6.65KB) (58μs)
    • After Access::getAssetRules (id:332 name:com_content.article.150) (7.56KB) (4.93ms)
    • Before Access::getAssetRules (id:305 name:com_comment) (1.59MB) (453ms)
    • After Access::getAssetRules (id:305 name:com_comment) (7.12KB) (114μs)
    • afterRenderComponent com_content (14KB) (41.9ms)
    • afterDispatch (2.27KB) (1.98ms)
    • beforeRenderRawModule mod_login (Connexion) (28.55KB) (8.76ms)
    • afterRenderRawModule mod_login (Connexion) (124.73KB) (37.85ms)
    • beforeRenderRawModule mod_tags_popular (Tags populaires) (848B) (84μs)
    • afterRenderRawModule mod_tags_popular (Tags populaires) (31.31KB) (33.72ms)
    • afterRender (498.84KB) (153ms)
    • 1 x Before Access::getAssetRules (id:305 name:com_comment) (1.59MB) (32.55%)
      453ms
      1 x afterInitialise (2.24MB) (25.51%)
      355ms
      1 x afterRender (498.84KB) (10.99%)
      153ms
      1 x afterLoad (357.2KB) (10.68%)
      149ms
      1 x afterRoute (283.7KB) (4.6%)
      63.98ms
      1 x afterRenderComponent com_content (14KB) (3.01%)
      41.90ms
      1 x Before Access::preloadComponents (all components) (100.91KB) (2.97%)
      41.29ms
      1 x afterRenderRawModule mod_login (Connexion) (124.73KB) (2.72%)
      37.85ms
      1 x beforeRenderComponent com_content (168.41KB) (2.47%)
      34.43ms
      1 x afterRenderRawModule mod_tags_popular (Tags populaires) (31.31KB) (2.42%)
      33.72ms
      1 x beforeRenderRawModule mod_login (Connexion) (28.55KB) (0.63%)
      8.76ms
      1 x After Access::getAssetRules (id:332 name:com_content.article.150) (7.56KB) (0.35%)
      4.93ms
      1 x After Access::preloadPermissions (com_content) (94.63KB) (0.31%)
      4.28ms
      1 x After Access::preloadComponents (all components) (114.77KB) (0.24%)
      3.29ms
      1 x afterDispatch (2.27KB) (0.14%)
      1.98ms
      1 x After Access::getAssetRules (id:305 name:com_comment) (7.12KB) (0.01%)
      114μs
      1 x beforeRenderRawModule mod_tags_popular (Tags populaires) (848B) (0.01%)
      84μs
      1 x Before Access::preloadPermissions (com_content) (1.66KB) (0%)
      60μs
      1 x Before Access::getAssetRules (id:332 name:com_content.article.150) (6.65KB) (0%)
      58μs
    32 statements were executed, 6 of which were duplicates, 26 unique112ms206.03KB
    • SELECT @@SESSION.sql_mode;312μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:308Copy
    • SELECT `data` FROM `sn27j_session` WHERE `session_id` = ?1.5ms1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:250Copy
    • SELECT `session_id` FROM `sn27j_session` WHERE `session_id` = :session_id LIMIT 1564μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
    • INSERT INTO `sn27j_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)1.3ms944BParams/libraries/src/Session/MetadataManager.php:260Copy
    • SELECT `id`,`rules` FROM `sn27j_viewlevels`401μs976B/libraries/src/Access/Access.php:955Copy
    • SELECT `b`.`id` FROM `sn27j_usergroups` AS `a` LEFT JOIN `sn27j_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest456μs1.33KBParams/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 `sn27j_categories` AS `s` INNER JOIN `sn27j_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`1.48ms3.88KBParams/libraries/src/Categories/Categories.php:375Copy
    • SELECT `id`,`name`,`rules`,`parent_id` FROM `sn27j_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,:preparedArray40,:preparedArray41,:preparedArray42)1.97ms7.56KBParams/libraries/src/Access/Access.php:357Copy
    • SELECT `id`,`name`,`rules`,`parent_id` FROM `sn27j_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 01.6ms5.11KBParams/libraries/src/Access/Access.php:301Copy
    • SHOW FULL COLUMNS FROM `sn27j_content`33.86ms1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
    • UPDATE `sn27j_content` SET `hits` = (`hits` + 1) WHERE `id` = '150'3.23ms48B/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 `sn27j_content` AS `a` INNER JOIN `sn27j_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `sn27j_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `sn27j_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `sn27j_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `sn27j_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)1.59ms46.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 `sn27j_categories` AS `s` INNER JOIN `sn27j_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`1.15ms3.92KBParams/libraries/src/Categories/Categories.php:375Copy
    • SELECT `m`.`tag_id`,`t`.* FROM `sn27j_contentitem_tag_map` AS `m` INNER JOIN `sn27j_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)1000μ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 `sn27j_categories` AS `s` INNER JOIN `sn27j_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`2.95ms3.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 sn27j_fields AS a LEFT JOIN `sn27j_languages` AS l ON l.lang_code = a.language LEFT JOIN sn27j_users AS uc ON uc.id=a.checked_out LEFT JOIN sn27j_viewlevels AS ag ON ag.id = a.access LEFT JOIN sn27j_users AS ua ON ua.id = a.created_user_id LEFT JOIN sn27j_fields_groups AS g ON g.id = a.group_id LEFT JOIN `sn27j_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 ASC22.15ms4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
    • SELECT `a`.`id`,`a`.`title`,`a`.`catid`,`a`.`language`, CASE WHEN CHAR_LENGTH(`a`.`alias`) != 0 THEN CONCAT_WS(':', `a`.`id`, `a`.`alias`) ELSE a.id END AS `slug`, CASE WHEN CHAR_LENGTH(`cc`.`alias`) != 0 THEN CONCAT_WS(':', `cc`.`id`, `cc`.`alias`) ELSE cc.id END AS `catslug` FROM `sn27j_content` AS `a` LEFT JOIN `sn27j_categories` AS `cc` ON `cc`.`id` = `a`.`catid` WHERE `a`.`catid` = :catid AND `a`.`state` = :state AND `a`.`access` IN (:preparedArray1,:preparedArray2) AND (`publish_up` IS NULL OR `publish_up` <= :nowDate1) AND (`publish_down` IS NULL OR `publish_down` >= :nowDate2) ORDER BY CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END DESC6.47ms3.41KBParams/plugins/content/pagenavigation/src/Extension/PageNavigation.php:188Copy
    • SELECT * FROM `sn27j_comment_setting` WHERE `component`='com_content'513μs704B/administrator/components/com_comment/library/config.php:85Copy
    • SELECT * FROM sn27j_comment_queue WHERE status = 0 ORDER BY created ASC LIMIT 51.31ms1.27KB/components/com_comment/helpers/queue.php:40Copy
    • SELECT COUNT(*) FROM sn27j_comment WHERE contentid='150' AND component='com_content' AND published=1653μs536B/components/com_comment/models/comment.php:152Copy
    • SELECT f.*, c.catid as catid FROM sn27j_compojoom_customfields as f LEFT JOIN sn27j_compojoom_customfields_cats AS c ON f.id = c.compojoom_customfields_id WHERE `f`.`show`='all' AND `f`.`enabled` = '1' AND `f`.`component` = 'com_comment'1.3ms2.39KB/libraries/compojoom/model/customfieldsconfig.php:51Copy
    • SELECT f.* FROM sn27j_compojoom_customfields AS f INNER JOIN sn27j_compojoom_customfields_cats AS c ON f.id = c.compojoom_customfields_id WHERE `f`.`show`='category' AND `c`.`catid` IN ('1') AND `f`.`enabled` = '1' AND `f`.`component` = 'com_comment'479μs2.36KB/libraries/compojoom/model/customfieldsconfig.php:70Copy
    • 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 `sn27j_categories` AS `s` INNER JOIN `sn27j_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`1.03ms3.92KBParams/libraries/src/Categories/Categories.php:375Copy
    • SELECT `alias`,`catid` FROM sn27j_content WHERE `id` = :key1.19ms1.37KBParams/libraries/src/Component/Router/Rules/PreprocessRules.php:123Copy
    • SELECT MAX(`tag_id`) AS `tag_id`,COUNT(*) AS `count`,MAX(`t`.`title`) AS `title`,MAX(`t`.`access`) AS `access`,MAX(`t`.`alias`) AS `alias`,MAX(`t`.`params`) AS `params`,MAX(`t`.`language`) AS `language` FROM `sn27j_contentitem_tag_map` AS `m` INNER JOIN `sn27j_ucm_content` AS `ucm` ON `m`.`content_item_id` = `ucm`.`core_content_item_id` AND `m`.`type_id` = `ucm`.`core_type_id` INNER JOIN `sn27j_categories` AS `cat` ON `ucm`.`core_catid` = `cat`.`id` INNER JOIN `sn27j_tags` AS `t` ON `tag_id` = `t`.`id` INNER JOIN `sn27j_ucm_content` AS `c` ON `m`.`core_content_id` = `c`.`core_content_id` WHERE `t`.`access` IN (:preparedArray1,:preparedArray2) AND `t`.`published` = 1 AND `cat`.`published` > 0 AND `m`.`type_alias` = `c`.`core_type_alias` AND `c`.`core_state` = 1 AND (`c`.`core_access` IN (:preparedArray3,:preparedArray4) OR `c`.`core_access` = 0) AND (`c`.`core_publish_up` IS NULL OR `c`.`core_publish_up` = :nullDate2 OR `c`.`core_publish_up` <= :nowDate2) AND (`c`.`core_publish_down` IS NULL OR `c`.`core_publish_down` = :nullDate3 OR `c`.`core_publish_down` >= :nowDate3) GROUP BY `tag_id`,`t`.`title`,`t`.`access`,`t`.`alias` ORDER BY `count` DESC LIMIT 109.19ms1.81KBParams/modules/mod_tags_popular/src/Helper/TagsPopularHelper.php:188Copy
    • SELECT * FROM `sn27j_schemaorg` WHERE `itemId` = :itemId AND `context` = :context568μ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 `sn27j_content` AS `a` INNER JOIN `sn27j_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `sn27j_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `sn27j_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `sn27j_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `sn27j_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)856μs46.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
    • 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 `sn27j_content` AS `a` INNER JOIN `sn27j_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `sn27j_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `sn27j_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `sn27j_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `sn27j_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)945μs46.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 `sn27j_scheduler_tasks` AS `a` WHERE `a`.`state` = 1557μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
    • 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 `sn27j_categories` AS `s` INNER JOIN `sn27j_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`1.58ms3.92KBParams/libraries/src/Categories/Categories.php:375Copy
    • SELECT `session_id` FROM `sn27j_session` WHERE `session_id` = ?551μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:277Copy
    • UPDATE `sn27j_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?8.86ms592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:301Copy