Söker efter en krets som kan generera ca 5 st PWM-signaler. Tanken är att en huvud-PIC ska kommunicera(i2C SPI) med kretsen och ge börvärden. För att styra RC-servon behöver periodtiden kunna ställas mellan 10-20ms och pulsbredden mellan ca 1-2 ms. Vill inte att huvud-PIC:en ska göra genereringen då den är upptagen med annat.
Skulle en sådan krets ge stabilare signaler än vad en extra PIC skulle kunna generera?
PWM Controller
Re: PWM Controller
Jag har en sådan krets, baserat på en PIC16F628A, på min hemsida (under Freebies). Den är dock inte begränsat till 5 RC-servos men kan istället styra 12 st.
Och det är INTE PWM du söker, det är pulsbredd styrning.
Och det är INTE PWM du söker, det är pulsbredd styrning.
Senast redigerad av Icecap 16 april 2009, 17:41:16, redigerad totalt 1 gång.
-
- Inlägg: 7099
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Re: PWM Controller
Beror väl på vad huvudkretsen håller på med. Är det att beräkna storleken på universum så har den nog, nog mycket jobb med det. Men dagens MCU'er är kraftfulla och kan göra mer än vad man tror. Att dela upp det på flera, skapar bara en massa merarbete (kanske) i onödan. Merarbete både för programmerare och MCU'er. Lämpliga interrupt löser det mesta på ett smidigt sätt.
Glömde kostnaderna.
Glömde kostnaderna.
Re: PWM Controller
Här finns smidigt litet projekt projekt som skulle passa, fast med en tiny2313 och på tyska: Länk
Håller dock med Mindmapper, att styra några servon belastar inte en mcu speciellt mycket.
Håller dock med Mindmapper, att styra några servon belastar inte en mcu speciellt mycket.
Re: PWM Controller
En ATMEGA88 har 6 kanalers hårdvaru-PWM och både SPI och I2C så den kretsen uppfyller dina önskemål, dock krävs det väl en 30-rader c-kod för att programmera den att göra det du vill men då nästan allt hanteras av hårdvaran har du 99% av CPU-tiden ledig i mega88:an så kan den lika bra hantera ditt huvudprogram åxå 

Re: PWM Controller
Jag har tittat lite på din kod och vad jag kan förstå så kommer periodtiden för varje servo variera beroende på vilken pulsbredd som de andra servona får. Rent teoretiskt kan periodtiden vara 13-26ms på 13 servon(enligt koden) mellan att alla servon får 1ms och 2ms insignal. Hur känsligt är ett servo för dessa variationer?Icecap skrev:Jag har en sådan krets, baserat på en PIC16F628A, på min hemsida (under Freebies). Den är dock inte begränsat till 5 RC-servos men kan istället styra 12 st.
Min lösning på detta var/är att sätta alla utgångar höga samt att ha ett interrupt med den tiden som man vill ha upplösning på pulsbredden och sedan räkna ett antal interrupt innan man sänker utgången. Enligt min uppskattning går det åt en del mcutid till detta för att få till en bra upplösning. Med den här metoden får man inte variationerna i periodtid.