תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ברכבים רבים, ישנם מכשירים המחשבים את המרחק שעשו והם חיוניים להצגת מידע לנהג.
כך, באמצעות מידע זה, ניתן לעקוב אחר המרחק שעבר בין שתי נקודות, למשל, דרך מד המרחק של הרכב.
אספקה
01 x PCB דרך PCB מותאמת אישית
01 x Arduino UNO - UTSOURCE
01 x LCD 16x2 תצוגה - UTSOURCE
01 x לוח לחם - UTSOURCE
01 x מגשרים חוטים - UTSOURCE
01 x 10kR פוטנציומטר סיבובי - UTSOURCE
01 x מתג קנה UTSOURCE - UTSOURCE
לכן, באמצעות מאמר זה, נלמד אותך כיצד להרכיב את מכשיר חישוב המרחק שלך באמצעות חיישן מתג הקנים.
שלב 1: הפרויקט
הפרויקט הבא נוצר לחישוב מרחק הנסיעה על ידי אופני חדר הכושר. בנוסף, תלמד כיצד ליצור תכנות לפרויקט.
לפרויקט זה שלוש פונקציות:
- חשב את המרחק שנסע באופניים;
- תצורת רדיוס לאתחול התקנים;
- מותאם לכל אופניים.
כדי לגשת לפונקציות אלה, המשתמש ישתמש בשלושת לחצני המערכת. לכל כפתור יש את הפונקציונליות שלך. במערכת יש לנו את הכפתורים הבאים:
לחצן תוספת: הוא ישמש לכניסה לאפשרות להגדיר את רדיוס הגלגלים ולהגדיל את ערך הרדיוס;
לחצן הפחתה: הוא ישמש להפחתת האפשרות להגדיר את רדיוס הגלגלים;
כפתור Enter: הוא ישמש להכנסת ערך הרדיוס למערכת.
בנוסף, יש לנו את חיישן מתג הקנים. הוא אחראי לזהות מתי הגלגלים עושים סיבוב שלם. כדי לזהות זאת, יש להתקין מגנט על הגלגלים.
מתג הקנים מוצג באיור לעיל.
שלב 2:
לכן, בכל פעם שהמגנט מתקרב לחיישן, הוא יפעיל את חיישן מתג הקנים. התהליך פועל באמצעות המשוואה הבאה:
מרחק נסע = 2 * π * רדיוס * TurnNumber
באמצעות משוואה זו נדע מהו המרחק הנסיעה של האופניים.
במשוואה, הרדיוס מוכנס על ידי המשתמש ומספר התור מחושב באמצעות מספר סיבובי הגלגל.
וכדי לזהות את סיבובי הגלגל יש צורך להתקין מגנט בגלגל האופניים ולהתקין את חיישן מתג הקנים ליד הגלגל.
כדי להקל על התהליך, אנו יוצרים לוח מודפס לחיבור חיישן מתג הקנים ושלושת הכפתורים. לוח המעגלים המודפסים מוצג להלן באיור שלהלן.
שלב 3:
כפי שמוצג ב- PCB ניתן לראות את ה- Arduino Nano. היא אחראית לשלוט בכל המערכות. בנוסף, יש לנו 5 מחברי JST.
מחברי C1 עד C4 משמשים לחיבור שלושת הכפתורים וחיישן מתג הקנים. כעת, מחבר C5 משמש לחיבור LCD 16x2 I2C.
לכן, באמצעות מערכת זו, תוכל להתקין את הפרויקט באופניים שלך ולקבל את ערך המרחק הנסיעה.
לשם כך, תוכל להשתמש בקוד המוצג להלן.
#כלול #כלול
/*
מתג ריד חיישן 8 - מתג קנה חיישן 9 - דקמנטו 12 - תוספת 11 - הזן */
#define MEMORIA 120
#הגדר PosRaio 125
#define ReedSwitch 8
#הגדר BotaoEnterOk 11 #הגדר BotaoIncremento 12 #הגדר 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;
בת cont = 0;
voltaCompleta long int ללא סימן = 0;
int sign long long tempo_atual = 0, ultimo_tempo = 0;
לצוף DistKm = 0;
int raio ללא חתימה = 0; float Distancia = 0;
הגדרת חלל ()
{Serial.begin (9600); pinMode (8, INPUT); pinMode (9, INPUT); pinMode (10, INPUT); pinMode (12, INPUT);
lcd.begin (16, 2);
// Regiao de codigo para configurar o raio da roda do veiculo
if (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 a leitura dos botoes e sensor do dispositivo
חיישן = digitalRead (ReedSwitch); Decremento = digitalRead (BotaoDecremento); Incremento = digitalRead (BotaoIncremento);
// Regiao de codigo para acumular a distancia percorrida
if (sensor == 0 && estado_anterior == 1) {VoltaCompleta ++;
Distancia = (float) (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 && estado_anterior == 0)
{estado_anterior = 1; }
// Regiao de Codigo para Configurar o Raio
אם (Incremento == 1 && EstadoAnteriorIncremento == 0) {EstadoAnteriorIncremento = 1; }
אם (Incremento == 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 (cm)");
לַעֲשׂוֹת
{
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);
לַחֲזוֹר; }
מהקוד הזה הוא עשוי לחשב את המרחק שלך עם הארדואינו שלך.
שלב 4: מסקנה
לכן, במקרה שאתה רוצה PCB משלך, תוכל להשיג באמצעות הקישור הזה באתר PCBWay.com. לשם כך תוכל לגשת לאתר, ליצור את חשבונך ולקבל מחשבים אישיים משלך.
מעבדת Silícios מודה ל- UTSOURCE שהציעה את הרכיבים האלקטרוניים ליצירת פרויקט זה.