» elektronika » Arduino »Merač vzdialenosti kolies (krivka) na Arduino to urobte sám

Ukazovateľ vzdialenosti kolies (krivky) na Arduino

Ahoj všetci! Teraz sa pokúsim podrobne rozprávať o tom, ako vyrobiť najjednoduchší a najdostupnejší krivky.

Najprv však zistíme, čo to je a prečo je to potrebné. V skutočnosti nám jeho názov hovorí o jeho účele. Tvorí sa z latinského slova curvus, čo znamená zakrivenie alebo zvlnenie. To znamená, že krivkomer je merač vzdialenosti kolies alebo valcov. Rozlišujú sa dva typy kriviek: malé (kartografické), ktoré sa zvyčajne používajú na meranie na mape, a veľké (cesty), ktoré sa zvyčajne používajú na meranie dĺžky zakrivených úsekov už diaľnic. Môžu byť použité všade tam, kde je to nevhodné alebo nemožné merať sa štandardnou ruletou, a preto projekt sľubuje, že bude zaujímavý.

Prvou vecou, ​​ktorú treba pri stavbe zakrivenia zohľadniť, je koleso alebo valec. Musí byť dostatočne malá, aby bola presnosť prístroja vysoká, zároveň musí byť dostatočne veľká, aby hodnota odčítania nebola výrazne ovplyvnená nerovnomernosťou meraného povrchu. V mojom prípade má koleso priemer 14 centimetrov.

Teraz musíte určiť materiál a veľkosť štruktúry. Použil som strom.

Na tyčiach som urobil označenie a urobil potrebné zárezy a diery.

Potom som zostavil opracované diely pomocou malých samorezných skrutiek.
Teraz sa trochu odbočíme od samotného krivosti a premýšľajte o tom, ako táto vec dokáže určiť vzdialenosť? Všetko je celkom jednoduché. Potrebujeme len vypočítať počet otáčok kolesa a vynásobiť dĺžkou jeho vonkajšieho obvodu a ešte jednoduchšie je pridať hodnotu dĺžky zakaždým, keď koleso urobí ďalšiu otáčku.

Ak chcete spočítať každú otáčku v najjednoduchšom prípade, môžete použiť „posuvný kontakt“. Neodporúčam však používať takýto referenčný mechanizmus. Je oveľa lepšie použiť jazýčkový spínač alebo Hallov senzor.

Je čas vyskúšať na bicykli. Upevníme ju dlhým závitom. Na ráme nájdeme miesto, kde je ráfik kolesa čo najbližšie k nemu a označíme ho ťahmi. V tejto oblasti musíme nainštalovať jazýčkový spínač.

Na volant musíte nainštalovať malý magnet.Uistite sa, že jeho sila bude stačiť na uzavretie kontaktov jazýčkového spínača.
Teraz sa zapojíme do „mozgov“ systému. V mojom prípade je to poplatok Arduino UNO. Číta stav spínača jazýčkov a prenáša údaje cez Bluetooth cez modul HC-05 do telefónu. Mimochodom, jazýčkový spínač je pripojený k doske ako bežné tlačidlo. Myslím si, že by nemali byť žiadne problémy s pripojením modulu Bluetooth.

Pokiaľ ide o samotný kód, je to veľmi jednoduché. Snažil som sa to komentovať tak, aby bolo všetko čo najjasnejšie.

int gercon = 12; // pripojil jazýčkový spínač k 12 pinom
dvojitá vzdialenosť = 0; // vytvoril dvojitú premennú na uloženie vzdialenosti
neplatné nastavenie () {
   Serial.egegin (9600); // pripojil sériové pripojenie
 }
  void loop () {
/ * Ďalší je cyklus if. Ak je jazýčkový spínač zatvorený, vykoná sa výpočet ďalšej vzdialenosti. Hodnota 0,46472 je už vypočítaná dĺžka jednej otáčky kolesa. Aby ste sa vyhli „extra“ údajom, pridajte oneskorenie 200 milisekúnd a zobrazte hodnoty
* /
   if (digitalRead (gercon) == VYSOKÉ)
   {
 vzdialenosť = vzdialenosť + 0,46472;
 oneskorenie (200);
 Serial.println (vzdialenosť);
}
  } 


Tu je náš krivka a je pripravená!

Urobme pár testovacích pretekov. Všetko funguje skvele!


Na monitore tohto zariadenia môžete sledovať video, možno tam nájdete niečo zaujímavé.
[media = https: //youtu.be/kx_7ztPsLws]

Dobre opakujte projekt!
5
5
7

Pridajte komentár

    • usmievaťúsmevyxaxaokdontknowyahoonea
      bossškrabanecoklamaťánoáno, ánoútočnýtajomstvo
      ľutovaťtanecdance2dance3odpusteniehelpnápoje
      zastávkapriateliadobrýgoodgoodpíšťalaomdlieťjazyk
      dymtlieskanieCraydeklarovaťvýsměšnýdon-t_mentiondownload
      teplohnevlivýlaugh1MDAstretnutiemoskingnegatívny
      not_ipražená kukuricatrestaťprečítaťvydesiťzdesenievyhľadávať
      posmechthank_youtototo_clueumnikakútnasúhlasiť
      zlýbeeeblack_eyeblum3očervenieťchvastanienuda
      cenzurovanéžartysecret2hroziťvíťazstvoyusun_bespectacled
      shokrešpektlolprevedievitajtekrutoyya_za
      ya_dobryipomocníkne_huliganne_othodiFLUDzákazzavrieť
1 komentár
Hosť Sergey
Prečo UNO, keď attiny13, stačí na oči ...
Pokiaľ ide o kód, aspoň musíte pridať kontrolu, či magnet opustil jazýčkový spínač, pretože pri tejto implementácii pri určitej rýchlosti a ešte viac, ak sa koleso zastaví, sa mu podarí spracovať viac ako raz alebo vôbec nespracovať. Ak to chcete urobiť, jednoducho pridajte globálnu premennú a pred vypočítaním dĺžky skontrolujte jej stav, napríklad:
int gercon = 12; // pripojil jazýčkový spínač k 12 pinom
int i = true;
dvojitá vzdialenosť = 0; // vytvoril dvojitú premennú na uloženie vzdialenosti
neplatné nastavenie () {
Serial.egegin (9600); // pripojil sériové pripojenie
}
void loop () {
/ * Ďalší je cyklus if. Ak je jazýčkový spínač zatvorený, vykoná sa výpočet ďalšej vzdialenosti. Hodnota 0,46472 je už vypočítaná dĺžka jednej otáčky kolesa. Aby ste sa vyhli „extra“ údajom, pridajte oneskorenie 200 milisekúnd a zobrazte hodnoty
*/
if (digitalRead (gercon) == VYSOKÉ)
{
ak (i ​​<1)
{
vzdialenosť = vzdialenosť + 0,46472;
i = 1;
// oneskorenie (200);
Serial.println (vzdialenosť);
}
}
ak (i> 0)
{
i ++;
oneskorenie (1);
}
if (digitalRead (gercon) == LOW)
{
ak (i> 30) // sa vyhýba falošným pozitívam v dôsledku kontaktného odrazu
{
i = 0;
}
}
}

Ešte lepšie je, umiestnite dva jazýčkové spínače, čo vám umožní určiť smer otáčania (nešiel som tam, aby som zmeral - išiel som späť a nezačal som od začiatku, netrasil som ho na mieste dopredu a späť, aby som hovoril so susedom atď.). Na zmenu rozlíšenia môžete pridať aj magnety.
ZY Neskontroloval som zmeny v kóde, môžu sa vyskytnúť chyby.

Odporúčame vám prečítať si:

Ruku pre smartphone ...