» electronică » Arduino »Contorul distanței roților (curvimetru) pe Arduino faceți-vă singur

Do-it-yourself dvs. distanță roată (curvimetru) pe Arduino

Salut tuturor! Acum voi încerca să vorbesc în detaliu despre cum să facem curvimetrul cel mai simplu și mai accesibil.

Dar mai întâi, să ne dăm seama ce este și de ce este nevoie. De fapt, numele ei ne spune scopul său. Se formează din cuvântul latin curvus, care înseamnă curbat sau ondulat. Adică, un curvimetru este un contor de distanță pentru roți sau role. Se disting două tipuri de curvimetre: mici (cartografice), care sunt de obicei utilizate pentru măsurători pe hartă și mari (rutiere), care sunt de obicei utilizate pentru a măsura lungimea secțiunilor curbate ale autostrăzilor deja. Pot fi utilizate oriunde este incomod sau imposibil de măsurat cu ruletă standard, prin urmare proiectul promite a fi interesant.

Primul lucru de care trebuie să aveți grijă atunci când construiți curvimetrul este o roată sau o rolă. Trebuie să fie suficient de mic pentru ca precizia instrumentului să fie ridicată, în același timp trebuie să fie suficient de mare pentru ca valoarea citirilor să nu fie mult afectată de denivelările suprafeței măsurate. În cazul meu, roata are un diametru de 14 centimetri.

Acum trebuie să determinați materialul și dimensiunea structurii. Am folosit un copac.

Pe barele am făcut un marcaj și am făcut tăieturile și găurile necesare.

Apoi am asamblat piesele prelucrate folosind mici șuruburi autofiletante.
Acum să ne îndepărtăm un pic de curvimetrul în sine și să ne gândim cum acest lucru poate chiar determina distanța? Totul este destul de simplu. Trebuie doar să calculăm numărul de rotații ale roții și să înmulțim cu lungimea circumferinței sale externe și este chiar mai ușor să adăugăm o valoare a lungimii de fiecare dată când roata face o altă revoluție.

Pentru a număra fiecare revoluție în cel mai simplu caz, puteți utiliza „contactul glisant”. Cu toate acestea, nu recomand utilizarea unui astfel de mecanism de referință. Este mult mai bine să folosiți un comutator cu stuf sau un senzor Hall.

Este timpul să încerci pe o roată. O voi fixa cu un șurub lung. Găsim un loc pe cadru unde janta roții este cât mai aproape de ea și marcăm cu lovituri. În jurul acestei zone, trebuie să instalăm comutatorul cu stuf.

Pe roată trebuie să instalați un mic magnet.Asigurați-vă că rezistența lui va fi suficientă pentru a închide contactele întrerupătorului stufului.
Acum vom fi angajați în „creierele” sistemului. În cazul meu, aceasta este o taxă Arduino ONU. Acesta va citi starea comutatorului reed și va transmite date prin conexiune Bluetooth, folosind modulul HC-05, către telefon. Apropo, comutatorul stuf este conectat la placă ca un buton obișnuit. Cred că nu ar trebui să existe probleme cu conectarea modulului Bluetooth.

În ceea ce privește codul în sine, este foarte simplu. Și am încercat să-l comentez, astfel încât totul să fie cât se poate de clar.

int gercon = 12; // a conectat comutatorul stuf la 12 pini
distanta dubla = 0; // a creat o variabilă dublă pentru a stoca distanța
void setup () {
   Serial.begin (9600); // a conectat o conexiune serială
 }
  void loop () {
/ * Următorul este bucla if. Dacă întrerupătorul stufului este închis, atunci următorul calcul al distanței are loc. Valoarea 0.46472 este deja lungimea calculată a unei revoluții a roții. Pentru a evita date „suplimentare”, adăugați o întârziere de 200 de milisecunde și afișați citirile
* /
   if (digitalRead (gercon) == HIGH)
   {
 distanță = distanță + 0,46472;
 întârziere (200);
 Serial.println (distanță);
}
  } 


Iată curvimetrul nostru și gata!

Să facem câteva curse de teste. Totul funcționează grozav!


Puteți viziona un videoclip pe ansamblul acestui dispozitiv, poate veți găsi acolo ceva interesant.
[media = https: //youtu.be/kx_7ztPsLws]

Repetă bine proiectul!
5
5
7

Adaugă un comentariu

    • zâmbetzâmbetexaxabinedontknowYahooNea
      șefzgârieturăpăcălidada-daagresivsecret
      scuzedansdance2dance3iertareajutorbăuturi
      oprireprietenibungoodgoodfluiersincopălimbă
      fumaplauzeCrayvestimbatjocoritorDon-t_mentiondescărcare
      căldurămânioslaugh1mdaîntâlniremoskingnegativ
      not_ifloricele de porumbpedepsicititsperiasperiecăutare
      batjocurăthank_youacestto_clueUmnikacutconveni
      răubeeeblack_eyeblum3roșilăudăroșenieplictiseală
      cenzuratpleasantrysecret2amenințavictorieyusun_bespectacled
      ShokRespektlolprevedbun venitKrutoyya_za
      ya_dobryiajutorne_huliganne_othodifludinterdicțieînchide
1 comentariu
Invitat Sergey
De ce UNO atunci când atiny13 este suficient pentru ochi ...
În ceea ce privește codul, cel puțin trebuie să adăugați o verificare a faptului că magnetul a părăsit comutatorul stufului, deoarece în această implementare, la o anumită viteză, și cu atât mai mult dacă roata se oprește, poate reuși să fie procesată de mai multe ori sau deloc procesată. Pentru a face acest lucru, trebuie doar să adăugați o variabilă globală și să verificați starea sa înainte de a calcula lungimea, ceva de genul:
int gercon = 12; // a conectat comutatorul stuf la 12 pini
int i = true;
distanta dubla = 0; // a creat o variabilă dublă pentru a stoca distanța
void setup () {
Serial.begin (9600); // a conectat o conexiune serială
}
void loop () {
/ * Următorul este bucla if. Dacă întrerupătorul stufului este închis, atunci următorul calcul al distanței are loc. Valoarea 0.46472 este deja lungimea calculată a unei revoluții a roții. Pentru a evita date „suplimentare”, adăugați o întârziere de 200 de milisecunde și afișați citirile
*/
if (digitalRead (gercon) == HIGH)
{
dacă (i <1)
{
distanță = distanță + 0,46472;
i = 1;
// întârziere (200);
Serial.println (distanță);
}
}
dacă (i> 0)
{
i ++;
întârziere (1);
}
if (digitalRead (gercon) == LOW)
{
dacă (i> 30) // evită falsele pozitive din cauza respingerii contactului
{
i = 0;
}
}
}

Mai bine, puneți două întrerupătoare cu stuf, acest lucru vă va permite să determinați direcția de rotație (nu m-am dus acolo pentru a măsura - m-am întors și nu am început de la început și nu l-am scuturat în loc înainte și înapoi vorbind cu un vecin etc.). Puteți adăuga și magneți pentru a schimba rezoluția.
ZY Nu am verificat modificările codului, pot exista erori.

Vă sfătuim să citiți:

Înmânează-l pentru smartphone ...