جدول المحتويات:
- الخطوة 1: توصيلات DS1803
- الخطوة 2: الأمر بايت
- الخطوة 3: التحكم في DS1803
- الخطوة 4: الإعداد
- الخطوة الخامسة: البرنامج
فيديو: DS1803 مقياس الجهد الرقمي المزدوج مع Arduino: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
أحب مشاركة استخدام مقياس جهد رقمي DS1803 مع Arduino. يحتوي هذا IC على جهازي قياس رقمي يمكن التحكم فيهما من خلال واجهة بسلكين ، لذلك أستخدم مكتبة wire.h.
يمكن أن يحل هذا IC محل مقياس الجهد التناظري العادي. بهذه الطريقة يمكنك التحكم على سبيل المثال في مكبر الصوت أو مصدر الطاقة.
في هذا الدليل ، أتحكم في سطوع اثنين من مصابيح LED لإظهار العمل.
يحسب اردوينو نبضات المشفر الدوار ويضع القيمة في وعاء متغير [0] ووعاء [1]. عندما تضغط على المفتاح في المشفر ، يمكنك التبديل بين القدر [0] والوعاء [1].
تمت قراءة القيمة الفعلية للأواني مرة أخرى من DS1803 ووضعها في potValue متغير [0] و potValue [1] وعرضها على شاشة LCD.
الخطوة 1: توصيلات DS1803
هنا يمكنك رؤية وصلات DS1803. H هو الجانب العالي من مقياس الجهد ، L هو الجانب المنخفض و W الماسحة. SCL و SDA هي وصلات الناقل.
مع التوصيلات A0 و A1 و A2 ، يمكنك إعطاء DS1803 العنوان الخاص به ، وبهذه الطريقة يمكنك التحكم في المزيد من الأجهزة عبر ناقل واحد. في المثال الخاص بي ، قمت بإعطاء DS1803 adres 0 عن طريق توصيل جميع المسامير بالأرض.
الخطوة 2: الأمر بايت
يمكن استخدام الطريقة التي يعمل بها DS1803 في بايت الأمر. عند تحديد "كتابة مقياس الجهد 0" ، يتم تحديد كلا المقياسين ، عندما تريد فقط ضبط مقياس الجهد 0 ، ما عليك سوى إرسال بايت البيانات الأول. "اكتب مقياس الجهد -1" فقط اضبط مقياس الجهد -1. يعطي "الكتابة إلى كلا مقياسي فرق الجهد" كلا المقياسين نفس القيمة.
الخطوة 3: التحكم في DS1803
يحتوي بايت التحكم (الشكل 3) على معرّف الجهاز ، ويبقى هذا دائمًا كما هو. في المثال الخاص بي ، A0 و A1 و A2 هي 0 لأننا نختار العناوين عن طريق وضع جميع دبابيس A على الأرض. سيتم تعيين آخر بت R / W على 0 أو 1 بواسطة الأمر "Wire.beginTransmission" و "Wire.requestFrom" في Arduino. في الشكل 5 يمكنك رؤية البرقية كاملة. تظهر برقية القراءة في الشكل 4.
الخطوة 4: الإعداد
توضح هذه الدائرة كيفية توصيل كل شيء. شاشة Nokia LCD متوفرة بوصلات مختلفة ، تأكد من توصيلك بالشكل الصحيح. أيضا المشفر الدوار إصداراته المختلفة ، بعضها مشترك في الدبوس الأوسط والبعض الآخر ليس كذلك. لقد وضعت شبكة مرشح صغيرة (470 أوم المقاوم مع غطاء 100nF) لتصفية إشارات الخرج A و B لجهاز التشفير. أحتاج إلى هذا المرشح لأن الإخراج يحتوي على الكثير من الضوضاء. أضع أيضًا مؤقتًا للارتداد في برنامجي لإلغاء بعض الضوضاء. بالنسبة للباقي ، أعتقد أن الدائرة واضحة. يمكن طلب شاشة LCD عبر Adafruit
الخطوة الخامسة: البرنامج
لاستخدام الحافلة ذات السلكين ، أقوم بتضمين مكتبة Wire.h. لاستخدام شاشة LCD ، أقوم بتضمين مكتبة Adafruit التي يمكنك تنزيلها من https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library أيضًا مكتبة Adafruit_GFX.h متاحة هنا https:// github. كوم / adafruit / Adafruit-GFX-Library.
#يشمل
#يشمل
#يشمل
Adafruit_PCD8544 display = Adafruit_PCD8544 (7، 6، 5، 4، 3) ؛
هنا يمكنك رؤية جميع المتغيرات. بايت التحكم و بايت الأمر كما هو موضح من قبل. يمكن ضبط deBounceTime بناءً على الضوضاء الموجودة في برنامج التشفير.
وعاء البايت [2] = {1 ، 1} ؛ بايت controlByte = B0101000 ؛ // 7 بت ، بايت أمر بايت = B10101001 ؛ // آخر 2 بت هو اختيار مقياس الجهد. بايت potValue [2] ؛ كثافة العمليات أنا = 0 ؛ عدد int deBounceTime = 10 ؛ // اضبط هذه القيمة اعتمادًا على الضوضاء const int encoder_A = 8 ؛ encoder_B = 9 ؛ const int buttonPin = 2 ؛ newDebounceTime طويلة بدون توقيع = 0 ؛ قديم طويل بدون توقيع. ضغط منطقي = 0 ؛ العد المنطقي = 1 ؛
في الإعداد ، أحدد المسامير الصحيحة وأضع النص الثابت على شاشة LCD
إعداد باطل () {Wire.begin () ؛ Serial.begin (9600) ؛ pinMode (encoder_A ، INPUT) ؛ pinMode (encoder_B، INPUT) ؛ pinMode (buttonPin ، INPUT) ؛ newDebounceTime = ميلي () ،
display.begin () ،
display.setContrast (50) ؛ display.clearDisplay () ، display.setTextSize (1) ، display.setTextColor (أسود) ؛ display.setCursor (0 ، 10) ؛ display.println ("POT 1 =") ؛ display.setCursor (0 ، 22) ؛ display.println ("POT 2 =") ؛ display.display () ،
}
في الحلقة ، أتحقق أولاً مما إذا كان الفاصل الزمني أكثر من 500 مللي ثانية ، إذا كانت الإجابة بنعم ، فسيتم تحديث شاشة LCD. إذا لم يتم تحديد الزر الموجود على وحدة التشفير. إذا ضغطت على toggleBuffer اتصل. بعد ذلك يتم فحص المشفر. إذا كان الإدخال 0 منخفضًا (تم اكتشاف الدوران) ، فأنا أتحقق من الإدخال B ، إذا كان الإدخال B هو 0 I زيادة وعاء ، فأنا أقوم بالتناقص. بعد ذلك سيتم إرسال القيمة إلى DS1803 عبر wire.write.
حلقة فارغة() {
فترة()؛
إذا (digitalRead (buttonPin) == 1 && (الضغط == 0)) {toggleBuffer ()؛} إذا (digitalRead (buttonPin) == 0) {الضغط = 0 ؛}
if (digitalRead (encoder_A) == 0 && count == 0 && (millis () - newDebounceTime> deBounceTime)) {if (digitalRead (encoder_B) == 0) {pot ++؛ إذا (وعاء > 25) {وعاء = 25 ؛}} آخر {وعاء - ؛ إذا (وعاء <1) {وعاء = 1 ؛}} عدد = 1 ؛ newDebounceTime = ميلي () ،
Wire.beginTransmission (controlByte) ؛ // ابدأ الإرسال
Wire.write (commandByte) ؛ // اختيار الفخار Wire.write (وعاء [0] * 10) ؛ // إرسال البايت الأول لبيانات مقياس الفخار Wire.write (وعاء [1] * 10) ؛ // إرسال البايت الثاني من بيانات مقياس الجهد Wire.endTransmission () ؛ // stop transmitting} else if (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0؛ newDebounceTime = ميلي () ، }}
toggleBuffer () باطلة {pressed = 1؛ إذا (i == 0) {i = 1 ؛} وإلا {i = 0 ؛}}
أولاً ، قمت بمسح المنطقة حيث يتعين علي كتابة المتغيرات. أفعل هذا لرسم مستطيل في هذه المنطقة. بعد ذلك أكتب المتغيرات على الشاشة.
writeToLCD () باطلة {Wire.requestFrom (controlByte، 2) ؛ potValue [0] = Wire.read () ، // قراءة البايت الأول potmeter potValue [1] = Wire.read ()؛ // قراءة عرض بايت مقياس البايت الثاني (40 ، 0 ، 40 ، 45 ، أبيض) ؛ // مسح شاشة متغيرة على شاشة LCD.setCursor (40 ، 10) ؛ display.print (potValue [0]) ؛ // اكتب قيمة مقياس الجهد الأول على شاشة LCD.setCursor (40 ، 22) ؛ display.print (potValue [1]) ؛ // اكتب قيمة مقياس الجهد الثاني على شاشة LCD.setCursor (60، (10 + i * 12)) ؛ display.print ("<") ؛ display.display () ، }
فاصل فارغ () {// مؤقت الفاصل الزمني لكتابة البيانات إلى شاشة LCD إذا ((مللي () - قديم الزمن)> 500) {writeToLCD () ؛ oldTime = ميلي () ؛ }}
موصى به:
مقياس الجهد مع مقياس الجهد: 4 خطوات
Intervalometer with Potentiometer: لقد قررت فقط عمل مقياس فاصل بسيط للغاية ، مع مدخلات سهلة لمعلمات الفاصل الزمني. يستخدم مقياس الفترات زرين (Enter and Select) وزر جهد واحد (وعاء). باستخدام الأزرار ، يمكنك الدخول في وضع البرمجة أو s
مقياس الجهد الرقمي MCP41HVX1 لـ Arduino: 10 خطوات (بالصور)
مقياس الجهد الرقمي MCP41HVX1 لـ Arduino: مجموعة MCP41HVX1 من مقاييس الجهد الرقمية (المعروفة أيضًا باسم DigiPots) هي أجهزة تحاكي وظيفة مقياس الجهد التناظري ويتم التحكم فيها من خلال SPI. أحد التطبيقات النموذجية هو استبدال مقبض الصوت بجهاز الاستريو الخاص بك بـ DigiPot
مراقب الجهد لبطاريات الجهد العالي: 3 خطوات (بالصور)
مراقب الجهد لبطاريات الجهد العالي: سأشرح لك في هذا الدليل كيف صنعت جهاز مراقبة جهد البطارية للوح الطويل الكهربائي الخاص بي. قم بتركيبه بالطريقة التي تريدها وقم بتوصيل سلكين فقط بالبطارية (Gnd و Vcc). يفترض هذا الدليل أن جهد البطارية لديك يتجاوز 30 فولت ، ث
كيفية هدم الفرجار الرقمي وكيف يعمل الفرجار الرقمي: 4 خطوات
كيفية هدم الفرجار الرقمي وكيف يعمل الفرجار الرقمي: يعرف الكثير من الناس كيفية استخدام الفرجار للقياس. سيعلمك هذا البرنامج التعليمي كيفية هدم الفرجار الرقمي وشرح كيفية عمل الفرجار الرقمي
توليد الجهد باستخدام دراجة مقياس الجهد: 9 خطوات (بالصور)
توليد الجهد باستخدام دراجة مقياس الجهد: تألفت صياغة المشروع من تجميع "لعبة" بهدف استخدام دواسة في دراجة مقياس سرعة موصولة بمولد وبرج من المصابيح التي يتم تنشيطها مع زيادة سرعة المحرك - وهو ما يتم منحه لـ الدراجة