Für die Olmütz habe ich mir vor ein paar Tagen neue Glassmassstäbe mit 5u Auflösung von HXX aus Fernost bestellt. Mit 215$ inkl. Versand für 3 Masstäbe (100mm, 150mm, 600mm) nicht all zu teuer. Eine Digitale Anzeige hätte lediglich 80$ gekostet - dennoch habe ich mich entschieden, die DRO selber zu bauen. Nicht wegen der Erspranis der unglaublichen Summe von 80$ sondern weil Hobby - sprich mit maximalem Aufwand, minimalen Ertrag erzielen ;) | |
Die Massstäbe waren 4 Tage nach Bestellung bei mir zu Hause und sehen ganz ok aus -soweit ich das beurteilen kann. Die Verarbeitung des Zubehör (Montage-Winkel, Abdeckung) ist typisch chinesisch - sprich alle bearbeiteten Stellen sind scharfkantig und müssen zuerst entgratet werden. |
Es gibt zwar schon einige homemade DRO-Projekte, z.b. das von Yuri. Finde ich eine extrem elegante Lösung - aber meine Frau hätte keine Freude wenn ich auch noch ihr Tablet in die Werkstatt entführe. Auch die Zardoz-Anzeige ist nicht ohne. Aber ich will was, dass mit einfachen Standardmitteln und ohne Custom-Made-Boards auskommt sowie für unter 20$ ($ nicht Euro!) zu bauen ist.
Die DRO wird mit einem 4x20 Charakterdisplay (4 Zeilen à 20 Zeichen), einem 4x4 Keypad, 3 Reset-Knöpfen (die falschen - das sind leider keine Taster) auf einem Arduino Mini realisiert. Materialkosten 15$. Zusätzlich soll über einen Hall-Sensor die Spindeldrehzahl angezeigt/ermittelt werden. Das könnte man dann gleich noch nutzen, um einen FU für eine konstante Drehzahl zu regeln ;)
Gestern ist der lang ersehnte Arduino eingetrudelt....nein, nicht der, den ich am 23. Oktober bestellt habe - sondern derjenige von mitte September!! Hat mich echt gewundert, dass der überhaupt nocht eingetroffen ist - dachte die chineschische Post hätte den verloren. Aber dafür ist er "gratis" - weil mir ebay mittlerweilen den Kaufpreis rückerstattet hat. Irgenwie scheint momentan bei der HK/CN-Post der Wurm drin zu sein. Die Hälfte der Sendungen sind 8 oder mehr Wochen überfällig. |
void QuadraturEncoder::onPinChangeInterrupt() {Der Code funktioniert :) wenn auch noch ein bischen langsam...
// Read input port & mask out all except desired pin
bool newA = digitalPinToInputRegister(_pinChannelA) & _channelAMask;
bool newB = digitalPinToInputRegister(_pinChannelB) & _channelBMask;
//interrupts are disabled and restored by defaults in isr()
if (newA != _oldA || newB != _oldB) { //channel A or B changed
newB ^ _oldA ? _cnt++ : _cnt--;
} else { //spurious wake-up ?
_errCnt++;
}
_oldA = newA;
_oldB = newB;
}