Forum: Projekte & Code G-Code-Interpreter und µStep-Controller mit ATmega644


von Steffen H. (avrsteffen)



Lesenswert?

Hallo

Ich stell jetzt mal die ganze Sache in die Codesammlung. Orginal Beitrag 
ist hier zu finden.
Beitrag "3-Achs Schrittmotorsteuerung mit Trinamic TMC260 und AVR"

Worum es geht?

Ja,ja ich weiß. Schon wieder ne Schrittmotorsteuerung. Aber, was haltet
ihr von einer 3-Achs Schrittmotorsteuerung auf Basis der neuen TMC260 
Treiber von Trinamic? Als Positions- und Schrittcontroller dient hier 
ein ATmega644.

Diese Treiber können via SPI parametrisiert werden und können dann per 
Takt- /Richtungssignale gesteuert werden.

Vorteile:
- die Treiber übernehmen vollständig den Chopperbetrieb der Spulen
- Fast/Slow/Mixed Decay
- Stall Guard Technologie für Referenzfahrt/Schrittfehler Erkennung
- integrierte Mosfets / kein Kühlkörper erforderlich (cool Step)

Nachteile
- nur max 2A Phasenstrom möglich

Auf dem AVR läuft seit ein paar Tagen ein angepasster
G-Code-Interpreter Namens "grbl". Grbl ist von Simen Svale Skogsrud
entwickelt worden und steht unter der GNU General Public License
[http://www.gnu.org/licenses/quick-guide-gplv3.html].
Quelle:
http://dank.bengler.no/-/page/show/5470_grbl

Was schon alles implentiert ist:
- G-Code Interpreter für einige RS274/ngc Standard-Befehle
- einen Bewegungs-Abblauf-Planer der bis zu 18 Sets im Voraus plant
- Beschleuniguns-/Bremsrampen Management
- mit einer jitterfreien bis zu 30kHz schnellen Step/Dir Rate

G-Code-Befehle:
G0                Geradeninterpolation im Eilgang
G1                Geradeninterpolation mit Vorschub [F xxxx]
G2                Kreisinterpolation Bogen links (im Urzeigersinn)
G3                Kreisinterpolation Bogen rechts (gegen Urzeigersinn)
G4                Verweihlzeit mit Parameter P xxxx
G17               Ebnenauswahl [X | Y | Z]
G18               Ebnenauswahl [X | Z | Y]
G19               Ebnenauswahl [Y | Z | X]
G20               Maßangaben in inch
G21               Maßangaben in mm
G28/G30           Referenzfahrt zu den Limits, erst in Z, dann in X/Y
G53               absoluten Nullpunkt setzen
G80               Bohrzyklus aufheben/Bewegung anhalten
G90               absolute Maßangabe
G91               inkrementale Maßangabe
G93               Vorschub in 1/min
G94               Vorschub in mm/min oder inch/min

M0/M1/M2/M30/M60  Programm Stop/Pause/Ende
M3                Spindel Start / im Urzeigersinn
M4                Spindel Start / gegen Urzeigersinn
M5                Spindel Stop

T xxxx            Werkzeigauswahl (wird zwar erkannt, bewirkt aber
nichts)
F xxxx            Vorschub
P xxxx            Pausenzeit
S xxxx            Spindeldrehzahl (wird zwar erkannt, bewirkt aber
nichts)

I xxxx.xxx        bei G2/G3 Bogenzentrum in X
J xxxx.xxx        bei G2/G3 Bogenzentrum in Y
K xxxx.xxx        bei G2/G3 Bogenzentrum in Z
R xxxx.xxx        bei G2/G3 Radius
X xxxx.xxx        Koordinate X-Axis
Y xxxx.xxx        Koordinate Y-Axis
Z xxxx.xxx        Koordinate Z-Axis

Die serielle Schnittstelle habe ich mit der Hardware (CTS) Flow-Control
ausgestattet, damit man den G-Code mit einem Terminalprogramm bequem an
das Board senden kann.

Hier gibt es auch ein kleines Video (leider schlechte Quali)
http://www.youtube.com/watch?v=qvTnohhg8GQ&feature=plcp
http://www.youtube.com/watch?v=kbjn9jjbg2w&feature=plcp
http://www.youtube.com/watch?v=UPoO3jW2jNM&feature=plcp

TODO:
Motorparameter bei der Initialisierung aus dem EEPROM über SPI an die
Treiber senden, Positionsausgabe über Schnittstelle (RS232 oder SPI),
Spindeldrehzahl mit PWM



Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

...wie bei mir, den meisten ist so was zu schwer...


Mit Gruß
Pieter

PS: was ist mit G40/G41/G42?

von Steffen H. (avrsteffen)


Lesenswert?

Pieter schrieb:
> moin Steffen,
>
> ...wie bei mir, den meisten ist so was zu schwer...
Wie meinst du das?
>
> Mit Gruß
> Pieter
>
> PS: was ist mit G40/G41/G42?
Die Werkzeugkorrektur muss auch noch implementiert werden. Oder man 
macht sie schon vorher im CAD/CAM Programm.

Es gibt von "gbrl" auch schon eine neuere Firmware [v0.8], aber da ist 
auch noch keine Werkzeugkorrektur enthalten.

Probleme macht mir momentan eher die Parametrierung der Trinamic 
Treiber. Diese wollte ich gern auch von außen per UART parametrieren 
können. Also die jeweiligen Registerwerte der Treiber im EEPROM ablegen 
und über Befehle über UART verändern können.

Kenn mich mit [C] leider nicht so gut aus.

Gruß Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Es gibt wieder Neues.

Ich habe in der Version _V_0_7_e die Parametrierung der Trinamic-Treiber 
hinzugefügt.

Controller Parameter anzeigen über '$'
TMC Driver Parameter anzeigen über '#'

TMC Driver Parameter einstellen über #<Parameter>=<Value>, der Value 
muss hierbei im Hexa-Format eingegeben werden.
Beispiel: Register "CHOPCONF" für Motor Y ändern
#5=0801AB gefolgt von einem <CR> oder <LF>


Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Ups.. hab ich doch glatt das File vergessen :-)

von Joachim .. (joachim_01)


Lesenswert?

Cooles Projekt, gefällt mir. Hab gerade gestern abend den 
Reichelt-Katalog durchstöbert und überlegt was es mit den Trinamic-ICs 
so auf sich hat.

Ich wollte mich schon immer mal mit den G-Befehlen beschäftigen - und 
auch vielleicht damit was schnitzen. Hab aber nie den Hintern hoch 
bekommen -> astreine Motivationsmunition.

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Das freut mich.

Ich habe auch noch 2 professionell gefertigte Leiterplatten übrig. Die 
Trinamic-Treiber sind bei Schuricht / Distrelec günstig zu haben.
https://www.distrelec.de/ishopWebFront/search/luceneSearch.do;jsessionid=CDB5FE9D054CD55FCBCF4B5C03ACF319.daechj011u?dispatch=find&catalog=01&keywordPhrase=TMC260

Bei Intresse bitte mit Preisvorstellung über PN an mich.

Gruß Steffen

von Stephan H. (stephan-)


Lesenswert?

wirklich schicke Paltinen. Gut gemacht.
Aber wie gehts dem GCode?
die "einfachen" G41,G41 ??
Der Pieter hat das schon durch. Kein Zuckerschlecken.

Gruß

Stephan

von Pieter (Gast)


Lesenswert?

moin moin,

>>Der Pieter hat das schon durch...

siehe da:

http://forum.zerspanungsbude.net/viewtopic.php?f=50&t=5582

Mit Gruß
Pieter

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Pieter,

werd ich gleich einmal studieren. Mal sehen, wie du an die ganze Sache 
rangegangen bist. Wieviel Ampere kanst du mit den Treibern (THB6064AH) 
rausholen?

Mit meiner angepassten Firmware werd ich jetzt erst mal wegen Urlaub 
nicht weiter kommen.

von Steffen H. (avrsteffen)


Lesenswert?

Hallo,

Eine LP ist weg, somit gibt es jetzt nur noch eine Leiterplatte.

Gruß Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Leider die FALSCHE File Version gewesen.

DANKE an Dirk, der es bemerkt hatte!


Nun aber die RICHTIGE File Version V0.7e im Anhang.
Übrigens ist immer noch eine Prototypen LP zu haben.

Schönen Sonntag
Steffen

von Dirk R. (nixtodo)


Lesenswert?

Ja, genau ich habe die eine Platine und das Fehlen der TMC Parameter 
Änderung bemerkt :-))

Der Aufbau war ohne Probleme möglich (wenn man SMD Löten kann).
Die Null Ohm Widerstände R8, R9, R17, R18, R26 und R27 dürfen nicht 
bestückt werden. (Danke Steffen für den Hinweis.)

Die Teile habe ich zum größten Teil bei Reichelt gekauft, nur den 
Spannungsregler (IC10), die 0,15 Ohm Shunts (R1, R2, R10, R11, R19, R20) 
und die TMC260 habe ich bei Schuricht / Distrelec gekauft, da Reichelt 
sie nicht hat. Eine vollständige Bestellung bei Distrelec wäre teurer 
gewesen als die extra Versandkosten.

Für meine Schrittmotoren musste ich die Parameter der TMC's ändern.
Es gibt auf der Trinamic Homepage ein kleines Programm mit dem man die 
HEX Werte der einzelnen Register bestimmen bzw entschlüsseln kann. So 
habe ich die von Steffens Software die Werte dort eingegeben und 
anschließend den Wert für den Stepper Strom erhöht, die neuen Werte dem 
Programm entnommen und in die Software übernommen.

Ich will später die Platine über ein Optokopplerboard an einem LinuxCNC 
PC betreiben. Dafür bekommt der ATmega eine neue Firmware die "nur noch" 
die TMC's steuert und über den PC angesprochen werden kann.
Der von mir vorgesehene PC zickt derzeit allerdings noch rum :-/
Auch ist das Optokopplerboard noch nicht fertig.

Das ganze soll die schrottige Steuerung meiner Elektor "Profiler" CNC 
Fräse ersetzen. Mal sehen B-)

von Michael Z. (buddhafragt)


Lesenswert?

Hallo Steffen,
super Arbeit!
Ich habe mir vor einigen Monaten mal alle frei verfügbaren G-code 
Interpreter angesehen die ich gefunden habe und fand das GRBL der beste 
ist.
Habe ihn dann mal auf Arduino portiert und mit einem Grafik Display 
(Positionsanzeige XYZ und Koonfigurierung) und Joystick (0-Punkt 
Verschiebung) ausgestattet, leider ist der ATMEGA328 dafür eigentlich 
etwas zu lahm und hat nicht genügend Ports.

Wolle dann auf einen ATMEGA32U4 (auch wegen des USB supports) portieren, 
da bin ich dann aber kläglich gescheitert.... :-(

Hat sich jemand schon mal daran versucht?


Gruß
michael

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Michael,

Michael Z. schrieb:
> Habe ihn dann mal auf Arduino portiert und mit einem Grafik Display
> (Positionsanzeige XYZ und Koonfigurierung) und Joystick (0-Punkt
> Verschiebung) ausgestattet, leider ist der ATMEGA328 dafür eigentlich
> etwas zu lahm und hat nicht genügend Ports.
Das würde mich näher interessieren. Wie hast du da die Position an ein 
Grafikdisplay gesendet? Und wie oft war da die aktualisierung der 
Display-Daten?
Selbiges hab ich nämlich auch vor. Will den SPI dafür verwenden. 
Momentan arbeite ich an einer Überarbeitung meiner Leiterplatte 
"STEP_DRiVe 2.0"


Gruß Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Hallo

Es ist geschafft. Das STEP_DRiVe Board ist überarbeitet.

_Was hat sich geändert:_

- die serielle Speichererweiterung (FRAM) ist weggefallen
- die TTL232 Schnittstelle hat das Busy-Signal dazubekommen
- das Layout des Schaltreglers wurde optimiert
- das Layout der TMC260 wurde laut Datasheet optimiert (Kühlflächen an 
den
  Treiberpins), überflüssige Widerstände sind weggefallen
- das externe Interface hat nur noch 3 GPIO's, dafür sind jetzt 4 /CS
  Signalleitungen für den SPI vorhanden (vorgesehen für Positionsanzeige
  von X,Y,Z über SPI und einen Joystick zur Nullpunktverschiebung bzw.
  Tasten für bestimmte G-Befehle

*Mich würde immernoch Michael Z.'s abgeänderter Code interessieren.*

Gruß Steffen

von Michael Z. (buddhafragt)


Angehängte Dateien:

Lesenswert?

Steffen H. schrieb:
> Das würde mich näher interessieren. Wie hast du da die Position an ein
> Grafikdisplay gesendet? Und wie oft war da die aktualisierung der
> Display-Daten?
> Selbiges hab ich nämlich auch vor. Will den SPI dafür verwenden.

Hallo Steffen,

habe gerade mal mein Tesatboard vorgekramt,
anbei ein Foto... nicht so schön, aber man erkennt den Arduino Uno, die 
Steppercontroller von Nanotec (einer fehlt, da ich den für was anderes 
brauchte), ganz rechts unten den Joystick und daneben das Display.
Ist ein Farb LCD 240x320 mit Touchscreen:
http://www.watterott.com/de/MI0283QT-2-Adapter
Das Ding lässt sich recht einfach in C-Code einbinden und wird direkt 
vom Controller gesteuert (7 Ports incl. Touch).
Den Displaycode habe ich mal ganz simpel im Hauptprogramm laufen, also 
Aktualisierung sehr schnell.
Im Moment zeigt das Display nur ONLINE/OFFLINE, 0-Punkt und XYZ 
Momentanwerte an.

Gruß
Michael

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Michael

Michael Z. schrieb:
> Habe ihn dann mal auf Arduino portiert und mit einem Grafik Display
> (Positionsanzeige XYZ und Koonfigurierung) und Joystick (0-Punkt
> Verschiebung) ausgestattet, leider ist der ATMEGA328 dafür eigentlich
> etwas zu lahm und hat nicht genügend Ports.

Michael Z. schrieb:
> Den Displaycode habe ich mal ganz simpel im Hauptprogramm laufen, also
> Aktualisierung sehr schnell.

Ich denke mir mal die Aktualisierung des Displays wird hier zu häufig 
stattfinden und nimmt dem Controller zu viel Recourcen weg. Deswegen 
wird er etwas lahm.

Was mich mehr interessiert ist, welche Daten du zur Positionsanzeige per 
SPI auf das Display schickst. Ich hab die Variablen im Programmcode noch 
nicht gefunden.

Und wie hast du den Joystick eingebunden? Vieleicht hast du da mal ein 
wenig Programmcode für mich?

Gruß Steffen

von Steffen H. (avrsteffen)


Lesenswert?

So, hab mich gerade mal wieder mit der Firmware auseinander gestetzt.

Michael Z. schrieb:
> Den Displaycode habe ich mal ganz simpel im Hauptprogramm laufen, also
> Aktualisierung sehr schnell.
Wenn du die main.c als Hauptprogramm meinst, kann das garnicht sein. 
Denn dieses wird nur einmal durchlaufen. Die meiste Zeit ist der µC 
damit beschäftigt auf eintreffende Zeichen über die serielle 
Schnittstelle zu warten und auf die weitere Abarbeitung eines 
Planner-Blockes.

Deswegen würd ich gerne mal deinen eingebundenen C-Code sehen. Ich finde 
hier keinen direkten Positionsangaben in der FW. Also welche hast du 
genutzt Michael?

Gruß Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Hallo

Es gibt wieder neues:
Hab mir jetzt eine Positionsanzeige gebaut. Diese arbeitet als SPI-Slave 
mit einem ATtiny2313, 3x MAX7219 und 3x8 7-Segment Anzeigen. Einen 
Schaltplan und eine LP habe ich noch nicht erstellt, da ich alles 
erstmal auf Lochraster aufgebaut habe.

Um den Motion Controller etwas zu entlasten werden über den SPI die 
Daten nur im ala 3x4 Bytes (long) im Floatformat gesendet. Also 12 Bytes 
insgesammt. Der Tiny2313 empfängt das SPI Frame mittels USI Interrupt. 
Wandelt das Floatformat in einen 40bit integer um (ca.170µs) und dann 
den 40Bit Integer in BCD für die Anzeigetreiber (MAX7219). Über eine 
zweite Software SPI Schnittstelle werden diese Daten dann an die 
Anzeigentreiber wieder ausgegeben.

ein kurzes Video zur Demonstration:
http://www.youtube.com/watch?v=sQBwdItv4UM&feature=youtu.be


Schaltplan und Layout zur Positionsanzeige folgen in kürze.

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin,

>>3x4 Bytes (long) im Floatformat

wie, was, warum dieser Aufwand?
Stecke die Schrittinfo in 1 Byte und mach auf dem Tiny2313 eine einfache 
BCD-Addition.

Mit Gruß
Pieter

von Steffen H. (Gast)


Lesenswert?

Moin Pieter

Pieter schrieb:
>>>3x4 Bytes (long) im Floatformat
>
> wie, was, warum dieser Aufwand?

Da diese Information schon als sys.position[Achse] vorliegt und im 
Controller auch darüber alle Schritte berechnet werden. Ich musste mir 
nun nur diese Information greifen und über den SPI ausgeben. Die 
Positionsangabe (int32) im Controller selbst wird hierbei in Steps 
angegeben. Diese wird vor der Ausgabe an den SPI noch durch die Steps/mm 
geteilt und der system cordinate offset dazuaddiert. Schon erhalte ich 
die Angabe in mm oder inch. Jenachdem was eingestellt wurde (G20/G21).

Außerdem weiß der ATtiny2313 der Positionsanzeige ja nicht wieviel 
Steps/mm eingestellt wurden oder halt ob mm oder inch.

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

>>durch die Steps/mm geteilt
das ist doch eine Konstante, besser dann mit dem Kehrwert 
multiplizieren, geht schneller.

>>40bit integer um (ca.170µs)
Deine Anzeige kann also maximal 1960 Werte/s umrechnen.
Würde mir nicht reichen bei 3600mm/min (100Step/mm) und im Raum (mit 
x,y,z) fahren. Da komme ich auf 18000 Werte/s.

Mit Gruß
Pieter

von Steffen H. (Gast)


Lesenswert?

Hey Pieter

Pieter schrieb:
>>>durch die Steps/mm geteilt
> das ist doch eine Konstante, besser dann mit dem Kehrwert
> multiplizieren, geht schneller.
Das ist leider keine Konstante. Denn diesen Parameter (Steps/mm) kann 
man für jede Achse zur Laufzeit über das Terminal verändern.

Pieter schrieb:
>>>40bit integer um (ca.170µs)
> Deine Anzeige kann also maximal 1960 Werte/s umrechnen.
Sei mir bitte nicht böse Pieter, aber was will ich mit 1960 Werte/s. Das 
ist eine Anzeige. Und dein menschliches Auge ist mit Sicherheit nicht so 
schnell, dass es dies noch erfassen kann. Das heißt doch, dass man die 
Anzeige nicht mehr als 10-20 mal in der sekunde aktualisieren muss ;)

Oder versteh ich dich gerade nicht?

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

>>zur Laufzeit über das Terminal verändern.

dann mußt Du aber auch die Microsteps der Treiber ändern...und wie ist 
das mit der Berechnung? Machst Du die in mm/inch und rechnest erst zur 
Ausgabe um? Aber auch dann wäre der Kehrwert nur bei Änderung zu 
berechnen, zeitlich also günstiger.
Den Sinn dieser Möglichkeit verstehe ich allerdings nicht.

Zur Anzeige: Hast Du den einen Timer laufen der so aller ca. 0,1sec. die 
Anzeige aktualisiert?

Mit Gruß
Pieter

von Steffen H. (Gast)


Lesenswert?

Hallo Pieter

Pieter schrieb:
> dann mußt Du aber auch die Microsteps der Treiber ändern...
Nicht ganz. Der Motion Controller ist auch von außen via Terminal 
parametrierbar. Mal angenommen du hast einen 1.8° Stepper im 8-fach 
Microstepping und eine Spindel mit 4mm/U. Daraus ergeben sich ja 
400Steps/mm. Jetzt willst du aber 16-fach Microstepping haben. Dann 
ergeben sich ja 800Steps/min. Dann musst du das jetzt nicht immer neu 
kompilieren.


Pieter schrieb:
> Machst Du die in mm/inch und rechnest erst zur
> Ausgabe um?
Es wird die Angabe aus dem G-Code (mm/inch) je nach Einstellung in Steps 
umgerechnet.


Pieter schrieb:
> Zur Anzeige: Hast Du den einen Timer laufen der so aller ca. 0,1sec. die
> Anzeige aktualisiert?
Ja. hab ich. Der Motion Controller sendet aller 100ms seine 
Positionswerte via SPI. Das triggert dann auch die Refresh-Rate der 
Anzeige.

Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

4mm/400Steps = 10µm/Step
4mm/800Steps =  5µm/Step
Bei meinen Motortreibern (THB6064) kann ich die Mircosteps nur per 
Hardware einstellen, von daher ist neukompelieren das geringere Problem.
Wie oft hast Du das schon genutzt?

Bei meiner Steuerung werden beim Einlesen die Werte umgerechnet(mm oder 
inch). Die Steuerung selber rechnet ausschliesslich in Steps und gibt 
das so auch (seriell) aus. Auf dem seriellen (SPI) lauscht die Anzeige 
und errechnet parametrierbar die Position. Da ich es bisher nicht 
gebraucht habe nur in mm. Inch wäre aber auch möglich.
Da die Anzeige schnell genug arbeitet, brauche ich keinen extra Timer 
für den Refresh.

Mit Gruß
Pieter

von Alois N. (alois)


Lesenswert?

Hi Steffen,

kannst du bitte eine bessere Qualität des Schaltplans posten?
Danke im vorraus

von Steffen H. (avrsteffen) (Gast)


Lesenswert?

Hallo Alois,

Alois Neumann schrieb:
> kannst du bitte eine bessere Qualität des Schaltplans posten?
> Danke im vorraus
Schau mal bitte hier:
Beitrag "3-Achs Schrittmotorsteuerung mit Trinamic TMC260 und AVR"
Da hab ich es als pdf-File.

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin moin,

Hi Steffen,

bin grade dabei meine Steuerung "auf den ARM" zu nehmen.
Das ist echt geil. Zeitreserven ohne Ende.
Die sin^2 Rampe mit 32 Werten berechnen "dauert" 31µs.

Die Einarbeitung ist recht einfach, den ARM habe ich ca. 3Wochen und das 
Programm ist fast fertig umgestellt.

Mit Gruß
Pieter

Wer einen ARM programmiert, ist nicht ARM dran.
Aber lieber ARM dran, als ARM ab.

von Steffen H. (avrsteffen)


Lesenswert?

Pieter schrieb:
> bin grade dabei meine Steuerung "auf den ARM" zu nehmen.
> Das ist echt geil. Zeitreserven ohne Ende.
> Die sin^2 Rampe mit 32 Werten berechnen "dauert" 31µs.

Hey super.. Welchen 32-Bitter hast du denn genommen?


Gruß Steffen

von Pieter (Gast)


Lesenswert?

Hi Steffen,

ein Olimex STM32-E407 mit STM32F4.
Auf dem Board ist nicht so viel "artfremdes" Zeug drauf und das hat 4x 
16Bit-Port auf Header und und und...

Mit Gruß
Pieter

von Steffen H. (avrsteffen)


Lesenswert?

Hört sich gut an. Hast du eine Projekt Seite? Würde gern mehr drüber 
erfahren.

Bei mir ist erstmal Stillstand. Will doch andere Treiber verwenden. 
Meine TMC260 können nur max. 40V und 1,4A RMS. Werde sozusagen auf die 
TMC262 mit externen FETs umrüsten um wenigstens die üblichen NEMA23 mit 
2,8A Phasenstrom verwenden zu können. Auf alle Fälle will ich bei 16 
Microsteps (256 interpolliert) bleiben. Damit haben die Motoren eine 
enorme Laufruhe.


Gruß Steffen

von Martin J. (bluematrix) Benutzerseite



Lesenswert?

Hallo,
die Verwendung eines Arm Controllers ist sicher eine gute Idee, so kann 
man noch viele weitere Dinge in die Software integrieren.  Ich selbst 
hab damals 2010 die erste Version von Grbl auf einen Atmega128 portiert. 
In die vorhandene Software habe ich anschließend noch die Ansteuerung 
von einem Display, einer SD Karte und einer direkt Verbindung zu einem 
PC Terminal integriert.( siehe 
http://www.jtronics.de/software/jcnc-cnc-steuerung.html)
Da ich mich seit einem Jahr mehr mit den Xmegas beschäftige hatte ich 
die Idee die neuste Version des Grbl CNC Controllers auf einem Xmega zu 
realisieren.
Die Platine ist fertig und die ersten erfolgreichen Tests habe ich kurz 
nach Weihnachten durchgeführt. Die Entwicklung habe habe ich hier 
ausführlich vorgestellt: 
http://www.jtronics.de/forum/viewtopic.php?rb_v=viewtopic&f=18&t=6#p274

Das Board hat folgende technischen Daten:
- CNC Steuerung mit internem CNC Controller und 4 Schrittmotortreibern
- Ansteuerung per Standard Gcode über den USB Port
- Aufruf von Aufträgen per SD Karte
- 3-Achsen CNC (XYZ)
- Schrittmotortreiber, bis 2.5A, für NEMA23 und einige NEMA34 Motoren
- Micro-stepping bis zu 1/8 Schritt

Momentan arbeiten wir noch an dem neuen Terminal Programm, dabei sollen 
für die Grundfunktionen nur noch die schon vorhandenen Kommandos der 
Grbl Software verwendet werden. Zusätzlich wird natürlich auch wieder 
eine Visualisierung/ Simulation des G Codes eingebaut.
Da für die Grundfunktionen der Kommunikation nur noch die schon 
vorhandenen Befehle verwendet werden, ist es dann möglich, dass das 
Terminal mit jeder Hardware verwendet werden kann.

grüße martin

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Martin,

das sieht ja alles sehr gut aus. Der Xmega kann ja bis zu 32MHz getaktet 
werden. Erhöht sich dadurch auch automatisch die maximale 
Geschwindigkeit der Stepper? Und welche Stepper-Driver werden verwendet?


Übrigens ein sehr schönes Board was ihr da entwickelt habt.


Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

danke.
... ja die maximal mögliche Geschwindigkeit erhöht sich dadurch.
Aber die Geschwindigkeit der Stepper hängt ja meist vom verwendeten 
Motor und der Versorgungsspannung ab, daher ist bei den meisten 
Steuerungen schon viel eher die Geschwindigkeitsgrenze erreicht.
Als Treiber verwende ich die DRV8811 bei bis zu 36V

von Steffen H. (avrsteffen)


Lesenswert?

Martin J. schrieb:
> Motor und der Versorgungsspannung ab, daher ist bei den meisten
> Steuerungen schon viel eher die Geschwindigkeitsgrenze erreicht.
> Als Treiber verwende ich die DRV8811 bei bis zu 36V

Ja, ein anständiger Motor ist auch mit hohen Kosten verbunden. Aber 
dafür taugen die meist auch mehr als. Die Versorgungsspannung für die 
Motoren sollte für eine anständige Endgeschwindigkeit auch möglichst 
hoch sein. Damit steigt die Performance. Allerdings schaffen dies die 
meisten Motertreiber nicht dies auch mit anständigem Strom für die 
Spulen bereit zu stellen.

Den DRV8811 habe ich mir auch schonmal angesehen. Bin dann allerdings 
beim Preis zurück geschreckt.

- Wieviel Ampere schaffen die denn?
- Und wie weit seid Ihr denn schon mit der vollständigen Implementierung
  im XMega?


Gruß Steffen


Edit: Soll der Treiber wirklich 2.5A schaffen? Dann wird der bestimmt 
wahnsinnig heiß, oder? Die meisten Motoren haben allerdings 2.8A 
Spulenstrom.

von Martin J. (bluematrix) Benutzerseite


Angehängte Dateien:

Lesenswert?

klar schaffen die 2,5A, hab es aber bisher noch nicht nachgemessen.
Jedoch hab ich auch bei meinen Großen Motoren noch nie den vorgesehenen 
Lüfter benötigt.
Die haben einen relativ kleinen Innenwiderstand und nen relativ modernen 
Design, daher klappt das auch mit der Temperatur.

Die Xmega Version ist fast fertig. Momentan haben wir erst mal einen 
kleinen G Code Viewer programmiert damit man sich den Code Visualisieren 
lassen kann.
http://www.jtronics.de/forum/viewtopic.php?f=17&t=281

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

So, es ist vollbracht

Habe das Layout für das NEMA23 Stepper Shield auf Basis eines TMC262 
fertig. Alles noch nicht getestet, aber das werde ich machen, sobald ich 
die bei Jacob bestellten Platinen bekommen habe und bestückt sind.

Kurzdaten

µController:      ATMega48 [MLF]
StepController:   Trinamic TMC262 [QFN] mit externen Mosfets
USB-Controller:   CP2101 oder CP2102
Mosfet's:         4x FDD8424 [40V/4.2A]

StepResolution:   FULLSTEP/2/4/8/16/32/64/128/256
CoilCurrent:      max. 2.8A RMS
Supply:           12 - 36V


Der ATMega48 überwacht hierbei nur den TMC262 und 2 Endschalter bzw. 
dient zur Konfigurierung des TMC262, um den Schrittmotor Treiber optimal 
an den verwendeten Schrittmotor anzupassen. Die Kommunikation erfolgt 
hierbei über USB. Desweiteren kann die Firmware über USB upgedatet 
werden.

Vom ATMega48 wird die Temperatur des TMC262 überwacht und bei 
überschreiten von 100°C der Treiber abgeschalten oder per LED gewarnt. 
Desweiteren kann ein Ziel- und Haltestrom eingestellt werden.


Mehr dazu wenn die ersten Tests gelaufen sind.


Gruß
Steffen

von Steffen H. (avrsteffen)



Lesenswert?

Die Driver Platinen sind da, Hurra!

Gestern bestückt und heute die Ersten Test gemacht. Es gibt keinen 
Layout Fehler. Es funktioniert erstmal alles. Zum Testen habe ich 
allerdings nur einen Schrittmotor mit einem maximalen Phasenstrom von 
1,6A. Und selbst hier steckt Kraft dahinter.

Der Driver mit dem TMC262 + externen Mosfets verhält sich genau so wie 
die TMC260/261 Driver - ganz smoothly. Halt nur höher belastbar.

Bei derzeitigem Phasenstrom von I-rms = 1,58A und Vm = 24V werden die 
Mosfets nur leicht warm. Der TMC262 schon etwas mehr (ca. 40°C - 45°C). 
Das sind wahrscheinlich die internen Mosfet-Treiber.

Eine Windows-GUI zum konfigurieren hab ich auch schon geschrieben (siehe 
Bild oben). Damit lassen sich über USB fast alle Register des TMC's 
bequem einstellen.

Das Firmwareupdate per USB und Bootloader funktioniert auch einwandfrei. 
Dazu musste ich den ATmega48[MFL] vor dem verlöten mittels eines 
selbsgebauten Programmier Adapter flashen und schon die Fuses 
einstellen.

Der CP2101 und der ATMEL ließen sich trotz QFN/MLF Outline super löten. 
Mit dem TMC262 hatte ich so meine Schwirigkeiten durch das GND-Die. Aber 
mit dem Heißluftfön und jedemenge Flussmittel hat auch dies zum Erfolg 
geführt. Die FDD8424 Mosfets hab ich dann auch gleich mit dem 
Heißluftfön eingelötet.


So, jetzt gehen erstmal die Tests weiter..


Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo Steffen,
das sieht echt gut aus.
Ich bin grad am überlegen, ob es nicht sinnvoller ist, wenn ich bei 
meiner CNC Steuerung die Schrittmotortreiber weg lasse, so dass es 
einfach nur eine reine Steuerung ist und ich dann als Treiber solche 
Endstufen wie die von dir nehmen kann.
Wie sieht deine Schnittstelle für die Treiber aus?

Denkst du dass deine Kondensatoren für den Motorstrom ausreichen?
Bis zu welcher Spannung hast du diese ausgelegt?

Im übrigen gibt es jetzt von dem CNC Viewer schon eine neue Version mit 
einigen neuen Features. 
http://www.jtronics.de/forum/viewtopic.php?rb_v=viewtopic&f=17&t=281#p332
Grüße Martin

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Martin J. schrieb:
> Denkst du dass deine Kondensatoren für den Motorstrom ausreichen?
> Bis zu welcher Spannung hast du diese ausgelegt?
Ja, laut Datasheet sind sogar nur 47µF vorgesehen. Ich habe hier eine 
Spannungsfestigkeit von 63V gewählt. Das sollte für die 40V Mosfets 
ausreichen.
Auszug aus dem Datasheet:
16.3 Power Filtering
The motor supply pins, VSA and VSB, should be decoupled with an 
electrolytic (>47 μF is recommended) capacitor and a ceramic capacitor, 
placed close to the device.

Martin J. schrieb:
> Wie sieht deine Schnittstelle für die Treiber aus?
Dass ich dazu noch gar keine Angabe gemacht habe, wird mir jetzt erst 
durch deine Frage bewusst.

Also die TMC262 Driver 3.5 Boards kommen mit einer STEP/DIR + /EN 
Schnittstelle daher.

Maximaler STEP-Takt: 4 MHz


Martin J. schrieb:
> Ich bin grad am überlegen, ob es nicht sinnvoller ist, wenn ich bei
> meiner CNC Steuerung die Schrittmotortreiber weg lasse, so dass es
> einfach nur eine reine Steuerung ist und ich dann als Treiber solche
> Endstufen wie die von dir nehmen kann.
Ich habe noch 2 PCB's übrig. Also wenn du sie selber mal testen willst.. 
Einen programmierten Atmel (wegen dem Bootloader und den Fuses) kannst 
du auch bekommen.


Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

geht klar, das können wir gern mal testen :-)
ich schreib dir...

von Steffen H. (avrsteffen)


Lesenswert?

Hallo,

Mit den neuen Schrittmotor Endstufen habe ich gerade die maximale 
Step-Frequenz von 'grbl' ausgenutzt. Eigentlich sogar schon 
überschritten: 30,666 kHz Stepfrequenz.

Und der Schrittmotor macht es mit. Ohne Schrittverluste. Das ergibt eine 
RPM von 575 U/min bzw. eine Verfahrgeschwindigkeit von F= 2300mm/min. 
Bisher hab ich immer nur 1000mm/min geschafft.

Auch die langsamste Einstellung mit einer Vorschubgeschwingigkeit F= 
1mm/min kann sich sehen und hören lassen. Kein ruckeln zu sehen.


Muss mal Videos machen.

Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

klingt super!!!
Habe dir soeben auch auf deine Mail geantwortet.

von Steffen H. (avrsteffen)


Lesenswert?

Hier mal ein paar kurze Demo-Videos mit verschiedenen 
Vorschubgeschwindigkeiten.
http://www.youtube.com/watch?v=_DuFRqfCkQU  F=    1 mm/min
http://www.youtube.com/watch?v=WrQPoUfoy4s  F=    1 mm/min
http://www.youtube.com/watch?v=-ghOse1TRFU  F=   50 mm/min
http://www.youtube.com/watch?v=IxBZi4cdKkk  F=  400 mm/min
http://www.youtube.com/watch?v=u2E24_DfCM4  F= 2400 mm/min


Steffen

von Pieter (Gast)


Lesenswert?

moin moin,
@Steffen,
welche Steigung hat die Spindel?

Meine Spindel hat 16mm Steigung bei 8x Microstepping, da habe ich den 
Eilgang auf 3600mm/min begrenzt.

Was ist die Anwendung für 1mm/min?

Mit Gruß
Peter

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Pieter schrieb:
> welche Steigung hat die Spindel?
Die Spindel die ich anvisiere hätte 4mm Steigung. Macht bei 16fach 
Microstepping und 1,8° Schrittmotor 800Steps/mm oder halt 1/4 Umdrehung 
am Schrittmotor für 1mm Vorschub. (theoretische Auflösung von 
0,00125mm/Step)

Pieter schrieb:
> Was ist die Anwendung für 1mm/min?
Na irgendwo will ja auch ein Kreisbogen gefräst werden. Da musst du 
schon runter mit der Geschwindigkeit im den Scheitelpunkten. Oder für 
eine lange leichte Schräge. Da gilt das Selbe.


So, hab heute den Strom-Chopper oszilloskopiert. Sieht sehr gut aus. 
Ohne Störungen im Signal. So wie es laut Trinamic aussehen soll. Also 
ist das Layout gut geworden.


Gruß Steffen

von Pieter (Gast)


Lesenswert?

Hallo Steffen,

mit den Geschwindigkeiten...das glaube ich nicht!

Ich setze F=800 und fräse damit alle Bewegungen.
Die unterschiedlichen Geschwindigkeiten beim Kreis ergeben sich durch 
die sin/cos-Berechnung automatisch.
Bei der Berechnung der Zeit zwischen 2 Steps wird allerdings die Anzahl 
der gleichzeitig aktiven Motore berücksichtigt, da die Wegstecke des 
Fräsers unterschiedlich lang ist.
1 Motor  Zeit * 1
2 Motore Zeit * SQRT(2)
3 Motore Zeit * SQRT(3)
Ausserdem, es gibt einen Zusammenhang zwischen Fräservorschub, Zähnezahl 
und Fräserdrehzahl. Die Bewegungsrichtung spielt dabei keine Rolle.
Bei 1mm Vorschub schleift der Fräser nur am Werkstück und nutzt unnötig 
ab.

Mit Gruß
Peter

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Peter!

Du musst unterschieden zwischen der Geschwindigkeit des Fräsers - das 
ist ein Vektor v(x,y,z) im Raum. Die Achsgeschwindigkeiten sind dagegen 
v_x(X,0,0), v_y(0,y,0) und v_z(0,0,z). Je nach Winkel zwischen dem 
Fahrvektor des Fräsers und den Achsen kann es für eine der Achsen zu 
einer extrem niedrigen Geschwindigkeit kommen. Wenn da die Achse anfängt 
spürbar schrittweise zu fahren, sieht man das nachher in der gefrästen 
Oberfläche.

Einfaches 2D-Beispiel: 100mm lange Gerade von (0;0) nach (99,875;5), 
Vorschub 10mm/s. v_x beträgt dann 9,875mm/s, v_y dann nur 0,5mm/s. 
Trotzdem "schleift" der Fräser nicht, weil der Vorschub konstant 10mm/s 
beträgt.

Mit freundlichen Grüßen
Thorsten Ostermann

von Steffen H. (avrsteffen)


Lesenswert?

@All,

Heute hab ich bei einer Auflösung von 3200 Schritte/Umdrehung mit dem 
Schrittmotor 1500U/min geschafft. Das macht eine Step Frequenz von 
80kHz. Dadurch dass bei der Einstellung von 16µSteps die Step-Resolution 
des TMC262 noch auf 256µSteps interpoliert werden kann, macht das also 
51200 Schritte/Umdrehung. Diese kann man dann zwar nicht zur 
Positionierung benutzen aber die Interpolation lässt den Schrittmotor 
noch sanfter seine Arbeit verrichten.


Video dazu: (diesmal bessere Qualität)
http://www.youtube.com/watch?v=O-Iv-rHaEG8


Gruß Steffen

von Michi (Gast)


Lesenswert?

Hallo Steffen,

ich habe das o.a. "Du-Röhre" Video von dir gesehen. Was dir allerdings 
noch fehlt, ist die Adaption an die Mechanik. Dein Stepper dreht frei, 
mit anderen Worten, du hast bisher das Massenmoment noch nicht mit ins 
Kalkül gesetzt. Ob du die 3200 Schritte/Umdrehung im Video mit 
Wirkmechanik erreichst, wage ich zu bezweifeln.

von Steffen H. (avrsteffen)


Lesenswert?

Michi schrieb:
> Dein Stepper dreht frei,
> mit anderen Worten, du hast bisher das Massenmoment noch nicht mit ins
> Kalkül gesetzt. Ob du die 3200 Schritte/Umdrehung im Video mit
> Wirkmechanik erreichst, wage ich zu bezweifeln.

Ja, das wird er dann sicher nicht mehr schaffen. Wenn man hier den 
Schrittmotor nicht fest hält, kommt er auch manchmal durch seine 
Eigenresonanz nur bis ca. 940U/min. Für mehr als 1500U/min reicht dann 
das Drehmoment nicht mehr und reißt ab.


Sind ja auch nur Tests für die Endstufe gewesen um mal zu sehen, wie 
warm die Mosfets da werden. Und die Mosfets bleiben erstaunlich kühl.

Am wärmsten werden die Mosfets bei der niedrigsten Geschwindigkeit von 
0.25U/min.

Gruß Steffen

von Michael P. (protactinium)


Lesenswert?

moin

gibt es zu der Schrittmotorendstufe schon eine Dokumentation?

Michael

von Steffen H. (avrsteffen)


Lesenswert?

Michael P. schrieb:
> moin
>
> gibt es zu der Schrittmotorendstufe schon eine Dokumentation?
>
> Michael

Ich denke der Anschluss der Schrittmotorendstufe ist aus oberen Bild 
ersichtlich und benötigt keine weitere Dokumentation.

- Motorversorgungsspannung 10..36V anschließen
- Digitale Versorgungsspannung 5V anschließen
- Schrittmotor anschließen
- Step, Dir und /EN Signale an einen µC anschließen

..und los gehts

Bei dieser Version wird die benötigte digitale Versorgungsspannung 
leider noch nicht aus der Motorversorgungspannung gebildet. Deshalb ist 
die unbedingt bereit zu stellen. Dies soll sich in der nächsten Version 
ändern. Bin aber noch am testen eines geigneten StepUp Reglers dafür.

Über USB kann man dann den Treiber (TMC262) noch an die 
unterschiedlichsten Schrittmotoren anpassen. Dazu hab ich ja eine kleine 
GUI geschrieben. Was die einzelnen Parameter zu bedeuten haben steht in 
der Dokumentation zum TMC262. Es gibt auch von Trinamic ein Tool um mit 
den Motordaten wie Phasenstrom, Phaseninduktivität, Phasenspannung und 
Phasenwiderstand die Parameter auszurechnen.
Siehe:
http://www.trinamic.com/tmctechlibcd/integrated_circuits/TMC262/TMC262_datasheet.pdf
http://trinamic.com/tmctechlibcd/integrated_circuits/TMC262/Application_notes/Appnote_spreadCycle.pdf
trinamic.com/tmctechlibcd/integrated_circuits/TMC262/Application_notes/t 
mc262_calculations.xls

Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo Steffen,
wolltest du mir nicht noch einen Prototypen deiner Endstufe zusenden?
grüße martin

von Dirk R. (nixtodo)


Lesenswert?

Steffen H. schrieb:
> Michael P. schrieb:
>> moin
>>
>> gibt es zu der Schrittmotorendstufe schon eine Dokumentation?
>>
>> Michael
>
> Ich denke der Anschluss der Schrittmotorendstufe ist aus oberen Bild
> ersichtlich und benötigt keine weitere Dokumentation.

Hallo Steffen,

deine erste TMC Platine die du mir geschickt hast, werkelt immer noch 
zuverlässig an meiner CNC Fräse.

Ich habe mit Interesse gesehen, dass du erfolgreich eine einzelne 
Stepper Driver Platine (TMC & ext. MOSFETs) entwickelt hast. Ich bin 
auch an dieser Interessiert.

Würdest du den Schaltplan / das Layout hier einstellen wollen?
Diese fehlen hier leider.

Viele Grüße,
Dirk

von Christian J. (stormracer)


Lesenswert?

Hallo,

auch ich bin gerade am Überlegen einen solchen Treiber zu Layouten. Ich 
würde eher etwas größere Mosfets verwenden, da ich an 48V/4A Motoren 
gedacht habe.

@ Steffen,
magst du Schaltplan und Layout hier veröffentlichen?

Viele Grüße
Christian

von Sepp (Gast)


Lesenswert?

Hallo, ich hätte auch interesse an dem Layout.
Wäre toll wenn du das hier einstellen könntest.

@Stormracer
Ich habe den gleichen Plan wie du. 48V, allerdings 6A für meine CNC.
Vielleicht kann man sich ja für ein Layout zusammen tun.

von Steffen H. (avrsteffen)



Lesenswert?

Hallo Leute,

Nach mehrmonatiger Abstinenz hier nun wieder ein Lebenszeichen von mir.

Martin J. schrieb:
> Hallo Steffen,
> wolltest du mir nicht noch einen Prototypen deiner Endstufe zusenden?
Ja, das wollte ich. Nachdem ich dir aber geschrieben habe und wenigstens 
die Unkosten haben wollte, hast du dich nicht mehr gemeldet. Ich dachte 
daraufhin die Sache wär erledigt.

Für alle anderen die hier gerne die Schaltung oder das Layout haben 
wollen hab ich gute Nachrichten. Ihr findet diese im Anhang.

Ich bin gerade dabei eine neue Revision der Platine zu machen. Neu 
dazukommen soll noch ein Schaltregler (LTC3990) der aus der 
Versorgungsspannung gleich die 5V für Atmel und der restlichen 
Elektronik bereit stellt. Den Schaltregler habe ich getestet mit bis zu 
40V Eingangsspannung und 100mA Last auf der 5V Seite. Für bis zu 60V am 
Eingang und 350mA am Ausgang soll der kleine Käfer laut Datasheet 
verkraften.


Gruß Steffen

von Dirk R. (nixtodo)


Lesenswert?

Hallo Steffen,

prima dein Schaltplan kommt zur rechten Zeit :)

Ich werde zwar die USB Geschichte rausschmeißen und dafür eine RS485 
einbauen. Den Teil vom TMC262 und der MOSFET's werde ich so übernehmen.

Warum hast du nicht die 5V aus dem TMC262 verwendet (Pin 9)?
Nur um dir die 3,3V Vcc Möglichkeit offen zu halten oder hast du 
Bedenken wegen Störungen? Einen Jumper hast du ja vorgesehen. Die 
möglichen 100mA sollten ja reichen...
LED LD2 und R17 sind nicht im Schaltplan vorhanden ;)

Gruß Dirk

: Bearbeitet durch User
von Martin J. (bluematrix) Benutzerseite


Lesenswert?

@  Steffen H.
Sry, dann war das ein Missverständnis, natürlich hätte ich dir das Zeug 
bezahlt. Also wenn du noch ein Board hast, dann wäre ich noch 
interessiert. Kann auch unbestückt sein, die Teile sollte ich da haben.

... einen schönen Sonntag noch :-)

von Steffen H. (avrsteffen)


Lesenswert?

Dirk R. schrieb:
> Warum hast du nicht die 5V aus dem TMC262 verwendet (Pin 9)?
> Nur um dir die 3,3V Vcc Möglichkeit offen zu halten oder hast du
> Bedenken wegen Störungen? Einen Jumper hast du ja vorgesehen. Die
> möglichen 100mA sollten ja reichen...
3,3V muss leider verworfen werden oder man kann den mega48 nur noch mit 
8MHz betreiben.
Die Angaben im Datasheet zu 5Vout des TMC262 sind in Sachen 
Strombelastbarkeit mir zu schwammig gewesen. Deswegen lieber einen 
eigenen Regler mit auf das Board. Außerdem ist der interne 5V Regler 
auch derjenige der den Chip ganz schön einheizt.

Dirk R. schrieb:
> LED LD2 und R17 sind nicht im Schaltplan vorhanden ;)
Ja, ich glaube da war die Pin-Begrenzung von Target dran Schuld..

Martin J. schrieb:
> @  Steffen H.
> Sry, dann war das ein Missverständnis, natürlich hätte ich dir das Zeug
> bezahlt. Also wenn du noch ein Board hast, dann wäre ich noch
> interessiert. Kann auch unbestückt sein, die Teile sollte ich da haben.
Eine fertig bestückte funktionsfähige Leiterplatte hab ich noch. Wie 
gesagt, für 50€ + Versand geb ich die ab.

Grüße Steffen

von Steffen H. (avrsteffen)


Lesenswert?

Dirk R. schrieb:
> Ich werde zwar die USB Geschichte rausschmeißen und dafür eine RS485
> einbauen.

Der USB ist nur zum konfigurieren des Treibers da. Wenn man das über 
RS485 machen will muss man noch die Firmware des mega48 umschreiben. Man 
muss dann ja zwischen Senden/Empfangen umschalten, oder?


Gruß Steffen

von Dirk R. (nixtodo)


Lesenswert?

Ja klar, eine neue Firmware muss ich sowieso erstellen.

Ich will mir einen X Achsen Antrieb für meine manuelle Fräse bauen.
Um für die Zukunft (CNC) schon gerüstet zu sein, will ich einen Stepper 
verwenden anstatt wie sonst üblich einen DC Motor mit PWM 
Drehzahlsteuerung. Der Stepper wird 2:1 Untersetzt mit einem HTD 3M 
Zahnriemen an die Achse gekoppelt.
Der Treiber bekommt zwei Steuerungseingänge, einmal über einen Links - 
Stop - Rechts Schalter und ein Poti (Geschwindigkeit) für die manuelle 
Steuerung sowie eine Step/Dir/Enable/RefSw Schnittstelle für eine 
spätere Zentrale CNC Steuerung. Auch will ich noch drei Schaltereingänge 
für Limit- und Referenzschalter vorsehen. Die RS485 soll zur 
Konfiguration und sonstigen Dingen dienen. Als Controller will ich einen 
ATmega328P verwenden.
Die ganzen Änderungen haben natürlich ein neues PCB Layout zur folge, 
nur am Stepperleistungsteil werde ich mich an deinem Layout orientieren. 
Ich baue die Platine auch nicht an den Stepper sondern in das 
Zahnriemengehäuse ein.

Gruß Dirk

von Martin J. (bluematrix) Benutzerseite



Lesenswert?

Hallo,
seit dieser Woche ist endlich meine neue GRBL PC-Terminal und G-Code 
Viewer Software "jCNC" fertig.

Die Software verarbeitet Standard G Code. Dieser Code kann in einem 
Editor, mit Syntax Highlightning, erstellt, bearbeitet und parallel 3D 
visualisiert werden. Durch die zeitgleiche Visualisierung kann man den 
erzeugten Code sofort kontrollieren und entdeckt somit schnell Fehler in 
dem erstellte CNC Code.

Die CNC Steuerungs Software "JCNC" habe ich speziell zur Kommunikation 
mit dem ATmega GRBL CNC Controller Board geschrieben, sie sollte aber 
auch mit jeder anderen CNC Steuerung mit einer GRBL Firmware 
funktionieren. Dank der PC Software kann man relativ einfach den zuvor 
im Editor oder einem externen CAM Programm erstellten G-Code als 
kompletten "Job" an die Firmware der GRBL CNC Steuerung senden, welchen 
diesen dann nacheinander selbständig abarbeitet. Weiterhin gibt es auch 
verschiedene Möglichkeiten die Maschine durch eine manuelle Eingabe von 
Befehlen zu steuern.

Software JCNC:
http://www.jtronics.de/software/jcnc-cnc-steuerung.html

hier das Board für welches ich die Software geschrieben habe:
http://www.jtronics.de/avr-projekte/atmega-grbl-cnc-controller.html

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

sry...
bei dem einem Bild hab ich das Original mit 3MB erwischt

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Martin,

Sieht sehr schick aus deine PC Software GUI. Gefällt mir wirklich. Mit 
welcher Grbl Firmware Version arbeitet deine Software zusammen? Und wie 
wird der Job zur Grbl Firmware gesendet? Hast du da eine Hardware (CTS 
Flow Control) oder die Software Flow Control Steuerung über Xon/Xoff 
eingebaut?


Auch dein Gehäuse für dein Board sieht sehr interessant aus. Das ist 
doch Platinen Material, oder?


Gruß Steffen

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Die Software arbeitet eigentlich mit jeder Grbl Version ab Verseion 0.6. 
Es werden von den älteren Versionen halt nicht alle Features 
unterstützt, aber das ist nicht weiter schlimm.

Die Kommunikation erfolgt per USb und einer Software Flow Control 
Steuerung, so dass der interne Speicher des Controllers nicht überläuft.

Das Gehäuse auf dem Bild ist aus 1mm Sperrholz welches mit einem CO2 
Laser geschnitten wurde. Es ist natürlich auch möglich das Ganze aus 
Plexiglas oder farbigem Acryl zu realisieren. Je nachdem was einem 
gefällt. :-)

Momentan arbeite ich viel an der PC Software für das Board, damit diese 
einem alle Einstellungen und Datenverwaltung erleichtert. Die nächste 
Version werde ich daher sicher am Wochenende veröffentlichen.

Hier die Infos zu den Projekten... letztes Wochenende frisch 
aktualisiert
Eigenbau-Fräse: http://www.jtronics.de/werkstatt/cnc-pcb-fraese.html
Controllerboard: 
http://www.jtronics.de/avr-projekte/atmega-grbl-cnc-controller.html
PC Software: http://www.jtronics.de/software/jcnc-cnc-steuerung.html

Das Controllerboard wird es demnächst auch ohne Schrittmotorendstufen 
geben. Stattdessen werden die Schritt- Richtungssignale auf einem 
Stecker herausgeführt. Parallelport oder so... damit kompatibel zu 
bestehenden Aufbauten ist.

von Einhart P. (einhart)


Lesenswert?

Hey, das klingt gut. Ein Board ohne Endstufen ware für mich perfekt.

Danke Martin für die tolle Arbeit!

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

was findet ihr besser?
... parallelport stecker also Sub D und somit kompatibel zu Mach3 
Steckern und CO oder was würdet ihr verwenden?

von Einhart P. (einhart)


Lesenswert?

Persönlich nutze ich die einfachen Platinenverbinder im 2,54er Raster 
gern z.B.:

http://www.csd-electronics.de/200/cgi-bin/shop.dll?AnbieterID=2&bnr=016-S030&PKEY=EF49&Hauptseite=detail.htm

Bevorzugt für jede Achse einen 3-poligen Stecker. Dann kann man die 
Achsen einfach wechseln. Spart gegenüber einem 25pol Sub-D auch etwas 
Platinenplatz.

Ich finde einen 25poligen Stecker mit drei Kabeln zu den jeweiligen 
Endstufen etwas unflexibel. Das sieht aber bestimmt jeder anders.

Gruß
Einhart

von Martin J. (bluematrix) Benutzerseite


Angehängte Dateien:

Lesenswert?

Es ist grade die neue JCNC 1v01 Version der PC Software für Grbl fertig 
geworden. Es werden jetzt einige weitere Grbl Features unterstützt...
den Download gibt es hier: 
http://www.jtronics.de/forum/viewtopic.php?f=17&p=404#p395

von Chris (Gast)


Lesenswert?

Steffen H. schrieb:
> Ich bin gerade dabei eine neue Revision der Platine zu machen. Neu
> dazukommen soll noch ein Schaltregler (LTC3990) der aus der
> Versorgungsspannung gleich die 5V für Atmel und der restlichen
> Elektronik bereit stellt.


Hi Steffen,

ich bin grade auf diesen Thread gestoßen und finde deine Step-Drive 
Platinen super!
Da ich demnächst mit dem Bau einer CNC-Fräse anfange, wollte ich mal 
fragen, ob es denn schon Neuigkeiten bzgl. der Version mit Schaltregler 
gibt?


Viele Grüße
Chris

von Dirk R. (nixtodo)


Lesenswert?

Hi Martin,

ich sehe mit Interesse das deine Software wächst. Ich habe mir auch 
schon deine Webseite angeschaut. Die JCNC und die Firmware für dein 
Atmega GRBL CNC Controller habe ich zum Download gefunden. Was mir fehlt 
sind die Infos über die Hardware des Controllers z.B. Schaltplan, 
Layout, Stückliste, usw.
Habe ich da etwas übersehen?

Gruß Dirk

von Steffen H. (avrsteffen)


Lesenswert?

Chris schrieb:
> Steffen H. schrieb:
>> Ich bin gerade dabei eine neue Revision der Platine zu machen. Neu
>> dazukommen soll noch ein Schaltregler (LTC3990) der aus der
>> Versorgungsspannung gleich die 5V für Atmel und der restlichen
>> Elektronik bereit stellt.
>
>
> Hi Steffen,
>
> ich bin grade auf diesen Thread gestoßen und finde deine Step-Drive
> Platinen super!
> Da ich demnächst mit dem Bau einer CNC-Fräse anfange, wollte ich mal
> fragen, ob es denn schon Neuigkeiten bzgl. der Version mit Schaltregler
> gibt?
>
>
> Viele Grüße
> Chris

Hallo Chris,

Getestet ist der LTC3990 bis 60V sowie der LTC3631 bis 40V. Doch leider 
bin ich noch nicht dazu gekommen, dass Layout anzupassen.

Martin J. schrieb:
> Es ist grade die neue JCNC 1v01 Version der PC Software für Grbl fertig
> geworden. Es werden jetzt einige weitere Grbl Features unterstützt...

Hast dir da echt Mühe gegeben, gefällt mir sehr gut Martin. Deine neue 
GUI muss ich unbedingt mal testen. Komm im Moment nur nicht dazu..


Gruß Steffen

von Einhart P. (einhart)


Lesenswert?

Hallo Martin,

Die Software ist vielversprechend. Gerade läuft sie neben mir und 
steuert die X-Achse testweise. Wenn ich einen Job gestartet habe, dann 
schaffe ich allerdings weder eine Pause noch einen Stop mit dem Buttons 
unter "Job". Die Texte der Buttons ändern sich, aber mir erschließt sich 
deren Funktion nicht. Der Job läuft unbeirrbar weiter.

Schön wäre, wenn die Zeile markiert würde, die gerade abgearbeitet wird. 
So wie es bei der Simulation schon funktioniert.

Vielen Dank dass du uns dein Programm zur Verfügung stellst!

Gruß
Einhart

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo Einhart,
danke für das Feedback. Nur so komme ich wirklich weiter mit dem Tool.
Jetzt wo du es sagst, fällt mir ein, dass der Funktion noch kein Befehl 
hinterlegt ist. Ich hab sie noch nie benötigt, daher fällt es mir selber 
nicht auf. Werde es auf jeden Fall schnell ändern.

Das mit der Anzeige der Zeile ist momentan nicht möglich. GRBL liefert 
dazu nicht die benötigten Informationen. Selbst mit der Anzeige der 
aktuellen Position bin ich noch nicht zufrieden. Die Idee kam mir auch 
schon, aber so richtig ist mir noch keine Lösung eingefallen, ohne dass 
ich den ganzen Grbl Code ändern muss und das möchte ich nicht.

Wenn dir noch mehr auffällt gib mir bitte Bescheid.
Danke

von Einhart P. (einhart)


Lesenswert?

Hallo Martin,

Ich denke es wäre schon eine Hilfe wenn die zuletzt an GRBL gesendete 
Zeile links in der Liste gezeigt würde. Es ist schon klar, dass GRBL 
noch Kommandos im Puffer hat.

Solltest du 'mal langeweile haben ;-) - Ich fände es gut, wenn man eine 
Kommandozeile markieren könnte, an der die Übertragung pausiert.

Gruß und vielen Dank

Einhart

von bluematrix (Gast)


Lesenswert?

so es gibt ein neues Update :-)
... einige Bugfixes und sonstige Änderungen.
- Progressbar
- Hold, Feed, Start
- Userabfragen bei Jobstart
- Abfangen von Fehlern
- Position des Werkzeugs wird im 3D Fenster live angezeigt (gelb)

download: http://www.jtronics.de/forum/viewtopic.php?f=17&t=297

Einhart Pape schrieb:
> Schön wäre, wenn die Zeile markiert würde, die gerade abgearbeitet wird.
> So wie es bei der Simulation schon funktioniert.
da bin ich noch am grübeln.

von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

sehr schönes Projekt. Wir bauen gerade was ganz Ähnliches, allerdings 
auch mit den Trinamic Controllern und auf Basis Arduino/BeagleBone. 
Genaueres gibts hier: http://www.tbone.cc

Sind dankbar für Anregung und Kritik!

Viele Grüße,

Andreas

von martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
eine neue Version der Software JCNC ist jetzt fertig.
Neben vielen Bugfixes wurde die komplette Software neu designend und 
dabei gleich auf die aktuelle Version QT 5.1 umgestellt.

Pluginmodul
Durch Integration eines Plugin-Moduls ist es jetzt relativ einfach auch 
für andere CNC Steuerungen ein Interface zu erstellen. Dieses wird dann 
beim Start der Software erkannt und mit eingebunden.
Zur Zeit wird schon neben der Standard GRBL Version mit bis zu 3 Achsen 
auch das leistungsfähigere Board TinyG mit bis zu 4 Achsen unterstützt. 
Für jede Steuerung können Änderungen der Firmware-Einstellungen mit der 
Software gemacht werden.

Weiterhin wurde die 3D OpenGl Visualisierung erweitert und verbessert 
und der GCode Parser komplett überarbeitet. Durch diese Änderungen 
können jetzt auch sehr große Dateien mit über 200T Zeilen GCode flüssig 
dargestellt werden.

Den Download für das Programm findet man hier:
http://www.jtronics.de/forum/viewtopic.php?f=17&t=297&p=395#p395

Über Rückmeldungen und Ideen würde ich mich freuen.

von Kay (Gast)


Lesenswert?

Hi Martin,

vielen Dank für Deine Software. Ich hatte eine vorherige Version 
getestet. Super zu bedienen. Ich werde übers Wochenende die neue Version 
probieren.

Gruß Kay

von martin (Gast)


Lesenswert?

mach das...
es hat sich einiges geändert und vieles verbessert :-)

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo,
kann jemand die Software testen, ob auch alle benötigten Bibliotheken 
vorhanden sind, und ob es auch auf den verschiedenen Windows Versionen 
läuft.
Beitrag "Re: G-Code-Interpreter und µStep-Controller mit ATmega644"

Ich selbst habe nur Win07 x32 zur Verfügung.
Danke

von Kay (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe die neue Version gerade installiert. Erhalte aber eine 
Fehlermledung. Siehe Anhang.

Gruß Kay

PS: System ist Win7 32bit HomePremium

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo,
ich glaub ich habe das Problem, bzw. die fehlende dll gefunden.
Anscheinend muss man seit Qt5 unbedingt noch eine qtplatform dll 
einbinden.
Nutzt man qt selbst so ist diese schon im System installiert, daher 
erscheint der Fehler bei mir nicht.

ich habe den Downloadlink schon aktualisiert. Würde mich freuen wenn du 
mir sagen kannst, ob es jetzt geht.

von martin (Gast)


Lesenswert?

Na anscheinend geht jetzt alles, hab schon mehrere positive 
Rückmeldungen bekommen.
Ich hab soeben noch ein Update der Software gemacht, so dass man jetzt 
die Dateien auch mit dem Programm verknüpfen kann (öffnen mit) und dass 
immer nur eine Instanz der Software läuft, in welcher dann auch alle 
weiteren Dateien geöffnet werden.

So das war's für heute.
Ich mach dann mal Feierabend :-)
Martin

von Kay (Gast)


Lesenswert?

Ich probiere es heute abend mal aus.

Gruß Kay

von Michael L. (michaelx)


Lesenswert?

Hallo Steffen H.,

mal eine OT-Frage: Wie hast du die Durchkontaktierungen auf der Platine 
im Eröffnungsposting gemacht?

Gruß.

von martin (Gast)


Angehängte Dateien:

Lesenswert?

Abend,

Michael L. schrieb:
> mal eine OT-Frage: Wie hast du die Durchkontaktierungen auf der Platine
> im Eröffnungsposting gemacht?

 Bohren der Platine mit Bohrständer
 platzieren von ca. 3mm Abstandshaltern unter der Platine
 Drahtstückchen durch die Löcher schieben
 Drahtstückchen auf der Oberseite verlöten
 Drahtstückchen auf der Unterseite verlöten
 Drahtstückchen mit einem scharfen Seitenschneider abschneiden
 gefällig Löthügel mit Sandpapier abschleifen

mehr findest du auch hier... 
http://www.jtronics.de/werkstatt/durchkontaktierung.html

von Michael L. (michaelx)


Lesenswert?

martin schrieb:
> ...
> mehr findest du auch hier...
> http://www.jtronics.de/werkstatt/durchkontaktierung.html

Danke für die Info. Sieht interessant aus, aber der Aufwand mit dem 
Abknipsen und Schleifen ist nicht ohne. Und ein "Mü" zu viel 
geschliffen, und die Durchkontaktierung ist zumindest fraglich.

Also, auch wenn's schöner aussieht, bleibe ich wohl dabei, die 
Drahtenden oben und unten vor dem Verlöten einfach in Richtung der 
weiteführenden Leitebahn umzubiegen.

Grüße.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Das mit dem Abschleifen ist manchmal notwendig wenn man 
Durchkontaktierungen unter den Bauteilen hat. Bei SMD Macht sich das 
nicht gut wenn die Hälfte das Bauteils 2mm über der Platine hängt ;-)

von Martin J. (bluematrix) Benutzerseite



Lesenswert?

So es gibt nach langer Zeit mal wieder etwas neues.
ich habe mich jetzt endgültig vom GRBL Projekt gelöst und meine 
komplette Hardware auf die leistungsfähigere Steuerung TinyG umgestellt. 
Das ist auch ein open source projekt auf basis eines Xmega Controllers 
oder in der Version 2 sogar auf einem Arm basierend.
Die Daten zu dem Board findet ihr hier:
http://www.jtronics.de/avr-projekte/xmega-tinyg-cnc-controller.html
unterstützt wird es auch von der bisherigen PC Software.
Viel Spass damit

von Walter Tarpan (Gast)


Lesenswert?

Hallo Martin,
ich sehe, Du nutzt Deine Stepcraft-CNC als "pick and place". Das heißt 
ich sehe nicht, ich ahne nur - leider gibt das Foto ja nicht viel her. 
Hast Du zu diesem Projekt eine Beschreibung?

Viele Grüße W.T.

von Martin J. (bluematrix) Benutzerseite



Lesenswert?

Hallo,
es ist schon eine Weile her, aber nun bin ich endlich fast fertig  mit 
meiner Eigenbau Pick and Place Maschine. Den Versuch eine StepCraft CNC 
Fräse für die Achsen zu verwenden habe ich aufgegeben, da diese einfach 
zu langsam ist. Stattdessen habe ich mir mit einfachen Mitteln und 
meinem 3D Drucker etwas eigenes gebaut.
- fast alle Kunststoffteile sind mit einem 3D Drucker erstellt
- 2 nozzels
- 2 cameras (top and bot)
- 44 feeder für role's
- 18 feeder für tubes
- integrierter Vakuumpumpe
- CNC TinyG controller für 4 Achsen
Als Steuerung habe ich di schon oben beschriebene TinyG CNC Steuerung 
verwendet. Diese bietet die treiber für 4 und einen PWM-Drehzahlausgang 
den ich zu Ansteuerung eines Servos verwendet habe.

Im ersten Video wurde ja nur die Funktion der Achsen und der Feeder 
gezeigt. Jetzt habe ich schon erfolgreich die ersten Platinen bestückt.
https://youtu.be/uInt3xAkXCw

: Bearbeitet durch User
von Tany (Gast)


Lesenswert?

Martin J. schrieb:
> ich habe mich jetzt endgültig vom GRBL Projekt gelöst und meine
> komplette Hardware auf die leistungsfähigere Steuerung TinyG umgestellt

Wenn darin kompl. G-Code intergriert sind, bin ich sehr interessiert.

Martin J. schrieb:
> Den Versuch eine StepCraft CNC
> Fräse für die Achsen zu verwenden habe ich aufgegeben, da diese einfach
> zu langsam ist.

Es kommt auf Steuersoftware an. Ich habe z.B SerialComCNC mit JCNC 
verglichen. Bei macher Fräskontur braucht JCNC bis zu 5 facher Zeit wie 
SerialCNC. Vielleicht liegt's daran?

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Tany schrieb:
> Wenn darin kompl. G-Code intergriert sind, bin ich sehr interessiert.
Links zum Projekt und dem Board gibt es hier
https://github.com/synthetos/TinyG/wiki
http://www.jtronics.de/avr-projekte/xmega-tinyg-cnc-controller.html

Tany schrieb:
> Es kommt auf Steuersoftware an. Ich habe z.B SerialComCNC mit JCNC
> verglichen. Bei macher Fräskontur braucht JCNC bis zu 5 facher Zeit wie
> SerialCNC. Vielleicht liegt's daran?
Das hat nix mit der Software zu tun. Die Mechanik ist einfach zu 
langsam. Stepcraft ist ein Spindelsystem mit mx. 1800mm/min, bei der 
Pick Place kam dann ein Riemen zum Einsatz, wodurch wesentlich höhrer 
Geschwindigkeiten möglich sind.

von Tany (Gast)


Lesenswert?

Martin J. schrieb:
> Links zum Projekt und dem Board gibt es hier
> https://github.com/synthetos/TinyG/wiki

Vielen Dank für den Link.
Ich habe für mich die Variante mit Arduino DUE entdeckt (TinyG2).
Gestern war das Board angekommen, FW drauf geflasch und läuft...
6 Motoren und max 200 kHz: Es bleibt mir erstmal keine Wünsche offen.

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

schöne Arbeit mit den TMC 262 und dem GUI.

Leider ist jedoch das Thema mit dem ATMEGA48 für mich Neuland.
Kannst du vielleicht kurz Hilfestellung geben wie der Bootloader und das 
eigentliche Programm draufzuspielen sind?
Wie sind die Fuses einzustellen?
Wie sieht deine Hardware aus?

Den Bootloader bekomme ich via ISP noch drauf.
Bekomme dann jedoch keine Verbidung über TXT und RXD mittels USB to UART 
zustande um das Programm aufzuspielen.

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robert,

Wie hast du denn den Bootloader auf den AVR bekommen? Denn wenn du den 
AVR via ISP programmierst, kannst du ja gleich das eigentliche Programm 
übertragen und den EEPROM beschreiben.

Die Fuses sollten für den Reset auf den Bootbereich stehen. Welche 
Größe/ Adresse das jetzt nochmal war, weiß ich gerade nicht mehr.

Wenn der Bootloader drauf ist sollte man nach einem Reset auch mit dem 
Flash Programm die Software updaten können.

von Steffen H. (avrsteffen)


Lesenswert?

Die Software und Firmware hattest du von hier?

www.mikrocontroller.net/topic/413502#new


Grüße
Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Steffen H. schrieb:
> Die Fuses sollten für den Reset auf den Bootbereich stehen. Welche
> Größe/ Adresse das jetzt nochmal war, weiß ich gerade nicht mehr.

Welches Programm nutzt du denn zum Flashen?

Gruß
Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

den Bootloader hatte ich via Boot-o-Mat (AVRDude GUI) auf den AVR 
bekommen.

Ich hatte die Anleitung für den Bootloader so verstanden, dass das 
eigentliche Programm dann nicht über ISP sonder z.B. über UART oder 
1-Wire geschickt werden muss. Ich hatte es daher über FBOOT und 
Updateloader mittels FTDI-Adapter probiert.

Die Fusebits habe ich mir gerade mal mit "Engbedded Atmel AVR® Fuse 
Calculator" nochmal zusammengestellt:

lfuse 0x62
hfuse 0xcf
efuse 0xfe

Werde das heute Abend mal testen.
Vielleicht kannst du da ja nochmal reinschauen wie du die Fuses gesetzt 
hast.

Dann könnte ich das schonmal als Fehlerquelle ausschließen.

Software und Firmware hatte ich von deinem Link.

Vielen Dank für deine Hilfe

Gruß
Robert

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

die Anleitung für den Bootloader hatte mir nicht wirklich weiter 
geholfen.
Der Atmega48 hat ja leider kein BOOTRST und BOOTSZ so wie ich das 
verstanden habe.

Gruß
Robert

von Dirk (Gast)


Lesenswert?

Das ist ein ATmega644 drauf, kein 48...

von Robert H. (robhoff)


Lesenswert?

Hallo Dirk,

Vielen Dank für deine Antwort.

> Das ist ein ATmega644 drauf, kein 48...

Bei meiner Frage geht es jedoch um den TMC262 Treiber von Steffen.
Der hat einen ATmega48 drauf.

Gruß
Robert

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

So Robert,

Jetzt habe ich es selber noch einmal alles ausprobiert. Und es 
funktioniert. Vorausgesetzt der Bootloader ist geflasht und der Quarz 
hat 16Mhz.

Fuses wie oben im Bild einstellen. Der m48 hat da diese "SELFPRGEN". 
Diese muss für den Bootloader auch ausgewält werden. "CKDIV" 
deaktiviert. Vergessen im Bild habe ich noch die "CKOUT" welche auch 
aktiviert werden muss, damit der TMC262 seinen Takt bekommt. Die 
"SUT_CKSEL" Fuses sollten auf ext. Crystal Oscilator 8-16Mhz mit max. 
Start-up time stehen.


Ein Reset des m48 ist zwingend nach folgenden Aktionen auszuführen:
- nach dem Flashen des Bootloaders
- nach dem Flashen der Firmware oder eines Updates der Firmware über den 
Bootloader

Auf meiner gerooteten Platine habe ich den RESET des m48 nicht 
angeschlossen. Ich muss dafür dann den Controller für kurze Zeit 
stromlos machen.


Zum Flashen/Update der Firmware bitte das Programm "Flash21" (befindet 
sich im ZIP-Ordner "Bootloader_AVRFlash21.zip". Dieses muss installiert 
werden.

Flash21
1) unter Datei/Auswahl -> die "TMC_config.hex" auswählen
2) unter Port -> den COM Port der USB-RS232-Brücke auswählen (dazu 
vorher verbinden, bevor man das Programm Flash21.exe ausführt)
3) unter COM-Port -> 115200 Baud einstellen (sollte aber eigentlich egal 
sein)
4) unter Passwort -> "Peda" ohne die Anführungszeichen eintragen
5) Button "Flash" drücken

..warten, Fertig!

*Hinweis:*
Um Flash21 richtig zu beenden bitte unter Datei/Beenden gehen. Der 
Click auf das X lässt das Programm offen und legt es nur in die 
Schnellstartleiste.



Gruß
Steffen

: Bearbeitet durch User
von Steffen H. (avrsteffen)


Lesenswert?

Hier nochmal ein funktionierender Link zum Board mit dem TMC262
TMC262 Stepper Shield

: Bearbeitet durch User
von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

Das mit den Fuses und dem Bootloader scheint soweit zu funktionieren.

Leider habe ich jedoch nur einen 8Mhz Quarz zum bespielen dran. sollte 
ja reichen wenn ich die Fuses entsprechend setze oder meinst du den 
Quartz der später auf dem Board drauf ist?

Bei Flash21 blinkt leider nur !Reset! für ein paar Sekunden und danach 
kommt die Meldung "Timeout".

Wie sieht denn die Schaltung aus, mit der du das Programm geflasht hast?

Vielen Dank für deine Mühe und Hilfe

Gruß
Robert

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robert

Womöglich musst du dann die Baudrate in Flash21 auf 19200 verringern. 
Und nach jedem Versuch die Firmware zu flashen musst du das Passwort neu 
eingeben und vorher den m48 reseten.

Der m48 ist über PD0 (RXD) und PD1 (TXD) an eine TTL RS232 angebunden.

Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

ich habe das ganze jetzt via ISP und ATmel Studio 7 drauf bekommen.

Die Fuses bis auf SUT_CKSEL habe ich auch gesetzt.

Sobald ich die setze wie du beschrieben hast komme ich nicht mehr mit 
ISP drauf.

Ich komme aber auch nicht mit UART und deiner GUI drauf.
Müsste das nicht möglich sein solange ich SUT_CKSEL auf intern und 8Mhz 
habe?

Kann ich das alles irgendwie testen bevor ich den ATmega einlöte?

Mittels Flash21 hatte ich übrigens weiterhin keinen Erfolg.

Vielen Dank

Gruß

Robert

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robert,

Dann hast du irgendwo noch einen Fehler. Beschreibe mal genau deine 
Testumgebung. So wie es sich anhört testest du gerade alles auf einen 
ATmega48 ohne Peripherie. Hast du da einen Quarz dran? Wenn ja wie groß? 
Wie sieht deine RS232 Schnittstelle genau aus. Welchen COM-Port benutzt 
du?

Wie überträgst du den Bootloader? Mit AtmelStudio7 hab ich noch nicht 
getestet. Ich benutze immer noch das AVR Studio4.

Die Clockfuses musst du auf ext. Crystal (ext.Quarz) stellen, 
vorausgesetzt du hast einen externen Quarz dran. Bitte möglichst einen 
16Mhz nehmen. Ich weiß jetzt gerade nict so genau, ob ein anderer Quarz 
an dieser Stelle irgendwelche negativen Auswirkungen hat.

Beschreibe mir also einfach kurz wie Du den Atmel testest, damit ich dir 
helfen kann. Also wie sieht deine Testumgebung aus?


Gruß Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

zum Testen habe ich erst nur den ATmega48 ohne Peripherie über einen 
CP2102 angeschlossen und dabei auf int. Quarz stehen lassen. Ohne 
Erfolg.

Dann habe ich das ganze auf der Platine testen wollen.
Hier mit 16Mhz Quarz und dann Fuses auch auf ext. Quarz umgestellt.
Steuerspannung 5V angelegt und mit USB verbunden.

Bei beiden Versuchen bekomme ich bei der GUI die Meldung, dass kein 
Board gefunden wurde.

Den Bootloader habe ich mittels Atmel Studio 7 und dem Olimex AVRISP Mk2 
übertragen. Meinst du das macht da einen Unterschied?

Ich denke mal das Übertragen der Firmware mittels ISP hat nicht wirklich 
funktioniert.
Leider bekomme ich die Firmware aber auch nicht mit AVRFlash21 drauf.
Hier habe ich schon verschiedene Wandler probiert: FTDI, CP2102, 6in1 
TTL/232/USB, BUS-Pirate auf UART.
Ich bekomme da einfach keine Verbindung.

Mache ich beim Reset nach den übertragen des Bootloader etwas falsch?
Nach dem Übertragen hatte ich zum Reset den Anschluss kurz auf GND 
gesetzt um dann über COM-Port mit der Firmware weiter zu machen, was ja 
naicht klappt.

Geht das überhaupt mit so einem billig Wandler aus der Bucht?

Gruß

Robert

von Robert H. (robhoff)


Lesenswert?

Den OLIMEX AVRISP Mk2 bekomme ich übrigens nicht mit AVR Studio 4 zum 
laufen.
Auch nicht mit den dafür bestimmten Treibern.

von Steffen H. (avrsteffen)


Lesenswert?

Mach mal bitte einen Screenshot aus AVR Studio7 zu den 
Fuseseinstellungen. Wir müssen eigentlich nur den Bootloader drauf 
kriegen und die Fuses richtig einstellen. Dann muss auch der Rest 
klappen.

Welchen USB zu TTL-RS232 Wandler du benutzt sollte egal sein.

Gruß Steffen

von Robert H. (robhoff)


Angehängte Dateien:

Lesenswert?

Das sind die Fuses wie ich sie jetzt eingestellt hatte.

Gruß
Robert

von Robert H. (robhoff)


Lesenswert?

Natürlich nur nicht im Simulator sondern beim Olimex

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Welchen Bootloader benutzt du denn?

Denn ich habe gerade gesehen, im Bootloader_ATmega48.zip ist doch nur 
das zurückgelesene hex-File drin..

Mein Fehler, sorry

Probiere mal den Bootloader im Anhang!


Was ich auch noch festgestellt habe ist, dass Flash21 nur mit COM-Ports 
bis COM7 klar kommt!



Gruß Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

habe jetzt den Bootloader aus deinem Anhang per ISP und Atmel Studio 7 
in den Flash programmiert.

Ich komme jedoch weiterhin nicht mit dem AVRFlash21 drauf.
ich schätze mal dann brauche ich auch nicht probieren die Firmware via 
ISP drauf zu schicken und dann den Atmega einzulöten.

Ich vermute mal dass irgendetwas mit dem Bootloader bei mir schief geht 
oder ich hier einen Fehler mit dem RS232 Adapter habe.

Welchen RS232-Adapter verwendest du? Wie schließt du den an? Wie setzt 
du den reset?

Gruß

der verzweifelnde Robert

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Also den Bootloader solltest du richtig drauf bekommen. Davon gehe ich 
jetzt erst einmal aus!

Jetzt müssen wir herausfinden warum Flash21 bei dir nicht funktioniert. 
Was heißt denn: "Ich komme mit Flash21 nicht drauf" ?

Welchen COM-Port stellst du ein und was passiert denn in Flash21 wenn du 
uploaden willst?

Kannst du nicht mal ein paar Screenshots/Fotos mit anhängen?


Ich verbinde den Atmel über einen ADUM1201 mit dem CP2001. Der ADUM1201 
ist ein galvanisch getrennter Pegelwandler. Denn der CP2001 bringt mir 
nur 3,3V. Also habe ich:

AVR TXD -> ADUM1201 -> RXD CP2001
AVR RXD <- ADUM1201 <- TXD CP2001

Ich hab dir mal den Schaltplan angehangen. Verwendest du einen fertigen
USB zu RS232TTL Wandler??? Wenn ja, welchen?

Steffen

von Robert H. (robhoff)



Lesenswert?

Hallo Steffen,

als Wandler habe ich die beiden im Anhang verwendet.

Den CP2102 habe ich über den ADUM1201 angeschlossen inklusive der beiden 
Widerstände die auch in deiner Schaltung drin sind.
Auf beide XTAL Eingänge habe ich jetzt einen 16MHz Oszillator dran.

Den Reset habe ich über 10K Widerstand auf VCC angeschlossen und setze 
den zum Reset dann auf GND.

Anbei auch mal ein Foto wie das bei mir aussieht.

Auf dem Prototype shield ist der ADUM1201 aufgelötet.

Hatte bei AVRFlash heute 2x eine andere Fehlermeldung.
Habe leider keinen Screenshot gemacht.

Angezeigt wurde irgendetwas wit "onewire"
Ich versuche das nochmal zu simulieren.
Übertragen wurde dabei aber auch nichts.

Gruß

Robert

von Steffen H. (avrsteffen)


Lesenswert?

Robert H. schrieb:
> Auf beide XTAL Eingänge habe ich jetzt einen 16MHz Oszillator dran.

Das geht so nicht! Ein Oszillator hat nur einen Taktausgang, V+ und GND.

Ein Quarz kommt an XTAL1 und XTAL2. Zum schwingen des Quarzes werden 
noch je ein Kondensator von 22pF von dem Quarz zu GND benötigt. Dieses 
nennt sich dann "ext. Crystal Osc." in den Fuses.

Wenn du einen Oszillator verwendest dann musst du folgendes tun:

Oszillator V+ -> 5V
Oszillator Takt -> XTAL1
Oszillator GND -> GND

Die Fuses dem entsprechend ändern. Müsste "ext.Clock" oder "ext. CLK" 
heißen. Dann sollte auch das Programmieren des Bootloaders mit 
Oszillator und ISP funktionieren.

Ich check jetzt mal noch deinen USB-RS232 Wandler. Der sollte definitiv 
5V TTL Signale an den AVR senden.

Mit welcher Spannung betreibst du den AVR? Du sagtest mal was von 5V?


Gruß Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

das mit dem Oszillator und das mit den beiden Quarz werde ich probieren.

Ja, betreibe den mit 5V die ich von dem Steckbrett nehme.

Gruß

Robert

von Robert H. (robhoff)


Angehängte Dateien:

Lesenswert?

Hallo Steffen,

im Anhang ist der Fehler, den ich sporadisch bekomme.

Gruß

Robert

von Steffen H. (avrsteffen)


Lesenswert?

Du kannst den Oszillator nehmen. Doch dann musst du die Fuses auf "ext. 
Clock" stellen und den Clock nur an XTAL1 anschließen.

Dann sollte auch Flash21 funktionieren.

Steffen

von Robert H. (robhoff)


Angehängte Dateien:

Lesenswert?

Hallo Steffen,

habe den ADUM1201 jetzt rausgeschmissen.

Und was soll ich sagen.
ES FUNKTIONIERT!!!

Vielen Dank für deine Hilfe und die Mühe die du dir mit allem gemacht 
hast!!!

Meine ganze Familie ist nun erleichtert!

Gruß

Robert

von Robert H. (robhoff)


Lesenswert?

Ich vermute es hat am Quarz gelegen.

Ich habe nun wie du beschrieben hattest den Quarz mit den beiden 
Kondensatoren angeschlossen.

von Steffen H. (avrsteffen)


Lesenswert?

Hey Robert,

Toll, dass es endlich funktioniert. :-)

Ich denke mal der ADUM1201 ist hinüber. Ich habe den wirklich nur als 
Pegelwandler dazwischen. Wenn dein Kleiner USB zu RS232 Wandler auch mit 
verschiedenen Spannungen klar kommt, geht es auch ohne Pegelwandler.

Ich hatte eben auch den UpdateLoader 2.4 und 2.6 ausprobiert. Beide 
funktionieren für ein Firmware update jetzt auch.

UpdateLoader 2.4 Beitrag "Re: UpdateLoader: Benutzeroberfläche für FastBoot AVR-Bootloader"

UpdateLoader 2.6 Beitrag "Re: UpdateLoader: Benutzeroberfläche für FastBoot AVR-Bootloader"



Gruß Steffen

: Bearbeitet durch User
von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

Habe das ganze jetzt auf der Platine.

Nun habe ich wieder das Problem,  dass ich nicht auf den Atmega drauf 
komme.

Sobald ich Spannung auf die Platine gebe leuchtet die rote LED kurz und 
geht dann langsam aus.

Wenn ich den Button "Verbinden" in der GUI betätige und dann direkt 
danach die Spannung auf die Platine gebe wird das Board kurz gefunden 
sobald ich dann jedoch auf "read" klicke kommt wieder die Meldung "No 
Board Found"

Hast du eine Idee woran das liegen kann?

Könnte sowas an falsch herum eingelöteten LED's liegen?
Bin mir gerade nicht sicher ob die richtig sitzen.

Gruß

Robert

von Steffen H. (avrsteffen)


Lesenswert?

Bricht vielleicht deine Versorgungsspannung ein? Auf welches Bord hast 
du den mega48 gelötet?

von Steffen H. (avrsteffen)


Lesenswert?

An den LEDs sollte es nicht liegen. Die haben einen Vorwiderstand. Somit 
kannst du durch falsch herum eingelötete LEDs nichts kaputt machen.

von Robert H. (robhoff)


Lesenswert?

Habe den ATmega48 auf dein Board gelötet.

Das mit dem Einbruch der Versorgungsspannung passt zumindest zu dem 
Verhalten der LED.
Werde das heute Abend mal messen.

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robert,

Hast du nun den Fehler finden können?


Gruß Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

ich habe leider bisher nicht wirklich Zeit gefunden um mich wieder mit 
den Platinen zu befassen.
Aber wenn ich das richtig gesehen habe hat sich ein Lötpad von der 
Platine gelöst.
Ich schätze mal dass dies beim Nachlöten mit dem Lötkolben passiert ist.

Gruß

Robert

von Robert H. (robhoff)


Angehängte Dateien:

Lesenswert?

Hallo Steffen,

ich bin nun wieder dabei die Treiber in Betrieb zu nehmen.

Dabei hat sich mir die Frage gestellt was den der Anschluss /int 
macht/kann?


Gruß


Robert

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Robert,

Der /INT ist momentan noch nicht benutzt. Dieser war geplant um einen 
Interrupt auszugeben, falls einer der beiden Endschalter ausgelöst wird.


Gruß Steffen

von Steffen H. (avrsteffen)


Lesenswert?

Was ich jetzt aber gerade sehe, ist die Versorgung des Atmels mit 3,3V 
ist falsch. Denn dieser muss mit 5V versorgt werden, da er mit 16Mhz 
läuft..

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

ok, Vielen Dank.

Habe im Moment leider bisher noch keine Funktionsfähige Platine zustande 
bekommen.
Hast du irgendwelche Besonderheiten beim Löten beachtet?
Hast du zu der letzten Version eine entsprechende Stückliste?
Ich habe das Gefühl, dass bei mir etwas nicht stimmt.

Gruß

Robert

von Robert H. (robhoff)


Angehängte Dateien:

Lesenswert?

Hallo Steffen,

vielleicht kannst du Dir ja nocheinmal etwas Zeit für mein Problem 
nehmen.

Die Treiber Funktionieren nach dem Löten einwandfrei. Auch die Config 
lässt sich über dein GUI bearbeiten.

Doch bei beiden Platinen habe ich dann plötzlich das Problem dass das 
GUI nach dem Verbinden kurz noch den Treiber erkennt und dann einfriert.

Unter Windows 10 wird auch kein Fehler angezeigt.
Im Kompatibilitätsmodus Windows XP bekomme ich dann die im Bild 
dargestellten Fehler.

Kannst du sagen woher das kommt?

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Hallo Robert,

Sorry dass ich jetzt erst antworte. Ich denke mir mal dass es nicht an 
Windows liegt.

Ich vermute du hast vergessen das EEPROM File in den ATMEL zu laden. 
Denn es sieht so aus, als ob das Programm nur Kauderwelsch empfängt. 
Leider habe ich einen Plausibilitätscheck beim lesen des EEPROM's hier 
nicht implementiert.

Also nicht nur das "TMC_config.hex" File in den Flash laden sondern auch 
das "TMC_config.eep" File in den EEPROM schreiben.



MfG
Steffen

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

vielen Dank.
Ich werde das am Wochenende mal testen.
Ich kann jedoch jetzt schon sagen, dass ich keine .eep hochgeladen habe 
;-)

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

verstehe ich das richtig, dass ich das eep-file zusammen mit dem 
Bootloader via ISP schreiben muss?

Gibt es eine Möglichkeit das über USB im verbauten Zustand zu 
übertragen?

Gruß Robert

von Robert H. (robhoff)


Lesenswert?

Hallo Steffen,

habe das jetzt mal in der folgenden Reihenfolge getestet.

1. Fuses setzen
2. Bottloader schreiben
3. EEPROM schreiben
4. TMC-config schreiben


Beim Verbinden mittels GUI wird das Board dann kurz gefunden.
Anschließend friert das GUI jedoch leider ein.


Lasse ich den EEPROM unbeschrieben bleibt die Verbindung und das GUI 
zumindest vorläufig bestehen und ich kann Änderungen durchführen.


In diesem Zustand, also ohne EEPROM zum beschreiben hatte ich bereits 
ein Platine verbaut. Alles hat dort wunderbar funktioniert. Nun ca. 4 
Wochen später kann ich auch hier keine Verbindung mehr aufbauen.

Stimmte die Reihenfolge eventuell nicht? Habe ich irgendetwas vergessen?
Wie, Wann und Womit Schreibst du die .eep?

Gruß Robert

von Steffen H. (avrsteffen)



Lesenswert?

Ich hab noch 2 industriell gefertigte unbestückte Leiterplatten 
rumliegen. Je eine der Generation1 und eine Generation2.

Ich stelle mir für die LP der G1 einen Preis von 8€ + Versand und für 
die LP der G2 einen Preis von 10€ + Versand  vor. Versand würd ich jetzt 
nur im Polsterbrief für 1€ versenden.

Bei Interesse bitte kurz mail an mich.

 MfG Steffen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.