Archiv der Kategorie: Elektronik

Alles zur elektronischen Steuerung

RC-Fernsteuerung mit Arduino benutzen – 1.Teil: viele Grundlagen und das Auslesen

Irgendwo hatte ich sicherlich schon mal erwähnt, dass ich in meiner Freizeit auch ganz gerne LEGO-Technik-Modelle und früher auch schon Fischertechnik-Modelle baue. Zugegebenerweise mache ich das aber eher streng nach Anleitung und weniger in Eigenkonstruktion.

Bei den motorisierten Modellen wird teilweise von LEGO eine Infrarotfernsteuerung dazu gegeben. Das ist irgendwie nicht zufriedenstellend, da das sogar nur digital (Vollausschlag oder Null) ermöglicht.

Hier liegt vom Drohnenfliegen noch eine 6-Kanal-Funkfernsteuerung mit Empfängern herum. Damit müsste man doch auch die LEGO-Motoren steuern können. Aber wie?

Ich führe im folgenden Beitrag langsam an das Thema heran, wie man die Impulse des RC-Empfängers mit einem Arduino Nano nutzbar macht. In einem weiteren Artikel wird es dann darum gehen Motoren zu steuern.

Also los …. RC-Fernsteuerung mit Arduino benutzen – 1.Teil: viele Grundlagen und das Auslesen weiterlesen

CNC-Mini-Fräse: Die alte Elektronik (Nachtrag vom 17.06.2017)

Nach ein paar „Fahr“-Versuchen mit den mitgelieferten Programmen Mach3 und USB-CNC in Zusammenspiel mit der mitgelieferten Elekronikbox habe ich mich entschieden erst gar nicht weiter damit zu experimentieren, sondern gleich auf GRBL umzusteigen. Die verschiedenen Beiträge im Internet haben mich in dem Entschluss bestärkt.

Ich wollte aber vorher wenigsten noch die alte Elektronik verstehen und im Detail dokumentieren. Das ermöglicht mir im Fall des Falles auch wieder zurückzubauen. Zudem hilft es vielleicht dem einen oder anderen Leser mit seiner Maschine.

CNC-Mini-Fräse: Die alte Elektronik (Nachtrag vom 17.06.2017) weiterlesen

Alles rund um den Arduino: ein empfehlenswerter Link

Wer meinen Blog kennt, weiß, dass ich schon Einiges mit dem Arduino realisiert habe. Auch ich weiß das natürlich nicht alles auswendig und muss mir meine Informationen auch zusammensuchen. Genau bei so einer Suche ist mir gestern eine sehr empfehlenswerte Seite untergekommen, die ich hier kurz vorstellen möchte. Alles rund um den Arduino: ein empfehlenswerter Link weiterlesen

Aufbau der Steuerelektronik – Teil 2

Der nächste Schritt besteht aus dem Aufkleben des Kühlkörpers auf den Schrittmotortreiber. Die Treiber werden im Betrieb recht heiß. Hier werden bezogen auf die Größe des Chips ziemlich hohe Ströme geschaltet. Das ist auch notwendig, denn die Motoren, die den Strom abnehmen, sollen ja kräftig und drehmomentstark arbeiten.

Auch hier gilt wieder, dass sauberes Arbeiten spätere Korrekturen verhindern kann. Fettfreiheit ist das Wichtigste dabei.

Wir benötigen den Schrittmotortreiber, den Kühlkörper und ein Spezialklebeband für Kühlkörper. Das Klebeband sieht zwar fast aus wie Teppichklebeband, hat aber definitiv ganz andere Eigenschaften. Ich benutze und versende mit meinen Elektroniksätzen das „thermal adhesive tape“ von „akasa“. Zu finden ist es u.a. bei Amazon. Es ist in der Lage über die Klebeschicht Wärme abzuleiten. Eine Anleitung liegt dem Klebeband bei, – egal ob nun von mir oder woanders gekauft.

Zunächst wird die benötigte Fläche ermittelt:

Treiberabmessung 2

Treiberabmessung 1

Nur die Größe des kleinen Chips auf der Trägerplatine ist entscheidend. Die benötigte Größe wird sauber aus dem Klebeband ausgeschitten, – möglichst mit einem sehr scharfen Messer.

Klebestreifen zuschneiden

Beide Klebeflächen die miteinander verklebt werden sollen, Chipoberfläche und Kühlkörperunterseite, müssen vor Aufbringen des Klebebands entfettet werden. Dazu eignet sich hochreiner Alkohol am besten, zum Beispiel Isopropylalkohol. Bei Alkohol kann der Elektronik auch nicht passieren. Alkohol auf ein Stück Papiertuch (Küchenrolle) oder einen Q-Tipp geben und damit die Oberflächen vorsichtig reinigen.

Jetzt wird die gelbe Schutzfolie vom Klebestreifen entfernt. Das kann recht fummelig sein. Sollte sich die die rote Folie lösen macht das auch nichts, dann ist das halt die erste Klebeseite. Wichtig: Erst die Folie auf den Chip. Dann den Kühlkörper aufsetzen. Nicht anders herum! Es empfielt sich unbedingt eine feine Pinzette für das Positionieren des Klebestreifens auf dem Chip zu benutzen.

Klebestreifen aufbringen

Treiber mit Klebestreifen 1

Der Klebestreifen muss die gesamte Chipoberfläche einnehmen !! Damit man das kontrolliert durchführen kann, wird die Reihenfolge genau so gewählt wie beschrieben.

Jetzt wird die verbleibende Schutzfolie (üblicherweise die rote) entfernt.

Treiber mit Klebestreifen 2

… und der Kühlkörper wird positioniert …

Treiber mit Kühlkörper

Die Richtung der Kühlrippen ist völlig egal.

Bitte jetzt nicht am Kühlkörper zerren, um zu prüfen, ob er fest sitzt. Genauso darf der Kühlkörper auch nicht nochmal abenommen werden um ihn neu zu positionieren. Dann muss die ganze Klebefolie sauber entfernt werden und das Ganze muss erneut durchgeführt werden.

Wer seine RAMPS-Platine etwas verbessern will, tauscht vor dem Aufsetzen der Treiber die Anschlüsse gegen hochwertigere  PTR-Stecksysteme aus. Ich kaufe die üblicherweise vom Elektronikhändler meines Vertrauens, nämlich hier.

Heizungsanschlüsse PTR

Die blaue Anschlussleiste (D10, D09, D08) für die drei Heizungen (Hotend 1, Hotend 2, Heatbed) kann relativ leicht gegen die PTR-Anschlüsse getauscht werden. Dazu wird die blaue Leiste ausgelötet und die grünen Buchsen werden eingelötet. Man sollte allerdings schon etwas Erfahrung mit soetwas haben.  Wenn es ordentlich gemacht wird, sieht es wie im Bild unten aus. Wer sich das nicht zutraut sollte es aus Sicherheitsgründen lieber sein lassen. Denn über diese Anschlüsse fließen relativ hohe Ströme. Sind die Lötungen nicht perfekt, gibt es hohe Übergangswiderstände und das führt zu Überhitzungen und gegebenenfalls zum Brand. Also Vorsicht!

Heizungsanschluss mit PTR Oberseite

Auf der Oberseite auf Ausrichtung und flaches direktes Aufliegen auf die Platine achten.

Heizungsanschluss mit PTR Unterseite

Auf der Unterseite müssen die Lötungen schön gleichmäßig glatt mit einer geschlossenen Oberfläche ringsherum um den Anschlussstift aussehen. Im Idealfall sieht es genauso aus, wie die vier bereits vorhandenen PTR-Anschlüsse für die Stromversorgung.

Wenn jetzt alle Schrittmotortreiber mit Kühlkörpern versehen sind, werden sie in die entsprechenden Positionen auf dem RAMPS gebracht. Alle Steckplätze sind bei guten Platinen mit Signalnamen der jeweiligen Pins beschriftet.

Pinsignale RAMPS

Pinsignale Treiber

Durch Klicken auf das Bild kann man es besser erkennen:  Ziemlich genau in der Mitte des oberen Bildes vom RAMPS sieht man die Pinbezeichnungen  „STEP“ und „DIR“. Und genau die gleichen Bezeichnungen findet man auf der Rückseite der Treiber auf der linken Stiftreihe oben. Das gilt für die A4988 und für die hier behandelten DRV8825 identisch, da sie pinkompatibel sind.

Daraus folgt, dass die Einbaulage so sein muss:

Einbaulage Treiber

Für den A4988-Treiber sieht das so aus:

Pinsignale Treiber A4988Einbaulage Treiber A4988

In gleicher Weise und Richtung werden die anderen Positionen auf der RAMPS-Platine mit Treibern bestückt. Das Eindrücken der Treiberplatinen erfolgt, indem man auf die Kontaktreihen oben und unten möglichst gleichmäßig drückt. Niemals auf die Platinenmitte oder den Treiberchip mit dem Kühlkörper drücken. Das könnte den Baustein zerstören.

In die untere Reihe passen drei Treiber für die Achsenbewegungen des 3D-Druckers. Abgesehen von der Logik für Deltadrucker, von der ich bisher keine Ahnung habe, ist das üblicherweise von links nach rechts: x, y, z. Die Bezeichnungen sind auf der Platine auch zu sehen.

In der oberen Reihe sind die Treiber für die Extruder angesiedelt. Sofern nur ein Extruder und ein Hotend verbaut werden, braucht nur die linke Position E0 gesteckt werden. Bei einem Doppelextruder benötigt man zudem noch den rechten Steckplatz E1.

Wenn nur ein Extruder genutzt wird sollte der rechte obere Steckplatz E1 frei bleiben.

Ein voll bestücktes RAMPS 1.4 sieht zum Schluss so aus:

RAMPS mit Treibern

RAMPS mit Treibern Seitenansicht

Die Seitenansicht zeige ich deshalb hier, weil es sehr wichtig ist, dass die Treiberplatinen ringsherum komplett in den Fassungen stecken. Wenn das nicht sofort geht, muss man sich ansehen, wo es hakt und dann gegebenenfalls etwas Kunststoff mit einer Feile oder einem Messer beseitigen.

Aufbau der Steuerelektronik – Teil 1

Der Aufbau der Steuerelektronik ist für viele Neulinge auf dem Gebiet des 3D-Drucks eine gewisse Herausforderung. ich spreche hier natürlich die Puristen an, die sich ihren Drucker komplett selbst zusammenbauen.

Die Teile für den Drucker kommen dabei meist aus den unterschiedlichsten Quellen. Egal ob nun im großen Internetshop oder über ebay der Einkauf stattfindet: Der Zusammenbau muss wieder im Internet oder bei Freunden gelernt werden. Bevor ich gerade mit diesem Artikel angefangen habe, habe ich noch schnell eine kleine Recherche über google gemacht. Speziell der Zusammenbau der Elektronik ist nicht so leicht zu finden. Ich habe mir damals auch mein Wissen über diverse Internetseiten zusammengesucht. Vielleicht schaffe ich es ja mit dieser Anleitung  verständlich und nachvollziehbar den Aufbau und die Programmierung zu beschreiben. Ich bediene mich dabei der Teie, die ich sowohl selbst benutze als auch hier oder per ebay verkaufe.

Und das sind die Einzelteile:

arduino

Arduino MEGA 2560 oder ein Clone davon

ramps

Ein RAMPS 1.4 mit Steckern und Jumpern

schrittmotortreiber

Ein Schrittmotortreiber mit Kühlkörper

Klebestreifen

Kleber um den Kühlkörper auf den Schrittmotortreiber aufzukleben

Bei allen Arbeiten mit der Elektronik ist immer darauf zu achten, dass sich keinerlei statische Aufladung übertragen kann. Wenn am Arbeitsplatz öfters mal ein Funke überschlägt, weil man vorher mit den Pantoffeln über den Teppich gelaufen ist, ist das eine denkbar schlechte Vorraussetzung für solche Arbeiten. Die Teile können schnell deswegen zerstört werden. Wenn sich eine geerdete Lampe am Arbeitsplatz befindet, reicht es in der Regel aus, zum Beispiel den Metallschirm der Lampe kurz anzufassen, um die statische Aufladung los zu werden. Weiter Tips für Arbeiten an elektronischen Schaltungen findet man im Internet. Das wüde hier zu weit führen ….

Auf der RAMPS-Platine ist eine Besonderheit zu beachten, wenn man die Elektronik über verschiedene Anschlüsse mit Strom versorgen will. Das wird insbesondere dann wichtig, wenn die Elektronik nicht über einen PC per USB angeschlossen wird, sondern mit einer Displayelektronik gesteuert werden soll. In diesem Fall wird das Arduino-Board nicht per USB mit Strom versorgt. Das muss in diesem Fall über die 12V-Leitung am RAMPS erfolgen. Die RAMPS-Platine muss dafür aber an einer bestimmten Stelle mit einer Diode bestückt sein. Auf dem folgenden Bild ist die Lage und Einbaurichtung der Diode zu erkennen:

Besonderheit D1

Im unteren Teil der Platine in der Mitte ist im Bild die betreffende Diode (D1) mit einem grünen Kasten umrandet und mit einem grünen Pfeil gekennzeichnet. Nur wenn diese Diode vorhanden ist, kann die Elektronik sowohl mit USB als auch über den 12V-Anschluss auf dem RAMPS betrieben werden. Es dürfen selbstverständlich auch beide Anschlüsse vorhanden sein. Die Elektronik weiß dann selbst, welche Versorgung sie nehmen soll. Sollte eine Nachbestückung notwendig sein, muss eine Diode vom Typ 1N4004 benutzt werden.

In jedem Fall tabu ist für unsere Anwendung die Anschlussbuchse auf dem arduino-Board, die im folgenden Bild rot durchgestrichen ist. Nicht benutzen !!!

Versorgung arduino

Bevor ich jetzt auf die Spezialitäten des RAMPS 1.4 eingehe, möchte ich noch auf das englischsprachige Wiki verweisen. Hier wird auch alles sehr gut erklärt. Schaltpläne, Bestückungspläne und Hintergrundwissen sind dortzu finden.

Der zentrale Zweck des RAMPS-Shields ist es, eine Verbindung zwischen der Prozessorlogik des arduino und der Hardware, wie zum Beipiel Schrittmotoren, Heizungen und Sensoren, herzustellen. Der Begriff Shield hat sich in diesem Zusammenhang eingebürgert, weil die Funktionsplatine wie ein Schutzschild auf das arduino-Board aufgesteckt wird.

Auf dem RAMPS werden nun zunächst die Jumper für unsere Schrittmotoren gesetzt. Die Steckplätze sind im folgenden Bild grün umrandet dargestellt.

ramps Jumper

Es gibt Steckplätze für 5 Schrittmotortreiber und deshalb muss man auch fünf mal die Schrittweite einstellen. Die Steckplätze der Jumper werden von link nach rechts jeweils mit MS1, MS2 und MS3 bezeichnet. Gemäß folgender Tabelle wird für A4988-Treiber die Schrittweite (Microstepping) eingestellt:

MS1 MS2 MS3 Schrittweite
0 0 0 1 -> Vollschritt
x 0 0 1/2 -> Halbschritt
0 x 0 1/4 -> Viertelschritt
x x 0 1/8 -> Achtelschritt
x x x 1/16 -> Sechzehntelschritt

Beim höherwertigen DRV8825-Treiber von Pololu sind noch mehr Möglichkeiten gegeben:

MS1 MS2 MS3 Schrittweite
0 0 0 1 -> Vollschritt
x 0 0 1/2 -> Halbschritt
0 x 0 1/4 -> Viertelschritt
x x 0 1/8 -> Achtelschritt
0 0 x 1/16 -> Sechzehntelschritt
x 0 x 1/32 -> Zweiunddressigstelschritt
0 x x 1/32 -> Zweiunddressigstelschritt
x x x 1/32 -> Zweiunddressigstelschritt

Da nahezu alle Konfigurationen im 3D-Druckerbereich von 1/16-Mikrostepping ausgehen, rate ich dazu, dies auch beim Aufbau einzustellen. Das heißt:

Beim A4988 werden alle Jumper gesteckt.

Jumper A4988

Beim DRV8825 wird nur der rechte Jumper gesteckt. Mitte und Links bleiben frei.

Jumper DRV8825

Projekt: Drahtführung für Wickelautomat (Teil 9)

Zum vorläufigen Ende dieses Projektes will ich noch ein paar Bilder der fertigen „Maschine“ zeigen.

Drahtführung Zwischenplatine am Flawinder

Die Zwischenplatine habe ich genau gegenüber der Filawinderplatine montiert. Dafür muss natürlich die vorhandene Befestigung geändert werden.

Drahtführung Zwischenplatine verkabelt

Nahaufnahme der Verdrahtung. Ich empfehle sowohl die Leitungen als auch die Platine zu beschriften. Verwechslungen werden hier kaum verziehen.

Drahtführung seitlich

Filawinder mit Drahführung komplett von oben

gewickeltes Filament um 7Uhr

So sah die Wicklung morgens um 7Uhr aus. Gegen 22Uhr am Abend hatte ich angefangen.

gewickeltes Filament um 20Uhr

So sieht es am gleichen Tag um 20Uhr aus. Die Verteilung ist schon recht gleichmäßig, aber die Wicklung ist noch nicht straff genug. Der PTFE-Kanal hat für diesen Aufbau anscheinen nicht genug Reibung. Da muss ich mir noch etwas einfallen lassen.

Filawinder mit Drahführung komplett aus Zuführungsrichtung

Projekt: Drahtführung für Wickelautomat (Teil 8)

Hier nun der Schaltplan der kleinen Zwischenplatine mit dem Treiberbaustein von Pololu. Es ist völlig egal, ob ein A4988 oder ein DRV8825 verwendet wird. Die Beiden sind in Bezug auf diese Schaltung pinkompatibel.

Die Anschlüsse auf der linken Seite verweisen auf die entsprechenden Anschlüsse auf der Filawinderplatine.

Zwischenplatine Drahtführung

Zur besseren Orientierung hierzu noch eine Abbildung der Filawinderplatine.

Platine Oberseite gedreht

Beim Anschließen des Steppermotor ist natürlich die Referenzspannung auf dem Treiber richtig einzustellen. Das habe ich an anderer Stelle im Blog beschrieben.

Weil es hier passt, nochmal der Hinweis, wie die Endstopps (schließende Mikroschalter) angeschlossen werden:

Endstop li 1    an H1  „Guide Max +“ D8
Endstop li 2    an H1  „Guide Max -“ GND
Endstop re 1    an H1  „Guide Min +“ D3
Endstop re 2    an H1  „Guide Min -“ GND

Selbstverständlich werden die beiden Taster für die Servo-Endpositionierung nicht mehr angeschlossen. Eine manuelle Positionierung gibt es hier nicht. Wohl aber kann der Nutzer in der Firmware einstellen, ob die Anfangsposition der Führung auf der linken oder rechten Seite der Spule liegen soll. Zum Start des Gerätes bewegt sich dann die Führung dorthin und wartet auf die erste Spulenumdrehung.

Übrigens bin ich bei meiner Suche nach einen Programm zur Erstellung von elektronischen Schaltplänen auf TinyCad aufmerksam geworden. Mal abgesehen vom Bild des Treiberbausteins ist der Rest des obrigen Bildes damit erstellt. Scheint nicht schlecht zu sein und ist vor allem immer kostenlos.

… und zum Abschluss der aktuelle Stand der Firmware:

FilaWinder_t_v1

Die Firmware basiert auf der originalen Firmware für den Filawinder. Die Hinweise sind im Programm auch deutlich sichtbar. Zudem sind alle weiteren Anteile aus der originalen Firmware notwendig um ein funktionsfähiges System zu bekommen. Diese Anteile lassen sich über die Filastruder-Seite im Netz finden.

Besten Dank auch an den Programmierer der Filawinder Firmware Ian Johnson, der mir erlaubt hat auf diese Firmware aufzubauen.

Ich kann leider erst gegen Mitte Dezember weiter auf dieses Projekt eingehen. Dann werde ich die Firmware im einzelnen besprechen. Ich habe mich aber bemüht möglichst gut zu kommentieren, sodaß ein Nachbau jetzt möglich sein sollte.

Projekt: Drahtführung für Wickelautomat (Teil 7)

Es ist etwas Zeit vergangen und ich konnte leider nicht so schnell weitermachen, wie beabsichtigt. Aber: Die Drahtführung funktioniert mittlerweile. Ich will jetzt hier nach und nach aufzeichnen, wie der Aufbau aussieht.

Als kleiner Appetitanreger ist hier die Zwischenplatine mit dem Pololu-Treiberbaustein zu sehen. Die Platine wird mit der Hauptplatine des Filawinders mit 5 Kontakten verbunden:

RAW (12V)     an H1  „FAN+“
VCC (5V)    an H6  „5V“
GND         an H1  „FAN-“

DIR        an H1  „Servo S“ D06
STEP        an H8  „D10“

Zudem müssen natürlich die Endpositionen der Drahtführung überwacht werden:
Endstop li 1    an H1  „Guide Max +“ D8
Endstop li 2    an H1  „Guide Max -“ GND
Endstop re 1    an H1  „Guide Min +“ D3
Endstop re 2    an H1  „Guide Min -“ GND

Ich habe mich nun doch noch entschieden die beiden Endstops einzeln abzufragen und nicht parallel zu schalten. Eventuell läßt sich da ja noch etwas realisieren.

Zwischenplatine Drahtführung Vorderseite Zwischenplatine Drahtführung RückseiteZwischenplatine Drahtführung mit TreiberWie man hier leicht sieht, ist das wirklich nichts Kompliziertes.

Die Schaltung liefere ich noch nach. Ich muss erst mal ein Tool finden, mit dem ich das ordentlich zeichnen kann.

Projekt: Drahtführung für Wickelautomat (Teil 6)

Der nächste Button hängt an Pin 8 des NANO. Er simuliert den Endanschlag an der linken und rechten Seite der Spulenbreite. Hier muss aus aktueller Sicht auch nicht zwischen links und rechts unterschieden werden, weil einfach nur ein sofortiger Stop und ein Wechsel der Bewegungsrichtung notwendig ist. Die beiden Endschalter sind also später parallel zu schalten. Zur Simulation reicht jetzt einer.

Der Button an Pin 9 setzt den Motor wie schon vorher in Gang. Der Button an Pin 8 leitet einen sofortigen Stop ein und ändert die Drehrichtung. Damit man das sieht muss die Bewegung aber mit dem „Bewegungs“-Button eingeleitet werden. Das Programm dazu:

// step and 2 buttons
// -*- mode: C++ -*-
//
// Ein Button um den Motor zu bewegen, zweiter Button um die Drehrichung zu ändern
//
// Thomas Sturm mit diversen Quellen

#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper(AccelStepper::DRIVER, 2, 5); // pin 2 = step, pin 5 = direction

// The button definition
const int buttonTurn = 9;     // the number of the buttonTurn pin, btn to Vcc, pin via resistor to ground
const int buttonEnd = 8;     // the number of the buttonEnd pin, btn to Vcc, pin via resistor to ground

// variables will change:
int btnTurnState = 0;         // variable for reading the pushbutton status
int btnEndState = 0;         // variable for reading the pushbutton status
int weg = 200;                // variable for Länge der Bewegung

void setup()
{
  // Anpassungen an Stepper
  stepper.setMaxSpeed(20);   // max steps per second
  stepper.setAcceleration(10);  // Beschleunigung in Steps per second per second

  // Die Pins an denen die Buttons hängen als Eingang definieren
  pinMode(buttonTurn, INPUT);     
  pinMode(buttonEnd, INPUT);     

}

void loop()
{
  // Auslesen der Button-Zustände
  btnTurnState = digitalRead(buttonTurn);
  btnEndState = digitalRead(buttonEnd);
 
  // beide Buttons auswerten

  if (btnTurnState == HIGH) {     
    stepper.move(weg);
  }

  if (btnEndState == HIGH) {
    weg = – weg;    // Drehrichtung ändern
    stepper.stop();  // sofortigen Stop einleiten, siehe AccelStepper Classes
  }

stepper.run();   // run immer ausführen um Bewegung zu vollenden, siehe AccelStepper Classes
}

Beim Ablauf des Programms gibt es jetzt aber schon ein Problem. Beim Drücken des Endstop-Buttons (Pin 8) wird zwar immer ein Stop ausgeführt. Leider scheint sich die Drehrichtung nicht immer zu ändern. Ich würde mal schätzen, dass entweder der Button prellt, oder aber die loop-Schleife während eines Buttondrucks mehrfach durchläuft. Das habe ich abgesichert. Dann stellte sich aber heraus, dass das natürlich auch für den „Bewegungs“-Button gilt, was vorher nicht auffiel. Ich habe eine neue Variable int lock (in die Variablen-Deklarationen aufnehmen !!) eingeführt und die loop folgendermaßen geändert:

void loop()
{
  // Auslesen der Button-Zustände
  btnTurnState = digitalRead(buttonTurn);
  btnEndState = digitalRead(buttonEnd);
 
  // beide Buttons auswerten

  if (btnTurnState == HIGH && stepper.distanceToGo() == 0) {     
    stepper.move(weg);
    lock–;
  }

  if (btnEndState == HIGH && lock < 1) {
    weg = – weg;    // Drehrichtung ändern
    lock = 5;        // mindestens 5 Bewegungstrigger muss gewartet werden, bis wieder ein Richtungtrigger möglich ist
    stepper.stop();  // sofortigen Stop einleiten, siehe AccelStepper Classes
  }

stepper.run();   // run immer ausführen um Bewegung zu vollenden, siehe AccelStepper Classes
}

Es steht ja schon im Kommentar: Bevor ein Stop und eine Richtungsänderung erneut möglich ist, müssen erst 5 Bewegungstrigger kommen. Nur dieser Anteil allein brachte aber nicht die notwendige Wirkung, weil eben auch der andere Button nicht kurz genug gedrückt werden kann. Also musste auch hier eine Sicherheit gegen Mehrfachbetätigung eingeführt werden. Über stepper.distanceToGo() == 0 lässt sich das einfach bewerkstelligen. Erst wenn eine Bewegung beendet ist, kann eine neue erfolgen.

Projekt: Drahtführung für Wickelautomat (Teil 5)

Ein relativ einfacher nächster Schritt:

An Pin 9 des NANO wird ein Button gegen Vcc angeschlossen.  Das ist wieder der 5V-Anschluss am NANO, den ich schon zum Treiber „FAULT“ verbunden hatte. Gleichzeitig liegt am NANO-Pin 9 über einen 10k-Widerstand GND.
Die ganzen Grundlagen zu AVR, – nichts anderes ist der Arduino -, kann man sich auf Mikrocontroller.net erarbeiten.
Das Ziel dieser Aktion ist, dass der Motor losläuft, wenn der Button gedrückt wird.  Bei mir lief das problemlos. Der Motor macht eine volle Umdrehung, da 200 relative Schritte vorgegeben sind. Drückt man nochmal, wird wieder in die gleiche Richtung gedreht.

Hier das entsprechende Programm:

// step and button
// -*- mode: C++ -*-
//
// Make a single stepper turn on button press
//
// Thomas Sturm mit diversen Quellen

#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper(AccelStepper::DRIVER, 2, 5); // pin 2 = step, pin 5 = direction

// The button definition
const int buttonPin = 9;     // the number of the pushbutton pin, btn to Vcc, pin via resistor to ground
// only for test purpose
const int ledPin =  13;      // the number of the LED pin onboard

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup()
{
  // Change these to suit your stepper if you want
  stepper.setMaxSpeed(10);   // max 10 steps per second
  stepper.setAcceleration(5);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     

}

void loop()
{
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
    stepper.move(200);
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
stepper.run();   // run immer ausführen um Bewegung zu vollenden, siehe AccelStepper Classes
}

 

Der jetzt eingebaute Button ist praktisch der Umdrehungssensor an der Drahtspule. Das Signal wird am Filawinder durch einen Magneten erzeugt, der an einem Hall-Sensor vorbeiläuft. Pro Umlauf der Spule muss sich später die Drahtführung um einen Drahtdurchmesser weiterbewegen.
Ein weiterer Button wird jetzt eingefügt. Er simuliert die Endpositionen, – die linke und rechte Seite der Spule.

Meine Testkonstruktion ist auch schon fertig. Sämtliche Halter, der Reiter und die Verbindungsmuffe sind gedruckte Teile. Die Files werde ich später zur Verfügung stellen.

Drahtführung Testaufbau Antrieb und Verbindung Drahtführung Testaufbau linker Halter Drahtführung Testaufbau Reiter Drahtführung Testaufbau Gesamtansicht