» Elektronica » Arduino »Wielafstandsmeter (curvimeter) op Arduino doe het zelf

Doe-het-zelf wielafstandsmeter (curvimeter) op Arduino

Hallo allemaal! Nu zal ik proberen in detail te praten over het maken van de eenvoudigste en meest betaalbare curvimeter.

Maar laten we eerst kijken wat het is en waarom het nodig is. In feite vertelt de naam ons zijn doel. Het is gevormd uit het Latijnse woord curvus, wat gebogen of golvend betekent. Dat wil zeggen, een curvimeter is een wiel- of rolafstandsmeter. Er worden twee soorten curvimeters onderscheiden: klein (cartografisch), die meestal worden gebruikt voor metingen op de kaart, en groot (weg), die meestal worden gebruikt om de lengte van gebogen delen van reeds snelwegen te meten. Ze kunnen overal worden gebruikt waar het lastig of onmogelijk is om te meten met standaard roulette, daarom belooft het project interessant te worden.

Het eerste waar u op moet letten bij het bouwen van de curvimeter is een wiel of roller. Het moet klein genoeg zijn zodat de nauwkeurigheid van het instrument hoog is, en tegelijkertijd moet het groot genoeg zijn zodat de waarde van de metingen niet sterk wordt beïnvloed door de oneffenheden van het gemeten oppervlak. In mijn geval heeft het wiel een diameter van 14 centimeter.

Nu moet u het materiaal en de grootte van de structuur bepalen. Ik heb een boom gebruikt.

Op de staven heb ik een markering gemaakt en de nodige inkepingen en gaten gemaakt.

Vervolgens monteerde ik de bewerkte onderdelen met kleine zelftappende schroeven.
Laten we nu een beetje afwijken van de curvimeter zelf en nadenken over hoe dit ding zelfs de afstand kan bepalen? Alles is vrij eenvoudig. We hoeven alleen maar het aantal omwentelingen van het wiel te berekenen en te vermenigvuldigen met de lengte van de buitenomtrek, en het is zelfs nog eenvoudiger om een ​​lengtewaarde toe te voegen telkens wanneer het wiel opnieuw een omwenteling maakt.

Om elke omwenteling in het eenvoudigste geval te tellen, kunt u het "schuifcontact" gebruiken. Ik raad echter niet aan om zo'n referentiemechanisme te gebruiken. Het is veel beter om een ​​reed-schakelaar of een Hall-sensor te gebruiken.

Het is tijd om op een wiel te proberen. Ik maak hem vast met een lange bout. We vinden een plek op het frame waar de velg zo dicht mogelijk bij zit en markeren met slagen. Rond dit gebied moeten we de reed-schakelaar installeren.

Op het wiel moet je een kleine magneet installeren.Zorg ervoor dat zijn kracht voldoende is om de contacten van de reedschakelaar te sluiten.
Nu zullen we ons bezighouden met "hersenen" van het systeem. In mijn geval is dit een vergoeding Arduino UNO. Het leest de status van de reed-schakelaar en verzendt gegevens via een Bluetooth-verbinding met behulp van de HC-05-module naar de telefoon. Trouwens, de reed-schakelaar is als een gewone knop op het bord aangesloten. Ik denk dat er geen problemen mogen zijn met het verbinden van de Bluetooth-module.

De code zelf is heel eenvoudig. En ik probeerde er commentaar op te geven zodat alles zo duidelijk mogelijk was.

int gercon = 12; // verbond de reed-schakelaar met 12 pin
dubbele afstand = 0; // creëerde een dubbele variabele om de afstand op te slaan
ongeldige setup () {
   Serial.begin (9600); // een seriële verbinding aangesloten
 }
  leegte lus () {
/ * De volgende is de if-lus. Als de reedschakelaar gesloten is, vindt de volgende afstandsberekening plaats. De waarde 0.46472 is al de berekende lengte van één omwenteling van het wiel. Om "extra" gegevens te vermijden, voegt u een vertraging van 200 milliseconden toe en geeft u de meetwaarden weer
* /
   if (digitalRead (gercon) == HIGH)
   {
 afstand = afstand + 0,46472;
 vertraging (200);
 Serial.println (afstand);
}
  } 


Hier is onze kromtemeter en klaar!

Laten we een paar testraces maken. Alles werkt prima!


Je kunt een video bekijken over de montage van dit apparaat, misschien vind je daar iets interessants.
[media = https: //youtu.be/kx_7ztPsLws]

Heb een goede herhaling van het project!
5
5
7

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
1 commentaar
Gast Sergey
Waarom UNO wanneer attiny13 voldoende is voor de ogen ...
Wat betreft de code, je moet tenminste een controle toevoegen dat de magneet de reed-schakelaar heeft verlaten, omdat in deze implementatie, met een bepaalde snelheid, en nog meer als het wiel stopt, het kan worden verwerkt om meer dan eens of helemaal niet te worden verwerkt. Om dit te doen, voegt u gewoon een globale variabele toe en controleert u de status voordat u de lengte berekent, zoiets als:
int gercon = 12; // verbond de reed-schakelaar met 12 pin
int i = waar;
dubbele afstand = 0; // creëerde een dubbele variabele om de afstand op te slaan
ongeldige setup () {
Serial.begin (9600); // een seriële verbinding aangesloten
}
leegte lus () {
/ * De volgende is de if-lus. Als de reedschakelaar gesloten is, vindt de volgende afstandsberekening plaats. De waarde 0.46472 is al de berekende lengte van één omwenteling van het wiel. Om "extra" gegevens te vermijden, voegt u een vertraging van 200 milliseconden toe en geeft u de meetwaarden weer
*/
if (digitalRead (gercon) == HIGH)
{
als (ik <1)
{
afstand = afstand + 0,46472;
i = 1;
// delay (200);
Serial.println (afstand);
}
}
als (ik> 0)
{
i ++;
vertraging (1);
}
if (digitalRead (gercon) == LOW)
{
if (i> 30) // vermijdt false positives als gevolg van contactbounce
{
i = 0;
}
}
}

Beter nog, plaats twee reed-schakelaars, hierdoor kunt u de draairichting bepalen (ik ging daar niet heen om te meten - ik ging terug en begon niet vanaf het begin of schudde het naar voren en naar achteren praten met een buurman, enz.). U kunt ook magneten toevoegen om de resolutie te wijzigen.
ZY Ik heb de wijzigingen in de code niet gecontroleerd, er kunnen fouten zijn.

We raden je aan om te lezen:

Geef het voor de smartphone ...