きりんのブログ -22ページ目

きりんのブログ

妻がブログを始めたのでいろいろとネタを提供するも、ある時から「よーわからん」ということで、解説とか書き始めました。

将来的にはいろんなものを制御できるようになりたいなぁ…と。arduino互換機を使ってCNCレーザーを製作し、部品を切り出したり、木や革製品に絵や文字を入れたりしてみることにしました。

フレームの材料はMISUMIで4メートル1500円

これを必要な長さにカット
ガイドレールの車輪は aliexpress で購入したVカットミゾ用の車輪をミニ旋盤でフレームの溝幅に加工しました。
 
 
車輪を取り付けているガイドレールのプレート等は始めは3Dプリンターで作りましたが強度不足で曲がってローラーがスムーズに回らなかったりしたのでアルミのプレートで制作し直しました。
アルミプレートはホームセンターで幅20ミリ×1メートルが200円、幅 50ミリ×1メートルで600円のものをカットして使用しました。
 
マイコンもarduino互換機とCNCシールドのセットをaliexpressで800円程で購入。

塗装の性能評価をするために、くり返し曲げ試験の装置を制作することにした。

1回目はカム式の繰り返し曲げ試験装置を制作したが、高さ調整が煩雑であったのと、ステッピングモーターのトルク不足で構造を見直すことにした。
材料はフレーム、マイコン、ステッピングモーター、ドライバー等をalliexpress、Amazon、Misumi等から安いところを探して調達。
自宅で得意の勘と経験と度胸で製作。
 
 
材料が揃ってからの2日で完成。
 
マイコンのプログラムを変更すればストロークや回数などある程度は自由に変更できます。
 
ボタンは初期の高さ調整用の「上げ」と「下げ」、繰り返し100回、繰り返し1000回、繰り返し10000回を設定しました。
 
材料代は自腹ですがトータルで1万円くらいでしょうか。
 
カウンターもはじめはマイコンに内蔵でLCDのものをつけましたが、電源が落ちると消えてしまうので100均で購入したものをなかば強引にとりつけました。
 
 

 
最近「ワンパンマン」というアニメを見た。趣味でヒーローをしている「さいたま」という主人公がなかなか良い。
私もよく、起業したらどうですかとか、言われることがあるが、こんなの当たり前すぎて価値があるとは思えない。必要としている人がいるとは思えないので、趣味で技術者をしている。
もし、ニーズがあってお役に立てそうなことがあるのであれば検討したいと思う。
 
 
以下サンプルのコードです。
使っていない部分もあります。
 
#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor
const int buttonPin0 = 0; 
const int buttonPin1 = 1;    
const int buttonPin2 = 2;    
const int buttonPin3 = 3;    
const int buttonPin4 = 4; 
const int buttonPin5 = 5; 

int ledPin = A0;             // LEDはデジタルピン13に接続
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

// initialize the stepper library on pins 8 through 11:
Stepper xStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  
  {
  // set the speed at 60 rpm:
  xStepper.setSpeed(60);  // initialize the serial port:
  Serial.begin(9600);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin0, INPUT_PULLUP);  
  pinMode(buttonPin1, INPUT_PULLUP);
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(buttonPin3, INPUT_PULLUP);
  pinMode(buttonPin4, INPUT_PULLUP);
  pinMode(buttonPin5, INPUT_PULLUP);
    pinMode(12, OUTPUT);    // sets the digital pin 13 as output
    pinMode(13, OUTPUT);    // sets the digital pin 13 as output
    pinMode(ledPin, OUTPUT);   // 出力に設定
}
}

void loop() {
  //高さ調整用 下げ
  buttonState = digitalRead(buttonPin1);
  if (buttonState == LOW) {
    digitalWrite(ledPin, LOW);   // LEDをオン
    digitalWrite(12, HIGH); // sets the digital pin 12 on
    digitalWrite(13, HIGH); // sets the digital pin 13 on
          for (int i=1; i <= 1; i++){
  Serial.println("counterclockwise");
  xStepper.step(-10);
          }
     {
        digitalWrite(ledPin, HIGH);    // LEDをオフ
        digitalWrite(12, LOW); // sets the digital pin 12 off
        digitalWrite(13, LOW); // sets the digital pin 13 off
        }
Stepper xStepper(stepsPerRevolution, 8, 9, 10, 11);

  //高さ調整用 上げ
  buttonState = digitalRead(buttonPin2);
  if (buttonState == LOW) {
    digitalWrite(12, HIGH); // sets the digital pin 12 on
    digitalWrite(13, HIGH); // sets the digital pin 13 on
    digitalWrite(ledPin, LOW);   // LEDをオン
          for (int i=1; i <= 1; i++){
  Serial.println("counterclockwise");
  xStepper.step(10);
          }
     {
        digitalWrite(ledPin, HIGH);    // LEDをオフ
        digitalWrite(12, LOW); // sets the digital pin 12 off
        digitalWrite(13, LOW); // sets the digital pin 13 off

         }
  }
  //繰り返し曲げ試験100回
  buttonState = digitalRead(buttonPin3);
  if (buttonState == LOW) {
    digitalWrite(12, HIGH); // sets the digital pin 12 on
    digitalWrite(13, HIGH); // sets the digital pin 13 on
    digitalWrite(ledPin, LOW);   // LEDをオン
     delay(500);
    xStepper.step(-33);
    delay(500);
          for (int i=1; i <= 100; i++){
  Serial.println("counterclockwise");
  xStepper.step(-100);
  xStepper.step(100);
          }
     {
        delay(500);
        xStepper.step(33);
        delay(500);
        digitalWrite(ledPin, HIGH);    // LEDをオフ
        digitalWrite(12, LOW); // sets the digital pin 12 off
        digitalWrite(13, LOW); // sets the digital pin 13 off
         }
  }
  //繰り返し曲げ試験1000回
  buttonState = digitalRead(buttonPin4);
  if (buttonState == LOW) {
    digitalWrite(12, HIGH); // sets the digital pin 12 on
    digitalWrite(13, HIGH); // sets the digital pin 13 on
    digitalWrite(ledPin, LOW);   // LEDをオン
    delay(500);
    xStepper.step(-33);
    delay(500);
          for (int i=1; i <= 1000; i++){
  Serial.println("counterclockwise");
  xStepper.step(-100);
  xStepper.step(100);
          }
     {
        delay(500);
        xStepper.step(33);
        delay(500);
        digitalWrite(ledPin, HIGH);    // LEDをオフ
        digitalWrite(12, LOW); // sets the digital pin 12 off
        digitalWrite(13, LOW); // sets the digital pin 13 off
         }
  }
  //繰り返し曲げ試験10000回
   buttonState = digitalRead(buttonPin5);
  if (buttonState == LOW) {
    digitalWrite(12, HIGH); // sets the digital pin 12 on
    digitalWrite(13, HIGH); // sets the digital pin 13 on
    digitalWrite(ledPin, LOW);   // LEDをオン
   delay(500);
    xStepper.step(-33);
    delay(500);
          for (int i=1; i <= 10000; i++){
  Serial.println("counterclockwise");
  xStepper.step(-100);
  xStepper.step(100);
          }
     {
        delay(500);
        xStepper.step(33);
        delay(500);
        digitalWrite(ledPin, HIGH);    // LEDをオフ
        digitalWrite(12, LOW); // sets the digital pin 12 off
        digitalWrite(13, LOW); // sets the digital pin 13 off
         }
  }
}