» Elektronika » Arduino »Ratų atstumo matuoklį (kreivimetrą)„ Arduino “atlikite patys

„Pasidaryk pats“ rato atstumo matuoklis (kreivimetras) Arduino mieste

Sveiki visi! Dabar aš pabandysiu išsamiai pakalbėti apie tai, kaip padaryti paprasčiausią ir prieinamiausią kreivimetrą.

Bet pirmiausia išsiaiškinkime, kas tai yra ir kodėl to reikia. Tiesą sakant, jo pavadinimas mums nurodo jo paskirtį. Jis suformuotas iš lotyniško žodžio curvus, kuris reiškia lenktą arba banguotą. Tai yra, kreivimetras yra rato ar ritininio atstumo matuoklis. Skiriami du kreivimetrų tipai: maži (kartografiniai), kurie dažniausiai naudojami matavimams žemėlapyje, ir dideli (keliai), kurie dažniausiai naudojami matuoti jau automagistralių išlenktų atkarpų ilgį. Jie gali būti naudojami visur, kur nepatogu ar neįmanoma išmatuoti standartine rulete, todėl projektas žada būti įdomus.

Pirmasis dalykas, kuriuo reikia pasirūpinti statant kreivimetrą, yra ratas arba ritininis. Jis turi būti pakankamai mažas, kad prietaiso tikslumas būtų aukštas, tuo pačiu metu jis turi būti pakankamai didelis, kad rodmenų vertei didelės įtakos neturėtų išmatuoto paviršiaus nelygumai. Mano atveju rato skersmuo yra 14 centimetrų.

Dabar reikia nustatyti konstrukcijos medžiagą ir dydį. Aš naudojau medį.

Ant juostų aš padariau žymėjimą ir padariau reikiamus įpjovimus ir skyles.

Tada surinkau apdirbtas dalis naudodamas mažus savisriegius varžtus.
Dabar šiek tiek nukrypkime nuo paties kreivimetro ir pagalvokime, kaip šis daiktas netgi gali nulemti atstumą? Viskas yra gana paprasta. Mums tereikia apskaičiuoti rato apsisukimų skaičių ir padauginti iš jo išorinio perimetro ilgio. Tai dar lengviau pridėti ilgio vertę kaskart, kai ratas sukasi dar kartą.

Norėdami suskaičiuoti kiekvieną apsisukimą paprasčiausiu atveju, galite naudoti „stumdomą kontaktą“. Tačiau nerekomenduoju naudoti tokio atskaitos mechanizmo. Daug geriau naudoti nendrių jungiklį arba „Hall“ jutiklį.

Laikas išbandyti ant vairo. Aš jį pritvirtinsiu ilgu varžtu. Ant rėmo randame vietą, kur rato apvadas yra kuo arčiau jo, ir pažymime smūgiais. Aplink šią sritį turime įdiegti nendrių jungiklį.

Ant rato reikia įdiegti mažą magnetą.Įsitikinkite, kad jo jėgų užteks nendrinio jungiklio kontaktams uždaryti.
Dabar mes užsiimsime sistemos „smegenimis“. Mano atveju tai yra mokestis Arduino UNO. Jis nuskaitys nendrinio jungiklio būseną ir perduos duomenis į telefoną per „Bluetooth“ ryšį, naudodamas modulį HC-05. Beje, nendrinis jungiklis yra prijungtas prie lentos kaip įprastas mygtukas. Manau, neturėtų būti jokių problemų, susijusių su „Bluetooth“ modulio prijungimu.

Pats kodas yra labai paprastas. Ir aš bandžiau tai pakomentuoti, kad viskas būtų kuo aiškiau.

int gercon = 12; // prijungė nendrių jungiklį prie 12 kontaktų
dvigubas atstumas = 0; // sukūrė dvigubą kintamąjį, kad išsaugotų atstumą
negaliojanti sąranka () {
   „Serial.begin“ (9600); // sujungtas nuoseklusis ryšys
 }
  tuščia kilpa () {
/ * Kitas yra jei kilpa. Jei nendrinis jungiklis uždarytas, apskaičiuojamas kitas atstumas. Vertė 0.46472 jau yra apskaičiuotas vieno rato apsisukimo ilgis. Norėdami išvengti „papildomų“ duomenų, pridėkite 200 milisekundžių delsą ir parodykite rodmenis
* /
   if (digitalRead (gercon) == HIGH)
   {
 atstumas = atstumas + 0,46472;
 vėlavimas (200);
 Serial.println (distance);
}
  } 


Štai mūsų kreivimetras ir paruoštas!

Padarysime porą bandomųjų lenktynių. Viskas veikia puikiai!


Galite žiūrėti vaizdo įrašą apie šio įrenginio surinkimą, galbūt ten rasite ką nors įdomaus.
[media = https: //youtu.be/kx_7ztPsLws]

Gerai pakartokite projektą!
5
5
7

Pridėti komentarą

    • šypsotisšypsosixaxagerainežiniaYahoonea
      viršininkassubraižytikvailystaiptaip-taipagresyvusslapta
      atsiprašaušoktišokis2šokis3atleiskpadėtigėrimai
      sustotidraugaigeraigerašvilpukassupyktiliežuvis
      rūkytiplojimaiklastingaspareikštiniokojantisdon-t_mentionatsisiųsti
      šilumanedrąsusjuoktis1mdasusitikimasmoskingneigiamas
      not_ipopkornasnubaustiskaitytigąsdintigąsdinapaieška
      gundytiačiūtaito_clueumnikūmussusitarti
      blogaibičiųjuoda akisblum3skaistalaipasigirtinuobodulys
      cenzūruotamalonumasslapta2grasintipergalėju„sun_bespectacled“
      šoktipagarbalolišlenktaslaukiamekrutojusya_za
      ya_dobryipagalbininkasne_huliganne_othodifludisuždraustiarti
1 komentaras
Svečias Sergejus
Kodėl UNO, kai akims užtenka Attiny13 ...
Kalbant apie kodą, bent jau turite pridėti patikrinkite, ar magnetas paliko nendrių jungiklį, nes šiame įgyvendinime tam tikru greičiu ir dar daugiau, jei ratas sustoja, jis gali būti apdorotas daugiau nei vieną kartą arba iš viso neapdorotas. Norėdami tai padaryti, tiesiog pridėkite visuotinį kintamąjį ir prieš apskaičiuodami ilgį patikrinkite jo būseną:
int gercon = 12; // prijungė nendrių jungiklį prie 12 kontaktų
int i = tiesa;
dvigubas atstumas = 0; // sukūrė dvigubą kintamąjį, kad išsaugotų atstumą
negaliojanti sąranka () {
„Serial.begin“ (9600); // sujungtas nuoseklusis ryšys
}
tuščia kilpa () {
/ * Kitas yra jei kilpa. Jei nendrinis jungiklis uždarytas, apskaičiuojamas kitas atstumas. Vertė 0.46472 jau yra apskaičiuotas vieno rato apsisukimo ilgis. Norėdami išvengti „papildomų“ duomenų, pridėkite 200 milisekundžių delsą ir parodykite rodmenis
*/
if (digitalRead (gercon) == HIGH)
{
jei (i <1)
{
atstumas = atstumas + 0,46472;
i = 1;
// delsimas (200);
Serial.println (distance);
}
}
if (i> 0)
{
i ++;
vėlavimas (1);
}
if (digitalRead (gercon) == LOW)
{
if (i> 30) // išvengiama klaidingų teiginių dėl kontaktinio atmetimo
{
i = 0;
}
}
}

Dar geriau, įdėkite du nendrinius jungiklius, tai leis jums nustatyti sukimosi kryptį (aš nevažiavau ten matuoti - grįžau atgal, o ne iš pradžių pradėjau ar šokau į vietą į priekį ir atgal kalbėdamas su kaimynu ir pan.). Taip pat galite pridėti magnetų, kad pakeistumėte skiriamąją gebą.
ZY nepatikrinau kodo pakeitimų, gali būti klaidų.

Mes patariame perskaityti:

Perduokite jį išmaniajam telefonui ...