Sida 1 av 1
PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 12:53:34
av Klas-Kenny
Jag har satt ihop en H-brygga med PWM-styrning baserat på en PIC16F690, och duty-cykles ställs med en pot kopplad som spänningsdelare (första benet till +5v och tredje benet till 0v, och benet i mitten till AN2).
Jag har problem med att när jag har poten i bottenläge mot 0v blir det inte riktigt 0 i duty-cykle, utan det blir små spikar där spänningen går upp vid början av varje period, vilket gör att motorn surrar störande även vid 0.
När jag mäter mellan mitten-benet på poten och jord visar multimetern 0,00V så det verkar ju vara 0v där som det ska.
Dålig bild på scopet vid utgången:
DSC00071.jpg
Vad finns det för sätt för att undvika detta fenomen?
Ända jag kan tänka mig ät att stänga av PWM när värdet från A/D'n från AN2 är under typ 0x03 eller någonting sådant, men det borde finnas något bättre sätt? Jag har liksom svårt för att tro att det SKA vara så?
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 13:04:05
av bearing
Duty-cycle registret är ju ett 8-bitars-register som är "förlängt" till 10-bitar långt. De två minst värda bitarna ligger i ett annat register. Har du nollställt dom två bitarna?
Har du kollat att AD-omvandlaren ger värdet 0?
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 13:11:15
av Klas-Kenny
Bra tips, hade inte tänkt på det, dock är de redan nollade.
Nej det har jag inte kollat, men hur kan jag göra det på något enkelt vis? Lysdioder blir inte så lätt med tanke på att PIC'en är i SSOP-kapsel och sitter på ett kretskort, så det är ingenstans man bara kan koppla in ett gäng lysdioder för att spegla ut den byten.
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 13:21:18
av bearing
Sätt en utgång hög ifall AD-resultatet blir 0, annars låg, och mät sedan spänningen på den utgången, t.ex.
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 14:04:40
av Klas-Kenny
Verkar inte ge riktigt 0, vad kan detta bero på?
Edit: När jag kortsluter AN2 mot jord blir det lite bättre, men inte helt bra.
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 14:32:46
av sodjan
Det är ju små marginaler det hela handlar om.
Du kan inte räkna med att någonting ska bli "exakt" någonting.
Enklast är att definiera en minimum-tröskel för AN2 värdet där du
börjar köra PWM modulen, under den tröskeln är den avstängd.
För att verifiera om det är ADC eller PWM modulen som ger pulserna så
kan du sätta PWM-cycle hårt till noll och se om pulserna försvinner.
I så fall är det inte PWM modulen som spökar. Jag tror att det snarare
är ADC modulen inte klarar att ge exakt "noll" ut under de förutsättningar
som råder i din koppling.
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 14:41:13
av bearing
Vad menar du med "lite bättre"?
När man felsöker sånt här är en serieanslutning till en dator guld värd, eftersom att man då t.ex. kan skicka AD-värdet kontinuerligt o.s.v.
Vi har ju inte fått någon kod, och vet inte heller hårdvaran, så det är svårt att svara något annat på din fråga än "störningar".
Min erfarenhet är att AD-omvandlaren brusar upp till 8 LSB. Mängden brus beror ju sannolikt på avkoppling, kretskortsutforming, o.s.v.
Sitter det någon kondensator parallellt med potentiometern? det skulle nog kunna hjälpa med bruset.
Finns det något på kortet som drar hög ström och på så sätt sätter potentialen på potentiometerns jord högre än processorns jord?
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 16:37:32
av Klas-Kenny
Sodjan: Jag satte 0 i koden, och då försvann spikarna. Alltså måste det vara ADC som spökar. Jag tror det får bli till att skriva kod så att den stänger av helt när ADC ger under ett visst värde. Spelar ju ingen roll egentligen (Mer än att det blir mer kod) då motorn ändå bara står stilla och surrar vid så låg duty-cykle.
bearing: Lite bättre som i att på-tiden (Som skulle vara 0) blir något kortare, men den försvinner inte helt som den borde.
Jag kan testa sätta en kondensator över pot'en (förslag på värde? 100nF?)
I "verkligheten" kommer det att dra en del ström då det är en H-brygga och motorn drar runt 1A men när jag mätt har jag endast haft Scopet inkopplat så i princip är det inget som dragit någon större ström.
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 6 februari 2011, 16:42:23
av sodjan
> Alltså måste det vara ADC som spökar.
Den gör nog så gott den kan...
Det låter helt normalt att ha en tröskel där man stänger av.
Kanske också en logik så att man måste ha ett visst antal
ADC avläsningen som ligger inom en viss marginal så att man inte
triggar motorn på störningar. Det tar även hand om brus som kan
uppkomma från potten själv under vridning (glapp/skrap).
Re: PIC PWM Duty-cykle blir inte riktigt 0?
Postat: 7 februari 2011, 01:22:55
av Klas-Kenny
Japp, får bli till att skriva lite mera mjukvara för att få det hela lite bättre.
Det är ju inte dumt att få öva på att skriva lite mer "avancerade" program, skulle trots allt fortfarande räkna mig själv som novis inom PIC-programmering så.
Edit: Det va ju väldigt simpelt ordnat, 9 rader kod och allt fungerar super! Ska ta och löda in en konding vid AN2 också, sen får vi se om jag orkar lyssna på Sodjan (Vilket förvisso brukar löna sig att göra

) och skriva kod för att kolla ADC några gånger innan värdet bestäms.