Calculateur de résolution PWM en bits
Une minuterie à 72 MHz qui produit une PWM à 20 kHz dispose de 3 600 pas par période, soit 11 bits entiers de résolution. Saisissez l'horloge, la fréquence visée et le prédiviseur facultatif pour voir les pas, les bits et la fréquence réellement obtenue. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Horloge du timer (Hz)
- 72 000 000
- Fréquence PWM (Hz)
- 20 000
- Prédiviseur
- 1
- Tick du timer (Hz)
- 72 000 000
- Fréquence PWM souhaitée (Hz)
- 20 000
- Nombre idéal de comptes par période
- 3 600
Ce calculateur de résolution PWM indique combien de comptes de minuteur et de bits entiers sont disponibles à la fréquence PWM demandée. Saisissez l’horloge du minuteur en hertz, la fréquence PWM voulue et, si nécessaire, un prédiviseur entier. Le résultat comprend la fréquence des ticks, les comptes idéaux et utilisables par période, la valeur maximale du compteur, les résolutions théorique et entière, la fréquence réalisable et son erreur. Vous pouvez ainsi préparer la configuration d’un microcontrôleur avant de choisir les registres ou d’écrire le micrologiciel.
Comment l’horloge et la fréquence PWM fixent la résolution
Un minuteur matériel avance à chaque tick et redémarre à la fin de la période programmée. Pour une PWM alignée sur un front, la division de l’horloge d’entrée par le prédiviseur et la fréquence demandée donne le nombre idéal d’états du compteur pendant une période. Plus il existe d’états, plus le registre de comparaison peut représenter de niveaux de rapport cyclique.
La résolution correspond donc au logarithme en base deux du nombre d’états. Ce calculateur arrondit les comptes idéaux vers le bas, car le matériel ne peut pas exécuter une fraction de tick, puis arrondit le logarithme pour annoncer les bits entiers disponibles. Ainsi, 72 MHz et 20 kHz sans prédivision donnent 3,600 comptes, environ 11.81 bits théoriques et 11 bits entiers.
La valeur maximale vaut un compte de moins puisque le compteur parcourt généralement zéro à ARR ou TOP inclus. Une fréquence supérieure réduit les ticks par cycle ; une fréquence inférieure affine les pas de commande.
Comment transposer le résultat à un microcontrôleur réel
Utilisez le résultat comme contrôle de faisabilité, puis consultez le manuel de référence du composant. Un registre de période sur 16 bits ne peut pas dépasser 65,535, même si le rapport des fréquences offre davantage d’états ; augmentez alors le prédiviseur ou appliquez séparément la largeur matérielle. Une résolution de 10 bits n’impose pas non plus une valeur maximale exactement égale à 1,023 : elle signifie qu’au moins 1,024 positions tiennent dans la période.
Une PWM centrée compte généralement à la montée puis à la descente, ce qui ajoute un facteur proche de deux ; employez donc l’équation propre au minuteur. Tenez aussi compte du temps mort, de la synchronisation, des compteurs de répétition et des changements d’horloge en basse consommation. Si l’exactitude de la fréquence prime, essayez des couples prédiviseur-période voisins.
Pour affiner le rapport cyclique, baissez la fréquence PWM ou augmentez l’horloge. La résolution mathématique ne garantit pas la précision analogique : retards, gigue, étage de puissance et charge influencent le résultat réel.
Cas d’usage
Dimensionner un minuteur pour LED
Vérifiez qu’une fréquence sans scintillement conserve assez de niveaux pour des variations lumineuses progressives.
Préparer un micrologiciel moteur
Comparez la fréquence de commutation aux bits entiers disponibles sur le minuteur de commande.
Choisir le prédiviseur
Évaluez son effet sur les ticks, la plage du compteur, la fréquence réalisable et la granularité.
Questions fréquentes
Quelle formule le calculateur emploie-t-il ?
En PWM alignée sur un front : comptes = floor(horloge / prédiviseur / fréquence PWM), puis bits = floor(log2(comptes)).
Pourquoi la résolution théorique est-elle fractionnaire ?
Le logarithme peut tomber entre deux puissances de deux ; les bits entiers donnent la plus grande plage binaire complète disponible.
Pourquoi la fréquence réelle diffère-t-elle de la cible ?
La période idéale peut contenir une fraction de tick. Sa conversion en comptes entiers peut augmenter la fréquence réalisable.
Le calcul convient-il à une PWM centrée ?
Le résultat direct suppose un alignement sur un front. Les modes centrés ajoutent généralement un comptage montant et descendant.
Faut-il saisir la fréquence du processeur comme horloge de la minuterie ?
Pas d'office. Indiquez l'horloge qui alimente réellement la minuterie, avant son propre prédiviseur. Les microcontrôleurs la dérivent souvent d'un bus de périphériques, et certains arbres d'horloge la multiplient quand le diviseur du bus dépasse un.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/elec/pwm-resolution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"timer_clock_hz":72000000,"pwm_frequency_hz":20000}'const res = await fetch("https://api.kit.forhosting.com/elec/pwm-resolution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"timer_clock_hz": 72000000,
"pwm_frequency_hz": 20000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/pwm-resolution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"timer_clock_hz": 72000000,
"pwm_frequency_hz": 20000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/pwm-resolution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"timer_clock_hz":72000000,"pwm_frequency_hz":20000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"timer_clock_hz":72000000,"pwm_frequency_hz":20000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/pwm-resolution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"timer_clock_hz": 72000000,
"pwm_frequency_hz": 20000
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.pwm_resolution",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comment lire les valeurs calculées
Le calcul reste déterministe, sans réseau ni base de données de composants. Indiquez dans timer_clock_hz l’horloge qui alimente réellement le périphérique avant son prédiviseur. Ne reprenez pas automatiquement la fréquence du processeur : les microcontrôleurs dérivent souvent les minuteurs d’un bus périphérique, et certaines architectures multiplient cette horloge. pwm_frequency_hz est la fréquence de sortie voulue en mode aligné sur un front. prescaler doit être un entier positif et vaut un par défaut. timer_tick_hz est l’horloge après division. ideal_counts_per_period conserve le rapport mathématique tandis que available_counts_per_period contient sa partie entière utilisable. max_counter_value retire un. resolution_bits annonce les bits complets et theoretical_resolution_bits conserve la fraction. actual_pwm_frequency_hz repose sur le compte entier et peut dépasser légèrement la cible ; frequency_error_percent mesure l’écart. L’automatisation par API coûte $0.002 par élément réussi.
Questions techniques
La largeur du registre est-elle contrôlée ?
Non. Comparez max_counter_value à la limite physique, par exemple 65,535 pour un registre de période sur 16 bits.