» elektronik » Arduino »Hjulafstandsmåler (curvimeter) på Arduino gør det selv

Gør det-selv hjulafstandsmåler (curvimeter) på Arduino

Hej alle sammen! Nu vil jeg prøve at tale i detaljer om, hvordan man laver det enkleste og mest overkommelige curvimeter.

Men lad os først finde ud af, hvad det er, og hvorfor det er nødvendigt. Faktisk fortæller dets navn, hvad det er. Det er dannet af det latinske ord curvus, som betyder buet eller bølget. Det vil sige, at et curvimeter er et hjul- eller rulleafstandsmåler. Der skelnes mellem to typer kurvimetre: små (kartografiske), som normalt bruges til målinger på kortet, og store (vej), som normalt bruges til at måle længden af ​​buede sektioner af allerede motorveje. De kan bruges uanset hvor det er ubelejligt eller umuligt at måle med standard roulette, derfor lover projektet at være interessant.

Den første ting man skal tage sig af, når man bygger curvimeteret, er et hjul eller rulle. Det skal være lille nok, så instrumentets nøjagtighed er høj, samtidig skal det være stort nok, så værdien af ​​aflæsninger ikke påvirkes i høj grad af ujævnheden i den målte overflade. I mit tilfælde har hjulet en diameter på 14 centimeter.

Nu skal du bestemme strukturens materiale og størrelse. Jeg brugte et træ.

På stængerne lavede jeg en markering og lavede de nødvendige snit og huller.

Derefter monterede jeg de bearbejdede dele ved hjælp af små selvskærende skruer.
Lad os nu afvige lidt fra selve curvimeteret og tænke på, hvordan denne ting endda kan bestemme afstanden? Alt er temmelig enkelt. Vi skal bare beregne antallet af omdrejninger på hjulet og multiplicere med længden af ​​dets ydre omkreds, og det er endnu lettere at tilføje en længdeværdi, hver gang hjulet foretager en ny omdrejning.

For at tælle hver revolution i det enkleste tilfælde kan du bruge "glidekontakt". Jeg anbefaler dog ikke at bruge en sådan referencemekanisme. Det er meget bedre at bruge en reed switch eller en Hall sensor.

Det er tid til at prøve på et hjul. Jeg vil fastgøre den med en lang bolt. Vi finder et sted på rammen, hvor hjulkanten er så tæt på den som muligt og markerer med slag. Omkring dette område skal vi installere vippekontakten.

På hjulet skal du installere en lille magnet.Sørg for, at hans styrke vil være tilstrækkelig til at lukke kontakten på røromskifteren.
Nu vil vi beskæftige os med "hjerner" af systemet. I mit tilfælde er dette et gebyr Arduino UNO. Den vil læse status for vippekontakten og transmittere data via Bluetooth-forbindelse ved hjælp af HC-05-modulet til telefonen. Forresten er røromskifteren forbundet til brættet som en almindelig knap. Jeg synes, der ikke burde være problemer med tilslutning af Bluetooth-modulet.

Hvad angår selve koden, er den meget enkel. Og jeg prøvede at kommentere det, så alt var så klart som muligt.

int gercon = 12; // tilsluttet røromskifteren til 12 pin
dobbelt afstand = 0; // oprettede en dobbeltvariabel til at gemme afstanden
ugyldig opsætning () {
   Serial.begin (9600); // tilsluttet en seriel forbindelse
 }
  void loop () {
/ * Næste er if-løkken. Hvis rørkontakten er lukket, finder den næste afstandsberegning sted. Værdien 0,46472 er allerede den beregnede længde på en omdrejning af hjulet. For at undgå "ekstra" data skal du tilføje en forsinkelse på 200 millisekunder og vise målingerne
* /
   if (digitalRead (gercon) == HØJ)
   {
 afstand = afstand + 0,46472;
 forsinkelse (200);
 Serial.println (afstand);
}
  } 


Her er vores curvimeter og klar!

Lad os lave et par testløb. Alt fungerer godt!


Du kan se en video om samlingen af ​​denne enhed, måske finder du der noget interessant.
[media = https: //youtu.be/kx_7ztPsLws]

Ha en god gentagelse af projektet!
5
5
7

Tilføj en kommentar

    • smilesmilxaxaokdontknowyahoonea
      bossscratchnarrejaja-jaaggressivhemmelighed
      undskylddansdance2dance3benådninghjælpdrikkevarer
      stop-vennergodgoodgoodfløjtedånetunge
      røgklappecrayerklærerspottendedon-t_mentiondownloade
      hedeirefullaugh1mdamødemoskingnegativ
      not_ipopcornstraffelæseskræmmeforskrækkelsersøg
      hånethank_youdetteto_clueumnikakutenig
      dårligbeeeblack_eyeblum3blushpralekedsomhed
      censureretpleasantrysecret2truesejryusun_bespectacled
      SHOKRespektlolprevedvelkommenkrutoyya_za
      ya_dobryihjælperenne_huliganne_othodiFludforbudtæt
1 kommentar
Gæst Sergey
Hvorfor UNO når attiny13 er nok for øjnene ...
Hvad angår koden, skal du i det mindste tilføje en kontrol af, at magneten har forladt vippekontakten, for i denne implementering, med en bestemt hastighed, og endnu mere, hvis hjulet stopper, kan det klare at blive behandlet mere end én gang eller ikke behandlet overhovedet. For at gøre dette skal du blot tilføje en global variabel og kontrollere dens tilstand, før du beregner længden, noget som:
int gercon = 12; // tilsluttet røromskifteren til 12 pin
int i = sand;
dobbelt afstand = 0; // oprettede en dobbeltvariabel til at gemme afstanden
ugyldig opsætning () {
Serial.begin (9600); // tilsluttet en seriel forbindelse
}
void loop () {
/ * Næste er if-løkken. Hvis rørkontakten er lukket, finder den næste afstandsberegning sted. Værdien 0,46472 er allerede den beregnede længde på en omdrejning af hjulet. For at undgå "ekstra" data skal du tilføje en forsinkelse på 200 millisekunder og vise målingerne
*/
if (digitalRead (gercon) == HØJ)
{
hvis (i <1)
{
afstand = afstand + 0,46472;
i = 1;
// forsinkelse (200);
Serial.println (afstand);
}
}
hvis (i> 0)
{
i ++;
forsinkelse (1);
}
if (digitalRead (gercon) == LAV)
{
hvis (i> 30) // undgår falske positiver på grund af kontaktvisning
{
i = 0;
}
}
}

Bedre med at sætte to reed-afbrydere, vil dette give dig mulighed for at bestemme rotationsretningen (jeg gik ikke der for at måle - jeg gik tilbage og startede ikke fra starten eller rystede den på plads frem og tilbage og talte med en nabo osv.). Du kan også tilføje magneter for at ændre opløsningen.
ZY Jeg har ikke kontrolleret ændringer i koden, der kan være fejl.

Vi råder dig til at læse:

Giv den til smartphonen ...