mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA-PID für 1-Achsen Galvoscanner im Serienprodukt


Autor: Stefan Lanker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Miteinander.

Bei uns in der Abteilung steht die Aufgabe an, die PID-Regelung für 
einen Galvoscanner zu entwickeln.

Der Fall:

Angesteuert wird mit der Regelung ein 1-Achsen Galvoscanner (z.B. 
Scanlab, Camebridge etc.). Die PID-Regelung muss 500 mal in der Sekunde 
(500 Hz) den Winkel des Galvos so einstellen, dass er auf 0,25° genau 
den vorgegeben Winkel trifft. Die einzustellenden Winkel liegen bei 
einem Schritt eng beieinander (genaue Werte können wir nicht nennen, da 
je nach Drehmoment des Galvos eine unterschiedliche Performance erreicht 
werden kann). Da sich das Verhalten des Galvos mit der Zeit auch 
verändert (mechanische Alterung), wäre eine selbstlernende PID-Regelung 
super.

Die Reglerkarten der Hersteller von Galvos schaffen oben genannte 
Anforderungen problemlos zu lösen, kosten aber auch demendsprechend viel 
Geld, da sie viel Funktionen bereitstellen, die wir für unsere Anwendung 
nicht benötigen.

Jetzt die Frage an euch: Gibt es Setups, mit denen es kostengünstig 
möglich ist diese Anforderungen zu erfüllen? Mit kostengünstig meine 
ich, die genannten Anforderungen zum günstigsten Preis zu erfüllen. Ich 
bin auch über günstige Standardlösungen froh, wo die Leistungsbauteile 
schon integriert sind.

Eine schöne Adventszeit und liebe Grüße,

wünscht Stefan

Autor: Lars R. (lrs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermutlich hast Du bereits recherchiert und nichts entsprechend Deiner 
Vorstellungen gefunden?

Falls Dein Post eine Anfrage sein soll, so wäre wenigstens das 
Hinterlegen von einer Kontaktmöglichkeit (zB mittels Anmeldung im Forum) 
günstig.

Ebenso könntest Du konkretisieren was genau Du suchst bzw. selbst 
kannst. Ich rate einmal: Leistungsbauteile und Sensorik beherrscht Ihr? 
Welche? Und Du suchst ein FPGA-Design?

Grüße,
Lars

Autor: Stefan Lanker (alchemia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lars.

Vielen Dank für deine Antwort. Also wir sind Physiker. Wir selbst sind 
jetzt komplett neu auf dem Gebiet, aber in Kürze bekommen wir einen 
Elektroniker zur Unterstützung. Weil das ganze aber (wahrscheinlich) mit 
ziemlich großen Investitionen verbunden ist, wollte ich mich noch hier 
im Forum umhören.

Bezüglich deiner Anfrage:

Die Sensorik ist relativ einfach, es handelt sich dabei lediglich um 
einen digitalen Encoder der den aktuellen Winkel des Galvos an unsere 
Steuerung senden würde.

Ob wir uns die Leistungsbauteile selber zusammenbauen, kommt ganz darauf 
an was es vorgefertigt gibt. Aber bis jetzt schaut es so aus, als ob wir 
uns das selber bauen müssen.

Bezüglich elektronischen Bauteilen (FPGA oder andere Komponenten) sind 
wir ganz frei, falls es leistungsfähige µCs gibt die diese Aufgabe 
erledigen können, sind wir heilfroh, weil das leichter zu programmieren 
ist (keiner von uns kann zur Zeit VHDL).

Beste Grüße,

Stefan

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit 500 Updates pro Sekunde bist du locker im Bereich von 
Mikrocontrollern und brauchst dir um FPGAs eigentlich keine Sorgen 
machen. Vermutlich tuts ein kleiner STM32 ganz gut, die haben naemlich 
sehr ausgefeilte PWM Hardware die man gut zur Motoransteuerung benutzen 
kann. Bei den paar Updates kannst du das ganze wsl sogar in float 
rechnen und sparst dir die fixpunktarithmetik.

Autor: Lars R. (lrs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die PID-loop Frequenz 500Hz? Oder soll mittels PID 500 mal pro 
Sekunde ein Fehler von 0,25° unterschritten werden?

Autor: Stefan Lanker (alchemia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für eure Antworten.

Also die PID sollte den Motor so steuern, dass 500 mal pro Sekunde ein 
Fehler von 0,25° unterschritten wird. Ich denke, dass die 
Kontrollstruktur da sicher im zweistelligen kHz bereich getaktet werden 
muss. Geht das mit einem leistungsfähigen µC?

Liebe Grüße,

Stefan

Autor: Martin S. (strubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan L. schrieb:
> Vielen Dank für eure Antworten.
>
> Also die PID sollte den Motor so steuern, dass 500 mal pro Sekunde ein
> Fehler von 0,25° unterschritten wird. Ich denke, dass die
> Kontrollstruktur da sicher im zweistelligen kHz bereich getaktet werden
> muss. Geht das mit einem leistungsfähigen µC?
>

Mit einem Blackfin DSP geht sowas locker, um 500 Hz vermutlich auch mit 
einem STM32, wenn er deine Feedback-Werte abrissfrei per DMA reinkriegt. 
Ich würde da auch nicht mit dem FPGA draufhauen, inzwischen ist wohl 
auch ein DSP überdimensioniert. Frühe zu fällende Entscheidung ist 
allerdings float (bequem, ev. lahm) versus fixpunkt 
(stabil/fehlerkontrolle)
Ist ja eigentlich nur ein digitaler Lock-in, der nicht sonderlich viele 
Operationen verbrät, der grösste Kuchen wäre wohl das Interface und eine 
clever aufgesetzte DMA-Verarbeitungskette. Beim STM32 habe ich 
allerdings mit schnellem DMA-Dateneinzug keine Erfahrung.

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guest schrieb:
> Mit 500 Updates pro Sekunde bist du locker im Bereich von
> Mikrocontrollern und brauchst dir um FPGAs eigentlich keine Sorgen
> machen. Vermutlich tuts ein kleiner STM32 ganz gut, die haben naemlich
> sehr ausgefeilte PWM Hardware die man gut zur Motoransteuerung benutzen
> kann.

(genaue) Galvanometer sind keine Motoren im eigentlichen Sinne und 
werden daher eher selten per PWM gesteuert, da ist eher ein 
DigitalAnalog-Wandler zwischen Controller und Galvo geschaltet. Eure 
Anwendung klingt überschlagsweise nach  11 bit Minimum (0,25° 
Genauigkeit auf 360° Auslenkung), also sollte es ein controller sein der 
11bit auf einmal setzen kann. Bei 500 Hz und 20 MHz µC Clock habt ihr 
ein paar zehntausende Operation per Position, das sollte auch für einen 
kleinen µC locker schaffbar sein.

Die Alterung kann man ausrechnen, in dem man die Geschwindigkeit des 
Galvos ermittelt (die Ist-Position sollte vom Galvo latenzstabil 
zurückgemeldet werden). Diese Werte kann man im EEPROM ablegen oder on 
the Fly ermitteln. Das stellt einie Anforderungen an das IRQ-System des 
controllers und/oder die Genauigkeit der internen Zählers, sollte aber 
auch im Bereich des üblichen liegen. Bei ARM's mit nested IRQs sollte 
man aber vielleicht mal einen Fachmann fragen, wie genau man die Zeit 
zwischen zwei ereignissen (Soll-Position über DA an Galvo; stabile 
IST-POS über AD von Galvo messen kann.

Ggf, kann man die on-board AD DA-Wandler des µC nutzen.

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C. A. Rotwang schrieb:
> 0,25°
> Genauigkeit auf 360° Auslenkung

Das Galvo mit 360 Grad Auslenkung möchte ich sehen.
Mein Hauptgeschäft sind seit 30 Jahren Galvoscanner und das 
360Grad-Galvo wäre die Weltsensation.

Praktisch laufen die Galvos zwischen 40 und 80 Grad Auslenkung optisch.
Optisch heisst, die mechanische Auslenung ist die Hälfte (20-40 Grad).

0,25 Grad auf egal 40 oder 80 Grad sind ja gar nichts! Was soll denn 
damit gescannt werden? Das sind schlechter als 4 Millirad und das müsste 
eigentlich der schlechteste und billigste Chinascanner auch ohne 
spezielle Regelung und Alterungskompensation hinbekommen.
Einen Cambridge oder Scanlab dafür zu missbrauchen wäre schon fast ein 
Sakrileg :-)
In der Praxis sind 12 bis 16 Bit Auflösung "normal", also eher 0,001 
Grad Auflösung oder ein paar Zehn-Mikrorad.
Und genaus das (die nötige Auflösung von 16 Bit) macht diese ganzen 
schnellen Digitalregler dann auch ganz schnell ganz teuer und aufwändig.
Daher werden die Galvos meistens per analogen Regler mit vorgeschaltetem 
DAC zur Softwaresteuerung betrieben. Die kosten dann nur einen Bruchteil 
und laufen zuverlässig.

Ihr meintet doch sicher 0,25 Millirad anstatt Grad, oder?

Gruß

Joachim

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joachim schrieb:
> C. A. Rotwang schrieb:
>> 0,25°
>> Genauigkeit auf 360° Auslenkung
>
> Das Galvo mit 360 Grad Auslenkung möchte ich sehen.
> Mein Hauptgeschäft sind seit 30 Jahren Galvoscanner und das
> 360Grad-Galvo wäre die Weltsensation.

Den unrealistischen Vollkreis-Galvo habe ich bewußt in der Abschätzung 
eingesetzt um die Physiker mal zum Nachdenken und genaueren Beschreibung 
ihrer Anordnung zu bewegen. Das sollte doch auch ohne Unterstützung 
durch einen Elektroniker möglich sein.


> 0,25 Grad auf egal 40 oder 80 Grad sind ja gar nichts! Was soll denn
> damit gescannt werden? Das sind schlechter als 4 Millirad und das müsste
> eigentlich der schlechteste und billigste Chinascanner auch ohne
> spezielle Regelung und Alterungskompensation hinbekommen.
> Einen Cambridge oder Scanlab dafür zu missbrauchen wäre schon fast ein
> Sakrileg :-)
> In der Praxis sind 12 bis 16 Bit Auflösung "normal", also eher 0,001
> Grad Auflösung oder ein paar Zehn-Mikrorad.

Genau, die Bitbreite der AD/DA-Wandler ist entscheidend so wie die 
Samplingdauer. Für Integrierten µC-Wandler ist schnell bei 8/10 bit 
(Portbreite) Schluß, von messzeiten von SigmaDelta Wandlern garnicht 
erst zu Reden.

> Und genaus das (die nötige Auflösung von 16 Bit) macht diese ganzen
> schnellen Digitalregler dann auch ganz schnell ganz teuer und aufwändig.

Das mit dem "Ganz teuer" sollte man mal hinterfragen, vom Materialpreis 
finde ich persönlich für einen kleinen FPGA und 12 bit 50 MS/s 
DA-Wandler (grob geschätztz beides zusammen 40€) für einen Laserscanner 
im Gesamtpreis eher mariginal (im Vergleich zu Optik, 
Mechanik,Laserquelle).

Was den Aufwand betrifft ist natürlich die Entwurfserfahrung 
entscheidend. Wer seit Jahrzehnten schnell Messschaltung baut, ist da 
nach ein paar Wochen schon mit einem Prototypen weit, während ein 
Arduino-Geschlagener noch an der Lernkurve Digitale Signal Verarbeitung 
sitzt.


> Daher werden die Galvos meistens per analogen Regler mit vorgeschaltetem
> DAC zur Softwaresteuerung betrieben. Die kosten dann nur einen Bruchteil
> und laufen zuverlässig.

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C. A. Rotwang schrieb:
> Das mit dem "Ganz teuer" sollte man mal hinterfragen, vom Materialpreis
> finde ich persönlich für einen kleinen FPGA und 12 bit 50 MS/s
> DA-Wandler (grob geschätztz beides zusammen 40€) für einen Laserscanner
> im Gesamtpreis eher mariginal (im Vergleich zu Optik,
> Mechanik,Laserquelle).

12 Bit sind aber für einen Galvoregler wie gesagt schon Untergrenze.
Es gibt ja schon lange zahlreiche Digitalregler für Galvos auf dem 
Markt.
Aber niemand würde einen relativ teueren Regler entwickeln, der dann im 
Vergleich zu einem Analogtreiber derart schlechte Daten hat. Den würde 
niemand kaufen.
In der Praxis werden die Galvos für die etwas anspruchsvolleren Aufgaben 
mit 14 bis 16 Bit angesteuert. 12 Bit ist in der Unterhaltungsbranche 
(Lasershow) gängig, wo es nicht so darauf ankommt.
Um den Scanner aber seitens der Applikation auf 16Bit genau zu 
positionieren muss die erzielbare Reglerauflösung höher liegen, sonst 
macht das ja keinen Sinn. In der Industrie werden die Scanner schon oft 
mit 18 Bit angesteuert und die Regelauflösung geht hin bis zu 24Bit.

"Materialpreis" ist in der Elektronik nur bei größeren Stückzahlen ein 
Problem. Und ja, ob der Regler nun 200,- oder 1000,- Euro kostet, bei 
oftmals Zehntausenden Euro teueren Lasern, ist für EINE spezielle 
Anwendung vielleicht auch egal. Stimmt.
Aber das Bauteil selbst (Mikrokontroller oder FPGA) ist auch selten das 
Problem.
Ich kaufe einen Mikrokontroller für 10,- Euro und entwickle für 10.000,- 
oder 30.000,- Euro die Firmware. Wo liegen also jetzt die Kosten?
Wer natürlich in ein paar Tagen einen fertigen FPGA-basierten 
Galvoregler entwickelt, der darf sich ganz ganz schnell bei mir melden 
;-)
Firmen wie Cambrigde, GSI oder auch Pangolin (ScannerMax) haben Jahre 
daran herumgewerkelt und viele sind bis heute immer noch nicht fertig 
bzw. die Regler haben immer noch Kinderkrankheiten.
Und viele der Digitalregler sind "Hybride", d.h. die Digitaltechnik wird 
nur für die Userschnittstelle benutzt und im Hintergrund arbeitet ein 
alter bewährter analoger Regler.

Ich möchte auch erinnern dass der TO einen "günstigen Preis" erwähnt 
hat.

Analogregler dagegen sind seit 40 Jahren gängig. Die Schaltung ist 
bekannt und es ist keine Raketentechnik dafür nötig. Die Entwicklung 
beschränkt sich auf ein sauberes Platinenlayout und die Regleranpassung. 
Materialpreis ab 20,- Euro. Fertige Treiber gibt es von unter 100,- bis 
300,- Euro zu kaufen.
Natürlich sind die dann äußerlich nicht so toll mit zig LEDs, Anzeigen, 
Softwareschnittstelle und Firmwareupdatefuntkion. Aber sie verrichten 
ihren Job.

Gruß

Joachim

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.