Otázka:
Propojení s RC přijímačem pomocí PWM na GPIO
Wyatt
2012-09-27 08:29:52 UTC
view on stackexchange narkive permalink

Už několik dní bojuji a na internetu se mi moc nepodařilo objevit. Dívám se na ČTENÍ z PWM výstupu RC přijímače přes jeden z GPIO na RPi. Četl jsem další otázky, kde to není vhodné pro „seriózní“ PWM, ale nechci to použít jako výstup. Při pohledu na knihovnu WiringPi jsem našel funkce, které mi umožňují psát PWM, ale těžko dostávám něco z GPIO, a to i při obecných čteních. Cítím , jako bych měl být schopen udělat něco jako tento tutoriál, ale neměl jsem štěstí. Pokouším se udělat něco, co je nad rámec toho, co v tomto okamžiku poskytly jakékoli knihovny, nebo mi chybí něco hloupého, než budu muset kopat do psaní montážního kódu, abych mohl komunikovat s věcí?

Pět odpovědi:
Avio
2012-09-30 15:59:08 UTC
view on stackexchange narkive permalink

Na vaši otázku nemohu odpovědět přímo, ale mohu se pokusit odpovědět na odpověď Alexe Chamberlaina.

Získání tvrdého reálného -časové schopnosti v Linuxu, až do rozlišení pod milisekundou, jsou možné. K tomu je třeba na zdroje jádra použít opravu nebo sadu oprav. Chcete-li zmínit několik, můžete použít Ingo Molnar's RT-Preempt Patch, Xenomai, RTAI nebo ADEOS. Další informace najdete zde, zde a zde.

Alex Chamberlain
2012-09-27 12:21:15 UTC
view on stackexchange narkive permalink

To není možné. K tomu potřebujete přesné načasování, které v systému Linux není možné.

Nejlepším řešením je zjistit, jak to provést na samostatném mikroskopu, a komunikovat s Raspberry Pi přes SPI nebo I2C. Může k tomu dokonce existovat IC.

veroy
2015-08-18 16:58:29 UTC
view on stackexchange narkive permalink

Můžete postupovat podle tohoto výukového programu: https://www.sparkfun.com/tutorials/348 a jedinou věcí, kterou musíte udělat, je zapsat tato data prostřednictvím USB na vaše malinové pi. Veselé kódování :)

Vítejte na Raspberry Pi! I když to může teoreticky odpovědět na otázku, [bylo by vhodnější] (http://meta.stackoverflow.com/q/8259) zahrnout zde podstatné části odpovědi a poskytnout odkaz pro referenci. Také výukový program zaměřený na arduino může zanechat OP více otázek než odpovědí.
WineSoaked
2015-08-18 20:54:33 UTC
view on stackexchange narkive permalink

Moje chápání čtení signálů PWM pro systémy v reálném čase je považovat je za analogové napětí (to je pravda, spustit jej obvodem RC a poté číst napětí pomocí analogově-digitálního převodníku / ADC).

Apropos: http://www.instructables.com/id/Arduino-RC-Circuit-PWM-to-analog-DC/?ALLSTEPS

Více inženýrských prací, jistě, ale levnější než nasazovat Arduino, aby bylo možné provádět v reálném čase práci se čtením pulzů PWM s přerušením výměny kolíku: http://www.benripley.com/diy/arduino/ tři způsoby, jak číst-a-pwm-signál-s-arduino /

mapt
2019-12-09 15:26:55 UTC
view on stackexchange narkive permalink

Toto dělá poměrně přesnou práci při čtení pwm fq a dutyCycle, pokud je signál < 50 Hz:

  #! / usr / bin / python2.7import RPi.GPIO jako gpiofrom datetime import datetimefrom čas import spánku, timegpio.setmode (gpio.BCM) gpio.setup (2, gpio.IN) globální stoupajícíCountglobal pulseWidthglobal timeStartrisingCount = 0pulseWidth = 0timeStart = 0def edgeDetected (kanál): globální stoupajícíCount globální pulzníWidth globální (2): #rising edge riseCount + = 1 timeStart = time () else: # sestupná hrana if (riseCount! = 0): timePassed = time () - timeStart #make pulseWidth průměrná pulseWidth = ((pulseWidth * (rostoucíCount- 1)) + timePassed) /risingCountgpio.add_event_detect (2, gpio.BOTH, callback = edgeDetected) while True: sleep (1) print "PWM = {0} hz, dutyCycle = {1}%". Format (riseCount, round (pulseWidth * riseCount * 100,2)) riseCount = 0 pulseWidth = 0  

Věřím Můžete zvýšit přesnost zvýšením doby spánku (nezapomeňte vynásobit hz 1 / dobu spánku) pro větší průměry.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...