حاسبة دقة PWM بالبت
تبيّن حاسبة دقة PWM هذه عدد نبضات المؤقت وعدد البتات الكاملة المتاحة عند تردد PWM المطلوب.
شغّل الأداة مجانًا
أدخلوا تردد ساعة المؤقت بالهرتز، وتردد PWM المرغوب، ومقسّمًا صحيحًا اختياريًا. تشمل النتيجة تردد نبض المؤقت، والعدد المثالي والمتاح من العدّات لكل دورة، وأقصى قيمة للعداد، والدقة النظرية والكاملة، والتردد الممكن، ونسبة خطئه. تفيد هذه البيانات في تخطيط مؤقتات المتحكمات الدقيقة قبل اختيار قيم المسجلات أو كتابة البرنامج الثابت.
كيف تحدد الساعة وتردد PWM مقدار الدقة
يتقدم المؤقت العتادي مرة مع كل نبضة ساعة، ثم يعود إلى البداية عند نهاية الدورة المبرمجة. في PWM المحاذي للحافة، تنتج قسمة ساعة الإدخال على المقسّم وعلى تردد PWM المطلوب العدد المثالي لحالات العداد في الدورة الواحدة. وكلما زاد عدد الحالات، استطاع مسجل المقارنة تمثيل مستويات أكثر لنسبة التشغيل. لذلك تساوي الدقة لوغاريتم عدد الحالات للأساس اثنين. تقرّب الحاسبة العدد المثالي إلى الأسفل لأن العتاد لا ينفذ جزءًا من نبضة، ثم تقرّب اللوغاريتم إلى الأسفل لإظهار عدد البتات الكاملة. فعلى سبيل المثال، تعطي ساعة 72 MHz مع تردد 20 kHz ومن دون تقسيم عدد 3,600 عدّة، أي نحو 11.81 بت نظريًا و11 بت كاملة. وتكون أقصى قيمة للعداد أقل بواحد، لأن العد يجري عادة من الصفر إلى ARR أو TOP شاملًا. زيادة تردد PWM تقلل النبضات في كل دورة، بينما يتيح خفضه خطوات أدق لنسبة التشغيل.
كيفية قراءة القيم المحسوبة
ضعوا في timer_clock_hz تردد الساعة الذي يغذي وحدة المؤقت فعلًا قبل مقسّمها. لا تفترضوا أنه يساوي تردد CPU، فالمتحكمات الدقيقة تشتق ساعة المؤقت غالبًا من ناقل طرفي، وقد تضاعفها بعض أشجار الساعة. تمثل pwm_frequency_hz تردد الخرج المطلوب في النمط المحاذي للحافة. يجب أن تكون prescaler عددًا صحيحًا موجبًا، وقيمتها الافتراضية واحد. تمثل timer_tick_hz الساعة بعد التقسيم. تحتفظ ideal_counts_per_period بالنسبة الرياضية، بينما تعرض available_counts_per_period العدد الصحيح القابل للاستخدام. تطرح max_counter_value واحدًا من هذا العدد. تعرض resolution_bits البتات الكاملة، وتحفظ theoretical_resolution_bits القيمة الكسرية للمقارنة. تستخدم actual_pwm_frequency_hz الدورة الصحيحة، ولذلك قد تتجاوز الهدف قليلًا، وتقيس frequency_error_percent هذا الفرق. تبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل عنصر ناجح. الحساب حتمي ولا يستخدم شبكة أو قاعدة بيانات للأجهزة.
تطبيق النتيجة على مؤقت متحكم دقيق حقيقي
تعاملوا مع النتيجة بوصفها فحصًا أوليًا للإمكان، ثم قارنوها بدليل المتحكم الدقيق. لا يقبل مسجل دورة بعرض 16 بت قيمة قصوى أكبر من 65,535 حتى إذا وفرت نسبة الترددات حالات أكثر؛ عندئذ زيدوا المقسّم أو طبقوا حد عرض العتاد بصورة منفصلة. كما أن نتيجة 10 بت لا تفرض أن تكون القيمة القصوى 1,023 تمامًا، بل تعني توافر 1,024 موضعًا على الأقل. يعد PWM المحاذي للمركز عادة صعودًا وهبوطًا، فيضيف عاملًا يقارب اثنين؛ لذلك استخدموا معادلة الجهاز المحددة. راعوا أيضًا الزمن الميت، والمزامنة، وعدادات التكرار، وتغير الساعة في أوضاع الطاقة المنخفضة. إذا كانت دقة التردد أهم من دقة نسبة التشغيل، فاختبروا توليفات متقاربة من المقسّم والدورة. وللحصول على خطوات أدق، اخفضوا تردد PWM أو ارفعوا ساعة المؤقت. الدقة الرياضية تصف المستويات القابلة للاختيار ولا تضمن الدقة التناظرية؛ فقد تقلل التأخيرات والارتعاش ودائرة القيادة والحمل من الأداء الفعلي.
حالات الاستخدام
تحديد مؤقت لتعتيم LED
تحققوا من أن التردد الخالي من الوميض يترك خطوات كافية لتغيير السطوع بسلاسة.
تخطيط برنامج التحكم بالمحركات
قارنوا تردد التبديل بدقة البتات الكاملة المتاحة من مؤقت التحكم بالمحرك.
اختيار مقسّم المؤقت
قيّموا أثر المقسّم في النبضات ومجال العداد والتردد الممكن ودقة نسبة التشغيل.
الأسئلة الشائعة
ما المعادلة التي تستخدمها الحاسبة؟
في PWM المحاذي للحافة: العدّات = floor(الساعة / المقسّم / تردد PWM)، والبتات = floor(log2(العدّات)).
لماذا تكون الدقة النظرية كسرية؟
قد يقع اللوغاريتم بين قوتين للعدد اثنين؛ وتمثل البتات الكاملة أكبر مجال ثنائي كامل يمكن استيعابه.
لماذا يختلف التردد الفعلي عن الهدف؟
قد تحتوي الدورة المثالية على جزء من نبضة. وعند تقريبها إلى عدد صحيح من العدّات قد يرتفع التردد الممكن.
هل يصلح الحساب لـ PWM المحاذي للمركز؟
تفترض النتيجة المباشرة المحاذاة للحافة. وتضيف الأنماط المركزية عادة عامل العد صعودًا وهبوطًا.
هل تفرض الحاسبة عرض مسجل المؤقت؟
لا. قارنوا max_counter_value بحد العتاد، مثل 65,535 لمسجل دورة بعرض 16 بت.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
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)مثال على الطلب
{
"timer_clock_hz": 72000000,
"pwm_frequency_hz": 20000
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.pwm_resolution",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |