Fräse: Difference between revisions

From CCC Basel Wiki
Jump to navigation Jump to search
(Angefangen, die Spindel-Geschichte zu dokumentieren)
Line 29: Line 29:


=== spindle.ino ===
=== spindle.ino ===

Code unten ist nur zur Demonstration, wie man den String auseinander nimmt. Richtiger Code folgt (hoffentlich).

<pre>

#include <EasyNeoPixels.h>

// v1:0_v2:0_v3:0

char str[30];
int var1 = 0;
int var2 = 0;
int var3 = 0;

void setup() {
Serial.begin(9600);
pinMode(A5, OUTPUT);
pinMode(A7, OUTPUT);
digitalWrite(A5, LOW);
digitalWrite(A7, HIGH);
setupEasyNeoPixels(A6, 1);
}

void loop() {
if (Serial.available() > 0) {
memset(str, 0, sizeof(str));
Serial.readBytesUntil('\n', str, sizeof(str));
sscanf(str, "v1:%d_v2:%d_v3:%d", &var1, &var2, &var3);
writeEasyNeoPixel(0, var1, var2, var3);
Serial.print(var1);
Serial.print(" ");
Serial.print(var2);
Serial.print(" ");
Serial.print(var3);
Serial.println(" ");
delay(100);
}
}

</pre>


=== spindle.hal ===
=== spindle.hal ===

Revision as of 18:51, 27 September 2020

Maschine

Bei der Maschine handelt es sich um eine kompakte Uhrmacherfräsmaschine des Herstellers Sixis. Die Maschine soll auf CNC-Betrieb umgebaut werden. Momentan sind 2 Achsen (X und Z) und der Teilapparat umgebaut. Bei Fragen kann Val (val@kabelsalat.ch) eventuell Auskunft geben (Stand Ende Sept '20).

LinuxCNC

WIP

Achssystem und Motoren

WIP

Frässpindel

Überblick

  • name-der regel sorgt dafür, dass der Spindel-Ardunio immer an /dev/arduino0 gemountet wird.
  • spindle.hal verbindet die Spindel-Pins von LinuxCNC mit den Spindel-Pins des Python-Moduls spindle.py
  • spindle.py verwandelt die Pin-Werte aus der spindle.hal zu einem String und schickt ihn seriell an /dev/ardunio0
  • Aufbau des Strings: L:0_R:1_S:100 (Linkslauf/Rechtslauf/Drehzahl)
  • spindle.ino ist das Programm auf dem Ardunio, das den String aufsammelt und die Pins schaltet.
  • Der Arduino schaltet über 2 Pins die Links/Rechtslauf-Pins des FUs und sendet 0-5V als Solldrehzahl.

udev-regel

spindle.hal

spindle.py

spindle.ino

Code unten ist nur zur Demonstration, wie man den String auseinander nimmt. Richtiger Code folgt (hoffentlich).


#include <EasyNeoPixels.h>

// v1:0_v2:0_v3:0

char str[30];
int var1 = 0;
int var2 = 0;
int var3 = 0;

void setup() {
  Serial.begin(9600);
  pinMode(A5, OUTPUT);
  pinMode(A7, OUTPUT);
  digitalWrite(A5, LOW);
  digitalWrite(A7, HIGH);
  setupEasyNeoPixels(A6, 1);
}

void loop() {
  if (Serial.available() > 0) {
    memset(str, 0, sizeof(str));
    Serial.readBytesUntil('\n', str, sizeof(str));
    sscanf(str, "v1:%d_v2:%d_v3:%d", &var1, &var2, &var3);
    writeEasyNeoPixel(0, var1, var2, var3);
    Serial.print(var1);
    Serial.print("  ");
    Serial.print(var2);
    Serial.print("  ");
    Serial.print(var3);
    Serial.println("  ");
    delay(100);
  }
}

spindle.hal