メカトロニクス学生が開発した自動プレート仕分け機、コンテストで1位を獲得
このマシンは、スコピエの機械工学部で「構造とCAD」の授業の学生プロジェクトとして、5人チームによって作られました。 自動仕分けマシンの仕組みは以下の通りです: このマシンはPIC16F628Aマイクロコントローラーを使用し、MikroElektronikaでプログラミングされています。
2種類のプレートを仕分けるマシンです。一方のプレートには穴があり、もう一方には穴がありません。これらのプレートを自動で仕分けるマシンを開発するのが課題でした。私たちの解決策がこちらで、25台のマシンの中で1位を獲得しました。動作原理




回路図

ソースコード
/********************************************************************************/
/* 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; // モーターが左に動き始める
delay_ms (500); // モーターが最左位置まで動く
delay_ms (500);
delay_ms (500);
PORTB = 0x00; // 最左位置に到達したら停止
delay_ms (200); // モーターのブレーキ時間
RB3_bit = 1; // 方向切替リレーを作動
delay_ms (20);
RB2_bit = 1; // モーターが右に動き始める
delay_ms (500); // 中央位置
delay_ms (500);
delay_ms (500);
PORTB = 0x00; // 中央に到達したらモーター停止
delay_ms (150); // モーターのブレーキ時間
}
///////////////////////////////////////////////////////////////////////////////
void right () {
RB3_bit = 1; // モーター方向切替リレーを作動
delay_ms (30);
RB2_bit = 1; // モーターが右に動き始める
delay_ms (500);
delay_ms (500);
delay_ms (500);
delay_ms (500); // モーターが最右位置まで動く
PORTB = 0x00; // 最右位置に到達したら停止
delay_ms (200); // モーターのブレーキ時間
RB2_bit = 1; // モーターが左に動き始める
delay_ms (500); // 中央位置
delay_ms (500);
delay_ms (500);
// 中央位置
PORTB = 0x00; // 中央に到達したらモーター停止
delay_ms (150); // モーターのブレーキ時間
}
///////////////////////////////////////////////////////////////////////////////
void main() {
// メインプログラム開始
TRISB = 0x00; // PORTB 出力
TRISA = 0xff; // PORTA 入力
CMCON = 0x07; // コンパレーター無効化
do {
delay_ms (50);
PORTB = 0x00;
if (PORTA.b0==1) { // プレートがあるか?
delay_ms (100);
if (PORTA.b1==0) { // 穴があるか?
left (); // 穴があれば左へ
}
else (right ()); // なければ右へ
} while (1);
}
製造プロセス