Ström och PWM
Ström och PWM
Hej!
Har en fundering angående hur man mäter ström tillsammans med PWM.
Har en DC motor som kontrolleras, eller rättare sagt varieras, med hjälp av PWM.
Genereringen av PWM görs av en PIC, effekten hanteras av FET.
Jag skulle behöva mäta strömmen som motorn drar och tänkte använda ett motstånd i serie med motorn och mäta spänningsfallet med AD konvertering i PIC'en.
Men, kommer inte mätningen bli fel eftersom spänningen är PWM'ad?
Ska man sätta en kondning äver motståndet för att få en likspänning där, eller ska man ta hänsyn till dutycycle och bara mäta när spänningen är på?
Verkar lite roddigt att få till timingen, men det kanske fungerar.
Tänkte att någon borde gjort något liknande kanske...
-- Jonas
Har en fundering angående hur man mäter ström tillsammans med PWM.
Har en DC motor som kontrolleras, eller rättare sagt varieras, med hjälp av PWM.
Genereringen av PWM görs av en PIC, effekten hanteras av FET.
Jag skulle behöva mäta strömmen som motorn drar och tänkte använda ett motstånd i serie med motorn och mäta spänningsfallet med AD konvertering i PIC'en.
Men, kommer inte mätningen bli fel eftersom spänningen är PWM'ad?
Ska man sätta en kondning äver motståndet för att få en likspänning där, eller ska man ta hänsyn till dutycycle och bara mäta när spänningen är på?
Verkar lite roddigt att få till timingen, men det kanske fungerar.
Tänkte att någon borde gjort något liknande kanske...
-- Jonas
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
-
- Inlägg: 7122
- Blev medlem: 31 augusti 2006, 16:42:43
- Ort: Jamtland
Med amperemeter finns det inte chans att den blir tokig om PWM sker med hög frekvens? De mätningar jag gjort med olika instrument på konstiga vågformer har visat att resultaten kan skilja mycket. Har dock aldrig jämfört så vid frekvenser över 20kHz. I varje fall är TRMS instrument mycket tillförlitligare. De har krupit neråt i pris så de är inte så blodit dyra längre.
Med PIC må det väl vara listigare att filtrera och få ett medelvärde. Det är väl inte toppströmen man vill åt normalt sett. Åtminstånne inte om man är ute efter att skydda motorn!
Med PIC må det väl vara listigare att filtrera och få ett medelvärde. Det är väl inte toppströmen man vill åt normalt sett. Åtminstånne inte om man är ute efter att skydda motorn!
Min tanke är att man måste "veta" när spänningen är på, och mäta just då, samt ta med i beräkningen vad det är för dutycycle just när man mäter.
Då kan man ju räkna ut medelströmmen, som ju är den man vill begränsa både för att skydda motorn och för att jag vill kunna begränsa effekten som motorn levererar av andra skäl.
Om man bara periodiskt mäter spänningen över motståndet så kommer den ju att vara noll om man råkar mäta just när PWM'en är av.
En del av tricket är ju att hinna mäta i den påslagna delen, beräkna kan man ju göra när man har tid.
Har inte koll på om man kan veta om den hårdvarugenererade PWM'en, i en PIC, är på eller av i varje givet ögonblick.
Eller tänker jag fel?
Vore enklast om det vore så....
-- Jonas
Då kan man ju räkna ut medelströmmen, som ju är den man vill begränsa både för att skydda motorn och för att jag vill kunna begränsa effekten som motorn levererar av andra skäl.
Om man bara periodiskt mäter spänningen över motståndet så kommer den ju att vara noll om man råkar mäta just när PWM'en är av.
En del av tricket är ju att hinna mäta i den påslagna delen, beräkna kan man ju göra när man har tid.
Har inte koll på om man kan veta om den hårdvarugenererade PWM'en, i en PIC, är på eller av i varje givet ögonblick.
Eller tänker jag fel?
Vore enklast om det vore så....
-- Jonas
> Har inte koll på om man kan veta om den hårdvarugenererade PWM'en, i en PIC, är på eller av i varje givet ögonblick.
Jag har inte kollat av mot databladet, men det finns nog flera sätt
att "veta" om PWM är på eller av. Som sagt, jag har inte kollat, men
dels skulle man kunna kolla Timer2 (som styr PWM'en), eller läsa
av I/O pinnen direkt. Jag vet inte om man kan "enabla" interrupt
från Timer2 samtidigt som den styr PWM, men då skulle man kunna
få ett interrupt varje gång som PWM slår till (eller från).
Jag har inte kollat av mot databladet, men det finns nog flera sätt
att "veta" om PWM är på eller av. Som sagt, jag har inte kollat, men
dels skulle man kunna kolla Timer2 (som styr PWM'en), eller läsa
av I/O pinnen direkt. Jag vet inte om man kan "enabla" interrupt
från Timer2 samtidigt som den styr PWM, men då skulle man kunna
få ett interrupt varje gång som PWM slår till (eller från).
Det som slås av/på med PWM är ju spänningen, inte strömmen. Motorns induktans i kombination med frihjulsdioderna över trissorna borde ju hålla strömmen hyfsat konstant, iaf vid högre PWM-frekvenser. Det borde gå fint att räkna på om man vet motorns induktans.
Så utan att egentligen veta så är min gissning att det går fint att mäta spänningen över shunten med en ADC och få ett vettigt värde, trots PWM.
Arvid
Så utan att egentligen veta så är min gissning att det går fint att mäta spänningen över shunten med en ADC och få ett vettigt värde, trots PWM.
Arvid
Koppla såhär:
drivspänning -> mätmotstånd -> motor -> transistor -> jord.
koppla frihjulsdioden mellan drivspänning och transistor. Du har då alltid ström genom ditt mätmotstånd, antingen i form av magnetiskt uppladdande ström från spänningskällan genom transistor till jord, eller som magnetiskt urladdande från motor genom diod mätmotstånd och tillbaka till motorn.
Du kan då enkelt mäta strömmen genom att mäta spänningen över motståndet, och du kommer alltid att ha en ungefärlig ström, som förvisso kommer vara större om du träffar sent i perioden än om du träffar tidigt.
Du kan också koppla en kondensator parallellt med mätmotståndet, men den kommer laddas ur ganska snabbt mtp det låga motståndet i mätmotståndet. Så, denna metod ger inte lika bra värden som den tidigare men det blir lättare att implementera iom att det inte finns nån offsetspänning.
Det absolut enklaste är nog ändå att använda sig av successiv approximations-ad tillsammans med en omvandlingsfrekvens som är samma som eller långsammare än switchperioden. Då får du alltid bra värden, enkelt och smidigt. Det är normalt såhär man gör i trefasomriktare, där man för enkelhetens skull mäter mellan transistor och jord istället för att mäta strömmen ut från benen.
drivspänning -> mätmotstånd -> motor -> transistor -> jord.
koppla frihjulsdioden mellan drivspänning och transistor. Du har då alltid ström genom ditt mätmotstånd, antingen i form av magnetiskt uppladdande ström från spänningskällan genom transistor till jord, eller som magnetiskt urladdande från motor genom diod mätmotstånd och tillbaka till motorn.
Du kan då enkelt mäta strömmen genom att mäta spänningen över motståndet, och du kommer alltid att ha en ungefärlig ström, som förvisso kommer vara större om du träffar sent i perioden än om du träffar tidigt.
Du kan också koppla en kondensator parallellt med mätmotståndet, men den kommer laddas ur ganska snabbt mtp det låga motståndet i mätmotståndet. Så, denna metod ger inte lika bra värden som den tidigare men det blir lättare att implementera iom att det inte finns nån offsetspänning.
Det absolut enklaste är nog ändå att använda sig av successiv approximations-ad tillsammans med en omvandlingsfrekvens som är samma som eller långsammare än switchperioden. Då får du alltid bra värden, enkelt och smidigt. Det är normalt såhär man gör i trefasomriktare, där man för enkelhetens skull mäter mellan transistor och jord istället för att mäta strömmen ut från benen.
Du kan bara beskriva frekvenser som är lägre än halva samplingsfrekvensen. Samplar du då med en frekvens som är lägre än din switchfrekvens kommer du aldrig att få med switchripplet, utan du får bara den approximerade strömmen. Du måste dock ha ett hyffsat högt seriemotstånd, så att det tar ett litet tag för s/h-kretsen ett tag att ladda upp. 1 kΩ eller så kanske.