Forum: Mikrocontroller und Digitale Elektronik Suche µC Board für Multitasking Aufgabe


von Almund Hofgeier (Gast)


Lesenswert?

Hi, ich suche ein µC Board , etwa Beagle Bone , Raspberry 
,Arduino,Banana PI dass einen Messwert misst, in 20 bis 100 ms einen 
Regleralghoritmus durchläuft um einen Schrittmotor zu verstellen und 
dann einfach den Messwert noch speichert.
Es wäre auch gut, dass die CPU während des Motorumstellens weiterhin 
messen kann.
Dafür müsste das ganze ja multitaskingfähig sein oder ?

Danke sehr!
Guten Tag noch :)

von Peter II (Gast)


Lesenswert?

Almund Hofgeier schrieb:
> Dafür müsste das ganze ja multitaskingfähig sein oder ?

komisch - wurde nicht erst die selber Frage gestellt?

Findet jemand den Thread?

Es kommt auf die CPU-Leistung an die du für eine Regelstrecke brauchst. 
Vermutlich reicht ein µC ohne Multitasking. CPUs können zwar oft nur 
dinge nacheinander machen, wenn sie das aber schnell genug machen denkst 
du das es gleichzeitig ist.

Du musst einfach so Programmieren, das das Programm nirgends festhängt. 
(Statemaschine, Timer usw.)

von Dominik N. (Firma: (https://domes-finest.de)) (dominik280)


Lesenswert?

Hallo Almund,

mit allen diesen Boards solltest Du eine Lösung auf dein Problem finden 
können. Multitaskingfähig wird z.B. ein Raspberry mit dementsprechenden 
Betriebssystem. Wenn Du Raspbian nimmst solltest Du hier keine Probleme 
haben mit parallele Threads arbeiten zu können.
Jetzt kommst Du nur an den Punkt, an dem Du mit Hardware kommunizieren 
musst. Wenn Du elektrotechnisch bewandt bist, sollte Dir z.B. die 
GPIO-Pin's vom Raspberry PI ausreichen einen Analogwert zu messen und 
einen Schirttmotor zu steuern.

Mfg Dominik

von Axel S. (a-za-z0-9)


Lesenswert?

Almund Hofgeier schrieb:
> Hi, ich suche ein µC Board , etwa Beagle Bone , Raspberry
> ,Arduino,Banana PI dass einen Messwert misst, in 20 bis 100 ms einen
> Regleralghoritmus durchläuft um einen Schrittmotor zu verstellen und
> dann einfach den Messwert noch speichert.

Kanonen auf Spatzen. Im Prinzip kann das ein ATtiny. Die eigentliche 
Anforderung kommt von der Hardwareseite: was muß gemessen werden? Wie 
wird der Schrittmotor angesteuert?

> Es wäre auch gut, dass die CPU während des Motorumstellens weiterhin
> messen kann.
> Dafür müsste das ganze ja multitaskingfähig sein oder ?

Jeder µC ist multitaskingfähig. Etwas messen oder einen Meßwert 
empfangen macht die Hardware ganz alleine. Und wenn die CPU gebraucht 
wird, dann löst die Hardware einen Interrupt aus und im Interrupt- 
Handler macht die CPU den Rest.

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerd auch davon ausgehen, dass ein einfacher Controller wie ein 
AVR, zB ein Arduino, das kann. Alle 20-100ms einen Stellwert neu rechnen 
und Ausgeben ist eher einfach.
Fuer eine genauere Auskunft sollten wir noch etwas zum Regelalgorithmus, 
und zu den Sensoren hoeren. Ein PID ?

: Bearbeitet durch User
von Draco (Gast)


Lesenswert?

Also dafür nen Raspi oder ähnliches zu nutzen, das ist wie mit nem 
Ferrari Sonntag frühs zum Bäcker fahren um zwei Brötchen zu holen.

Mein aktuelles Projekt z.b. bekommt alle 10ms nen 24byte Datenstream 
über UART, verarbeitet einen Regelalgo mit diesen (ja sogar alle mit 
32bit Division), steuert damit drei Servos an, wertet ein Analogsignal 
aus, berechnet diesen und schickt dieses per UART zurück zum Rechner, 
wartet auf Ack und erwartet den nächsten Stream, dafür braucht er 
insgesammt pro Durchlauf ~20ms (und da is das warten auf die UART die 
längste Zeit!) - und das alles auf nem popeligen Tiny2313.

Wenn man sich nun nicht völlig im Code verhaut, dann ist das umstellen 
des Schrittmotors (4 Phasen) mit einem Systemclock getan. Die 
Positionsbestimmung sowie die weiteren Schritte können ja via Timer 
laufen und nebenher weiter die Sensoren abfragen.

Raspi, Banana o.ä. ist völlig überzogen für so ne Aufgabe.

Aber wie gesagt: WAS für Sensoren willst du nutzen, WELCHEN Motor bzw. 
WELCHEN Treiber willst du nutzen.

von Markus F. (mfro)


Lesenswert?

Wahrscheinlich machst Du dir's mit einem Pi nur unnötig schwer.

Der hat ein Linux-Betriebssystem, das nur sehr begrenzt "echtzeitfähig" 
ist. Da kann es schon mal sein, dass ein Taskwechsel deutlich länger 
dauert als normalerweise.

Falls es für die Aufgabe beispielsweise notwendig wäre, GPIO-Pins 
möglichst zeitgleich einzulesen (weil sie einen Bus darstellen oder 
sonst irgendwie logisch zusammenhängen), wirst Du dafür Interrupts 
sperren müssen. Das ist für ein Linux-Userspace-Programm ein no-go, also 
brauchst Du für den Fall einen eigenen, speziellen Treiber (der das darf 
und kann).

Das ist nicht unmöglich, aber deutlich mehr Aufwand, als einem einfachen 
µC einen passenden Interrupt-Handler zu verpassen.

Für einfache Aufgaben, bei denen es nicht so sehr auf verlässliche 
Reaktionszeiten ankommt, kann der Pi aber durchaus geeignet sein.

von Almund Hofgeier (Gast)


Angehängte Dateien:

Lesenswert?

Habe mal die grobe Skizze der Schaltung im Anhang.

Ein Ziel ist es den Luftdurchfluss zu messen , also benötigt man einen 
Luftdurchflusssensor. Zum Beispiel Honeywell für 32,99 € Euro .
Dieser ist mit I2C ansprechbar. Andere teuerere geben eine Spannung 
aus..
Ist I2C eigentlich schneller zu lesen als ADC? :D

https://www.conrad.de/de/luft-durchfluss-sensor-haf-bsf-0200-c4ax5-zephyr-serie-honeywell-haf-bsf-0200-c4ax5-200-cmmin-506697.html


Dann noch einen Schrittmotor: Zum Beispiel einen von Trinamic für 28 €
Ist bestimmt schnell anzusprechen über GPIOs des µC.
Muss dafür eigentlich eine H-Brücke aufgebaut werden , wegen den 
Richtungen? :D

Trinamic Test-Motor TMCM QSH4218 0 - 40 V/DC Halte-Moment 0.27 Nm 
Phasen-Strom (max.) 1 A


Vielen Dank !
Grüße Hr. Hofgeier

von Dominik N. (Firma: (https://domes-finest.de)) (dominik280)


Lesenswert?

Mh.. also wenn ich sehe was Du vor hast, würde ich an deiner Stelle mit 
Codesys RT auf ein Raspberry zum laufen bringen und dann in Codesys 
selbst die Auslegung für Bedienung (WebVisu), Logger, PID-Regler 
vornehmen.

Mit allem anderen weitern steht Dir erstmal viel Entwicklungsaufwand an.

von Eric B. (beric)


Lesenswert?

Peter II schrieb:
> Almund Hofgeier schrieb:
>> Dafür müsste das ganze ja multitaskingfähig sein oder ?
>
> komisch - wurde nicht erst die selber Frage gestellt?
>
> Findet jemand den Thread?

Beitrag "arduino multitasking mit freeRtos"

Die grobe Skizze zeigt eigentlich nichts wass wir nicht schon wußten. 
Ich schließ mich Axel und Draco an: einen ATTiny darf das locker 
schaffen: Die ganze Visualisierung und Bedienelemente einfach am PC 
machen, an das Tiny gehen nur neue Regelwerte für den PID, zurück vom 
Tiny kommen die Messwerte. Fertig ist das Praktikum.

: Bearbeitet durch User
von Draco (Gast)


Lesenswert?

Dein gewählter Luftmesser ist aber ein Durchflussmesser, wie willst du 
den vor das Rohr bringen bzw. wie willst du das Rohr mit dem Sensor 
verbinden?!

Im übrigen würde sich ein Servo für die Klappensteuerung besser eignen. 
Mal so am Rand. Da sparst du dir die H Brücke bzw. Treiber - und änderst 
immer nur einmal einen Puls auf der PWM zum Servo.- das kostet ein 
Systemclock Zeit (OCRxn = y). Und schon ist das Thema (bzw. isses bei 
dir ja Angst!) Multitasking vom Tisch.

Warum braucht man eigentlich in solch einem Anwendungsfall so hohe 
Geschwindigkeiten?! o.O

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.