جدول المحتويات:
- الخطوة 1: ما هو ADC؟
- الخطوة 2: كيف تعمل ADC في AVR- متحكم
- الخطوة 3: صيغة تحويل ADC
- الخطوة 4: كيفية تكوين ADC في ATmega8؟
- الخطوة 5: اختيار ADLAR
- الخطوة 6: اختيار ADCSRA
- الخطوة 7: إذا كنت تريد أن تأخذ قيمة ADC ، فعليك أن تحتاج إلى بعض الأعمال التي تم القيام بها المدرجة أدناه
- الخطوة 8: تعيين قيمة ADC
- الخطوة 9: تكوين خرج LED Pin
- الخطوة 10: تكوين أجهزة ADC
- الخطوة 11: تفعيل ADC
- الخطوة 12: ابدأ التحويلات التناظرية إلى الرقمية
- الخطوة 13: بينما إلى الأبد
- الخطوة 14: في النهاية ، أكمل الكود
فيديو: مقدمة إلى ADC في متحكم AVR - للمبتدئين: 14 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
في هذا البرنامج التعليمي سوف تعرف كل شيء ADC في متحكم avr
الخطوة 1: ما هو ADC؟
يسمح ADC ، أو المحول التناظري إلى الرقمي ، بتحويل الجهد التناظري إلى قيمة رقمية يمكن استخدامها بواسطة متحكم دقيق. هناك العديد من مصادر الإشارات التناظرية التي قد يرغب المرء في قياسها. هناك مستشعرات تمثيلية متاحة تقيس درجة الحرارة ، وشدة الضوء ، والمسافة ، والموضع ، والقوة ، على سبيل المثال لا الحصر.
الخطوة 2: كيف تعمل ADC في AVR- متحكم
يسمح AVR ADC للمتحكم الدقيق AVR بتحويل الفولتية التناظرية إلى قيم رقمية مع وجود أجزاء خارجية قليلة أو معدومة. يتميز ATmega8 بتقريب متتالي 10 بت ADC يحتوي ATmega8 على 7 قنوات ADC في PortC. يحتوي ADC على دبوس جهد إمداد تناظري منفصل ، AVCC. يجب ألا يختلف AVCC أكثر من ± 0.3 فولت عن VCC.. قد يتم فصل مرجع الجهد خارجيًا عند دبوس AREF. يتم استخدام AVCC كمرجع للجهد. يمكن أيضًا تعيين ADC للتشغيل بشكل مستمر (وضع التشغيل الحر) أو للقيام بتحويل واحد فقط.
الخطوة 3: صيغة تحويل ADC
حيث يكون Vin هو الجهد على دبوس الإدخال المحدد و Vref مرجع الجهد المحدد
الخطوة 4: كيفية تكوين ADC في ATmega8؟
يتم استخدام السجلات التالية لتنفيذ ADC في ATmega8
اختيار معدد ADC
الخطوة 5: اختيار ADLAR
نتيجة الضبط الأيسر ADC يؤثر بت ADLAR على عرض نتيجة تحويل ADC في سجل بيانات ADC. اكتب واحدًا إلى ADLAR إلى اليسار لضبط النتيجة. خلاف ذلك ، يتم ضبط النتيجة بشكل صحيح
عند اكتمال تحويل ADC ، يتم العثور على النتيجة في ADCH و ADCL. عند قراءة ADCL ، لا يتم تحديث سجل بيانات ADC حتى تتم قراءة ADCH. وبالتالي ، إذا تُركت النتيجة مضبوطة ولم تكن هناك حاجة إلى دقة أكثر من 8 بتات ، يكفي قراءة ADCH. خلاف ذلك ، يجب قراءة ADCL أولاً ، ثم ADCH. بتات اختيار القناة التناظرية تحدد قيمة هذه البتات المدخلات التناظرية المتصلة بـ ADC.
الخطوة 6: اختيار ADCSRA
• بت 7 - عدن: ADC تمكين كتابة هذا البت لواحد يمكّن ADC. من خلال كتابته على الصفر ، يتم إيقاف تشغيل ADC
• بت 6 - ADSC: ADC بدء التحويل في وضع التحويل الفردي ، اكتب هذا البت إلى واحد لبدء كل تحويل. في وضع التشغيل الحر ، اكتب هذا البت إلى واحد لبدء التحويل الأول.
• بت 5 - ADFR: تحديد تشغيل مجاني لـ ADC عند تعيين هذا البت (واحد) ، تعمل ADC في وضع التشغيل الحر. في هذا الوضع ، عينات ADC وتحديثات سجلات البيانات بشكل مستمر. سيؤدي مسح هذا البت (صفر) إلى إنهاء وضع التشغيل الحر.
• Bit 4 - ADIF: ADC Interrupt Flag يتم تعيين هذا البت عند اكتمال تحويل ADC ويتم تحديث سجلات البيانات. يتم تنفيذ ADC Conversion Complete Interrupt إذا تم تعيين بت ADIE و I-bit في SREG. يتم مسح ADIF بواسطة الأجهزة عند تنفيذ ناقل معالجة المقاطعة المقابل. بدلاً من ذلك ، يتم مسح ADIF عن طريق كتابة منطقي للعلم.
• Bit 3 - ADIE: ADC Interrupt Enable عند كتابة هذا البت إلى واحد وتعيين I-bit في SREG ، يتم تنشيط المقاطعة الكاملة لتحويل ADC.
• البتات 2: 0 - ADPS2: 0: بتات التحديد المسبق للمقياس المسبق ADC وفقًا لورقة البيانات ، يجب ضبط هذا المقياس المسبق بحيث يكون تردد إدخال ADC بين 50 كيلوهرتز و 200 كيلوهرتز. ساعة ADC مشتقة من ساعة النظام بمساعدة ADPS2: 0 تحدد هذه البتات عامل القسمة بين تردد XTAL وساعة الإدخال إلى ADC.
الخطوة 7: إذا كنت تريد أن تأخذ قيمة ADC ، فعليك أن تحتاج إلى بعض الأعمال التي تم القيام بها المدرجة أدناه
- قم بتعيين قيمة ADC
- تكوين دبوس إخراج الصمام
- تكوين أجهزة ADC
- تمكين ADC
- ابدأ التحويلات التناظرية إلى الرقمية
- بينما إلى الأبد
إذا كانت قيمة ADC أعلى ثم قم بتعيين القيمة ، فقم بتشغيل LED ELSE Turn Off LED
الخطوة 8: تعيين قيمة ADC
الكود: uint8_t ADCValue = 128 ؛
الخطوة 9: تكوين خرج LED Pin
الكود: DDRB | = (1 << PB1) ؛
الخطوة 10: تكوين أجهزة ADC
تكوين أجهزة ADC
يتم ذلك من خلال ضبط البتات في سجلات التحكم الخاصة بـ ADC. أولاً ، دعنا نضبط قيمة prescalar لـ ADC. وفقًا لورقة البيانات ، يجب ضبط مقياس prescalar هذا بحيث يكون تردد إدخال ADC بين 50 كيلوهرتز و 200 كيلوهرتز. ساعة ADC مشتقة من ساعة النظام. مع تردد نظام يبلغ 1 ميجاهرتز ، سينتج عن مقياس مسبق من 8 تردد ADC يبلغ 125 كيلوهرتز. يتم ضبط القياس المسبق بواسطة وحدات بت ADPS في سجل ADCSRA. وفقًا لورقة البيانات ، يجب تعيين ADPS2: 0 بتات الثلاثة على 011 للحصول على المقياس المسبق 8.
الكود: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) ؛
بعد ذلك ، دعنا نضبط الجهد المرجعي ADC. يتم التحكم في ذلك بواسطة وحدات بت REFS في سجل ADMUX. يحدد ما يلي الجهد المرجعي إلى AVCC.
الكود: ADMUX | = (1 << REFS0) ؛
لتعيين القناة التي تم تمريرها عبر معدد الإرسال إلى ADC ، يجب ضبط بتات MUX في سجل ADMUX وفقًا لذلك. نظرًا لأننا نستخدم ADC5 هنا
الكود: ADMUX & = 0xF0؛ ADMUX | = 5 ؛
من أجل وضع ADC في وضع التشغيل الحر ، قم بتعيين بت ADFR المسمى بشكل مناسب في سجل ADCSRA:
الكود: ADCSRA | = (1 << ADFR) ؛
سيتم إجراء تغيير إعدادات أخير لتسهيل قراءة قيمة ADC. على الرغم من أن ADC لديها دقة 10 بت ، إلا أن هذه المعلومات الكثيرة غالبًا ما تكون غير ضرورية. يتم تقسيم هذه القيمة 10 بت على سجلين 8 بت ، ADCH و ADCL. بشكل افتراضي ، يتم العثور على أقل 8 بتات من قيمة ADC في ADCL ، مع كون الجزأين العلويين أقل بتتين من ADCH. من خلال تعيين بت ADLAR في سجل ADMUX ، يمكننا ترك قيمة ADC. يضع هذا أعلى 8 بتات للقياس في سجل ADCH ، والباقي في سجل ADCL. إذا قرأنا بعد ذلك سجل ADCH ، فسنحصل على قيمة 8 بت تمثل قياسنا من 0 إلى 5 فولت كرقم من 0 إلى 255. نقوم بتحويل قياس ADC 10 بت إلى 8 بت واحد. إليك الكود لتعيين بت ADLAR:
الشفرة:
ADMUX | = (1 << ADLAR) ، هذا يكمل إعداد جهاز ADC لهذا المثال. يجب تعيين بتين أخريين قبل أن تبدأ ADC في أخذ القياسات.
الخطوة 11: تفعيل ADC
لتمكين ADC ، اضبط بت ADEN في ADCSRA:
الكود: ADCSRA | = (1 << ADEN) ؛
الخطوة 12: ابدأ التحويلات التناظرية إلى الرقمية
لبدء قياسات ADC ، يجب ضبط بت ADSC في ADCSRA:
الكود: ADCSRA | = (1 << ADSC) ؛
في هذه المرحلة ، سيبدأ ADC في أخذ عينات باستمرار من الجهد المقدم في ADC5. سيبدو الرمز إلى هذه النقطة كما يلي:
الخطوة 13: بينما إلى الأبد
الشيء الوحيد المتبقي هو اختبار قيمة ADC وتعيين مصابيح LED لعرض مؤشر مرتفع / منخفض. نظرًا لأن قراءة ADC في ADCH لها قيمة قصوى تبلغ 255 ، فقد تم اختيار قيمة اختبار لـ th لتحديد ما إذا كان الجهد مرتفعًا أم منخفضًا. ستسمح لنا عبارة IF / ELSE البسيطة في حلقات FOR بتشغيل مؤشر LED الصحيح:
الشفرة
إذا (ADCH> ADCValue)
{
بورتب | = (1 << PB0) ، // قم بتشغيل LED
}
آخر
{
PORTB & = ~ (1 << PB0) ؛ // إيقاف تشغيل LED
}
الخطوة 14: في النهاية ، أكمل الكود
الشفرة:
#يشمل
int main (باطل)
{
uint8_t ADCValue = 128 ؛
DDRB | = (1 << PB0) ؛ // تعيين LED1 كإخراج
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) ؛ // اضبط ADC prescalar على 8 - // 125 كيلو هرتز معدل العينة 1 ميجا هرتز
ADMUX | = (1 << REFS0) ؛ // تعيين مرجع ADC إلى AVCC
ADMUX | = (1 << ADLAR) ، // اليسار ضبط نتيجة ADC للسماح بقراءة سهلة 8 بت
ADMUX & = 0xF0 ؛
ADMUX | = 5 ؛ // يلزم تغيير قيم MUX لاستخدام ADC0
ADCSRA | = (1 << ADFR) ، // اضبط ADC على وضع التشغيل الحر
ADCSRA | = (1 << عدن) ، // تمكين ADC
ADCSRA | = (1 << ADSC) ، // ابدأ تحويلات A2D بينما (1) // Loop Forever
{
إذا (ADCH> ADCValue)
{
بورتب | = (1 << PB0) ، // قم بتشغيل LED1
}
آخر
{
PORTE & = ~ (1 << PB1) ؛ // إيقاف تشغيل LED1
}
}
العودة 0 ؛
}
قم أولاً بنشر هذا البرنامج التعليمي انقر هنا
موصى به:
خوذة أمان كوفيد - الجزء الأول: مقدمة إلى دوائر تينكركاد: 20 خطوة (بالصور)
Covid Safety Helmet الجزء الأول: مقدمة عن دوائر Tinkercad!: مرحبًا ، صديق! في هذه السلسلة المكونة من جزأين ، سنتعلم كيفية استخدام دوائر Tinkercad - أداة ممتعة وقوية وتعليمية للتعرف على كيفية عمل الدوائر! واحدة من أفضل طرق التعلم ، هي أن تفعل. لذلك ، سنقوم أولاً بتصميم مشروعنا الخاص: ال
مقدمة إلى Arduino: 18 خطوة
مقدمة إلى Arduino: هل سبق لك أن تساءلت عن صنع أجهزتك الخاصة مثل محطة الطقس ولوحة القيادة للسيارة لمراقبة الوقود والسرعة وتتبع الموقع أو التحكم في أجهزتك المنزلية التي يتم التحكم فيها عن طريق الهواتف الذكية أو هل تساءلت يومًا عن صنع أجهزة متطورة
مقدمة - حوّل Raspberry Pi إلى خادم تتبع GPS: 12 خطوة
مقدمة - تحويل Raspberry Pi إلى خادم تتبع GPS: سأوضح لك في هذا الدليل كيفية تثبيت برنامج تتبع Traccar GPS على Raspberry Pi الذي سيتلقى البيانات من الأجهزة المتوافقة عبر الإنترنت ، وتسجيل مواقعها على خريطة في الوقت الفعلي تتبع ، وكذلك تتبع التشغيل
متحكم AVR. تعديل عرض النبض. متحكم محرك DC وشدة ضوء LED: 6 خطوات
متحكم AVR. تعديل عرض النبض. متحكم محرك التيار المستمر وشدة ضوء LED: مرحبًا بالجميع! يعد تعديل عرض النبض (PWM) تقنية شائعة جدًا في الاتصالات السلكية واللاسلكية والتحكم في الطاقة. يتم استخدامه بشكل شائع للتحكم في الطاقة التي يتم تغذيتها لجهاز كهربائي ، سواء كان محركًا أو مصباح LED أو مكبرات صوت وما إلى ذلك
كيفية صنع روبوت متحكم به قائم على DTMF - بدون متحكم وبرمجة - تحكم من أي مكان في العالم - RoboGeeks: 15 خطوة
كيفية صنع روبوت متحكم به قائم على DTMF | بدون متحكم وبرمجة | تحكم من أي مكان في العالم | RoboGeeks: هل تريد أن تصنع روبوتًا يمكن التحكم فيه من أي مكان في العالم ، لنفعل ذلك