Svenska ElektronikForumet
https://elektronikforumet.com/forum/

PWM
https://elektronikforumet.com/forum/viewtopic.php?f=3&t=416

Författare:  marvin [ 14.52 2003-09-30 ]
Inläggsrubrik:  PWM

Jag och en kompis ligger i startgroparna till vårat projektarbete. Vi funderar på att bygga ett eget styrservo (PWM). Är det någon som har kunskap innom området är tips välkomna. Tips om lämpliga motorer med växellåda är också välkomet. Vi har inte tänkt oss några gigantiska krafter, men allt är välkommet.

Författare:  marvin [ 19.54 2003-10-12 ]
Inläggsrubrik: 

Är det ingen som har lite erfarenhet av PWM???

Författare:  Melker [ 20.40 2003-10-12 ]
Inläggsrubrik: 

Säkert ganska många... Har du provat söka, annars kan jag rekommendera det, tror det finns en hel del inlägg ang PWM.

Författare:  RDX* [ 23.00 2003-10-12 ]
Inläggsrubrik: 

Ert största problem är inte att välja vilken motor och växel ni ska ha utan ni får snarare inrikta er på vad ni kan få tag på utan att betala en liten förmögenhet.

Författare:  marvin [ 12.56 2003-10-14 ]
Inläggsrubrik: 

Det var det jag menade med lämplig, sorry för dålig formulering :(
Har provat att söka, det gav inte de resultaten som jag letate efter.
Någon som vet hur man modulerar om en PWM-signal, skall göra varvtalsreglering för två bränslemotorer till en båt. Vill att de ska gå lika fort

Författare:  danei [ 14.38 2003-10-14 ]
Inläggsrubrik: 

det är DC motorer man styr med PWM. Vad menar du?

Författare:  marvin [ 19.52 2003-10-14 ]
Inläggsrubrik: 

nja, jag kan förstås fattat fel, men vad jag förstår så används PWM för att ställa hobbyservon i rätt läge. Jag var väl oklar här med :)

Författare:  danei [ 20.19 2003-10-14 ]
Inläggsrubrik: 

Jo det brukar visst kallas PWM det med. Det är ett specialfall. 50Hz och en pulslängd på 5-15ms.

Annars är PWM (puls bredds modulation) ett sätt att reglera effekten till en ex motor (Ex. en servomotor.) utan att använda en resistiv reulator. Man genrerar en signal som växlar mellan hög och låg. Andelen hög signal är pulskvoten. 100% => full effekt 0% => ingen effekt. Frekvensen kan man sätta till det som passar i applikatioenen. (p.g.a. ljud, omslagsförluster, momentrippel, m.m)

Är det glödstifts motorer det handlar om? Har ni något sätt att mäta varvtalet?

Bäst är nog att lägga PI-regulatorer i en pic och koppla via två små servon på förgasarna.
Är det inte bra att kunna köra med olika varvtal när man svänger?

Författare:  janne66 [ 20.48 2003-10-14 ]
Inläggsrubrik: 

Kan väl bara hålla med Danei. Färdiga servon är lättast. Sen är det ju ändå en del jobba kvar om man ska mäta varvtalet och reglera så motorerna går synkront.

Författare:  RDX* [ 20.59 2003-10-14 ]
Inläggsrubrik: 

Annars kan man använda en helt vanlig likströmsmotor som är fäst till en gängadaxel.
Sen är det bara att fästa en mutter armen som ska röras.

Författare:  marvin [ 15.14 2003-10-16 ]
Inläggsrubrik: 

Jo, vi börjar att ge upp tanken på att bygga egna servon.
Men även om man tar två färdiga servon är det en del problem kvar.
Kan inte programmera PIC, håller på med en kurs där vi använder motorolaprocessorer. Kan väl något iaf :). Dock vet jag inte hur man får en reglerbar PWM-signal ut :( Jag börjar att forma en ide, men den är långtifrån färdig. Dessutom skall vi som sagt komma på ett sätt att mäta varvtalet. Antar att vi måste göra detta direkt på motoraxeln (kan bli konstigt efter centrifugalkopplingen). Min tanke på program är att först kolla PWM-signalen in på något sätt, sedan jämföra med vilket varvtal som egentligen är. Därefter skicka en PWM-signal som ställer om servot. Går det?
Ni som vet, hur snabbt jobbar en processor, går ju att räkna på men det är svårt utan att ha hela programmet. Servot skall uppdateras va 20:de millisekund vad jag förstår. Tacksam för all mottagen hjälp.
Danei, som jag har förstått det så arbetar servona mellan 1 och 2 ms inte 5-15, men jag kan ha läst fel.
Det är glödstiftmotorer, vet som sagt inte hur vi skall mäta varvtalet, väljer mellan induktivt och optiskt. Vet inget om någotdera sätt :(

Författare:  danei [ 15.25 2003-10-16 ]
Inläggsrubrik: 

Det kan stämma. Jag har inte jobbat med dom modell servon.
Räkna med att uppdaterings hastigeeten är långsamare än vad du kan skeicka till servot. sen tar det ju lite tid inna motorn hinner reagera. du behöver nog någon typ av reglering med återkoppling, PI-regulator är nog en bra lösning. Jag har inte byggt någon varvräknare, men jag tror att båda vägarna är framkomliga.

Författare:  marvin [ 15.30 2003-10-16 ]
Inläggsrubrik: 

Vad är en PI-regulator
Tack för det snabba svaret :)

Författare:  lord_dubbdäck [ 18.32 2003-10-16 ]
Inläggsrubrik: 

marvin, 1-2ms stämmer bättre. Har själv lyckats styra ett par hobbyservon med en BASICstamp.

Författare:  danei [ 20.56 2003-10-16 ]
Inläggsrubrik: 

En regulator med en del som åter kopplar felet och en som integerar felet.

Författare:  marvin [ 07.28 2003-10-17 ]
Inläggsrubrik: 

Har du lust att beskriva en PI-regulator lite utförligare?
Förstod inte så mycket :)

Författare:  erixon [ 09.16 2003-10-17 ]
Inläggsrubrik: 

Det är ganska enkelt....
P är proposonelt mot felet delvis felet * konstant = styrsingnal (= sp)
för delen med detta system hyffsat snabbt och enkelt, nackdel är att systemet blir instabilt om konstanten är för stor, delvis självsvänger eller går sönder

I är Intgrerade felet för att minmera felet delvis integralen av felet ( * konstant) = styrsingnal (= si)
fördeln med detta sytem är att felet går mot noll med tiden
nakdel blir instabilt om integral verkan är för stor, så händer samma sak som åvan

man får en bättre regulator om man kombinera dessa två
sp+si = styrsingnal

felet är helt enkelt bör - ärvärdet....

Författare:  marvin [ 22.25 2003-10-29 ]
Inläggsrubrik: 

Ursäkta en tids frånvaro, va mycket annat att göra.
Ledsen, förstår fortfarande inte vad en PI-regulator gör :(
Men men, jag undrar om någon vet om man kan reglera en PWM-signal från en microdator, är just nu inne på Atmel, men om någon har en ide om hur man kan reglera en PWM med någon microdator skall jag byta :). Börjar bli desperat. Har försökt att kolla lite faktablad från Atmel (mega8515), men förstår inte hur det skulle gå till.

Författare:  danei [ 22.48 2003-10-29 ]
Inläggsrubrik: 

Vad är det du vill bygga? Är det en regulator som styr ett modellservo eller en PWM regularot till en dc motor/servo?
Jag antar att det är mickrokontroller du syftar på. är inte mega8515 en mickrokontroller det med?
Jag förstår inte vad du är ute efter.

I en digital PI-regulator har du:
P * (felet i senaste samplet) + I * (summan av felen i alla sampel)

Där P och I är reglerparametrarna
Det är bra om man har skydd för integrator uppvridning, i form av villkorlig integration eller liknande. Med det är grundformen.

Författare:  marvin [ 00.16 2003-10-31 ]
Inläggsrubrik: 

Jag är ledsen för min oklarhet.
Jag vill bygga en "manick" som jämför varvtalet från en glödstiftsmotor med en PWM-signal som kommer från en vanlig R/F hobby-mottagare. Jag vill sedan skapa en utgående PWM-signal som styr ett modellservo (kopplad mekaniskt till motorn) till det läget som gör att varvtalet ändras till det som PWM-signalen motsvarar (så nära som det är möjligt).
Anledningen till att jag tog upp att det är en ATmega8515 var att det känndes som folk blev "avskräckta" när jag sade att jag endast hade kunskaper om motorola-processorer. Det antagande var kanske dumt av mig.
Åter igen, min fråga är hu man får ut en PWM-signal från en microkontroller. Det står i faktabladet att det går, men jag lyckas inte hitta hur man gör :)
Hoppas att dina funderingar reder ut sig

Författare:  fredde76 [ 10.52 2003-10-31 ]
Inläggsrubrik: 

Vilken motorola? HC12 eller?

Fredrik

Författare:  RDX* [ 13.44 2003-10-31 ]
Inläggsrubrik: 

Du blandar i hop begreppen lite :?
Vad datablad menar med PWM är inte vad du menar med PWM.

Databladen PWM: (Tidhög*n) +(TidLåg*(1-n)) = En period [0=< n =<1]

Servosignal: (Tidhög*n) + (TidLåg*(1-n)) = En period [0=< n =<0,1]

Det är stor skillnad. Sen servosignal är visserligen också en PWM signal men det är ett specialfall som inte benämns som PWM.

Att skapa servosignaler är inte svårt. Ett Bascom exempel:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
Servo =1500
do
Pulseout Portb , 1 , Servo             ;Pin1b är hög i 1500 us [1,5 ms]
Waitms 20
loop 

Detta program kommer att centrera servot. Om man vill styra servor så är det bara att ändra Servo. [1000<=servo<=2000] Gränserna kan variera lite beroende på RC-system.

Om du vill använda atmels kretsar så rekommenderar jag AT90s2313.

Författare:  danei [ 15.04 2003-10-31 ]
Inläggsrubrik: 

RDX* fick till en bra förklaring. Det är det som har rört till diskusionen lite. Det som gör det lite svårare är att man vill mäta motorns RPM och insignalens pulslängd samtidigt. Att göra en av sakerna är inte svårt. men att göra alla samtidigt är svårt. En förutsättning för att lyckas är nog att ha en mikrokontroller med inbyggd timer. gärna fler. då kan man med hjälp av timern mäta in inpulsens längd och tiden för att varv. Om man lägger en interupt när varvtalsgivaren triggar kan man ta tiden mellan två inteupt. och någon liknande lösning på insignalen. Utsignalen kan man klocka med en timer. (om man har någon kvar) PIC 18F452 har 4 timrar. Det kanske är något att satsa på.

Författare:  EagleSpirit [ 16.34 2003-10-31 ]
Inläggsrubrik: 

nästan alla PIC och AVR kretsar med flash minne har väl timer funktioner i sig?

Författare:  marvin [ 01.58 2003-11-01 ]
Inläggsrubrik: 

tack RDX och danei. Nu börjar det ljusna lite för mig :)
Skall fundera lite på det hela, Varvtalet hade vi hoppats att lösa genom nån "frekvens till spänning"-krets, har inte tänkt så mycket på det om jag skall vara ärlig :)
Men nu känns det som jag har lite mer kött på benen...
/Kristoffer

Författare:  karlstedt [ 12.18 2003-11-01 ]
Inläggsrubrik:  Lågpassfilter på utgången

Om du lägger på ett enkelt lågpassfilter (RC) på PWM-signalen så får du en analog spänning som beror av pulsvidden..

Övre gränsfrekvensen på filtret bör vara ca 100 ggr mindre än repetionsfrekvensen på PWM-signalen.

Testa dig fram lite på värdena på motstånd och kondning...

Författare:  RDX* [ 09.45 2003-11-03 ]
Inläggsrubrik: 

Angående RPM mätningen så skulle man kunna ha en binär-räknare som räknar upp med hjälp av en läsgaffel eller något. Sedan kopplar man MSB till en bistabil vippa. Beroende på hur stor räknare man har dividerar man RPM:en med olika stora tal. Med hjälp av detta borde en mikrocontroller kunna hinna med att avläsa RPM:en

Om man använder en 4-bit räknare på en motor med 10,000 RPM borde man få en signal på lite över 10 Hz. Vilket är kanske lite för låg samplingshastighet. Men det är lätt att ändra på.

Författare:  Alex [ 01.20 2003-11-04 ]
Inläggsrubrik: 

Precis som alla har föreslagit. Apropå mätning av varvtalet kan du enkelt göra med hjälp av en MCU t.ex. PIC. Nästan alla PICar har klockfrekvens från 10Hz (RC krets) till 20MHz(Xtal). Det finns PICar med inbyggd PWM och även ADC. Använder du dessa PICar så behöver du inte skriva någon rutin till PWM. Alla PICar arbeta enligt pipeline metoden och varje instruktion tar 1us att utföra. Detta räcker gått och väl för ditt proj.

Förslag på vartalsmätning. Två metoder. Den ena är induktivt (används i bilar), fördelen är att smuts eller fett hindrar inte mätningsprocessen, kräver lite kringkomponenter på tanken om att signalen du får är analog. Den andra är med hjälp av hallelement och en magnet. En puls genereras varje gång axeln vrider ett varv (då magneten passerar hallelementen. Används i HD, floppy driver mm).
En hallelement klarar en mätning med ca 1us intervall.

En möjlig lösning: Generera en intern interrupt (m.h.a. en intern timer) varje sekund. Under tiden räknar MCUn upp antal inkommande pulser från hallelementen och värdet sparas i en global variabel eller i en specifik adress (i minnet). Efter varje interrupt vet du exakt hur många varv går det per sekund.

Angående programmering. Du kan programmera PICen antingen i assembler eller i C. C är mycket enklare, däremot kan du ha mer kontroll om du använder assembler.
Det finns gratis C kompilatorer på nätet att hämta samt MPLAB (utvecklingsverktyget) från microchips hemsida.
Lycka till

Alla tidsangivelser är UTC + 1 timme
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/