جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
في العديد من المركبات ، توجد أجهزة تحسب المسافة المقطوعة وهي ضرورية لتقديم المعلومات إلى السائق.
وبالتالي ، من خلال هذه المعلومات ، يمكن مراقبة المسافة المقطوعة بين نقطتين ، على سبيل المثال ، من خلال عداد المسافة بالسيارة.
اللوازم
01 x PCBWay مخصص ثنائي الفينيل متعدد الكلور
01 × Arduino UNO - UTSOURCE
01 × شاشة LCD 16 × 2 - UTSOURCE
01 × اللوح - UTSOURCE
01 × Wire Jumpers - UTSOURCE
01 × 10kR مقياس الجهد الدوراني - UTSOURCE
01 × UTSOURCE Reed Switch - UTSOURCE
لذلك ، من خلال هذه المقالة ، سوف نعلمك كيفية تجميع جهاز حساب المسافة الخاص بك باستخدام مستشعر مفتاح القصب.
الخطوة الأولى: المشروع
تم إنشاء المشروع التالي لحساب المسافة المقطوعة بواسطة دراجة صالة الألعاب الرياضية. بالإضافة إلى ذلك ، ستتعلم كيفية إنشاء البرمجة للمشروع.
يحتوي هذا المشروع على ثلاث وظائف:
- احسب المسافة المقطوعة بالدراجة ؛
- تكوين نصف قطر بدء تشغيل الجهاز ؛
- قابلة للتكيف مع أي دراجة.
للوصول إلى هذه الوظائف ، سيستخدم المستخدم الأزرار الثلاثة للنظام. كل زر له وظيفته. في النظام لدينا الأزرار التالية:
زر الزيادة: سيتم استخدامه للدخول في خيار تكوين نصف قطر العجلات وزيادة قيمة نصف القطر ؛
زر التناقص: سيُستخدم لتقليل خيار تكوين نصف قطر العجلات ؛
زر الإدخال: سيتم استخدامه لإدراج قيمة نصف القطر في النظام.
بالإضافة إلى ذلك ، لدينا مستشعر تبديل ريد. وهي مسؤولة عن اكتشاف متى تقوم العجلات بدوران كامل. لاكتشاف ذلك ، فإنه يحتاج إلى تثبيت مغناطيس على العجلات.
تم عرض مفتاح Reed في الشكل أعلاه.
الخطوة 2:
وبالتالي ، في كل مرة يقترب المغناطيس من المستشعر ، فإنه يقوم بتشغيل مستشعر Reed Switch. تعمل العملية من خلال المعادلة التالية:
المسافة المقطوعة = 2 * π * نصف القطر * رقم الدوران
من خلال هذه المعادلة ، سنعرف المسافة التي قطعتها الدراجة.
في المعادلة ، يتم إدخال نصف القطر من قبل المستخدم ، ويتم حساب رقم الدوران من خلال عدد لفات العجلة.
وللكشف عن دوران العجلة ، يلزم تثبيت مغناطيس في عجلة الدراجة وتثبيت مستشعر تبديل ريد بالقرب من العجلة.
لتسهيل العملية ، قمنا بإنشاء لوحة دوائر مطبوعة لتوصيل مستشعر Reed Switch والأزرار الثلاثة. يتم عرض لوحة الدوائر المطبوعة أدناه في الشكل أدناه.
الخطوه 3:
كما هو مبين في PCB من الممكن رؤية Arduino Nano. إنها مسؤولة عن التحكم في جميع الأنظمة. بالإضافة إلى ذلك ، لدينا 5 موصلات JST.
يتم استخدام موصلات C1 حتى C4 لتوصيل الأزرار الثلاثة ومستشعر تبديل ريد. الآن ، يتم استخدام موصل C5 لتوصيل شاشة LCD 16x2 I2C.
لذلك ، من خلال هذا النظام ، يمكنك تثبيت المشروع على دراجتك والحصول على قيمة المسافة المقطوعة.
لهذا ، يمكنك استخدام الكود المعروض أدناه.
# تضمين # تضمين
/*
Pinos de conex؟ o dos bot؟ es e مستشعر القصب التبديل 8 - مستشعر Reed Switch 9 - Decremento 12 - Incremento 11 - أدخل * /
#define MEMORIA 120
#define PosRaio 125
#define ReedSwitch 8
#define BotaoEnterOk 11 #define BotaoIncremento 12 #define BotaoDecremento 9
const int rs = 2 ، en = 3 ، d4 = 4 ، d5 = 5 ، d6 = 6 ، d7 = 7 ؛
LiquidCrystal LCD (rs، en، d4، d5، d6، d7) ؛
مستشعر منطقي = 0 ، estado_anterior = 0 ، Incremento = 0 ، Decremento = 0 ؛
bool IncrementoAnterior = 0 ، DecrementoAnterior = 0 ، BotaoEnter = 0 ، EstadoAnteriorIncremento = 0 ؛
البايت تابع = 0 ؛
كثافة العمليات الطويلة غير الموقعة VoltaCompleta = 0 ؛
tempo_atual = 0، ultimo_tempo = 0؛
تعويم DistKm = 0 ؛
رايو int raio غير الموقعة = 0 ؛ تعويم Distancia = 0 ؛
الإعداد باطل()
{Serial.begin (9600) ، pinMode (8 ، الإدخال) ؛ pinMode (9 ، الإدخال) ؛ pinMode (10 ، الإدخال) ؛ pinMode (12 ، الإدخال) ؛
lcd.begin (16 ، 2) ؛
// Regiao de codigo para configurar o raio da roda do veiculo
إذا (EEPROM.read (MEMORIA)! = 73) {ConfiguraRaio () ، EEPROM.write (MEMORIA ، 73) ؛ }
lcd.setCursor (3 ، 0) ؛
lcd.print ("Distancia") ؛ lcd.setCursor (6 ، 1) ؛ lcd.print (Distancia) ؛
lcd.setCursor (14 ، 1) ؛
lcd.print ("كم") ؛
raio = EEPROM.read (PosRaio) ؛
}
حلقة فارغة()
{
// Regiao de codigo para realizar جهاز استشعار leitura dos botoes e يقوم بالتصرف
جهاز استشعار = digitalRead (ReedSwitch) ؛ Decremento = digitalRead (BotaoDecremento) ، Incremento = digitalRead (BotaoIncremento) ،
// Regiao de codigo para acumular a distancia percorrida
إذا (المستشعر == 0 && estado_anterior == 1) {VoltaCompleta ++ ؛
Distancia = (تعويم) (2 * 3.14 * raio * VoltaCompleta) /100000.0 ؛
lcd.setCursor (0 ، 1) ؛
lcd.print ("") ؛ lcd.setCursor (6 ، 1) ؛ lcd.print (Distancia) ؛
lcd.setCursor (14 ، 1) ؛
lcd.print ("كم") ؛
estado_anterior = 0 ؛
}
إذا (المستشعر == 1 && استادو_أمامي == 0)
{estado_anterior = 1 ؛ }
// Regiao de Codigo para Configurar o Raio
إذا (Incremento == 1 && EstadoAnteriorIncremento == 0) {EstadoAnteriorIncremento = 1 ؛ }
إذا (زيادة == 0 && EstadoAnteriorIncremento == 1)
{EstadoAnteriorIncremento = 0 ؛ lcd.clear () ؛ ConfiguraRaio () ، }}
ConfiguraRaio باطل ()
{
بايت RaioRoda = 0 ؛
// Imprimir mensagem para digitar o raio em cm
lcd.setCursor (0 ، 0) ؛ lcd.print ("Inserir Raio (سم)") ؛
فعل
{
lcd.setCursor (6 ، 1) ؛
Incremento = digitalRead (BotaoIncremento) ؛
Decremento = digitalRead (BotaoDecremento) ، BotaoEnter = digitalRead (BotaoEnterOk) ،
إذا (Incremento == 1 && IncrementoAnterior == 0)
{RaioRoda = RaioRoda + 1 ؛ IncrementoAnterior = 1 ؛ }
إذا (Incremento == 0 && IncrementoAnterior == 1)
{IncrementoAnterior = 0 ؛ }
إذا (Decremento == 1 && DecrementoAnterior == 0)
{RaioRoda = RaioRoda - 1 ؛ DecrementoAnterior = 1 ، }
إذا (Decremento == 0 && DecrementoAnterior == 1)
{DecrementoAnterior = 0 ؛ }
lcd.setCursor (6 ، 1) ؛
lcd.print (RaioRoda) ؛
} while (BotaoEnter == 0) ؛
lcd.clear () ؛
EEPROM.write (PosRaio ، RaioRoda) ؛
إرجاع؛ }
من هذا الرمز ، من المحتمل أن يحسب المسافة مع Arduino الخاص بك.
الخطوة 4: الخاتمة
لذلك ، إذا كنت تريد PCB الخاص بك ، يمكنك الحصول عليه من خلال هذا الرابط على موقع PCBWay.com. لهذا ، يمكنك الوصول إلى موقع الويب ، وإنشاء حسابك ، والحصول على PCB الخاص بك.
يشكر مختبر Silícios Lab UTSOURCE على تقديم المكونات الإلكترونية لإنشاء هذا المشروع.