» Elektronika » Arduino »Ukazatel vzdálenosti kola (křivky) na Arduinu to udělejte sami

Udělejte si sami vzdálenost měřič (zakřivení) na Arduino

Ahoj všichni! Nyní se pokusím podrobně hovořit o tom, jak vyrobit nejjednodušší a nejdostupnější křivky.

Nejdříve ale zjistíme, co to je a proč je to potřeba. Ve skutečnosti nám jeho název říká jeho účel. Je tvořeno z latinského slova curvus, což znamená zakřivené nebo zvlněné. To znamená, že křivka je měřič vzdálenosti kola nebo válce. Rozlišují se dva typy křivek: malé (kartografické), které se obvykle používají pro měření na mapě, a velké (silnice), které se obvykle používají k měření délky zakřivených úseků již dálnic. Mohou být použity všude tam, kde je obtížné nebo nemožné měřit se standardní ruletou, proto projekt slibuje, že bude zajímavý.

Při stavbě křivky je první věcí, kterou je třeba se starat o kolo nebo váleček. Musí být dostatečně malá, aby přesnost přístroje byla vysoká, současně musí být dostatečně velká, aby hodnota odečtů nebyla výrazně ovlivněna nerovnostmi měřeného povrchu. V mém případě má kolo průměr 14 centimetrů.

Nyní musíte určit materiál a velikost struktury. Použil jsem strom.

Na prutech jsem udělal označení a provedl potřebné řezy a díry.

Pak jsem sestavil obrobené díly pomocí malých samořezných šroubů.
Nyní odbočíme trochu od samotného křivky a přemýšlejme o tom, jak tato věc dokáže určit vzdálenost? Všechno je celkem jednoduché. Potřebujeme pouze spočítat počet otáček kola a vynásobit délkou jeho vnějšího obvodu a je ještě snazší přidat hodnotu délky pokaždé, když kolo provede další otáčku.

Chcete-li počítat každou revoluci v nejjednodušším případě, můžete použít „posuvný kontakt“. Nedoporučuji však používat takový referenční mechanismus. Je mnohem lepší použít jazýčkový spínač nebo Hallův senzor.

Je čas vyzkoušet na kole. Upevním to dlouhým šroubem. Na rámu najdeme místo, kde je ráfek kola co nejblíže a označen tahy. V této oblasti musíme nainstalovat třmenový přepínač.

Na kolo musíte nainstalovat malý magnet.Ujistěte se, že jeho síla bude stačit k uzavření kontaktů jazýčkového spínače.
Nyní se budeme zabývat „mozky“ systému. V mém případě se jedná o poplatek Arduino UNO. Čte stav spínače jazýčků a přenáší data přes Bluetooth pomocí modulu HC-05 do telefonu. Mimochodem, jazýčkový spínač je připojen k desce jako běžné tlačítko. Myslím, že by neměly být problémy s připojením Bluetooth modulu.

Pokud jde o samotný kód, je to velmi jednoduché. A snažil jsem se to komentovat tak, aby bylo vše co nejjasnější.

int gercon = 12; // připojil jazýčkový spínač k 12 pinům
dvojitá vzdálenost = 0; // vytvořil dvojitou proměnnou pro uložení vzdálenosti
neplatné nastavení () {
   Serial.egegin (9600); // připojeno sériové připojení
 }
  void loop () {
/ * Další je smyčka if. Pokud je jazýčkový spínač sepnutý, provede se další výpočet vzdálenosti. Hodnota 0,46472 je již vypočítaná délka jedné otáčky kola. Chcete-li se vyhnout „extra“ datům, přidejte zpoždění 200 milisekund a zobrazte hodnoty
* /
   if (digitalRead (gercon) == VYSOKÉ)
   {
 vzdálenost = vzdálenost + 0,46472;
 zpoždění (200);
 Serial.println (vzdálenost);
}
  } 


Zde je náš křivka a je připraven!

Udělejme pár testovacích závodů. Všechno funguje skvěle!


Na sestavě tohoto zařízení můžete sledovat video, možná tam najdete něco zajímavého.
[media = https: //youtu.be/kx_7ztPsLws]

Dobře opakujte projekt!
5
5
7

Přidejte komentář

    • úsměvúsměvyxaxaokdontknowyahoone
      šéfeškrábnutíhlupákanoano-anoagresivnítajemství
      promiňtanecdance2dance3prominoutpomocnápoje
      zastavitpřátelédobředobrá náladapískatlžícejazyk
      kouřtleskánícrayprohlásitvýsměšnýdon-t_mentionstáhnout
      teploirefulsmích1mdasetkánímoskingnegativní
      not_ipopcorntrestatčístvyděsitděsíhledat
      posměchděkujitototo_clueumnikakutnísouhlasím
      špatnévčelablack_eyeblum3červenat sechlubit senuda
      cenzurovánopleasantrysecret2hrozitvítězstvíyusun_bespectacled
      třástrespektlolprovedenívítejtekrutoyya_za
      ya_dobryipomocníkne_huliganne_othodibludzákazblízko
1 komentář
Host Sergey
Proč UNO, když attiny13 je dost pro oči ...
Pokud jde o kód, musíte alespoň přidat kontrolu, zda magnet opustil jazýčkový spínač, protože v této implementaci, při určité rychlosti, a ještě více, pokud se kolo zastaví, se mu podaří zpracovat více než jednou nebo vůbec nezpracovat. Chcete-li to provést, stačí přidat globální proměnnou a zkontrolovat její stav před výpočtem délky, něco jako:
int gercon = 12; // připojil jazýčkový spínač k 12 pinům
int i = true;
dvojitá vzdálenost = 0; // vytvořil dvojitou proměnnou pro uložení vzdálenosti
neplatné nastavení () {
Serial.egegin (9600); // připojeno sériové připojení
}
void loop () {
/ * Další je smyčka if. Pokud je jazýčkový spínač sepnutý, provede se další výpočet vzdálenosti. Hodnota 0,46472 je již vypočítaná délka jedné otáčky kola. Chcete-li se vyhnout „extra“ datům, přidejte zpoždění 200 milisekund a zobrazte hodnoty
*/
if (digitalRead (gercon) == VYSOKÉ)
{
pokud (i <1)
{
vzdálenost = vzdálenost + 0,46472;
i = 1;
// zpoždění (200);
Serial.println (vzdálenost);
}
}
pokud (i> 0)
{
i ++;
zpoždění (1);
}
if (digitalRead (gercon) == LOW)
{
if (i> 30) // se vyhýbá falešným pozitivům kvůli kontaktnímu odskoku
{
i = 0;
}
}
}

Ještě lepší je, umístit dva jazýčkové spínače, což vám umožní určit směr otáčení (já jsem tam nešel měřit - šel jsem zpět a nezačal jsem od začátku, ani jsem ho netřásl dopředu a zpět, mluvil se sousedem atd.). Můžete také přidat magnety pro změnu rozlišení.
ZY Neskontroloval jsem změny v kódu, mohou se vyskytnout chyby.

Doporučujeme si přečíst:

Podejte to pro smartphone ...