산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY 자동 고양이 사료 공급기

구성품 및 소모품

기계식 콘센트 타이머
× 1
스테퍼 모터
× 1
스테퍼 모터 드라이버 L9110S
× 1
선형 샤프트 지지대 SHF8
× 1
USB 벽면 충전기
× 1
SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
DIP 어댑터에 대한 USB 수 커넥터
× 1
USB 연장 케이블
× 1
대괄호 모서리 중괄호
× 1

이 프로젝트 정보

며칠 동안 집을 비울 때 고양이에게 먹이를 주는 것은 항상 큰 도전입니다. 친구나 친척에게 고양이를 돌봐달라고 부탁해야 합니다. 인터넷에서 해결책을 찾다가 반려동물용 디스펜서 제품을 많이 찾았지만 마음에 들지 않았습니다. 첫째, 그들은 매우 비쌉니다. 둘째, 고양이용 건사료를 취급하는 데만 적합합니다(mycat은 대부분 습식사료를 먹습니다). 마지막으로, 그것들은 너무 커서 내 아파트에 공간이 많지 않습니다. 그래서 나는 소형의 자동 습식 사료에 최적화된 고양이 사료 공급기를 만들기로 결정했습니다. 젖은 음식의 문제는 매우 빨리 상한다는 것입니다. 고양이 사료 통조림을 개봉한 후 최대 1일 동안 사용할 수 있다는 것을 깨달았습니다. 공간을 절약하고 음식의 품질을 유지하고 이 프로젝트를 가능한 한 저렴하고 간단하게 만들기 위해 애완 동물에게 한 끼만 제공할 수 있는 기계를 설계했습니다. 고양이 먹이는 일(자유:)에서 이틀을 쉬게 됩니다.

피더는 매우 간단하게 작동합니다. 나는 음식 용기(빈 요구르트 상자)에 음식을 채우고 용기의 문을 닫고 콘센트 타이머가 있는 케이블을 230VAC 네트워크에 연결합니다. 하루가 지나면 피더의 전원이 켜지도록 타이머를 설정했습니다. 기기의 전원이 켜지면 식품 용기가 서보 모터에 의해 열립니다. 하루가 지나면 문이 열리고 고양이가 좋은 식사를 할 수 있습니다. 집에 도착하면 음식 용기를 꺼내서 남은 음식을 정리하고 신선한 음식으로 채운 다음 다시 넣고, 상자의 상단을 닫으면 사이클이 다시 시작됩니다.…

모든 주요 단계는 다음 동영상에서 볼 수 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • Automatic_cat_feeder arduino 코드
  • Automatic_cat_feeder arduino 코드C/C++
    Arduino 펌웨어 소스 코드. Arduino IDE 소프트웨어(https://www.arduino.cc/en/Main/Software), FTDI 어댑터 및 Mini-B USB 케이블을 사용하여 Arduino 프로 미니 보드에 코드를 업로드했습니다. 이 과정을 수행하는 방법에 대한 비디오는 다음과 같습니다. https://www.youtube.com/watch?v=78HCgaYsA70
    코드는 간단합니다. 설정에서 메인 루프에서보다 스테퍼를 돌릴 것입니다. 버튼을 누를 때까지 기다렸다가 다시 한 번 움직일 것입니다.
    // 자동 고양이 사료 공급기 제작:J. Rundhall//스테퍼의 원본 코드:R. Jordan Kreindler가 2016년 10월에 작성한 스케치, 회전 float RPM;boolean isButtonpressed =false;unsigned long timee;// 핀 할당int buttonPIN =6;int aPin =4; //IN1:코일 a 1 endint bPin =3; //IN2:코일 b 1 endint aPrimePin =5; //IN3:코일 aPrime 코일의 다른 쪽 끝 aint bPrimePin =2; //IN4:코일 bPrime 코일의 다른 쪽 끝 bint one =aPin;int two =bPin;int three =aPrimePin;int four =bPrimePin;int도 =0;//int delay1 =20; // 각 단계 간의 지연(밀리초 단위)sint delay1 =5; // 각 단계 간의 지연(밀리초)//int delay2 =50; // 전체 회전 후 지연(밀리초 단위)sint delay2 =200; // 전체 회전 후 지연(밀리초 단위) count =0; // 단계 수int numberOfRotations =1; // 회전자가 360도 회전한 횟수// 360도.void setup() {// 모든 핀을 출력으로 설정하여 Arduino// UNO의 출력 신호를 statorSerial.begin(9600)의 코일 권선으로 보냅니다. // 직렬 포트를 열고 데이터 속도를 9600bps로 설정합니다. pinMode(6, INPUT_PULLUP); //ButtonpinMode(aPin, OUTPUT);pinMode(bPin, OUTPUT);pinMode(aPrimePin, OUTPUT);pinMode(bPrimePin, OUTPUT);Serial.println(" 시계 방향");// 모든 코일로 시작 offdigitalWrite(aPin, LOW );digitalWrite(bPin, LOW);digitalWrite(aPrimePin, LOW);digitalWrite(bPrimePin, LOW);for(int ii=0;ii<20;ii++) doTurn();}void loop() { //읽기 푸시버튼 값을 변수로 int sensorVal =digitalRead(6); // 풀업은 푸시 버튼의 논리가 반전되었음을 의미합니다. // 열리면 HIGH가 되고 눌려지면 LOW가 됩니다. // 버튼이 눌렸을 때 13번 핀을 켜고, 누르지 않았을 때 끕니다. if (sensorVal ==LOW) { isButtonpressed =true; } else { if(isButtonpressed) { isButtonpressed =거짓; 도턴(); 디지털 쓰기(핀, 낮음); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }}void doTurn(){ // 전류를 // 1. aPin // 2. aPin 및 bPin // 3. bPin // 4. 그런 다음 bPin 및 aPrimePin // 5로 보냅니다. 그런 다음 aPrimePin으로 // 6. 그런 다음 aPrimePin 및 bPrime Pin으로 // 7. 그런 다음 bPrimePin으로 // 8. 그런 다음 bPrimePin 및 aPin. // 따라서 반스텝 방식을 사용하여 스텝을 생성합니다. // 1. aPin을 High로 설정합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서, delay1 // 2. aPin과 bPin을 HIGH로 활성화합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 3. bPin을 High로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 4. bPin과 aPrimePin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 5. aPrime 핀을 high로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 6. aPrimePin과 bPrime Pin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 7. bPrimePin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 그래서, delay1 milliseconds // 8. bPrimePin과 aPin을 HIGH로 설정합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 밀리초 count =count + 8; 도 =(360.0 * (카운트 / 400.0)); if ((numberOfRotations % 2) ==1) { // 회전수가 짝수인지 확인 Serial.println(" Clockwise "); Serial.println(도); // 각도 위치를 도 단위로 출력 } else { // numberOfRotations가 홀수인 경우 Serial.println(" Anti-Clockwise "); 도 =360 - 도; Serial.print(" -"); // 빼기 기호를 출력합니다. Serial.println(degrees); // 각도 위치를 도 단위로 출력 } if (count ==160) { // 스테퍼의 전체 회전 numberOfRotations =++numberOfRotations; timee =밀리(); RPM =timee / numberOfRotations; // 평균 회전 시간 RPM =(60000.00 / RPM); // 분당 회전 수 if (numberOfRotations>=10) { Serial.print("RPM:"); Serial.println(라운드(RPM)); //RPM을 정수로 출력 } delay(delay2); // 각 전체 회전 후 delay2/1000초 카운트 =0; // 스텝 카운터를 0으로 재설정 // 각 회전 후 방향을 반대로 if ((numberOfRotations) % 2 ==0) { // 회전 수가 짝수인지 확인 // 그렇다면 반대 방향 aPin =4; bPin =3; aPrimePin =2; bPrimePin =1; } else { // 회전수가 홀수인 경우 aPin =1; bPin =2; aPrimePin =3; bPrimePin =4; } 디지털 쓰기(핀, 낮음); 디지털 쓰기(b핀, 낮음); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }

    회로도

    먼저 전자제품의 배선 작업을 했습니다. 전원 케이블을 USB 어댑터 PCB에 연결하기 위해 납땜 인두를 두 번만 사용했습니다. 230V 네트워크에 연결하기 전에 전류 제어 및 전류 측정 기능이 있는 실험실 벤치 전원 공급 장치를 사용하는 것이 좋습니다. 케이블을 잘못 연결한 경우 이 검사를 통해 어댑터나 다른 구성 요소의 손상을 방지할 수 있습니다. 전체 소비는 5볼트에서 1암페어 미만이어야 합니다.
    두 번째로 모서리 버팀대를 조립한 다음 상자를 수정하여 기계의 구조에 고정했습니다.

    제조공정

    1. DIY 써모캠 제작
    2. 자동 바 피더의 기능 및 기능
    3. 자동 프레스 기계 란 무엇입니까?
    4. 프레스 피더 란 무엇입니까?
    5. 자동 파워 프레스 란 무엇입니까?
    6. 공압 바 피더 란 무엇입니까?
    7. 자동 파이프 벤더란 무엇입니까?
    8. 자동 회전 테이블이란 무엇입니까?
    9. 자동변속기의 이해
    10. 자동 윤활 시스템의 이해