Forum: Mikrocontroller und Digitale Elektronik Blue Pill unter Arduino und RC-Model Servo-Signale


von Jasson J. (jasson)


Lesenswert?

Hallo zusammen,

ich habe schon etwas recherchiert, und bin bereits positiver Dinge, dass 
mein Anliegen umsetzbar ist.
Es handelt sich um "Sateliten" mit begrenzten Aufgaben, weshalb ich 
versuche in diesem Fall mit Arduino auf Kosten von Rescourcen einfach 
ans Ziel zu kommen.

>>Fuzzy Bestandsaufnahme
>Servo.h
Ich habe schon gesehen, dass es eine Servo.h gibt, die scheinbar die 
Compare-Match-Hardware verwendet, welche an den Boardpins ankommen.
Das ist schon mal gut.
https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/Servo

>Summensignal
Ich habe ebenfalls gesehen, dass jemand unter dem Ardu-Framework das 
Summensignal eingelesen hat.

>>Frage (zum verfestigen meiner positiven Hoffnung):
A) weiß jemand ob sich neben der Servo.h mit Inputcapture-Interrupts 
arbeiten lässt?
B) Bzw. generell, ob ich unter dem Ardu-Framework auf der Bluepill an 
die Interrupt-ISR komme? Gibts da ggf. eine Bibliothek die vll. nach 
einem Notifier-Pattern arbeitet?


viele Grüße :>

von Stefan F. (Gast)


Lesenswert?

Jasson J. schrieb:
> Es handelt sich um "Sateliten" mit begrenzten Aufgaben

Das kann alles und nichts bedeuten. Was sind denn für dich "Satelliten"? 
Und hat nicht alles "begrenzte Aufgaben"?

Jasson J. schrieb:
> weiß jemand ob sich neben der Servo.h mit Inputcapture-Interrupts
> arbeiten lässt?

Wenn du dafür einen anderen Timer verwendest, dann geht das.

Jasson J. schrieb:
> ob ich unter dem Ardu-Framework auf der Bluepill an
> die Interrupt-ISR komme

Diese Frage verstehe ich nicht. Was bedeutet "and die ISR komme"?

Programmiere das Board doch einfach bare-metal ohne Framework. SO schwer 
ist das nicht. Hier hast du ein paar Codeschnipsel zum Anfangen: 
http://stefanfrings.de/stm32/stm32f1.html

von Jasson J. (jasson)


Lesenswert?

Mit "Satellit" meinte ich sinngemäß das, was z.B. auch bei N.1 
Soundsystemen Sateliten sind. Kleine Einheiten die zum Gesamtsystem 
gehören, aber verhältnismäßig einfach sind. Mir ist schon klar, das 
"verhältnismäßig" eine analoge Aussage ist.

Klar, ich würde mit dem STM32 auch barematel zurecht kommen, habe für 
was früheres eins von den Discoverys benutzt.
Im Moment bin ich auf TIVA-C unterwegs und will die spärliche Hobbyzeit 
nicht mit neuen IDE´s etc. belasten.
Daher will ich mir wie oben angemerkt auf Kosten von Rescourcen einen 
schlanken Fuß machen.
Time-To-PrivateUse :)

von Stefan F. (Gast)


Lesenswert?

Jasson J. schrieb:
> Mit "Satellit" meinte ich sinngemäß das, was z.B. auch bei N.1
> Soundsystemen Sateliten sind.

Ich erkenne den Zusammenhang zwischen Lautsprechern und Arduino mit 
Servos nicht.

Wenn das Ding so geheim ist, dann frag nicht!

von Jasson J. (jasson)


Lesenswert?

Dann bist du nicht in der Lage den Begriff Satelit zu abstrahieren.

Beitrag #6086163 wurde vom Autor gelöscht.
von Jasson J. (jasson)


Angehängte Dateien:

Lesenswert?

Ich habe es nu erfolgreich einfach drauf ankommen lassen und eine erste
Basis als quick and Dörte Machbarkeitsversuch hinbekommen.

Das ganze gibt auf 10 Pins entweder PWM von 0% - 100% oder ein
Modellbau-Servo-Signal mit 1ms - 2ms aus.
Dabei soll jeder Pin frei wählbar beides können.
Nach kurzen Analysen, was die Ardu-Bibliotheken hergeben, bin ich doch
teilweise zum Bitschubsen übergegangen.
Zudem wird über einen Input-Capture ein siebenkanaliges Summensignal
eingelesen, übernommen und verändert von hier
Youtube-Video "STM32 for Arduino - Connecting an RC receiver via input 
capture mode"

Da immer einige Compare-Match Kanäle vom stm auf der BluePill an den
selben Timer gebunden sind, müssen Timings und Wertebereiche gefunden
werden, die sowohl für den 0-100% PWM, wie auch den Servobetrieb
geeignet sind.

Herausgekommen ist bei einer Fsys von 72MHz ein PSC von 18, ergibt 4MHz
Timertaktung, was für eine Millisekunde 4000 Ticks macht, für 2ms
entsprechend 8000
und bei einem Reloadwert von 10000 eine Frequenz von 400Hz für den
PWM-Betrieb.
Um einzelne Pins zwischen 0-100% PWM und Servo-Signal um zu schalten,
wird das Update-Event Bit von Timer 4 verwendet um eine Funktion auf zu
rufen, wo bei jedem Pin je nach Modus der PinMode zwischen Normal und
Alternate Function umgestellt wird. Das heißt im Servo Mode wird für ein
paar Timerzyklen der Pin auf Standard-Mode geschaltet, welcher einfach
Low ist und der PWM auf die Art einfach geblankt wird.
Wegen diesem Ansatz läuft die PWM-Outputlogik mit invertierter
Polarität, um im Servobetrieb nach Ende einer Periode etwas Zeit zu
haben, den Pin in Standard-Mode zu schalten.


Eine simple Klasse "ActuatorPin" erleichtert abgesehen von
Initalisierungen das "Anpacken" der einzelnen Ausgangspins im
Programfluss.

Für diesen Versuch ist einfach ein Multiplexing mit 10 Slots auf Kanal 1
eingebaut.
Ein sinnvolles Konzept für eine Parametrierung von außen steht noch aus.

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.