Voinko käyttää GPIO: ta pulssinleveyden modulaationa ?
Jos näin on, miten aion tehdä sen ja kuinka monta samanaikaista, erillistä PWM-lähtöä minulla voi olla?
Kommentit
- Sinä luultavasti sinun on määritettävä malli, jota ’ käytät. Ne kaikki ovat hieman erilaisia.
- @ user1147688 Tämä kysymys palautettiin, kun vain yksi malli oli!
Vastaa
Kuten Alex Chamberlain ehdotti, WiringPi -kirjasto tulee näkyviin tukea sekä laitteiston PWM-ulostuloa yhdellä että kahdella GPIO-nastalla mallista riippuen ja ohjelmisto PWM -ominaisuutta millä tahansa muulla GPIO-nastalla. Samaan aikaan RPIO.PWM-kirjasto tekee PWM: n DMA: lla millä tahansa GPIO-nastalla. Käytännössä tämä on välituote laitteiston ja ohjelmiston PWM: n välillä, joka tarjoaa 1 µs-ajastustarkkuuden verrattuna 100 µs: iin WiringPi: n kanssa Ohjelmisto PWM [1] .
Mikä näistä sopii sovelluksiisi, riippuu siitä, kuinka monta PWM-lähtöä tarvitset ja minkä suorituskyvyn haluat näistä lähdöistä.
Jos sovelluksesi sietää matalaa ajoitustarkkuutta ja suurta värinää , voit käyttää ohjelmisto- tai DMA-avusteista ajastussilmukkaa. Jos haluat tarkempaa / alempana värisevää PWM: ää saatat tarvita laitteistoapua.
Milloin ohjelmistojen PWM voi sopia?
Jos haluat välähtää joukon LEDejä, joilla on erilaiset ihmisille näkyvät kadenssit (10 ”s hertz) -pehmeillä reaaliaikaisilla vastausvaatimuksilla, ohjelmistosilmukka pystyy käsittelemään niin monta PWM: ää kuin sinulla on GPIO-nastoja.
Kun saattaa laitteiston PWM sopia?
Jos haluat hallita palvelinta o moottori, jolla on kovat reaaliaikaiset vastausvaatimukset, sinun on käytettävä laitteisto-PWM: ää. Silloinkin sinulla saattaa olla vaikeuksia varmistaa reaaliaikainen vaste servosilmukalle, joka sitoo kooderin syötteen PWM-lähtöön.
Vakaa servosilmukka tarve lukea koodereita normaalilla nopeudella (matala värinää), kirjoittaa tarkistetut PWM-lähtöarvot säännöllisellä nopeudella ja niiden välinen latenssi tulee olla kiinteä (matala värinää). Jos et voi tehdä tätä, sinun on hienosäädettävä (pehmeä viritys), jotta moottori ei muutu epävakaaksi kuormitettuna. Tätä on vaikea tehdä monikäyttöisen käyttöjärjestelmän kanssa ilman matalan tason tukea.
Entä jos tarvitsen enemmän laitteisto-PWM-lähtöjä?
Jos sinun on suoritettava enemmän servosilmukoita kuin laitteisto-PWM-lähtöjä, sinun on todennäköisesti ladattava ne toiselle laitteelle kovan toiminnan varmistamiseksi reaaliaikainen suorituskyky, vadelma Pi: n asettaminen pehmeäksi reaaliaikaiseksi valvojaksi .
Yksi vaihtoehto olisi jotain, esimerkiksi Adafruit 16-kanavainen 12-bittinen PWM / Servo-ohjain – I²C-liitäntä – PCA9685 , jonka avulla voit hallita 16 PWM-lähtöä vain muutamalla GPIO-nastalla I²C-väylälle. Esimerkkinä sen käytöstä tutustu I²C 16-kanavaisen PWM / Servo Breakout – Työskentely -viestiin Raspberry Pi -foorumeilla.
1. Kiitos dm76 ehdotukselle, kuitenkin heather sanoo, että RPIO.PWM ei ehkä enää toimi uudemmissa pi-malleissa.
Kommentit
- Voinko käyttää ohjelmistopohjaista PWM-lähestymistapaa tasavirtamoottoreiden käyttämiseen?
- @gideon – Kyllä, kaikki käyttämäni moottorivahvistimet ovat ottaneet PWM: n tuloksi.
- FYI: llä, RPI-kirjastolla ( pythonhosted.org/RPIO/pwm_py.html ) näyttää olevan paljon parempi resoluutio (1us) verrattuna WiringPiin, jossa on 100us: n tarkkuus
- @MarkBooth – Ei ongelmia. Kirjasto on todella kirjoitettu ja sitä voidaan käyttää RPi.GPIO: n korvaavana korvikkeena, mikä on erittäin kätevää, jos aloitit projektin jälkimmäisellä ja myöhemmin huomasit, että PWM-signaaleja tarvitaan …
- RPIO. PWM ei ehkä enää toimi uudemmissa pi-malleissa.
Vastaa
Laitteiston PWM
Kyllä, Raspberry Pi: ssä on yksi laitteiston PWM-lähtö, joka on kytketty P1-12: een (GPIO18). Lisäksi PWM-lähdöt voitaisiin lisätä I²C – tai SPI -liitännällä; jotkut ihmiset ovat onnistuneet tässä ( keskustelupalsta ).
Esimerkkikoodi
Voit käyttää WiringPi-kirjasto PWM-nastan hallitsemiseksi; voit katsoa koodia välttääksesi koko kirjaston sisällyttämistä.
Ohjelmiston PWM
Raspberry Pi ei sovi mihinkään vakavaan PWM-ohjelmistoon, koska Linux ei ole reaaliaikainen käyttöjärjestelmä .
Kommentit
- Kysymys, mikä on vakavan ohjelmiston PWM: n määritelmä tai esimerkki? Ja mitkä ovat ” reaaliaikaiset käyttöjärjestelmät ” ja onko koskaan mahdollista saada yksi Pi: lle
- @AnthonyBlake No, voit todennäköisesti säätää valon kirkkautta PWM-ohjelmistolla, mutta epäilen moottorin pysähtyvän. ’ ei kuitenkaan tarvitse tehdä ohjelmisto-PWM: ää, laitteisto on yksinkertaisempaa ja tehokkaampaa. Reaaliaikaiset käyttöjärjestelmät selitetään paremmin Google; he takaavat tietyt asiat kuinka kauan ja usein ohjelmistoja käytetään.
- @AnthonyBlake A ” Reaaliaikainen käyttöjärjestelmä ” (RTOS) on käyttöjärjestelmä, joka antaa sinulle takuun suorituksen ylemmälle aikarajalle. Kuten sanomalla ohjelmalle ” Kyllä, sinulla on jonkin verran suoritusaikaa 33 ms: ssä (anna tai ota 2 ms: n toleranssi) kääntääksesi kyseisen GPIO-nastabitin antamaan askelmoottorille signaalin tarkasti aikaikkuna, kun hän sitä tarvitsee. Ja voit luottaa siihen! ” Siellä ’ on RT Linux siellä. Älä ’ tiedä, onko se ’ siirretty RPi: lle (vielä).
- Anteeksi Alex, minä didn ’ t varastanut tarkoituksellisesti toisen osan vastauksestasi, mutta olen ’ huomannut vain, että tulimme samalle foorumiviestille eri reittejä pitkin .
- Uudemmissa 40 nastalla varustetuissa malleissa on toinen laitteiston PWM kytketty GPIO19: een (nasta 35).
Vastaa
Viimeaikaisilla PIS-laitteilla on kaksi laitteiston PWM-kanavaa. Lisäksi laitteistolla ajoitetut PWM-pulssit voidaan muodostaa itsenäisesti kaikista 40-nastaiseen laajennusotsakkeeseen liitetystä GPIO: sta.
Käytännössä tämä tarkoittaa, että on olemassa kaksi erittäin tarkkaa PWM-kanavaa ja kaikilla muilla GPIO: lla voi olla Arduino-tyylinen PWM (800 Hz, 0 pois – 255 täysin päällä).
Esim servoblaster ja minun possu jne.
Kommentit
- Hieno vastaus! Kuinka voin käyttää näitä kahta HW PWM -laitetta? Minun täytyy hallita 2 servoa, tiedän, että sanot, että servoblaster ja pigpio ovat kunnossa, mutta ihmettelen vain HW PWM: ää, koska en löydä niistä mitään … onko siellä joitain asiakirjoja? Minulla on testejä varten RPi 2 V1.1.
- C , Python , sikojen komentorivi .
- Raskaan suorittimen kuormituksen ei pitäisi ’ tehdä ero. Raskas verkkokuormitus voi vaikuttaa gpioServoon varsinkin, jos näytteenotto on 1MHz eikä oletuksena 200kHz. Taajuus on 50 (Hz), käyttöjaksojen alue on 0 – 1000000 (yhdistettynä todelliseen alla olevaan arvoon 0 – 5000000). 1 ms on 1 ms 20 ms: ssä, joten 5%: n peräkkäisnopeus eli 50000, 1,5 ms- > 7,5% – > 75000, 2 ms – > 10% – > 100000.
- Sivu 102 / BCM2835 ARM -oheislaitteet näyttää eri tilat, joihin GPIO voidaan määrittää. Katso verkossa, mihin GPIO on johdettu eri Pi-mallin laajennusotsikoihin.
- @ user1147688 PLLD (500MHz) käytetään PWM-ytimen kellona. ” -tavasta johtuen PWM-ydintaajuus on 250 MHz, koska se toimii ”. Virran kytkeminen päälle ja pois päältä (melko välttämätöntä PWM: lle) on enintään 125 MHz. Voit kaksinkertaistaa luvut käyttämällä PLLC: tä (1000 MHz), mutta PLL vaihtelee ytimen kellotaajuuden mukaan.
Vastaa
Ei aivan reaaliaikainen käyttöjärjestelmä, mutta Raspberry Pi: n RISC-käyttöjärjestelmä on yhteistyöhön perustuva moniajo, joten voit helposti suorittaa sovelluksen, jossa on 100% suoritinta. voit hallita ajoitustasi paljon paremmin. Älä vain odota tekevän mitään muuta kuin omaa koodiasi.
Kommentit
- Luin jostain, että vaihtamiseen on laitteistoraja. myös lähtönipin taajuus. Luulen, että se oli noin 20 MHz. Joten älä ’ odota pystyvänsä vetämään 300 MHz: n PWM: ää tai mitä tahansa sellaista, jopa 100: lla. Prosessorin käyttöprosentti.
- @Wallacoloo: Mitkä sovellukset vaativat 300 MHz: n PWM: n?
- @PeterMortensen: No, en tiedä, kuinka radiota kutsutaan ’ lähettimet ja vastaavat tuottavat signaaleja, mutta jotkut saattavat tehdä sen PWM: n kanssa. PiFM tekee sen taajuudella 100 MHz. Se näyttää kuitenkin olevan ristiriidassa kommenttini kanssa, joten ihmettelen, voidaanko nastaa ehkä vielä komentaa tällä taajuudella, mutta = ”8373562c8c”>
s vain, että nastan kapasitanssi vaimentaa tällaisia signaaleja, joten 100 MHz: n neliöaalto voi todella värähtellä esim. (1,0 V, 2,3 V) täydellisen (0 V, 3,3 V) sijaan alue.
vastaus
Olen löytänyt tämän kirjaston ( pi -blaster ), joka väittää olevansa ”erittäin tehokas: ei käytä CPU: ta ja antaa erittäin vakaat pulssit”.
En ole vielä testannut sitä, mutta päivitän heti kun teen (luultavasti tänään)
Kommentit
- Olen ’ kokeillut tätä, mutta toistaiseksi ei onnea. Sikäli kuin voin sanoa, se ei ’ t vaihda laitteistoa?
- Haluat vain koputtaa tämän. Pi-blaster on toiminut minulle, missä nämä muut vastaukset ei.