التحويل التماثلي الرقمي: الدارة ADC0804

يتعلّم التلميذ كيف يتحوّل توتر تماثلي إلى عدد ثنائي: الاعتيان والتكميم والترميز، خطوة التبديل والتباين وقانون التحويل، مبدأ التقريب المتتالي، ثم الدارة ADC0804 بمرابطها وساعتها ومرجعها وإشارات التحكم فيها، ومبدأ الفولطمتر الرقمي وربط المستبدل بالميكرومراقب PIC16F84A، ويُختم بتمارين محلولة بنمط البكالوريا.

يتكوّن الدرس من 7 أجزاء: 1. من الإشارة التماثلية إلى العدد: مبدأ التحويل، 2. خطوة التبديل والتباين وقانون التحويل، 3. مبدأ التحويل بالتقريب المتتالي، 4. الدارة المندمجة ADC0804: المرابط والساعة والمرجع، 5. التحكم في ADC0804: الإشارات CS وWR وINTR وRD، 6. مبدأ الفولطمتر الرقمي والربط مع PIC16F84A، 7. تمارين محلولة بنمط البكالوريا.

1. من الإشارة التماثلية إلى العدد: مبدأ التحويل

لماذا نحتاج إلى مستبدل تماثلي رقمي؟

رأينا في درس سلسلة الاكتساب أن الملتقط (capteur) يحوّل مقداراً فيزيائياً (درجة حرارة، مستوى سائل، ضغط، إضاءة) إلى إشارة كهربائية، وأن طابق التكييف (conditionnement) يضخّمها ويرشّحها حتى تصير توتراً بين 0 وبضعة فولطات. هذا التوتر تماثلي: يأخذ كل القيم الممكنة في مجاله ويتغيّر باستمرار مع الزمن.

أما جزء المعالجة (الميكرومراقب PIC16F84A، المبرمج الآلي، الحاسوب) فلا يفهم إلا الأعداد الثنائية: كل رجل من أرجله تقرأ 0 أو 1 فقط. بين العالمين نضع المستبدل التماثلي الرقمي (convertisseur analogique-numérique: CAN، وبالإنجليزية ADC)، ويسمى أيضاً «المحوّل التماثلي الرقمي»: دارة تأخذ توتراً تماثلياً $V_e$ وتعطي عدداً ثنائياً N من n بتاً يمثّله.

![سلسلة الاكتساب وموقع المستبدل التماثلي الرقمي بين طابق التكييف وجزء المعالجة](/uploads/media/ge_i3_chain.png)

يبيّن الشكل السلسلة من أعلى إلى أسفل: المقدار الفيزيائي، ثم الملتقط، ثم التكييف، ثم المستبدل ADC0804 برمزه (مربّع يقسمه قطر، علامة التماثلي في جهة الدخول والعلامة # في جهة الخروج)، ثم المعالجة بالميكرومراقب، ثم الإظهار أو الأمر. على اليمين نوع الإشارة بين كل طابقين: تماثلية قبل المستبدل، ورقمية بعده.

ثلاثة أنواع من الإشارات

| النوع | قيمها | مثال | |---|---|---| | تماثلية (analogique) | كل القيم في مجال، وتتغيّر باستمرار | توتر ملتقط حرارة بين 0 و1,5 V | | منطقية (logique، ثنائية الحالة) | حالتان فقط: 0 أو 1 | ملتقط نهاية الشوط، زر ضاغط | | رقمية (numérique) | كلمة من n بتاً تمثّل عدداً | العدد N على المخارج DB7 إلى DB0 |

الكلمة الرقمية N

يُكتب العدد الذي يعطيه المستبدل كلمة ثنائية من n بتاً: $N = b_{n-1}\dots b_1 b_0$.

  • $b_0$ هو البت الأقل وزناً (LSB: least significant bit) ووزنه $2^0 = 1$؛
  • $b_{n-1}$ هو البت الأكبر وزناً (MSB: most significant bit) ووزنه $2^{n-1}$؛
  • عدد الكلمات الممكنة $2^n$، من 0 إلى $2^n - 1$. لمستبدل من 8 بتات: 256 كلمة، من 0 إلى 255 (من 00h إلى FFh).

القيمة العشرية للكلمة:

$ N = b_7 2^7 + b_6 2^6 + \dots + b_0 2^0 $

مثال محلول 1: يعطي مستبدل من 8 بتات الكلمة $1011\,0110$. ما قيمتها العشرية والست عشرية؟

  • الأوزان التي بتاتها 1 هي 128 و32 و16 و4 و2: $N = 128 + 32 + 16 + 4 + 2 = 182$؛
  • نقسم الكلمة إلى مجموعتين من 4 بتات: $1011$ تساوي B و$0110$ تساوي 6، أي B6h؛
  • تحقق: $11 \times 16 + 6 = 182$.

العمليات الأربع للتحويل

لا يستطيع المستبدل أن يحوّل إشارة تتغيّر في كل لحظة دفعة واحدة. يمرّ التحويل بأربع عمليات:

  • الاعتيان (échantillonnage): نأخذ قيمة واحدة من الإشارة كل مدة ثابتة $T_e$ تسمى دور الاعتيان؛ تواتر الاعتيان $f_e = 1/T_e$.
  • الحجز (blocage، أو التثبيت): نُبقي القيمة المأخوذة ثابتة طوال مدة التحويل، حتى لا يتغيّر الدخل والمستبدل يقارنه.
  • التكميم (quantification): نرفق بالقيمة المحجوزة أقرب مستوى من مستويات منفصلة متباعدة بخطوة ثابتة q (الجزء الموالي).
  • الترميز (codage): نكتب رقم ذلك المستوى عدداً ثنائياً N على المخارج.

![اعتيان إشارة تماثلية ثم حجز كل عيّنة طوال دور الاعتيان](/uploads/media/ge_i3_sampling.png)

في الأعلى الإشارة التماثلية (بالأزرق) والعيّنات المأخوذة كل $T_e$ (النقاط الحمراء). في الأسفل الإشارة المحجوزة: درجات ثابتة يحوّلها المستبدل واحدة بعد الأخرى. كلما صغُر $T_e$ اقتربت الدرجات من الإشارة الأصلية.

شرط الاعتيان (Shannon)

لكي لا نفقد معلومات الإشارة، يجب أن يكون تواتر الاعتيان أكبر من ضعف أكبر تواتر $f_{max}$ في الإشارة:

$ f_e > 2\,f_{max} $

ولا يمكن أن نأخذ عيّنة جديدة قبل انتهاء تحويل العيّنة السابقة: $T_e$ أكبر من زمن التحويل $t_c$ أو يساويه.

مثال محلول 2: مستبدل زمن تحويله $t_c = 110\ \mu s$، ونضيف $15\ \mu s$ لقراءة النتيجة.

  • أصغر دور اعتيان: $T_e = 110 + 15 = 125\ \mu s$؛
  • أكبر تواتر اعتيان: $f_e = 1/(125 \times 10^{-6}) = 8000\ Hz$؛
  • أكبر تواتر تسمح به قاعدة الاعتيان: $f_{max} < f_e/2 = 4000\ Hz$.

درجة حرارة فرن أو مستوى خزان يتغيّران في ثوانٍ أو دقائق، أي بتواتر أقل بكثير من 1 Hz: هذا المستبدل يكفي بسعة. أما الصوت (حتى 20 kHz) فيحتاج مستبدلاً أسرع بكثير.

> للحفظ: المستبدل التماثلي الرقمي يأخذ توتراً $V_e$ ويعطي عدداً N من n بتاً. يمرّ بالاعتيان والحجز والتكميم والترميز. شرط الاعتيان: $f_e > 2\,f_{max}$ و$T_e \ge t_c$.

أخطاء شائعة

  • الخلط بين ADC (تماثلي نحو رقمي، CAN) وDAC (رقمي نحو تماثلي، CNA): الأول دخله توتر وخروجه عدد، والثاني العكس. الحرف الأول يدل على الدخل: Analog-to-Digital.
  • عدّ الكلمات الممكنة $2^n - 1$ بدل $2^n$: لمستبدل من 8 بتات 256 كلمة، وأكبرها 255.
  • قراءة الكلمة من اليمين على أنها MSB: البت الأكبر وزناً هو الذي يُكتب أولاً على اليسار، وهو DB7 في ADC0804.

2. خطوة التبديل والتباين وقانون التحويل

التوتر في كامل السلم

كل مستبدل يقبل توترات دخل في مجال محدّد يسمى التوتر في كامل السلم (pleine échelle): نكتبه $V_{FS}$ (full scale) أو $V_{PE}$. يحدّده توترا المرجع: $V_{FS} = V_{ref+} - V_{ref-}$.

  • إذا تغيّر الدخل من 0 إلى $V_{FS}$ فالمستبدل أحادي القطبية (unipolaire)، وهي حالة ADC0804 في الاستعمال العادي؛
  • إذا تغيّر من $-V_{FS}/2$ إلى $+V_{FS}/2$ فهو ثنائي القطبية (bipolaire).

خطوة التبديل q

يقسم المستبدل المجال $V_{FS}$ إلى $2^n$ شريحة متساوية. عرض الشريحة الواحدة يسمى خطوة التبديل أو الكم (quantum) q: هو تغيّر توتر الدخل الذي يزيد العدد N بواحد (LSB واحد).

$ q = \frac{V_{FS}}{2^n} $

قانون التحويل

نعتمد في هذا الدرس، كما في مواضيع البكالوريا، القانون الآتي لمستبدل أحادي القطبية: العدد N هو الجزء الصحيح لخارج قسمة $V_e$ على q:

$ N = \mathrm{int}\left(\frac{V_e}{q}\right) $

ما دام $V_e$ أقل من $V_{FS}$. فوق ذلك يبقى المستبدل على أكبر عدد $N = 2^n - 1$ (الإشباع).

![الميزة الدرجية لمستبدل من 3 بتات وخطأ التكميم الموافق](/uploads/media/ge_i3_stair.png)

في الأعلى الميزة الدرجية لمستبدل من 3 بتات مع $V_{FS} = 8\ V$، أي $q = 8/2^3 = 1\ V$: كل درجة عرضها q، والعدد يقفز بواحد عند كل مضاعف لـq، والخط المتقطع هو الميزة المثالية $V_e/q$ التي لا يستطيع المستبدل اتباعها. في الأسفل خطأ التكميم $\varepsilon = V_e - N\,q$: سنّ منشار بين 0 وq.

| مجال $V_e$ (V) | N (عشري) | N (ثنائي) | |---|---|---| | من 0 إلى أقل من 1 | 0 | 000 | | من 1 إلى أقل من 2 | 1 | 001 | | من 2 إلى أقل من 3 | 2 | 010 | | … | … | … | | من 6 إلى أقل من 7 | 6 | 110 | | من 7 فما فوق | 7 | 111 |

نلاحظ أن الكلمة 111 تبدأ عند $7\ V$ أي $V_{FS} - q$، لا عند $V_{FS}$: أكبر عدد يقابل $(2^n - 1)\,q$.

الطريق المعاكس: من N إلى $V_e$

العدد N لا يعطي التوتر بالضبط بل مجالاً عرضه q:

$ N\,q \le V_e < (N + 1)\,q $

ولهذا نقول إن خطأ التكميم (erreur de quantification) $\varepsilon = V_e - N\,q$ يبقى بين 0 وq. هو خطأ ملازم لكل تحويل، ولا نصغّره إلا بتصغير q، أي بزيادة عدد البتات أو بتصغير $V_{FS}$.

> ملاحظة: في الدارات الحقيقية (ومنها ADC0804 بعد ضبطه) تُزاح العتبات بنصف خطوة، فتقع أول قفزة عند $q/2$ ويصير الخطأ بين $-q/2$ و$+q/2$ (تقريب إلى أقرب عدد). في البكالوريا نستعمل الجزء الصحيح $\mathrm{int}(V_e/q)$ ما لم يذكر الموضوع غير ذلك.

التباين (résolution)

التباين يعبّر عن دقة المستبدل: هو أصغر تغيّر يستطيع تمييزه، منسوباً إلى المجال كله:

$ r = \frac{q}{V_{FS}} = \frac{1}{2^n} $

لـ 8 بتات: $r = 1/256 \approx 0{,}39\ \%$؛ لـ 10 بتات: $r = 1/1024 \approx 0{,}098\ \%$. ويسمى q أحياناً التباين المطلق (بالفولط).

> اصطلاح هذا الدرس للمستبدل التماثلي الرقمي: $V_{FS} = 2^n\,q$، أي $q = V_{FS}/2^n$، و$r = 1/2^n$، و$N = \mathrm{int}(V_e/q)$. أما في المستبدل الرقمي التماثلي (درس DAC0800) فأكبر توتر خروج يوافق $N = 2^n - 1$، فيكون $V_{FS} = (2^n - 1)\,q$ و$q = V_{FS}/(2^n - 1)$ و$r = 1/(2^n - 1)$. لكل مستبدل اصطلاحه؛ المهم ألا نخلط الاصطلاحين في تمرين واحد، ونقرأ دائماً ما يسمّيه الموضوع «كامل السلم».

أمثلة محلولة

مثال 1: مستبدل من 8 بتات، $V_{FS} = 5\ V$، و$V_e = 3{,}2\ V$.

  • $q = 5/256 = 0{,}01953\ V = 19{,}53\ mV$؛
  • $V_e/q = 3{,}2/0{,}01953125 = 163{,}84$، فـ $N = 163$؛
  • $163 = 128 + 32 + 2 + 1$، أي $1010\,0011$ أو A3h.

مثال 2: نفس المستبدل مع $V_{FS} = 5{,}12\ V$ (نختار هذه القيمة لأنها تعطي خطوة مستديرة).

  • $q = 5{,}12/256 = 0{,}02\ V = 20\ mV$؛
  • من أجل $V_e = 2{,}4\ V$: $N = 2{,}4/0{,}02 = 120$، أي $0111\,1000$ أو 78h.

مثال 3 (الطريق المعاكس): مع $V_{FS} = 5\ V$ قرأ البرنامج $N = 200$. بين أي قيمتين يقع $V_e$؟

  • $200 \times 0{,}01953125 = 3{,}906\ V$ و$201 \times 0{,}01953125 = 3{,}926\ V$؛
  • إذن $3{,}906\ V \le V_e < 3{,}926\ V$.

مثال 4 (اختيار عدد البتات): نريد $q \le 5\ mV$ مع $V_{FS} = 5\ V$.

  • يجب أن يكون $2^n \ge 5/0{,}005 = 1000$؛
  • $2^9 = 512$ لا يكفي، و$2^{10} = 1024$ يكفي: 10 بتات، وتصير $q = 5/1024 = 4{,}88\ mV$.

مثال 5 (ثنائي القطبية): مستبدل من 8 بتات دخله من $-5\ V$ إلى $+5\ V$، أي $V_{FS} = 10\ V$ و$q = 39{,}06\ mV$. نزيح الدخل بنصف المجال:

$ N = \mathrm{int}\left(\frac{V_e + V_{FS}/2}{q}\right) $

من أجل $V_e = -1\ V$: $(-1 + 5)/0{,}0390625 = 102{,}4$، فـ $N = 102$. ومن أجل $V_e = 0$ نجد $N = 128$، أي $1000\,0000$: الصفر في منتصف المجال.

أخطاء شائعة

  • القسمة على $2^n - 1$ بدل $2^n$ في المستبدل التماثلي الرقمي: مع 5,12 V نجد 20,08 mV بدل 20 mV.
  • تقريب q قبل القسمة: مع $q = 19{,}53\ mV$ مقرّبة إلى 20 mV يعطي $V_e = 3{,}2\ V$ العدد 160 بدل 163. نحتفظ بكل الأرقام حتى النهاية.
  • تقريب $V_e/q$ إلى أقرب عدد بدل أخذ الجزء الصحيح: 163,84 تعطي 163 لا 164.

3. مبدأ التحويل بالتقريب المتتالي

كيف «يخمّن» المستبدل العدد؟

توجد عدة طرق لصنع مستبدل تماثلي رقمي. كلها تقارن الدخل $V_e$ بتوترات معروفة، لكنها تختلف في عدد المقارنات وسرعتها:

| النوع | المبدأ | السرعة | الاستعمال | |---|---|---|---| | المتوازي (flash) | $2^n - 1$ مقارن تعمل معاً | الأسرع (دورة واحدة) | الفيديو، راسم الاهتزاز الرقمي | | بالعدّ (à rampe numérique) | عداد يزيد حتى يتجاوز توتر مستبدل داخلي قيمة $V_e$ | بطيء: حتى $2^n$ نبضة | تعليمي | | بالتقريب المتتالي (approximations successives) | تحديد البتات واحداً بعد الآخر من MSB إلى LSB | متوسط: n قرار | ADC0804 والميكرومراقبات | | بالمنحدر المزدوج (double rampe) | شحن مكثفة ثم تفريغها وقياس الزمن | بطيء جداً، لكنه دقيق | أجهزة القياس المتعددة |

ADC0804 مستبدل بالتقريب المتتالي (SAR: successive approximation register). نشرح مبدأه لأنه يفسّر زمن التحويل وإشارات التحكم في الجزء الموالي.

البنية الداخلية

![البنية الداخلية لمستبدل بالتقريب المتتالي: مقارن ومستبدل رقمي تماثلي داخلي وسجل التقريب المتتالي وماسكات الخروج](/uploads/media/ge_i3_sar_block.png)

يبيّن الشكل أربعة عناصر:

  • المقارن (comparateur): يقارن $V_e$ (على المدخل +) بالتوتر $V_{dac}$ (على المدخل −)، ويعطي $c = 1$ إذا كان $V_e \ge V_{dac}$؛
  • مستبدل رقمي تماثلي داخلي (DAC): يحوّل الكلمة الموجودة في السجل إلى توتر $V_{dac} = N_{essai}\,q$؛
  • سجل التقريب المتتالي (SAR): دارة منطقية تعاقبية تقودها الساعة CLK، تضع البتات وتحتفظ بها أو تمحوها حسب جواب المقارن؛
  • ماسكات الخروج (latches) بثلاث حالات: تحتفظ بالنتيجة النهائية وتضعها على DB7 إلى DB0 عند طلب القراءة؛ ويشير المستبدل إلى نهاية التحويل بالإشارة INTR.

الخوارزمية

المبدأ هو مبدأ الميزان ذي الكتل: نضع أثقل كتلة أولاً، فإن رجحت الكفة أزلناها، وإلا تركناها، ثم ننتقل إلى الكتلة الأخف.

  • البداية (أمر البدء): كل البتات 0.
  • نضع البت المدروس في 1 (نبدأ بـ MSB)، فيعطي المستبدل الداخلي $V_{dac}$.
  • نقارن: إذا كان $V_e \ge V_{dac}$ نحتفظ بالبت في 1، وإلا نعيده إلى 0.
  • ننتقل إلى البت الموالي (الأقل وزناً) ونعيد الخطوتين 2 و3.
  • بعد n قراراً تكون الكلمة كاملة: تُنقل إلى الماسكات ويُعلَن نهاية التحويل.

> للحفظ: في التقريب المتتالي يُحدَّد بت واحد في كل مرحلة، من الأكبر وزناً إلى الأقل وزناً: n مراحل لـ n بتاً، مهما كانت قيمة $V_e$.

مثال محلول: تحويل $V_e = 3{,}31\ V$

مستبدل من 8 بتات، $V_{FS} = 5{,}12\ V$ و$q = 20\ mV$. القيمة المنتظرة: $\mathrm{int}(3{,}31/0{,}02) = \mathrm{int}(165{,}5) = 165$.

| المرحلة | الكلمة المجرَّبة | $V_{dac}$ (V) | المقارنة | القرار | |---|---|---|---|---| | b7 | $1000\,0000$ (128) | 2,56 | $V_e \ge V_{dac}$ | $b_7 = 1$ | | b6 | $1100\,0000$ (192) | 3,84 | $V_e < V_{dac}$ | $b_6 = 0$ | | b5 | $1010\,0000$ (160) | 3,20 | $V_e \ge V_{dac}$ | $b_5 = 1$ | | b4 | $1011\,0000$ (176) | 3,52 | $V_e < V_{dac}$ | $b_4 = 0$ | | b3 | $1010\,1000$ (168) | 3,36 | $V_e < V_{dac}$ | $b_3 = 0$ | | b2 | $1010\,0100$ (164) | 3,28 | $V_e \ge V_{dac}$ | $b_2 = 1$ | | b1 | $1010\,0110$ (166) | 3,32 | $V_e < V_{dac}$ | $b_1 = 0$ | | b0 | $1010\,0101$ (165) | 3,30 | $V_e \ge V_{dac}$ | $b_0 = 1$ |

النتيجة $N = 1010\,0101 = 165$ أي A5h، وهي القيمة المنتظرة.

![تطوّر توتر المستبدل الداخلي خلال التقريب المتتالي حتى يقترب من 3,31 V](/uploads/media/ge_i3_sar_steps.png)

يبيّن الشكل التوتر $V_{dac}$ (بالأخضر) في كل مرحلة، والخط المتقطع الأزرق هو $V_e$. فوق كل درجة القرار: 1 إذا كانت الدرجة تحت $V_e$ (نحتفظ بالبت)، و0 إذا تجاوزته (نمحوه). نرى الدرجات تتأرجح حول $V_e$ وتقترب منه بنصف المسافة في كل مرة.

زمن التحويل

  • المستبدل بالعدّ يحتاج في أسوأ الحالات حوالي $2^n$ نبضة: 256 نبضة لـ 8 بتات، والزمن يتعلّق بقيمة $V_e$؛
  • المستبدل بالتقريب المتتالي يحتاج n قراراً فقط، وزمنه ثابت لا يتعلّق بـ$V_e$؛
  • في ADC0804 يحتاج كل قرار عدة أدوار من الساعة الداخلية، إضافة إلى البدء والنقل إلى الماسكات: تعطي وثيقة الصانع زمن تحويل بين 66 و73 دوراً للساعة $T_{CLK}$.

مثال محلول: ساعة ADC0804 بتواتر $f_{CLK} = 640\ kHz$.

  • $T_{CLK} = 1/640\,000 = 1{,}5625\ \mu s$؛
  • $t_c$ بين $66 \times 1{,}5625 = 103\ \mu s$ و$73 \times 1{,}5625 = 114\ \mu s$.

> ملاحظة للامتحان: ADC0804 ليس فيه دارة حجز داخلية. يجب ألا يتغيّر $V_e$ تغيّراً ملحوظاً خلال الـ 100 µs تقريباً التي يدوم فيها التحويل، وهذا محقق بسهولة للحرارة والمستوى والضغط.

أخطاء شائعة

  • البدء بالبت الأقل وزناً: الخوارزمية تبدأ دائماً بـ MSB لأنه يقسم المجال إلى نصفين.
  • قلب قاعدة القرار: نحتفظ بالبت عندما يكون $V_e$ أكبر من $V_{dac}$ أو يساويه، أي عندما لم «يتجاوز» التوتر المجرَّب الدخل.
  • الظن أن عدد المراحل $2^n$: هذا عدد كلمات المستبدل، أما عدد القرارات فهو n.

4. الدارة المندمجة ADC0804: المرابط والساعة والمرجع

تقديم الدارة

ADC0804 مستبدل تماثلي رقمي من 8 بتات بالتقريب المتتالي، بتكنولوجيا CMOS، في علبة من 20 رجلاً. أهم خصائصه حسب وثيقة الصانع:

  • تغذية واحدة $V_{CC} = 5\ V$، ودخل تماثلي من 0 إلى 5 V؛
  • دخل تفاضلي (différentiel): يحوّل الفرق بين VIN(+) وVIN(−)؛
  • ساعة داخلية بمقاومة ومكثفة خارجيتين، أو ساعة خارجية؛
  • زمن تحويل حوالي $100\ \mu s$ (بين 66 و73 دوراً للساعة)؛
  • مخارج ماسكة بثلاث حالات (trois états) متوافقة مع TTL: تُربط مباشرة بمنفذ ميكرومراقب أو بناقل معطيات؛
  • مداخل تحكم تعمل بالمستوى المنخفض: $\overline{CS}$ و$\overline{RD}$ و$\overline{WR}$، ومخرج $\overline{INTR}$ لنهاية التحويل.

![مرابط الدارة ADC0804 في علبة من 20 رجلاً](/uploads/media/ge_i3_pinout.png)

يبيّن الشكل المرابط العشرين: على اليسار مداخل التحكم (بالأحمر) والساعة (بالبرتقالي) والدخل التماثلي والمرجع (بالأزرق) والأرضيتان، وعلى اليمين التغذية ومقاومة الساعة والمخارج الرقمية (بالأخضر). انتبه: DB7 (MSB) في الرجل 11 وDB0 (LSB) في الرجل 18.

| الرجل | الاسم | الدور | |---|---|---| | 1 | $\overline{CS}$ | اختيار الدارة (chip select)، نشط بـ 0 | | 2 | $\overline{RD}$ | أمر القراءة: يفعّل المخارج DB، نشط بـ 0 | | 3 | $\overline{WR}$ | أمر بدء التحويل (start)، نشط بـ 0 | | 4 | CLK IN | دخل الساعة (أو مكثفة الساعة الداخلية) | | 5 | $\overline{INTR}$ | مخرج نهاية التحويل: يصير 0 عندما تكون النتيجة جاهزة | | 6 و7 | VIN(+) وVIN(−) | الدخل التماثلي التفاضلي | | 8 | A GND | الأرضي التماثلي | | 9 | VREF/2 | نصف توتر المرجع (يحدّد $V_{FS}$) | | 10 | D GND | الأرضي الرقمي | | 11 إلى 18 | DB7 إلى DB0 | المخارج الرقمية: DB7 هو MSB وDB0 هو LSB | | 19 | CLK R | مقاومة الساعة الداخلية | | 20 | VCC | التغذية +5 V (والمرجع إذا تُركت VREF/2 حرة) |

> الخط فوق الاسم ($\overline{CS}$) يعني أن الإشارة نشطة بالمستوى المنخفض: الأمر يُعطى بوضع 0 لا 1.

التغذية والأرضيان

تُغذّى الدارة بـ +5 V بين VCC (الرجل 20) والأرضي. للدارة أرضيان: A GND (الرجل 8) للجزء التماثلي وD GND (الرجل 10) للجزء الرقمي. يوصلان معاً في نقطة واحدة قريبة من الدارة، حتى لا تُفسد تيارات الجزء الرقمي القياس التماثلي.

الساعة

يمكن أن نعطي ADC0804 ساعة خارجية على CLK IN، لكن الأبسط أن نستعمل ساعته الداخلية: مقاومة R بين CLK R (الرجل 19) وCLK IN (الرجل 4)، ومكثفة C بين CLK IN والأرضي. تواترها حسب وثيقة الصانع:

$ f_{CLK} \approx \frac{1}{1{,}1\,R\,C} $

ينصح الصانع بـ $R = 10\ k\Omega$، ويجب أن يبقى $f_{CLK}$ بين 100 kHz و1460 kHz (القيمة النموذجية 640 kHz).

مثال محلول 1: $R = 10\ k\Omega$ و$C = 150\ pF$.

  • $f_{CLK} = 1/(1{,}1 \times 10^4 \times 150 \times 10^{-12}) = 1/(1{,}65 \times 10^{-6}) = 606\ kHz$؛
  • $T_{CLK} = 1{,}65\ \mu s$؛
  • زمن التحويل بين $66 \times 1{,}65 = 109\ \mu s$ و$73 \times 1{,}65 = 120\ \mu s$.

مثال محلول 2: نريد $f_{CLK} = 640\ kHz$ مع $R = 10\ k\Omega$.

  • $C = 1/(1{,}1\,R\,f_{CLK}) = 1/(1{,}1 \times 10^4 \times 640 \times 10^3) = 142\ pF$؛
  • نختار القيمة المعيارية الأقرب 150 pF، فنعود إلى المثال 1 (606 kHz).

المرجع VREF/2 والتوتر في كامل السلم

الرجل 9 تحدّد مجال الدخل. داخل الدارة مقسّم توتر يعطيها $V_{CC}/2$ إذا تُركت حرة:

  • VREF/2 حرة: $V_{FS} = V_{CC}$، ومع 5 V تكون $q = 5/256 = 19{,}53\ mV$؛
  • VREF/2 مطبَّقة (من مقسّم أو مرجع ثابت): مجال الدخل ضعفها:

$ V_{FS} = 2 \times V_{REF/2} $

$ q = \frac{2 \times V_{REF/2}}{256} $

| VREF/2 | $V_{FS}$ | q | الاستعمال | |---|---|---|---| | حرة، $V_{CC} = 5\ V$ | 5 V | 19,53 mV | الحالة العادية | | حرة، $V_{CC} = 5{,}12\ V$ | 5,12 V | 20 mV | خطوة مستديرة | | 1,28 V | 2,56 V | 10 mV | فولطمتر يقرأ مباشرة بـ 10 mV | | 0,64 V | 1,28 V | 5 mV | ملتقط حرارة 10 mV/°C: خطوة نصف درجة |

> قاعدة: إذا كان توتر الملتقط لا يتجاوز جزءاً من 5 V، نطبّق على VREF/2 نصف أكبر توتر له: يُستعمل المجال كله والخطوة تصغر، فتتحسن الدقة.

الدخل التفاضلي وإزاحة الصفر

يحوّل ADC0804 الفرق $V_{IN+} - V_{IN-}$. في الاستعمال العادي توصل VIN(−) بالأرضي. لكن يمكن أن نطبّق عليها توتراً ثابتاً لـإزاحة الصفر عندما لا يبدأ توتر الملتقط من الصفر:

$ N = \mathrm{int}\left(\frac{V_{IN+} - V_{IN-}}{q}\right) $

مثال محلول 3: ملتقط ضغط يعطي من 1 V إلى 3,56 V. نختار $V_{IN-} = 1\ V$ و$V_{REF/2} = 1{,}28\ V$، أي مجال $2{,}56\ V$ بالضبط و$q = 10\ mV$.

  • من أجل $V_{IN+} = 2{,}345\ V$: $N = \mathrm{int}(1{,}345/0{,}01) = \mathrm{int}(134{,}5) = 134$؛
  • لو تركنا VIN(−) في الأرضي لتجاوز المجال: 3,56 V أكبر من 2,56 V فيُشبع المستبدل على 255.

التركيب النموذجي

![التركيب النموذجي لـ ADC0804: التغذية والأرضيان والساعة الداخلية والمرجع والتحويل المستمر](/uploads/media/ge_i3_typical.png)

يبيّن الشكل الدارة جاهزة للعمل: $V_e$ على VIN(+) وVIN(−) والأرضيان موصولة بالأرضي، وVREF/2 مدخل يُطبَّق عليه المرجع (أو يُترك حراً)، والمقاومة $R = 10\ k\Omega$ بين الرجلين 19 و4 مع المكثفة $C = 150\ pF$ نحو الأرضي، والتغذية +5 V على الرجل 20، والمخارج الثمانية على ناقل. ربط $\overline{CS}$ و$\overline{RD}$ بالأرضي وربط $\overline{WR}$ بـ$\overline{INTR}$ مع زر البدء هو التحويل المستمر الذي نشرحه في الجزء الموالي.

أخطاء شائعة

  • استعمال $V_{CC}$ مكان $V_{FS}$ رغم أن VREF/2 مطبَّقة: إذا كانت $V_{REF/2} = 1{,}28\ V$ فالمجال 2,56 V لا 5 V.
  • قسمة VREF/2 على 256 مباشرة: $1{,}28/256 = 5\ mV$ خطأ، والصحيح $2 \times 1{,}28/256 = 10\ mV$.
  • نسيان المعامل 1,1 في تواتر الساعة: $1/(RC)$ يعطي 667 kHz بدل 606 kHz.
  • عكس ترتيب المخارج: DB7 في الرجل 11 وDB0 في الرجل 18.

5. التحكم في ADC0804: الإشارات CS وWR وINTR وRD

أربع إشارات للحوار مع المعالج

ADC0804 مصمَّم ليتحاور مع ميكرومراقب أو معالج. الحوار يمرّ بأربع إشارات كلها نشطة بالمستوى المنخفض:

| الإشارة | الاتجاه | الدور | الاسم العام في المراجع | |---|---|---|---| | $\overline{CS}$ (الرجل 1) | دخل | اختيار الدارة: بدونه لا يُقبل أي أمر | CS | | $\overline{WR}$ (الرجل 3) | دخل | بدء التحويل (start) | SOC (start of conversion) | | $\overline{INTR}$ (الرجل 5) | خرج | نهاية التحويل: يصير 0 عندما تجهز النتيجة | EOC (end of conversion) | | $\overline{RD}$ (الرجل 2) | دخل | قراءة: يفعّل المخارج DB7 إلى DB0 | OE (output enable) |

> ملاحظة للامتحان: قد يرسم الموضوع مستبدلاً عاماً بإشارات SOC وEOC وOE. في ADC0804 يقابلها على الترتيب $\overline{WR}$ و$\overline{INTR}$ و$\overline{RD}$، مع $\overline{CS} = 0$. وOE تعني تفعيل المخارج (output enable).

جدول التشغيل

| $\overline{CS}$ | $\overline{WR}$ | $\overline{RD}$ | ما يحدث | |---|---|---|---| | 1 | × | × | الدارة غير مختارة: لا تُقبل الأوامر، والمخارج في حالة المقاومة العالية | | 0 | ينزل إلى 0 | 1 | تصفير سجل التقريب المتتالي، و$\overline{INTR}$ يصعد إلى 1 | | 0 | يصعد إلى 1 | 1 | بداية التحويل | | 0 | 1 | 0 | قراءة: N على DB7 إلى DB0، و$\overline{INTR}$ يعود إلى 1 | | 0 | 1 | 1 | لا أمر: المخارج في حالة المقاومة العالية، والتحويل الجاري يستمر |

(× تعني: مهما كانت الحالة.)

مخطط التوقيت لدورة كاملة

![مخطط التوقيت لـ ADC0804: البدء بـ WR ثم التحويل ثم نهاية التحويل بـ INTR ثم القراءة بـ RD](/uploads/media/ge_i3_timing.png)

يبيّن المخطط الإشارات الأربع والمخارج على محور زمن واحد:

  • الاختيار: $\overline{CS}$ ينزل إلى 0 ويبقى طوال الدورة.
  • البدء: نبضة منخفضة على $\overline{WR}$. عند نزولها يُصفَّر السجل ويصعد $\overline{INTR}$ إلى 1؛ ويبدأ التحويل عند صعودها (الجبهة الصاعدة). يكفي أن تدوم النبضة $100\ ns$ حسب وثيقة الصانع.
  • التحويل: يدوم بين 66 و73 دوراً للساعة، و$\overline{INTR}$ يبقى 1. المخارج في حالة المقاومة العالية (high Z، الخط المتقطع).
  • النهاية: تُنقل النتيجة إلى ماسكات الخروج، ثم ينزل $\overline{INTR}$ إلى 0.
  • القراءة: نضع $\overline{RD} = 0$، فتخرج N على DB7 إلى DB0 (الخانة الخضراء)، ونزول $\overline{RD}$ يعيد $\overline{INTR}$ إلى 1.
  • نعيد $\overline{RD}$ إلى 1: تعود المخارج إلى المقاومة العالية، ويمكن بدء تحويل جديد.

لماذا مخارج بثلاث حالات؟

عندما يكون $\overline{RD} = 1$ أو $\overline{CS} = 1$ تكون المخارج كأنها مفصولة عن الخطوط (حالة المقاومة العالية، haute impédance). هذا يسمح بربط عدة دارات على نفس الخطوط الثمانية (ناقل المعطيات): مستبدلان مثلاً على المنفذ B، ونختار الذي نقرؤه بإشارته $\overline{CS}$. لو كانت المخارج عادية لتصادمت المستويات على الخطوط.

كيف يعرف الميكرومراقب أن النتيجة جاهزة؟

  • باختبار $\overline{INTR}$ (scrutation): نوصله بمدخل، وينتظر البرنامج حتى يصير 0. هي الطريقة الأدق والأسرع.
  • بانتظار زمن ثابت: بعد البدء ينتظر البرنامج زمناً أكبر من أسوأ زمن تحويل (مثلاً $150\ \mu s$ مع ساعة 640 kHz) ثم يقرأ، دون أن يحتاج إلى خط $\overline{INTR}$.
  • بالمقاطعة: $\overline{INTR}$ على الرجل RB0/INT، فيقطع البرنامج الرئيسي عند نهاية التحويل (خارج ما نطلبه في هذا المستوى).

التحويل المستمر (free running)

إذا لم يكن هناك ميكرومراقب (إظهار مباشر على ثنائيات ضوئية أو تخزين في سجل)، نجعل المستبدل يحوّل وحده باستمرار، كما في التركيب النموذجي للجزء السابق:

  • $\overline{CS}$ و$\overline{RD}$ موصولتان بالأرضي: الدارة مختارة دائماً ومخارجها مفعّلة دائماً؛
  • $\overline{WR}$ موصول بـ$\overline{INTR}$: عند كل نهاية تحويل ينزل $\overline{INTR}$ فينزل $\overline{WR}$ معه، فيُصفَّر السجل ويصعد $\overline{INTR}$، فيصعد $\overline{WR}$ ويبدأ تحويل جديد؛
  • عند وصل التغذية نحتاج نبضة بدء واحدة (زر يضع العقدة $\overline{WR}$ و$\overline{INTR}$ في الأرضي لحظة) لإطلاق السلسلة.

تتجدد المخارج عند نهاية كل تحويل، فتعرض دائماً آخر قيمة.

مثال محلول: ADC0804 في التحويل المستمر بساعة 640 kHz.

  • $T_{CLK} = 1{,}5625\ \mu s$، و$t_c$ بين $103\ \mu s$ و$114\ \mu s$؛
  • عدد التحويلات في الثانية بين $1/(114 \times 10^{-6}) \approx 8770$ و$1/(103 \times 10^{-6}) \approx 9700$.

> للحفظ: البدء = نبضة 0 على $\overline{WR}$ والتحويل يبدأ عند صعودها؛ النهاية = $\overline{INTR}$ ينزل إلى 0؛ القراءة = $\overline{CS} = 0$ و$\overline{RD} = 0$. كل الأوامر لا تُقبل إلا إذا كان $\overline{CS} = 0$.

أخطاء شائعة

  • الظن أن التحويل يبدأ عند نزول $\overline{WR}$: النزول يصفّر فقط، والبداية عند الصعود.
  • قراءة المنفذ قبل نزول $\overline{INTR}$: نقرأ نتيجة قديمة أو كلمة لم تكتمل.
  • نسيان $\overline{RD} = 0$: المخارج تبقى في حالة المقاومة العالية، فيقرأ الميكرومراقب مستويات عشوائية.
  • جعل $\overline{CS} = 1$ والانتظار: الدارة غير مختارة فلا تبدأ أي تحويل.

6. مبدأ الفولطمتر الرقمي والربط مع PIC16F84A

مبدأ الفولطمتر الرقمي

الفولطمتر الرقمي (voltmètre numérique) هو أبسط تطبيق للمستبدل التماثلي الرقمي: يحوّل التوتر المقيس إلى عدد ثم يعرضه بالأرقام العشرية. يتكوّن من أربعة طوابق:

  • طابق الدخل: مقسّم توتر (وأحياناً مضخم تابع) يُدخل التوتر المقيس في مجال المستبدل؛
  • المستبدل التماثلي الرقمي: يعطي العدد N؛
  • المعالجة: تحويل العدد الثنائي N إلى ثلاثة أرقام عشرية (مئات وعشرات وآحاد)؛
  • الإظهار: مفككات ترميز (7447 أو 7448) ومظاهر ذات 7 قطع، مع الفاصلة في المكان المناسب.

![مبدأ الفولطمتر الرقمي: مقسّم توتر ثم ADC0804 ثم الميكرومراقب ثم الإظهار](/uploads/media/ge_i3_voltmeter.png)

يتبع الشكل قياس $12{,}64\ V$ من طابق إلى طابق: المقسّم يقسم على 10 فيعطي 1,264 V، والمستبدل يعطي $N = 126$، والميكرومراقب يفصل الأرقام 1 و2 و6، والمظاهر تعرض 12.6 V.

اختيار الخطوة لقراءة مباشرة

السر في اختيار المرجع بحيث تكون الخطوة قوة للعشرة: مع $V_{REF/2} = 1{,}28\ V$ يكون $V_{FS} = 2{,}56\ V$ و$q = 10\ mV$. العدد N هو إذن التوتر نفسه مقيساً بـ 10 mV: $N = 126$ يعني 1,26 V، ولا يحتاج البرنامج إلى أي ضرب أو قسمة، يكفي وضع الفاصلة.

طابق الدخل

لقياس توترات حتى 25,5 V نقسمها على 10 بمقسّم: $R_1 = 90\ k\Omega$ و$R_2 = 10\ k\Omega$.

$ V_e = V_m \frac{R_2}{R_1 + R_2} = \frac{V_m}{10} $

مثال محلول 1: $V_m = 12{,}64\ V$.

  • $V_e = 12{,}64/10 = 1{,}264\ V$؛
  • $N = \mathrm{int}(1{,}264/0{,}01) = \mathrm{int}(126{,}4) = 126$؛
  • كل خطوة تقابل $10\ mV \times 10 = 0{,}1\ V$ من التوتر المقيس، فنعرض 12.6 V (الفاصلة بعد رقمين)؛
  • أكبر توتر يمكن قياسه: $N = 255$ أي 25,5 V؛ وفوقه يبقى العرض على 25.5.

تحويل N إلى أرقام عشرية

المظهر يحتاج رقماً عشرياً (BCD) لكل خانة، والمستبدل يعطي عدداً ثنائياً. يحسب الميكرومراقب المئات بطرح 100 ما دام ذلك ممكناً، ثم العشرات بطرح 10، والباقي هو الآحاد:

من أجل $N = 126$: طرح 100 مرة واحدة (CENT يساوي 1 ويبقى 26)، ثم طرح 10 مرتين (DIZ يساوي 2 ويبقى 6)، فـ UNIT يساوي 6. نتذكر أن `SUBWF UNIT,W` تحسب $UNIT - W$، وأن $C = 1$ يعني أن النتيجة غير سالبة.

ربط ADC0804 بالميكرومراقب PIC16F84A

نأخذ الآن نظاماً آلياً حقيقياً: تنظيم حرارة فرن. ملتقط حرارة يعطي $10\ mV/°C$، والتسخين يعمل تحت 60 °C ويتوقف ابتداء من 70 °C (فرق بين العتبتين حتى لا يرتجف المرحل).

![ربط ADC0804 بالميكرومراقب PIC16F84A مع أرقام الأرجل ومرحل التسخين](/uploads/media/ge_i3_pic.png)

يبيّن الشكل المستبدل في الأعلى والميكرومراقب في الأسفل مع أرقام الأرجل: الناقل DB7 إلى DB0 على RB7 إلى RB0، وخطوط التحكم الثلاثة على المنفذ A، والرجل $\overline{CS}$ في الأرضي، والمخرج RA3 يقود المرحل KA عبر مقاومة ومقحل. خطوط التغذية لم تُرسم، وهي مكتوبة أسفل الشكل: VCC (الرجل 20) وVDD (الرجل 14) على +5 V، وA GND وD GND (الرجلان 8 و10) وVSS (الرجل 5) على الأرضي.

| ADC0804 | PIC16F84A | الاتجاه | |---|---|---| | DB7 إلى DB0 (11 إلى 18) | RB7 إلى RB0 (13 إلى 6) | من المستبدل نحو الميكرومراقب | | $\overline{WR}$ (3) | RA0 (17) | من الميكرومراقب نحو المستبدل | | $\overline{RD}$ (2) | RA1 (18) | من الميكرومراقب نحو المستبدل | | $\overline{INTR}$ (5) | RA2 (1) | من المستبدل نحو الميكرومراقب | | $\overline{CS}$ (1) | الأرضي | الدارة مختارة دائماً | | — | RA3 (2) | مخرج نحو مرحل التسخين KA |

المرجع: $V_{REF/2} = 0{,}64\ V$، فـ $V_{FS} = 1{,}28\ V$ و$q = 5\ mV$. إذن $N = \mathrm{int}(0{,}01\,\theta/0{,}005) = \mathrm{int}(2\,\theta)$:

  • 60 °C تعطي $V_\theta = 0{,}60\ V$ و$N = 120$؛
  • 70 °C تعطي $V_\theta = 0{,}70\ V$ و$N = 140$؛
  • كل خطوة نصف درجة، وأكبر حرارة قبل الإشباع 127,5 °C.

سجلا الاتجاه (المداخل 1 والمخارج 0، والأرجل غير المستعملة مداخل):

  • TRISA: RA4 مدخل (1)، RA3 مخرج (0)، RA2 مدخل (1)، RA1 وRA0 مخرجان (0): $\text{-{}-{}-}1\,0100$، أي 14h؛
  • TRISB: كل المنفذ مداخل: $1111\,1111$، أي FFh.

قراءة البرنامج:

  • التهيئة: نكتب في PORTA قبل تبديل الاتجاه حتى تبدأ المخارج بالمستويات الصحيحة: $\overline{WR}$ و$\overline{RD}$ في 1 (غير نشطتين) والمرحل متوقف. ثم TRISA وTRISB في البنك 1؛
  • البدء: `BCF` ثم `BSF` على RA0 تعطي نبضة منخفضة على $\overline{WR}$ مدتها دورة واحدة ($1\ \mu s$ عند 4 MHz)، أطول بكثير من 100 ns المطلوبة؛
  • الانتظار: `BTFSC PORTA,2` تقفز فوق `GOTO attente` عندما يصير $\overline{INTR} = 0$، أي بعد حوالي 110 µs؛
  • القراءة: $\overline{RD} = 0$ ثم `NOP` (هامش لزمن ظهور المعطيات) ثم قراءة PORTB، ثم $\overline{RD} = 1$؛
  • القرار: تحت 120 تشغيل، ومن 140 فما فوق إيقاف، وبينهما لا نغيّر شيئاً: هذه حلقة تخلّف (hystérésis) بين 60 و70 °C.

مثال محلول 2: الفرن يسخن، والحرارة 65 °C ($N = 130$). الطرح الأول $130 - 120 = 10$ يعطي $C = 1$ فلا نقفز إلى `chauffe`؛ الطرح الثاني $130 - 140$ سالب فيعطي $C = 0$، فتقفز `BTFSC` فوق `BCF PORTA,3` ونعود إلى `main`: يبقى المرحل في حالته (مشتغلاً). عند 70 °C ($N = 140$) يعطي الطرح الثاني $C = 1$ فيتوقف التسخين، ثم يبقى متوقفاً حتى تنزل الحرارة تحت 60 °C.

أخطاء شائعة

  • قلب بتات TRIS: الخط الذي يأتي من $\overline{INTR}$ مدخل (1)، والخطان نحو $\overline{WR}$ و$\overline{RD}$ مخرجان (0).
  • نسيان تبديل البنك قبل الكتابة في TRISA وTRISB، أو نسيان الرجوع إلى البنك 0 بعدها.
  • قراءة PORTB و$\overline{RD} = 1$: المخارج في المقاومة العالية، فتُقرأ قيمة عشوائية.
  • قلب الاختبار بعد `SUBWF`: $C = 1$ يعني $N \ge$ العتبة، و$C = 0$ يعني $N <$ العتبة.

7. تمارين محلولة بنمط البكالوريا

التمرين 1: فرن تجفيف القطع الخزفية

دفتر الشروط: يجفّف فرن قطعاً خزفية بين 72 °C و88 °C. يعمل التسخين (المرحل KA الذي يغذّي المقاومات) ما دامت الحرارة أقل من 72 °C، ويتوقف ابتداء من 88 °C، وبين العتبتين يحتفظ بحالته.

المعطيات (من الملف التقني):

  • الملتقط مع طابق التكييف: $V_\theta = 0{,}025\,\theta$ (V و°C)؛
  • ADC0804 مغذّى بـ $V_{CC} = 5{,}12\ V$، والرجل VREF/2 حرة، وVIN(−) في الأرضي؛
  • الساعة الداخلية: $R = 10\ k\Omega$ و$C = 150\ pF$؛
  • الربط مع PIC16F84A (بلور 4 MHz): DB7 إلى DB0 على RB7 إلى RB0، و$\overline{INTR}$ على RA0، وRA1 نحو $\overline{WR}$، وRA2 نحو $\overline{RD}$، وRA3 نحو مقحل المرحل KA، وRA4 غير مستعملة؛ $\overline{CS}$ في الأرضي.

الأسئلة

  • ما دور ADC0804 في هذه السلسلة؟ وما مبدأ التحويل فيه؟
  • احسب $V_{FS}$ وخطوة التبديل q والتباين r.
  • احسب العدد N الموافق لكل عتبة (بالعشري والثنائي والست عشري).
  • ما أصغر تغيّر في الحرارة يميّزه النظام؟ وما أكبر حرارة يمكن قياسها؟
  • احسب تواتر الساعة ومجال زمن التحويل.
  • أعط TRISA وTRISB (الأرجل غير المستعملة مداخل).
  • اكتب مقطع البرنامج الذي يبدأ تحويلاً وينتظر نهايته ويضع N في W.

الحل

  • ADC0804 يحوّل التوتر التماثلي $V_\theta$ إلى عدد ثنائي N من 8 بتات يقرؤه الميكرومراقب على المنفذ B. يعمل بمبدأ التقريب المتتالي: 8 قرارات من DB7 إلى DB0.
  • VREF/2 حرة: $V_{FS} = V_{CC} = 5{,}12\ V$، و$q = 5{,}12/256 = 20\ mV$، و$r = 1/256 \approx 0{,}39\ \%$.
  • العتبتان:

| العتبة | $V_\theta$ | N | ثنائي | ست عشري | |---|---|---|---|---| | 72 °C | 1,8 V | 90 | $0101\,1010$ | 5Ah | | 88 °C | 2,2 V | 110 | $0110\,1110$ | 6Eh |

حساب: $V_\theta = 0{,}025 \times 72 = 1{,}8\ V$ و$1{,}8/0{,}02 = 90$؛ $V_\theta = 0{,}025 \times 88 = 2{,}2\ V$ و$2{,}2/0{,}02 = 110$.

  • خطوة واحدة 20 mV والملتقط يعطي 25 mV لكل درجة: التمييز $20/25 = 0{,}8\ °C$. أكبر عدد 255 يُبلغ عند $255 \times 0{,}02 = 5{,}10\ V$، أي $5{,}10/0{,}025 = 204\ °C$، وهو أكبر بكثير من حاجة الفرن.
  • $f_{CLK} = 1/(1{,}1 \times 10^4 \times 150 \times 10^{-12}) = 606\ kHz$، و$T_{CLK} = 1{,}65\ \mu s$؛ زمن التحويل بين $66 \times 1{,}65 = 109\ \mu s$ و$73 \times 1{,}65 = 120\ \mu s$.
  • RA0 مدخل (1)، وRA1 وRA2 وRA3 مخارج (0)، وRA4 مدخل (1): TRISA يساوي $\text{-{}-{}-}1\,0001$، أي 11h. المنفذ B كله مداخل: TRISB يساوي FFh.
  • المقطع:

ثم يقارن البرنامج W بـ 90 و110 كما في برنامج الفرن في الجزء السابق.

التمرين 2: مراقبة بطارية في محطة شمسية

دفتر الشروط: محطة شمسية صغيرة تشحن بطارية 12 V. يعرض فولطمتر رقمي توترها $V_B$ برقم بعد الفاصلة، ويشعل مصباح إنذار إذا نزل تحت 11,5 V، ويوقف الشحن ابتداء من 14,4 V.

المعطيات: مقسّم $R_1 = 90\ k\Omega$ و$R_2 = 10\ k\Omega$، ثم ADC0804 مع $V_{REF/2} = 1{,}28\ V$ وVIN(−) في الأرضي، ثم PIC16F84A.

الأسئلة

  • احسب نسبة المقسّم، ثم التوتر $V_e$ على VIN(+) من أجل $V_B = 14{,}4\ V$.
  • احسب $V_{FS}$ وq، ثم ما يقابل الخطوة من توتر البطارية.
  • احسب N الموافق لعتبتي الإنذار وإيقاف الشحن.
  • البطارية على 13,06 V: احسب N بالعشري والثنائي والست عشري، وأعط التوترين المجرَّبين في أول مرحلتين من التقريب المتتالي.
  • ما الذي يعرضه الفولطمتر من أجل $N = 137$؟
  • يريد المصمم في نسخة دون ميكرومراقب أن يعمل المستبدل وحده. كيف يربط $\overline{CS}$ و$\overline{RD}$ و$\overline{WR}$ و$\overline{INTR}$؟

الحل

  • $\dfrac{R_2}{R_1 + R_2} = \dfrac{10}{100} = 0{,}1$، فـ $V_e = 0{,}1 \times 14{,}4 = 1{,}44\ V$.
  • $V_{FS} = 2 \times 1{,}28 = 2{,}56\ V$، و$q = 2{,}56/256 = 10\ mV$. بسبب المقسّم تقابل الخطوة $10\ mV \times 10 = 0{,}1\ V$ من توتر البطارية، وأكبر توتر يقاس 25,5 V.
  • 11,5 V تعطي $V_e = 1{,}15\ V$ و$N = 115$ ($0111\,0011$، 73h)؛ و14,4 V تعطي $V_e = 1{,}44\ V$ و$N = 144$ ($1001\,0000$، 90h). الإنذار عندما $N < 115$، وإيقاف الشحن عندما $N \ge 144$.
  • $V_e = 1{,}306\ V$ و$N = \mathrm{int}(130{,}6) = 130$، أي $1000\,0010$ أو 82h. المرحلة الأولى تجرّب $1000\,0000$ أي $128 \times 10\ mV = 1{,}28\ V$، وهو أقل من 1,306 V فنحتفظ بـ $b_7$؛ المرحلة الثانية تجرّب $1100\,0000$ أي 1,92 V، وهو أكبر فنمحو $b_6$.
  • $N = 137$ يقابل $137 \times 0{,}1 = 13{,}7\ V$: الأرقام 1 و3 و7 مع الفاصلة قبل الأخير، أي 13.7 V.
  • التحويل المستمر: $\overline{CS}$ و$\overline{RD}$ في الأرضي (الدارة مختارة والمخارج مفعّلة دائماً)، و$\overline{WR}$ موصول بـ$\overline{INTR}$، مع زر أو دارة تعطي نبضة بدء واحدة عند التشغيل.

> ملاحظة: المقسّم يأخذ من البطارية $14{,}4/100\ k\Omega = 0{,}144\ mA$ فقط: تيار مهمل، وهذا سبب اختيار مقاومات من رتبة عشرات الكيلوأوم.

التمرين 3: ميزان تعبئة أكياس الدقيق

دفتر الشروط: تُملأ الأكياس على ميزان، وتُغلق صمّامة التعبئة عندما تبلغ الكتلة 25 kg. الكتلة الأعظمية على الميزان 50 kg.

المعطيات: ملتقط الوزن مع التكييف يعطي $V_p = 0{,}4 + 0{,}04\,m$ (V وkg)؛ الكيس الفارغ والحامل يعطيان الحد 0,4 V. ADC0804 مع $V_{IN-} = 0{,}4\ V$ و$V_{REF/2} = 1\ V$، وتصبّ الصمّامة 2 kg في الثانية.

الأسئلة

  • لماذا نطبّق 0,4 V على VIN(−)؟
  • احسب $V_{FS}$ وq وأصغر تغيّر في الكتلة يميّزه النظام.
  • احسب N عند 0 kg وعند 25 kg.
  • يريد الزبون تمييز 50 g. هل يكفي ADC0804؟ وكم بتاً يلزم؟
  • أثناء تحويل واحد (120 µs على الأكثر)، كم تتغيّر الكتلة؟ هل نحتاج إلى دارة حجز؟

الحل

  • المستبدل يحوّل الفرق $V_{IN+} - V_{IN-}$. بطرح 0,4 V نجعل الكتلة 0 kg تقابل $N = 0$ (إزاحة الصفر)، فلا يضيع جزء من المجال على توتر لا يحمل معلومة.
  • $V_{FS} = 2 \times 1 = 2\ V$، وهو بالضبط تغيّر $V_p$ بين 0 و50 kg ($0{,}04 \times 50 = 2\ V$). $q = 2/256 = 7{,}8125\ mV$، فالكتلة الموافقة لخطوة $7{,}8125/40 = 0{,}195\ kg$.
  • عند 0 kg: $V_p - 0{,}4 = 0$ و$N = 0$. عند 25 kg: $V_p = 0{,}4 + 1 = 1{,}4\ V$، والفرق $1\ V$، و$N = 1/0{,}0078125 = 128$، أي $1000\,0000$ أو 80h: نصف المجال، وهذا منطقي لأن 25 kg نصف 50 kg.
  • لا: ADC0804 يميّز 0,195 kg. لتمييز 50 g نحتاج $50/0{,}05 = 1000$ خطوة على الأقل، أي $2^n \ge 1000$، فـ 10 بتات (1024 خطوة، تمييز 49 g).
  • $2\ kg/s \times 120 \times 10^{-6}\ s = 0{,}24\ g$، أي أقل بكثير من خطوة واحدة (195 g). الدخل شبه ثابت أثناء التحويل، فلا نحتاج إلى دارة حجز.

> منهجية: في كل تمرين ADC0804 نبدأ دائماً بـ $V_{FS}$ (من VREF/2 أو VCC) ثم q، ثم نحوّل المقدار الفيزيائي إلى توتر ثم إلى N بالجزء الصحيح، ونتحقق من أن أكبر قيمة لا تتجاوز 255.

الجزء الأول من الدرس مفتوح للجميع، وبقيته مع الاشتراك.

تمرّن على هذا الدرس

تمارين درس التحويل التماثلي الرقمي: الدارة ADC0804 (70 تمريناً) — تمارين مصحّحة، أوّلها مفتوح للجميع.

دروس أخرى في هندسة كهربائية