» Motīvi » DIY idejas »Motorollera spidometrs

Spidometrs motorolleram

Es pievērsīšu jūsu uzmanību nākamajam amatniecībaproti, motorollera spidometrs.
Fons ir šāds: lai varētu pārvarēt fizisko bezdarbību, tika iegādāts Rollersurf dēlis. Tā kā uz tāfeles ir tikai divi riteņi, braukšanai pa to ir nepieciešama līdzsvara izjūta, jūs varat tikai “stāvēt” uz tā kustībā. Pārliecinājies, ka pēc nepārtrauktas pārvietošanās aptuveni 700 metru attālumā riteņi šķita iestrēguši smiltīs un pārvietošanās bija ļoti apgrūtināta, es vērsos pie interneta un speciālistiem. Kļuva skaidrs, ka riteņa materiāla pārmērīgā mīkstuma dēļ manam svaram riteņu materiāls ir ļoti karsts un mīkstināts, palielinās kontakts ar ceļu un palielināta riteņa viskozitāte apgrūtina kontroli un griezes momenta radīšanu. Pēc riteņu nomaiņas ar cietāku ruļļu dēļi ievērojami palielinājās, tāpat kā vadības vieglums. Tajā pašā garajā trasē pazīstamā bremzēšana nenotika, ātrums turpināja palielināties, kas noveda pie nepatīkama kritiena.
Ideja izmērīt ātrumu un ierobežot sevi paātrinājumā nāca, iespējams, pēc kritiena :) Bija prototips no 2014. gada, kur tika izveidota šāda ierīce, bet cita veida dēlim, kur riteņa rotācijas plakne daudz nekustas attiecībā pret dēli un elektronika var novietot uz paša dēļa, savienojot to ar sensoru uz riteņa ar elastīgu vadu.
Manā gadījumā gan sensoru, gan elektroniku nevajadzētu novietot uz riteņa kronšteina, jo pats kronšteins (ritentiņš) riņķo ap savu asi apļveida veidā attiecībā pret dēļa plakni.
Roller Surf izskats


Īstenošana. Signāla specifikāciju izvēlējās BlueTooth šīs tehnoloģijas pieejamības un klātbūtnes dēļ Samsung SM-V700 viedpulkstenī. BlueTooth modulis tika izvēlēts kontrolieris HC-05 Arduino Mini Pro, bet vēlāk to aizstāja ar tukšu kontrolieri AtMega168A, tika izvēlēta 500mAh Li-Pol akumulators, lai tas atbilstu ritentiņa izmēriem un paredzamajam enerģijas patēriņam. Kā rotācijas sensors tika izvēlēts Hall sensors SS49E, atšķirībā no prototipa, kā operatīvi stabilāks. Attiecīgi skice tika nedaudz modernizēta. Riteņa rumbā uzstādītā magnēta caurlaide tiek analizēta ar diviem punktiem: pirmā iedarbināšana - magnēts nonāk jutības zonā - “vads” un otrā iedarbināšana - magnēts iziet no sensora jutības zonas - “nolaišanās”.Kontrolieris saskaita šos notikumus noteiktā laika posmā - 1 sekundē un caur sakaru kanālu nosūta saņemto numuru uz Android ierīci, vienlaikus analizējot ienākošos signālus. Balstoties uz prototipu Android Studio vidē, tika izveidota programma moduļa saņemšanai, parādīšanai, pārvaldīšanai. Tas paredz dažus uzlabojumus, kas saistīti ar paaugstinātu izturību pret troksni. Tāpat kā prototips, tas aprēķina ātrumu un attālumu. Kā šķiet, tiek saglabāta arī lietderīgā funkcija, ieslēdzot / izslēdzot "priekšējos lukturus" - gaismas diodi, kas virzīta uz priekšu kustībā.
Bloks bez vāka

Redzamā augšējā kreisajā stūrī: sarkana lādēšanas atpakaļgaitas aizsardzības gaismas diode, uzlādes darba slēdzis, akumulators; zemāk: zaļais VT modulis, AtMega168A mikrokontrolleris ar flush-cut spailēm ir pielīmēts aizmugurē ar korpusa augšējo daļu.
Bloka vāks ar magnētisko sensoru

Salikts ar ritentiņu, modulis izskatās šādi:
Bloķējiet ritentiņu

Fotoattēlā jūs varat redzēt barošanas slēdzi, kontaktus lādētāja pievienošanai, ierīces otrā pusē uz augšējā stūra - LED - "lukturis".
Programmas prototips tika papildināts ar iespēju izdot skaņas un vibrācijas signālus dažādos pasākumos (priekšējo lukturu ieslēgšana / izslēgšana, trauksmes signāls, pārsniedzot noteikto maksimālā ātruma ierobežojumu).
Pārbaude uz galda - zemāk esošajā fotoattēlā, vēl nav pārbaudīta uz ceļa, gaida vasaru :)
Pārbaude uz galda

Android Studio projektam ir liels apjoms, es to kaut kur ievietošu ar saiti, ja ir interese, es atnesu skici ar komentāriem.
Intereses klātbūtnē esmu gatavs dalīties idejās, pieredzē.
Jautājums \ tēma tiek automātiski publicēta sociālajā tīklā. vietņu tīkls - sekojiet līdzi atbildēm tur:

Piemērots tēmai

Saistītās tēmas

Pievienojiet komentāru

    • smaidismaidaxaxalabinezinuYahoonea
      priekšniekssaskrāpētmuļķisjājā-jāagresīvsslepeni
      žēldejotdeja2deja3apžēlošanapalīdzētdzērieni
      apstātiesdraugilabilabsirdīgssvilpegulbismēle
      smēķētaplaudēkrauklispaziņodrausmīgsdon-t_mentionlejupielādēt
      karstumsdrausmīgssmieties1mdasapulcemoskingnegatīvs
      not_ipopkornssodītlasītnobiedētbiedēmeklēt
      ņurdētpaldiesšoto_clueumņikakūtapiekrītu
      sliktibēmelnā acsblum3sarktlielītiesgarlaicība
      cenzētspleasantryslepens2draudētuzvarajusun_bespectacled
      šoksrespektlolprevedlaipni gaidītikrutojsya_za
      ya_dobryipalīgsne_huliganne_othodifludsaizliegumstuvu
1 komentārs
Autore
ATMega168A programmaparatūras skice:
/*
* Mega168 !!!
*/
#include "timer-api.h"

int Polaritāte = -1; // Ieejas signāla impulsa polaritāte (manā gadījumā negatīva
int slieksnis = 500; // nolasīšanas impulsa sliekšņa slieksnis 1/2 Vcc = 512
int CountTurn = 0; // uzglabāt apgriezienu skaitu pārskata periodā
int LED = 13; // Gaismas diode savienota ar PB5 tapu
int InputSignal = A5; // Hall sensora ieeja
int TurnNumber = 0; // uzkrātais apgriezienu skaits
int DeltaT = 28; // kavēšanās no priekšpuses līdz impulsa beigām, lai noteiktu stabilitāti
bool Tick = nepatiess; // sākotnējā vērtība, vēl nav atzīmes

iestatīšana nav spēkā ()
{
Sērijas.begin (9600); // atkļūdošanai
timer_init_ISR_2Hz (TIMER_DEFAULT); // saņemiet 1 sekundes kavēšanos !!!
pinMode (LED, OUTPUT); // signāla izeja uz fona apgaismojumu (priekšējie lukturi)
pinMode (InputSignal, INPUT); // Hall sensora ieeja
}

void loop () // šeit mēs apstrādājam signālus no sensora un lukturu vadības ierīces
{
if (Atzīmēt) // atļauja izpildīt if bloku noteiktā laika intervālā
// nosūtīt apgriezienu skaitu
{
Serial.println (String (CountTurn) + ";"); // atkļūdošanai
Atzīmējiet = false; // sagatavo pēdas. laika intervāls
CountTurn = 0; // nulle apgriezienu skaitu pēc pārsūtīšanas uz viedtālruni
}

cits // ja ērce vēl nav ieradusies, mēs uzkrājam apgriezienu skaitu, ieslēdzam / izslēdzam priekšējos lukturus
{
// apgriezienu uzkrāšanās
if (analogRead (InputSignal) {
kavēšanās (DeltaT); // vēl neko nelasīt
if (analogRead (InputSignal)> Slieksnis) // atnākusi mala
{
CountTurn ++; // uzkrāt apgriezienu skaitu, nonākot pie aizmugurējās malas
}
}

// lukturu vadība
if (Serial.avable ()> 0) // lasiet rakstzīmi no BTSerial
{
char komanda = Serial.read ();
slēdzis (komanda)
{
Lieta '0': digitalWrite (LED, LOW); break; // ieslēdziet priekšējo lukturi
korpuss '1': digitalWrite (LED, HIGH); break; // Izslēdziet priekšējo lukturi
}
}
}
}

anulēts timer_handle_interrupts (int taimeris)
{
Atzīmējiet = true;
}

Mēs iesakām izlasīt:

Nododiet to viedtālrunim ...