PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche nach Mikrocontrollerboard



Moppi
25.05.2020, 11:41
Hallo zusammen,


ich werfe meine Problematik mal in die Forenrunde, vielleicht hat jemand eine
weiterführende Idee, im Moment hänge ich da irgendwie fest.


Ich bin zurzeit mit mit zwei Nema17 und der Ansteuerung zugange.
Aufgrund sauberer Übergänge, bei Geschwindigkeitswechseln und Beschleunigung,
habe ich nun eine Variante mit 2 bis 3 Timern auf einem ATmega328P, programmiert.
Davon brauche ich dann für jeden Motor einen und die müssen dann untereinander
verknüddelt werden. Wegen der Zahlreichen I/O-Verbindungen habe ich überlegt,
ob ich einen anderen Mikrocontroller nehmen könnte. Wenn ich zwei Motoren
steuere und dafür 2 bis 3 Timer verwende, brauche ich eine Menge Timer, die
ansich ein Arduino Mega bieten würde. Allerdings scheinen mir dann die 16MHz
zu wenig zu sein und der Mega ist auch nicht gerade klein, wenn ich den als
vollständiges Board nehmen würde. Dann dachte ich an einen ESP32, da finde ich
aber nichts über die Timerprogrammierung, wie beim Arduino Uno bspw.
Da ja noch ein paar mehr Sachen dazu kämen, wie Ultraschall und evtl. andere
Sachen, wo ich noch gerne einen Timer einsetzen würde/könnte, bräuchte ich
in etwa sowas:


- ca. 10 programmierbare Timer
- 80MHz CPU-Takt oder mehr
- viel RAM (1MB bis 4MB evtl.) und Flash für SPIFFs (4 bis 8MB), wobei man Flash sicher durch SD-Karte ersetzen könnte.
- onBoard WLAN wäre auch nicht schlecht, wobei ich dies auch irgendwie nachrüsten würde


Irgendwie komme ich mit den Anforderungen aber zu keinem Ergebnis bisher, was ich da nehmen könnte.


Freundliche Grüße
Moppi

wkrug
25.05.2020, 13:49
Ich würde da lieber ein eigenes Board entwickeln.
Ich denk mal mit nem ATXMEGA sollte da was möglich sein.

Guck mal hier (http://ww1.microchip.com/downloads/en/DeviceDoc/30010135E.pdf)

Moppi
25.05.2020, 14:17
Ja, selber bauen. Dafür suchte ich eine Alternative :)

wkrug
25.05.2020, 14:59
Es gibt auch diverse X-Plain Boards.
Wie das hier (https://de.rs-online.com/web/p/entwicklungskits-prozessor-mikrocontroller/1306941?cm_mmc=DE-PLA-DS3A-_-google-_-CSS_DE_DE_Halbleiter_Whoop-_-(DE:Whoop!)+Entwicklungskits+Prozessor+%26+Mikroco ntroller-_-PRODUCT_GROUP&matchtype=&pla-299706312370&gclid=EAIaIQobChMI88T2zZXP6QIV2-vtCh37HwZIEAQYAyABEgKQZ_D_BwE&gclsrc=aw.ds) z.B.

HaWe
25.05.2020, 15:07
https://www.pjrc.com/teensy/techspecs.html
https://forum.pjrc.com/threads/44909-informations-about-teensy-3-6-timers?p=146112&viewfull=1#post146112

Moppi
25.05.2020, 15:51
Danke! Ich werde mich ein wenig mit dem Teensy 3.6 beschäftigen. Den hatte ich nicht auf dem Plan.


MfG

HaWe
25.05.2020, 17:25
der 3.6 ist sogar multihreading-fähig, um mehrere threads pseudo-parallel zu betreiben, ohne dass sie andere behindern auch wenn sie länger brauchen pro Durchlauf
https://github.com/ftrias/TeensyThreads
https://github.com/ftrias/TeensyThreads/blob/master/examples/Blink/Blink.ino

Moppi
25.05.2020, 19:12
Weil jetzt Multithreading ins Spiel kommt, habe ich über die gesamte Aufgabenteilung nachgedacht.
Bei Timer-Interrupts besteht schon das Problem, dass ein Ereignis ausgesetzt wird, wenn ein anderes
noch nicht abgearbeitet ist. Bei 2 Timern, auf einem 328P, fällt das nicht auf, bei dem Code,
der drauf ausgeführt wird. Das ist noch übersichtlich.
Wenn ich auf einer CPU mit mehreren Timern parallel arbeite, weiß ich nicht, wie das dann mit
den Kollisionen aussieht. Geht vielleicht auch noch unmerkbar vorüber, wenn die CPU schnell
genug ist. Aber was passiert, wenn noch mehr Code hinzu kommt, der "parallel" ausgeführt wird.
Fällt das bei zeitkritischen Dingen nicht irgendwann auf, indem es an irgendeiner Stelle hängt und
hakt? Da fehlt mir so ein bißchen die Erfahrung und Vorstellung, wie geschmeidig das alles in allem
dann so läuft. Der Teensy 3.6, mit 180MHz, ist schon eine Hausnummer, denke ich, in Sachen
Geschwindigkeit. Beim ESP32 gibt es sogar 240MHz. Immerhin ist der Teensy 10mal schneller getaktet,
als ein ATmega328P. Beim Teensy habe ich noch nichts gefunden, wie die Timer (sind das alles Hardwaretimer?)
programmiert werden. Sind die Register identisch mit denen von einem Arduino? Es gibt eine Bibliothek,
die verschiedene "Timer" zur Verfügung stellt; allerdings - wenn ich das richtig verstanden habe,
regelt die das nicht per Hardwaretimer sondern die Aufgabenverteilung ist eine Softwarelösung (?).
Weiter bin ich noch nicht voran gekommen. Das sind noch einige Fragen bei mir offen.


Der Teensy 4.0 wäre auch noch eine Möglichkeit.
Der ist richtig schmal, 2.5mal so groß, wie ein 328P im DIP-Gehäuse.


MfG

HaWe
25.05.2020, 20:06
Das preemptive MT läuft absolut geschmeidig und seine threads behaken sich auch nicht, wenn etliche davon parallel ausgeführt werden, und außerdem sind immer noch Interrupts zusätzlich möglich. Schon 100MHz wären für das MT ausreichend.

Mxt
26.05.2020, 06:41
Wenn man eher in Timern als in Threads denkt, gäbe es z.B. diese Library
https://github.com/luni64/TeensyTimerTool/wiki
bietet neben den Hardwaretimern auch 20 in Software realisierte Timer. Steht auf meiner Liste der Dinge, die ich mir mal ansehen will.

Den Teensy 4.0 gibt es inzwischen auch als 4.1 im langen Format (ähnlich 3.6).

Moppi
26.05.2020, 08:09
Ja und ich dachte, die LIB macht nur 20 Software-Timer.

Allerdings mit gut 40 Euronen etwas überdimensioniert. Ich überlege mir das noch.

Mxt
26.05.2020, 08:23
Allerdings mit gut 40 Euronen etwas überdimensioniert. Ich überlege mir das noch.
Vielleicht erst mal die Preise vergleichen
https://www.exp-tech.de/plattformen/teensy/

Bei meinen meisten Teensy Projekten bin ich bisher mit einem IntervalTimer ausgekommen, der verschiedenes tut, z.B. mehrere Encoder auslesen. Die Rechenleistung ist so hoch, dass das normalerweise reicht.

Und wenn du Stepper steuern willst, schau mal hier rein
https://github.com/luni64/TeensyStep
Denke mal, du brauchst gar nicht so viele Timer, nur Kanäle von einem:

Each StepControl object requires one IntervalTimer and two channels of a FTM timer. Since all supported Teensies implement four PIT timers and the FTM0 module which has 8 timer channels the usage is limited to 4 StepControl objects existing at the same time.

Moppi
26.05.2020, 08:41
Bei meinen meisten Teensy Projekten bin ich bisher mit einem IntervalTimer ausgekommen..

Glaube ich Dir. Ich benutze die Timer für korrekte Intervalle beim Schrittmotor, weil die schon mal da sind, kann man das ja auch so machen. Das bietet sich dann an. Einen Timer für das Schrittintervall (also die Geschwindigkeit) und einen für die Beschleunigung (wie schnell die Werte von Quell- zu Zielgeschwindigkeit angepasst werden - das geschieht auch in Einzelschritten). Die Einzelschritte des Schrittmotors dann synchronisiert mit der Lochscheibe auf der Motorwelle.

Ich habe vorher schon eine andere Steuerung für NEMA17 programmiert (hatte aber Nachteile, die mir nicht gefallen - habe das in meinen Blog geschrieben); deshalb bin ich dann umgeschwenkt auf die Hardware-Timer.

MfG