Dünyada, robot temizleyiciler arasında her geçen gün daha popüler. Böyle küçük yardımcılar sayesinde, ev çok daha temiz hale gelir ve temizlik için çok daha az çaba harcanır. Robotların birçok farklı modifikasyonu var, hepsi işlevsellik, boyut ve diğer parametrelerde farklılık gösteriyor.
Özellikle, bu makale nasıl bir örnek ele alacaktır?
kendin yap Gerektiğinde odanın kendisini vakumlayacağı basit bir robot yapabilirsiniz. Kontrolör burada “beyin” olarak kullanılır
Arduino.
Robotun üretimi için malzemeler ve aletler:- motorların çalışmasını kontrol eden kart (Arduino motor kalkanı);
- Arduino kartı;
- dişli bulunan iki motor (3 volttaki motorlar ve yaklaşık 100 rpm'lik bir dönüş hızı).
- tekerlekler (alüminyum kutulardan yapılabilir;
- bilgisayar güç kaynağından bir soğutucu (hem 5V hem de 12V'de mümkündür);
- 5V güç kaynağı (pil);
- telsiz elemanlarının montajı için teller ve plaka;
- davayı yapmak için plastik bir kaba ihtiyacınız var;
- Bir çöp kutusu oluşturmak için başka bir küçük kap;
- sıcak tutkal;
- mıknatıslar;
- karton.
Robotun üretim süreci:
İlk adım. Robotun ve robotun yazılım parçası:
Robotun kalbi Arduino denetleyicisidir. Programlamak için bir bilgisayara ve özel bir yazılıma ihtiyacınız olacak.
Eskizi tahtaya indirmek için Arduino IDE programına ihtiyacınız olacak. Aşağıda robotun program kodunu alabilir ve ana devreyi görebilirsiniz.
/*
İki motorlu bir robotu kontrol etmek için program.
Motorlar hızlarını ve yönlerini değiştirdiğinde robot döner.
Sol ve sağ taraftaki ön tamponlar engelleri algılar.
Ultrasonik sonarlar analog girişlere bağlanabilir (LV-MaxSonar-EZ1 üzerinde test edilmiştir):
- pimleri sonarPins dizisine şu sırayla yerleştirin: sol, sağ, ön, diğerleri
Örnekler:
1. pim 2 ve 3'e bağlı sadece sol ve sağ sonarlar: sonarPins [] = {2,3}
2. pim 2, 3 ve 5'e bağlı sol, sağ ve ön sonarlar: sonarPins [] = {2,3,5}
3. sadece pim 5'e bağlı ön sonar: sonarPins [] = {-1, -1.5}
4. pim 2'ye yalnızca sol sonar bağlı: sonarPins [] = {2}
5. pimlere 3 bağlı sadece sağ sonar: sonarPins [] = {-1,3}
Pimlere bağlı 6,5 sonar 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Motor kalkanı motorları çalıştırmak için kullanılır.
*/
const int Baud = 9600; // UART bağlantı noktası hızı
// Sonar özellikleri
int sonarPins [] = {1, 2}; // Sonar sensörüne Analog Pin Sayısı Pin AN
sabit uzun MinLeftDistance = 20; // Minimum izin verilen sol mesafe
sabit uzun MinRightDistance = 20; // Minimum izin verilen doğru mesafe
sabit uzun MinFrontDistance = 15; // İzin verilen minimum ön mesafe
const int SamplesAmount = 15; // daha fazla örnek - daha yumuşak ölçüm ve daha büyük gecikme
const int SonarDisplayFrequency = 10; // bu satırlardan yalnızca birini görüntüle - tümünü değil
int sonarDisplayFrequencyCount = 0;
sabit uzun Faktör = 2.54 / 2;
uzun örnekler [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// sağ taraf
const int pinRightMotorDirection = 4; // bu motor kalkanında "DIR A" olarak işaretlenebilir
const int pinRightMotorSpeed = 3; // bu motor kalkanında "PWM A" olarak işaretlenebilir
const int pinRightBumper = 2; // sağ tamponun bağlı olduğu yer
// sol taraf
const int pinLeftMotorDirection = 7; // bu motor kalkanında "DIR B" olarak işaretlenebilir
const int pinLeftMotorSpeed = 6; // bu motor kalkanında "PWM B" olarak işaretlenebilir
const int pinLeftBumper = 8; // sağ tamponun bağlı olduğu yer
// Motor Kalkanı kırılırsa sonraki 2 satırı aç
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // bu motor kalkanında "KIRILMA A" olarak işaretlenebilir
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // bu motor kalkanında "BREAKE B" olarak işaretlenebilir
// alanlar
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// bir motorun ne kadar süre çalıştığını sayaçta ayarlar: N / 10 (milisaniye cinsinden)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Başlatma
void setup () {
Serial.begin (Baud);
initPins ();
// Motor Kalkanı kırılırsa sonraki 4 satırı aç
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // araları kapat
// digitalWrite (pinRightMotorBreak, LOW); // araları kapat
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Ana döngü
void loop () {
verifyAndSetRightSide ();
verifyAndSetLeftSide ();
processRightSide ();
processLeftSide ();
delay (10); // her 10 milisaniyede bir tekrarla
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
for (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
delay (20); // her 20 milisaniyede bir kontrol edin
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // izin verilen minimum ön mesafeye ulaşılıp ulaşılmadığını kontrol eder
return;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // sayaç henüz geri saymıyorsa
runLeftMotorBackward (); // sağ motoru geriye doğru çalıştırır
countDownWhileMovingToLeft = turnLeftTimeout; // geri saymayı başlatmak için sayacı maksimum değere ayarlayın
}
bool checkCounterIsNotSet (int sayacı) {
dönüş sayacı = SamplesAmount)
sampleIndex [pinIndex] = 0;
örnekler [pinIndex] [örnekIndex [pinIndex]] = değer;
geri dönüş;
}
long calculateAvarageDistance (int pinIndex) {
uzun ortalama = 0;
for (int i = 0; i ortalama + = örnekler [pinIndex] [i];
getiri ortalaması / Örnekler
}
İkinci Adım Robotun temel elemanlarının hazırlanması
Karton, pil, kontrol kartları ve motorlar da dahil olmak üzere robotun tüm bileşenlerini sabitlemek için bir taban olarak kullanılır.
Türbin, kirin emilmesi için bir delik açmak üzere küçük bir plastik kap üzerine düzgün bir şekilde yapıştırılmalı veya başka bir şekilde sabitlenmelidir. Daha sonra, bu tasarım karton tabanına yapıştırılır. Ek olarak, kabın içinden havanın çıkacağı ilave bir delik olmalıdır. Bir filtre olmalı, yazar bu amaçlar için sentetik kumaş kullanmaya karar verdi.
Bir sonraki aşamada, soğutucunun servolar ile yapıştırılması gerekir ve daha sonra bu tasarım karton bir tabana monte edilir.
Üçüncü Adım Robot için tekerlekler yapıyoruz
Jantları yapmak için alüminyum kutular almanız ve üst ve alt parçaları onlardan kesmeniz gerekir. Sonra bu elemanlar birbirine yapıştırılır. Şimdi sadece tekerlekleri servo motorlara sıcak eriyik yapıştırıcı ile düzgün bir şekilde bağlamak kalır. Tekerleklerin servo millerin ortasına net bir şekilde sabitlenmesi gerektiğini anlamak önemlidir. aksi halde robot çarpık bir şekilde sürecek ve enerji tüketecek.
Dördüncü Adım Son robot montaj süreci
Pil takıldıktan ve robotun tüm elemanları bağlandıktan sonra, yapıyı dayanıklı bir kasaya yerleştirmeye devam eder. Büyük bir plastik kap bu amaçlar için mükemmeldir. Her şeyden önce, robot gövdesinin burnunda, sinyal verecek kontakların çıkacağı delikler açılmalıdır. elektronik robot bir engelle çarpıştığında.
Kasanın hızlı ve kolay bir şekilde çıkarılması için, sabitlemek için mıknatıslar kullanılır, bu durumda sekiz tane vardır. Mıknatıslar elektrikli süpürgenin içine ve kabın kendisine, her biri 4 parça yapıştırılır.
Hepsi bu. Şimdi robot monte edildi ve pratikte denenebilir. Robotun kendi başına şarj edememesine ve navigasyon açısından oldukça sınırlı bir yeteneğe sahip olmasına rağmen, yarım saat içinde mutfaktaki veya küçük odadaki çöpleri temizleyebilecektir. Robotun avantajları, tüm bileşenlerin kolayca bulunabilmesidir ve çok pahalı değildir. Şüphesiz ev yapımı Yeni sensörler ve diğer öğeler ekleyerek hassaslaştırabilirsiniz.