Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengumpan Cat Otomatis DIY

Komponen dan persediaan

Pengatur Waktu Outlet Mekanis
× 1
Motor Stepper
× 1
Driver Motor Stepper L9110S
× 1
Dukungan Poros Linier SHF8
× 1
Pengisi Daya Dinding USB
× 1
SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
Konektor USB Pria ke Adaptor DIP
× 1
Kabel Ekstensi USB
× 1
Kurung penyangga sudut
× 1

Tentang proyek ini

Ketika saya meninggalkan rumah selama beberapa hari, memberi makan kucing saya selalu menjadi tantangan besar. Saya harus meminta teman atau kerabat untuk merawat kucing saya. Saya mencari solusi di internet dan saya menemukan banyak produk dispenser makanan untuk hewan peliharaan, tetapi saya tidak menyukainya. Pertama, mereka sangat mahal. Kedua, mereka hanya cocok untuk menangani makanan kucing kering (mycat makan makanan basah sebagian besar waktu). Terakhir, mereka terlalu besar, saya tidak punya banyak ruang di flat saya. Jadi saya memutuskan untuk membuat pengumpan kucing yang ringkas, otomatis, dan dioptimalkan untuk makanan basah. Masalah dengan makanan basah adalah, makanan itu cepat rusak. Saya sadar, bahwa setelah saya membuka makanan kucing kalengan, saya punya waktu maksimal 1 hari untuk menggunakannya. Untuk menghemat ruang dan menjaga kualitas makanan dan membuat proyek ini semurah dan sesederhana mungkin, saya merancang sebuah mesin, yang hanya dapat memberikan satu kali makan kepada hewan peliharaan. Ini akan memberi saya dua hari absen dari tugas memberi makan kucing saya (kebebasan :)).

Pengumpan beroperasi dengan sangat sederhana. Saya mengisi wadah makanan (kotak yogurt kosong) dengan makanan, menutup pintu wadah, dan mencolokkan kabel dengan pengatur waktu stopkontak ke jaringan 230VAC. Saya mengatur pengatur waktu sehingga setelah satu hari akan menyalakan pengumpan. Saat instrumen dihidupkan, wadah makanan akan dibuka oleh motor servo. Setelah sehari pintu akan terbuka dan kucing bisa makan enak. Ketika saya tiba di rumah, saya mengeluarkan wadah makanan dan membersihkan sisa makanan dan mengisinya dengan makanan segar, lalu saya meletakkannya kembali dan, menutup bagian atas kotak dan siklus dapat dimulai lagi.…

Semua langkah utama dapat dilihat di video ini:

Kode

  • Kode arduino otomatis_cat_feeder
Automatic_cat_feeder kode arduinoC/C++
Kode sumber firmware Arduino. Saya mengunggah kode ke papan mini Arduino pro dengan bantuan perangkat lunak Arduino IDE (https://www.arduino.cc/en/Main/Software), dan adaptor FTDI dan kabel USB Mini-B. Berikut adalah video tentang, bagaimana melakukan proses ini:https://www.youtube.com/watch?v=78HCgaYsA70
Kodenya sederhana. Pada setup akan memutar stepper dari pada main loop menunggu tombol ditekan kemudian akan bergerak sekali lagi.
// Automatic cat feeder made by:J. Rundhall//Original code for steper from :Sketsa oleh R. Jordan Kreindler, ditulis Oktober 2016, untuk memutar float RPM;boolean isButtonpressed =false;unsigned long timee;// Pin assignmentsint buttonPIN =6;int aPin =4; //IN1:kumparan satu ujung bPin =3; //IN2:kumparan b satu ujung aPrimePin =5; //IN3:koil aPrime ujung koil yang lain bukan bPrimePin =2; //IN4:koil bPrime ujung koil bint satu =aPin;int dua =bPin;int tiga =aPrimePin;int empat =bPrimePin;int derajat =0;//int delay1 =20; // Penundaan antara setiap langkah dalam milidetik penundaan1 =5; // Penundaan antara setiap langkah dalam milidetik//int delay2 =50; // Penundaan setelah setiap putaran penuh, dalam milidetik delay2 =200; // Penundaan setelah setiap putaran penuh, dalam hitungan milidetik =0; // Jumlah langkahint numberOfRotations =1; // Berapa kali rotor telah// berputar 360 derajat.void setup() {// Atur semua pin sebagai output untuk mengirim sinyal output dari Arduino// UNO ke gulungan kumparan statorSerial.begin(9600); // membuka port serial, menyetel kecepatan data ke 9600 bps pinMode(6, INPUT_PULLUP); //ButtonpinMode(aPin, OUTPUT);pinMode(bPin, OUTPUT);pinMode(aPrimePin, OUTPUT);pinMode(bPrimePin, OUTPUT);Serial.println(" Searah Jarum Jam");// Mulai dengan semua kumparan offdigitalWrite(aPin, LOW );digitalWrite(bPin, LOW);digitalWrite(aPrimePin, LOW);digitalWrite(bPrimePin, LOW);for(int ii=0;ii<20;ii++) doTurn();}void loop() { //membaca nilai tombol tekan ke dalam variabel int sensorVal =digitalRead(6); // Perlu diingat bahwa pull-up berarti logika tombol terbalik. Itu berbunyi // TINGGI saat dibuka, dan RENDAH saat ditekan. Nyalakan pin 13 saat tombol // ditekan, dan matikan saat tidak:if (sensorVal ==LOW) { isButtonpressed =true; } else { if(isButtonpressed) { isButtonpressed =false; putar(); digitalWrite(aPin, RENDAH); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, RENDAH); } }}void doTurn(){ // Kirim arus ke // 1. aPin // 2. aPin, dan bPin // 3. bPin // 4. Kemudian ke bPin dan aPrimePin // 5. Kemudian ke aPrimePin // 6. Kemudian ke aPrimePin dan Pin bPrime // 7. Kemudian ke bPrimePin // 8. Kemudian ke bPrimePin dan aPin. // Jadi menghasilkan langkah menggunakan metode setengah langkah // 1. Atur aPin High digitalWrite(aPin, HIGH); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, RENDAH); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 // 2. Berikan energi pada aPin dan bPin ke HIGH digitalWrite(aPin, HIGH); digitalWrite(bPin, TINGGI); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, RENDAH); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 3. Atur bPin ke High digitalWrite(aPin, LOW); digitalWrite(bPin, TINGGI); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, RENDAH); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 4. Atur bPin dan aPrimePin ke HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, TINGGI); digitalWrite(aPrimePin, TINGGI); digitalWrite(bPrimePin, RENDAH); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 5. Atur pin aPrime ke high digitalWrite(aPin, LOW); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, TINGGI); digitalWrite(bPrimePin, RENDAH); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 6. Atur aPrimePin dan bPrime Pin ke HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, TINGGI); digitalWrite(bPrimePin, TINGGI); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 7. Atur bPrimePin ke HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, TINGGI); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik // 8. Atur bPrimePin dan aPin ke HIGH digitalWrite(aPin, HIGH); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, TINGGI); // Biarkan beberapa penundaan antara memberi energi pada kumparan untuk memungkinkan // waktu rotor stepper untuk merespons. penundaan (penundaan1); // Jadi, delay1 milidetik count =count + 8; derajat =(360,0 * (hitung / 400,0)); if ((numberOfRotations % 2) ==1) { // Periksa apakah jumlah rotasi genap Serial.println(" Searah Jarum Jam "); Serial.println(derajat); // Cetak posisi sudut dalam derajat } else { // Jika numberOfRotations adalah angka ganjil Serial.println(" Anti-Clockwise "); derajat =360 - derajat; Serial.print("-"); // Cetak tanda minus Serial.println(derajat); // Cetak posisi sudut dalam derajat } if (hitung ==160) { // Sebuah revolusi penuh dari stepper numberOfRotations =++numberOfRotations; waktu =mili(); RPM =waktu / jumlahRotasi; // Waktu rata-rata putaran RPM =(60000.00 / RPM); // Jumlah rotasi per menit if (numberOfRotations>=10) { Serial.print("RPM:"); Serial.println(bulat(RPM)); //Cetak RPM sebagai bilangan bulat } delay(delay2); // delay2/1000 detik setelah setiap putaran penuh dihitung =0; // Setel ulang penghitung langkah ke nol // Arah mundur setelah setiap putaran if ((numberOfRotations) % 2 ==0) { // Periksa apakah jumlah putaran genap // jika demikian arah sebaliknya aPin =empat; bPin =tiga; aPrimePin =dua; bPrimePin =satu; } else { // Jika jumlah putaran adalah bilangan ganjil aPin =satu; bPin =dua; aPrimePin =tiga; bPrimePin =empat; } digitalWrite(aPin, RENDAH); digitalWrite(bPin, RENDAH); digitalWrite(aPrimePin, RENDAH); digitalWrite(bPrimePin, RENDAH); } }

Skema

Pertama, saya melakukan pemasangan kabel elektronik. Saya hanya menggunakan dua kali besi solder saya untuk menghubungkan kabel daya ke PCB adaptor USB. Sebelum menghubungkan ke jaringan 230V saya sarankan untuk menggunakan catu daya bangku laboratorium dengan kontrol arus dan pengukuran arus. jika Anda salah memasang kabel, pemeriksaan ini dapat menyelamatkan Anda dari kerusakan pada adaptor atau komponen lain. Seluruh konsumsi harus kurang dari 1 Ampere pada 5 Volt.
Kedua, saya merakit penyangga sudut, lalu memodifikasi kotak dan memperbaiki struktur mesin.

Proses manufaktur

  1. Membuat Termocam DIY
  2. Seluk-beluk Pengumpan Bar Otomatis
  3. Apa itu Mesin Press Otomatis?
  4. Apa itu Pengumpan Pers?
  5. Apa itu Power Press Otomatis?
  6. Apa itu Pengumpan Batang Pneumatik?
  7. Apa itu Penyok Pipa Otomatis?
  8. Apa itu Meja Putar Otomatis?
  9. Pengertian Sistem Transmisi Otomatis
  10. Memahami sistem Pelumasan Otomatis