Kaip perkelti indus aplink virtuvės lentyną naudojant robotą?

Jei ieškote būdo, kaip smarkiai padidinti savo virtuvės žavesį ir funkcionalumą, apsvarstykite galimybę kuo labiau sumažinti žmonių pastangas ten. Žmogaus pastangas galima sumažinti pasigaminus buitinį robotą, kuris bus virtuvėje, ir nešvarius indus nešios link kriauklės ir ten sustos. Kai asmuo iškrauna indus iš roboto, jis grįš ir atneš jų daugiau. Kartais didelėse virtuvėse skalbyklė nėra taip arti spintelių, kad robotas ims indus iš vienos lentynos vietos į kitą. Roboto kelias lentynoje bus padarytas naudojant juostelę „Juoda“. Robotas naudos du infraraudonųjų spindulių artumo jutiklius, kad aptiktų kelią ir, remdamasis iš jutiklių gautomis įvestimis, „Arduino“ nurodys variklius judėti padedant variklio vairuotojui.



Buitinis robotas

Kaip prijungti visus reikalingus išorinius įrenginius, gaminant namų robotą?

Dabar turime surinkti reikalingus komponentus ir pradėti gaminti robotą.



1 žingsnis: naudojami komponentai

  • „Arduino uno“
  • IR jutiklis (x5)
  • Nuolatinės srovės varikliai
  • Automobilių ratų gaudynės
  • Juoda juosta
  • Šuolių laidai
  • Nuolatinės srovės akumuliatorius
  • Klijų pistoletas
  • Atsuktuvų rinkinys

2 žingsnis: komponentų studijavimas

Kadangi mes jau sudarėme komponentų sąrašą, paženkime žingsnį į priekį ir atlikime trumpą kiekvieno komponento veikimo tyrimą.



„Arduino UNO“ yra mikrovaldiklio plokštė, kurią sudaro mikroschema ATMega 328P ir kurią sukūrė Arduino.cc. Ši plokštė turi skaitmeninių ir analoginių duomenų kaiščių rinkinį, kurį galima susieti su kitomis išplėtimo plokštėmis ar grandinėmis. Ši plokštė turi 14 skaitmeninių kontaktų, 6 analoginius kaiščius ir programuojama naudojant „Arduino IDE“ (integruotą kūrimo aplinką) per B tipo USB laidą. Tam reikia 5 V maitinimo ĮJUNGTA ir a C kodas valdyti.



„Arduino UNO“

L298N variklio tvarkyklė naudojama nuolatinės srovės varikliams valdyti. L298N yra dviguba „H-Bridge“ variklio tvarkyklė, leidžianti vienu metu valdyti dviejų nuolatinės srovės variklių greitį ir kryptį. Modulis gali valdyti nuolatinės srovės variklius, kurių įtampa yra nuo 5 iki 35 V, o maksimali srovė yra iki 2A. Tai priklauso nuo įtampos, kuri naudojama variklių VCC gnybte. Mūsų projekte 5 V kaištis bus naudojamas kaip įvestis, nes mes turime jį prijungti prie 5 V maitinimo šaltinio, kad IC veiktų tinkamai. L298N variklio tvarkyklės su prijungtais nuolatinės srovės varikliais schema yra parodyta žemiau, kad suprastumėte L298N variklio vairuotojo mechanizmą. Demonstracijai įvestis pateikiama iš Loginė būsena vietoj IR jutiklių.

Grandinės schema padaryta „Proteus 8 Professional“



3 žingsnis: Blokinės schemos ir darbo principo supratimas

Pirma, mes pereisime per blokinę schemą, suprasime darbo principą ir tada pereisime prie aparatūros komponentų surinkimo.

Bloko schema

Jutikliai, kuriuos naudosime, yra skaitmeniniai ir jie gali suteikti 0 arba 1 išėjimą. Šie mūsų įsigyti jutikliai suteikia 1 ant baltų paviršių ir 0 ant juodų paviršių. Jutikliai, kuriuos perkame, suteikia atsitiktines vertes, kartais ir duoda 0 ant baltų paviršių ir 1 ant juodų paviršių. Šiame robote naudosime penkis jutiklius. Penkių jutiklių kode yra keturios sąlygos.

  1. Pirmyn linijoje: Kai vidurinis jutiklis yra ant juodo paviršiaus, o kiti jutikliai yra ant balto paviršiaus, būsena bus vykdoma į priekį ir robotas judės tiesiai į priekį. Jei pradėsime nuo Jutiklis ir tęskite iki Jutiklis5, vertė, kurią atitinkamai suteiks kiekvienas jutiklis (1 1 0 1 1) .
  2. Staigus posūkis į dešinę: Kai 1 jutiklis ir 2 jutiklis yra ant balto paviršiaus, o kiti jutikliai yra ant juodo paviršiaus, bus įvykdyta staigaus dešiniojo posūkio sąlyga, o robotas pasuks aštriu į dešinę. Jei pradėsime nuo Jutiklis ir tęskite iki Jutiklis5, vertė, kurią atitinkamai suteiks kiekvienas jutiklis (1 1 0 0 0).
  3. Staigus posūkis kairėn: Kai 4 jutiklis ir 5 jutiklis yra ant balto paviršiaus, o kiti jutikliai yra ant juodo paviršiaus, bus įvykdyta staigaus kairiojo posūkio sąlyga, o robotas staigiai pasuks kairėn. Jei pradėsime nuo Jutiklis ir tęskite iki Jutiklis5, vertė, kurią atitinkamai suteiks kiekvienas jutiklis (0 0 0 1 1) .
  4. Sustabdyti: Kai visi penki jutikliai bus ant juodo paviršiaus, robotas sustos ir varikliai pasisuks IŠJUNGTA. Šis taškas su penkiais juodais paviršiais bus šalia kriauklės, kad indų plovimo mašina galėtų iš roboto iškrauti plokštes skalbti.

Mes padarysime kelią ant virtuvės lentynos, naudodami juodą juostą, ir tas kelias baigsis šalia kriauklės, todėl robotas sustos šalia kriauklės, o indų plovimo mašina iškraus plokštes, o tada robotas judės kelio link ir ieškos indų vėl.

Roboto takelis

4 žingsnis: darbo pradžia naudojant „Arduino“

Jei anksčiau nesate susipažinę su „Arduino IDE“, nesijaudinkite, nes žemiau galite pamatyti aiškius kodo įrašymo mikrovaldiklio valdyboje veiksmus, naudodami „Arduino IDE“. Naujausią „Arduino IDE“ versiją galite atsisiųsti iš čia ir atlikite šiuos veiksmus:

  1. Kai „Arduino“ plokštė prijungta prie jūsų kompiuterio, atidarykite „Control panel“ ir spustelėkite „Hardware and Sound“. Tada spustelėkite „Įrenginiai ir spausdintuvai“. Raskite prievado, prie kurio prijungta jūsų „Arduino“ plokštė, pavadinimą. Mano atveju tai yra „COM14“, bet jūsų kompiuteryje jis gali skirtis.

    Rasti uostą

  2. Dabar atidarykite „Arduino IDE“. Iš įrankių nustatykite „Arduino“ lentą į „Arduino“ / „Genuino UNO“.

    Nustatymo lenta

  3. Tame pačiame meniu Įrankis nustatykite prievado numerį, kurį matėte valdymo skydelyje.

    Uosto nustatymas

  4. Atsisiųskite žemiau pridėtą kodą ir nukopijuokite jį į savo IDE. Norėdami įkelti kodą, spustelėkite mygtuką įkelti.

Galite atsisiųsti kodą iš Čia

5 žingsnis: supraskite kodą

Kodas labai paprastas. Žemiau trumpai paaiškinta:

  1. Kodo pradžioje inicializuojami jutiklio kaiščiai ir kartu inicializuojami variklio vairuotojo L298N kaiščiai.
    int enable1pin = 10; // Inicializuojamas PWM kaištis 1 varikliui analoginiam įėjimui int motor1pin1 = 2; // Inicializuojamas teigiamas kaištis 1 varikliui int motor1pin2 = 3; // Inicializuojamas 1 variklio neigiamas kaištis int enable2pin = 11; // Inicializuojamas PWM kaištis, skirtas analoginiam įėjimui 2 varikliui int motor2pin1 = 4; // Inicializuojamas teigiamas kaištis 2 varikliui int motor2pin2 = 5; // Neigiamo variklio 2 variklio inicijavimas int S1 = 12; // Inicijuojant 12 jutiklio 1 kaištį, int S2 = 9; // Inicijuojamas 9 kaištis 2 jutikliui int S3 = 8; // Inicializuojamas 8 jutiklio 3 kaištis int S4 = 7; // Inicializuojamas 7 jutiklis 4 jutikliui int S5 = 6; // Inicializuojamas 6 jutiklio 5 kaištis
  2. negaliojanti sąranka () yra funkcija, naudojama smeigtukams nustatyti kaip INPUT arba OUTPUT. Tai taip pat nustato „Arduino“ duomenų perdavimo greitį. Spartos dažnis yra greitis, kuriuo mikrovaldiklio plokštė bendrauja su kitais pritvirtintais komponentais.
    {pinMode (enable1pin, OUTPUT); // PWM įgalinimas 1 variklio pinMode (enable2pin, OUTPUT); // PWM įjungimas 2 varikliui pinMode (motor1pin1, OUTPUT); // motor1 pin1 nustatymas kaip išvesties pinMode (motor1pin2, OUTPUT); // motor1 pin2 nustatymas kaip išvesties pinMode (motor2pin1, OUTPUT); // motor2 pin1 nustatymas kaip išvesties pinMode (motor2pin2, OUTPUT); // Variklio2 pin2 nustatymas kaip išvesties pinMode (S1, INPUT); // Sensoriaus1 nustatymas kaip įvesties pinMode (S2, INPUT); // Sensoriaus 2 nustatymas kaip įvesties pinMode (S3, INPUT); // Sensoriaus 3 nustatymas kaip įvesties pinMode (S4, INPUT); // Sensoriaus 4 nustatymas kaip įvesties pinMode (S5, INPUT); // Sensoriaus 5 nustatymas kaip įvesties Serial.begin (9600); // Perdavimo greičio nustatymas}
  3. tuščia kilpa () yra funkcija, kuri ciklo metu vykdoma vėl ir vėl. Šioje linijoje mes duodame nurodymus „Arduino UNO“, kokias operacijas atlikti. Visas variklių greitis yra 255 ir abu varikliai turi skirtingą greitį. Taigi, jei norime perkelti robotą į priekį, pasukite į dešinę ir pan., Turime reguliuoti variklių greitį. Kode naudojome analoginius kaiščius, nes norime pakeisti dviejų variklių greitį skirtingomis sąlygomis. Variklių greitį galite reguliuoti patys.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Persiųsti toliau eilutė {analogWrite (enable1pin, 61); // 1 variklio greitis analogWrite (enable2pin, 63); // 2 variklių „digitalWrite“ variklis (motor1pin1, HIGH); // 1 variklio 1 kaiščio padėtis nustatyta į „High digitalWrite“ (variklis1 kaištis2, LOW); // Variklis 1 kaištis 2 nustatytas į Low digitalWrite (motor2pin1, HIGH); // 2 variklio 1 kaištis nustatytas į „High digitalWrite“ (motor2pin2, LOW); // 2 variklio 2 kontaktų padėtis nustatyta į „Žemas“, jei (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Staigus posūkis į dešinę {analogWrite (enable1pin, 60); // 1 greičio variklis analogWrite (enable2pin, 80); // 2 variklių „digitalWrite“ variklis (motor1pin1, HIGH); // 1 variklio 1 kaiščio padėtis nustatyta į „High digitalWrite“ (variklis1 kaištis2, LOW); // Variklis 1 kaištis 2 nustatytas į Low digitalWrite (motor2pin1, LOW); // 2 variklio 1 kaiščio padėtis nustatyta į „Low digitalWrite“ (motor2pin2, LOW); // 2 variklio 2 kontaktų padėtis nustatyta į „Žemas“, jei ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Staigus kairysis posūkis {analogWrite (enable1pin, 80); // 1 variklio greitis analogWrite (enable2pin, 65); // 2 variklių „digitalWrite“ variklis (motor1pin1, LOW); // 1 variklio 1 kaiščio padėtis nustatyta į „Low digitalWrite“ (variklis1 kaištis2, LOW); // Variklis 1 kaištis 2 nustatytas į Low digitalWrite (motor2pin1, HIGH); // 2 variklio 1 kaištis nustatytas į „High digitalWrite“ (motor2pin2, LOW); // 2 variklio 2 kontaktų padėtis nustatyta į „Žemas“, jei ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)) // sustos {analogWrite (enable1pin, 0); // 1 variklio greitis analogWrite (enable2pin, 0); // 2 variklių „digitalWrite“ variklis (motor1pin1, LOW); // 1 variklio 1 kaiščio padėtis nustatyta į „Low digitalWrite“ (variklis1 kaištis2, LOW); // Variklis 1 kaištis 2 nustatytas į Low digitalWrite (motor2pin1, LOW); // 2 variklio 1 kaiščio padėtis nustatyta į „Low digitalWrite“ (motor2pin2, LOW); // 2 variklio 2 kaištis nustatytas į žemą}}

Programos

  1. Pramoninės programos : Šie robotai gali būti naudojami kaip automatiniai įrangos vežėjai pramonėje, pakeičiantys tradicinius konvejerio diržus.
  2. Vidaus taikymai : Jie taip pat gali būti naudojami namuose namų reikmėms, pavyzdžiui, grindų valymui, virtuvės darbams ir kt.
  3. Orientavimo programos : Šie robotai gali būti naudojami viešose vietose, tokiose kaip prekybos centrai, maisto aikštelės, muziejai ir kt