Máy phân loại tự động – Cơ điện tử
Dự án này thiết kế máy phân loại tự động. Hệ thống do các sinh viên khoa cơ điện tử chế tạo.
Máy có thể phân loại 2 tấm gỗ vuông khác nhau: 1 có lỗ ở giữa – 1 không có lỗ. Hệ thống sẽ tự đánh giá loại gỗ và phân loại tự động.
Xem thêm:
Cách làm việc:
- Các tấm gỗ khác nhau được đưa vào máy (bằng tay).
- Ray trượt và con lăn đưa các tấm gỗ vào trong máng ( plate magazine ) lần lượt từng cái.
- Khi các tấm gỗ chạm đến đáy của máng dùng để phân loại, nó sẽ kích hoạt một công tắc hành trình nhỏ ( micro switch ).
- Khi công tắc hành trình kích hoạt, đèn LED sáng.
- Nếu tấm gỗ có lỗ tròn, ánh sáng từ đèn LED sẽ đi qua được và kích hoạt Quang trở ( Photocell ) –> Động cơ quay sang bên phải.
- Nếu tấm gỗ KHÔNG có lỗ tròn, ánh sáng từ đèn LED không đến được Quang trở ( Photocell ) –> Động cơ quay sang bên trái.
-Phần cơ khí các bạn tự xem hình cũng như video để mô phỏng lại nhé:




– Mạch nguyên lý:

Code cho vi điều khiển PIC16F628A sử dụng chương trình MikroElektronika
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/********************************************************************************/ /* Mechatronic Design Team */ /* Proekt po Konstruiranje i CAD */ /* "Dizajn i razvoj na nov ured za razdeluvanje na dva tipa plocki" */ /* */ /* */ /* */ /* Mikrokontroler: PIC16F628A */ /* Oscilator: Interen na 4MHz */ /* */ /* Dekemvri, 2012, Skopje */ /********************************************************************************/ void left () { RB2_bit = 1; //motorot pocnuva da se dvizi na levo delay_ms (500); // motorot se dvizi do krajna leva polozba delay_ms (500); delay_ms (500); delay_ms (500); PORTB = 0x00; //koga ke stigne do krajnata leva polozba se gasi delay_ms (200); //vreme za kocenje na motorot RB3_bit = 1; //se aktivira relejot za promena na nasokata delay_ms (20); RB2_bit = 1; //motorot pocnuva da se dvizi desno delay_ms (500); //sredna pozicija na motorot delay_ms (500); delay_ms (500); delay_ms (500); PORTB = 0x00; //motorot se gasi koga ke dojde do sredina delay_ms (150); //vreme za kocenje na motorot } ////////////////////////////////////////////////////////////////////////////// void right () { RB3_bit = 1; //Se uklucuva relejot za promena na nasoka na motorot delay_ms (30); RB2_bit = 1; //motorot pocnuva da se dvizi desno delay_ms (500); delay_ms (500); delay_ms (500); delay_ms (500); //motorot se dvizi do krajna desna polozba PORTB = 0x00; //koga ke stigne do krajna desna polozba se gasi delay_ms (200); //vreme za kocenje na motorot RB2_bit = 1; //motorot pocnuva da se dvizi levo delay_ms (500); //sredna pozicija na motorot delay_ms (500); delay_ms (500); delay_ms (500); //sredna pozicija na motorot PORTB = 0x00; //motorot se gasi koga ke dojde do sredina delay_ms (150); //vreme za kocenje na motorot } ////////////////////////////////////////////////////////////////////////////// void main() { //pocetok na glavna programa TRISB = 0x00; //PORTB Izlezi TRISA = 0xff; //PORTA Vlezovi CMCON = 0x07; //gasenje na komparatori do { delay_ms (50); PORTB = 0x00; if (PORTA.b0==1) { //dali ima kocka? delay_ms (100); if (PORTA.b1==0) { //dali ima otvor? left (); } //ako ima otvor dvizi se levo else (right ()); }} //ako nema dvizi se desno while (1); } |
Nguồn: howtomechatronics.com
Trả lời