µC för nybörjare
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Nedan text får ni läsa som "tänka högt". Skriva ett inlägg här får en att tänka till innan man trycker på skicka och eftersom jag inte har någon att bolla med "ute i livet" så blir det här som jag spånar...
Med andra ord, svara om ni orkar annars kommer jag klura vidare!
PWM-period (frekvens), Duty Cycle och Pulsbredd tycker jag att jag kan hantera ganska godtyckligt nu men något jag känner jag inte har kläm på är just upplösningen.
Som jag uppfattat det så är högre upplösning oftast bättre då du har fler bitar att behandla. Ibland kanske man medvetet minskar upplösningen för att få ett mer "överskådligt" värde eller av andra orsaker.
Om man tar som jämförelse en analog ingång. Där förstår jag så pass att ju fler bitar (högre upplösning) ger ett mer exakt värde men vad använder jag upplösningen i en PWM-utgång till?
Är det så att en högre PWM-upplösning ger dig möjligheten att dela upp perioden i ännu smalare/fler "tårtbitar" för att sätta puls-bredden ännu mer exakt?
Jag borde ha koll på följande men det har jag inte så jag frågar, hur vet jag vilken upplösning jag har möjlighet till baserat på antal bitars PWM-modul? Det var knappt jag själv förstod vad jag skrev där...
Till exempel: Jag har en 8-bitars PWM-modul, hur hög upplösning kan jag som högst få?
Med andra ord, svara om ni orkar annars kommer jag klura vidare!
PWM-period (frekvens), Duty Cycle och Pulsbredd tycker jag att jag kan hantera ganska godtyckligt nu men något jag känner jag inte har kläm på är just upplösningen.
Som jag uppfattat det så är högre upplösning oftast bättre då du har fler bitar att behandla. Ibland kanske man medvetet minskar upplösningen för att få ett mer "överskådligt" värde eller av andra orsaker.
Om man tar som jämförelse en analog ingång. Där förstår jag så pass att ju fler bitar (högre upplösning) ger ett mer exakt värde men vad använder jag upplösningen i en PWM-utgång till?
Är det så att en högre PWM-upplösning ger dig möjligheten att dela upp perioden i ännu smalare/fler "tårtbitar" för att sätta puls-bredden ännu mer exakt?
Jag borde ha koll på följande men det har jag inte så jag frågar, hur vet jag vilken upplösning jag har möjlighet till baserat på antal bitars PWM-modul? Det var knappt jag själv förstod vad jag skrev där...
Till exempel: Jag har en 8-bitars PWM-modul, hur hög upplösning kan jag som högst få?
Re: µC för nybörjare
Med PWM är det i tid du har upplösningen ja. Jag tror du tänker rätt.
Ett bra exempel (men dåligt för ingen löser det så IRL (eller? (iaf inte med 8-bitarsräknare))):
Ett RC-servo vill ha ca 1-2ms lång puls var 20:e ms.
Har du då en 8-bitars-timer som du lyckas konfigurera så att 255 blir 20 ms så har du:
1 steg på PWM-inställningen: 20000us/255 = 78.4 us/steg
Själva nyttopulsen varierar från 1 till 2ms. D.v.s. ett spann på 1ms = 1000us.
Själva nyttopulsen blir bara justerbar i 12 steg. 1000/78.4 = 12 steg (av de 255) gör att man går från 1ms till 2ms.
D.v.s. dåligt.
Edit: har vi en 16-bitars-timer blir resultatet ett HELT annat:
1 steg på PWM-inställningen: 20000us/65535 = 0.3052 us/steg
Nu blir själva nyttopulsen justerbar i 3276 steg. 1000/0.3052 = 3276 steg (av de 65535) gör att man går från 1ms till 2ms.
MVH: Mikael
Ett bra exempel (men dåligt för ingen löser det så IRL (eller? (iaf inte med 8-bitarsräknare))):
Ett RC-servo vill ha ca 1-2ms lång puls var 20:e ms.
Har du då en 8-bitars-timer som du lyckas konfigurera så att 255 blir 20 ms så har du:
1 steg på PWM-inställningen: 20000us/255 = 78.4 us/steg
Själva nyttopulsen varierar från 1 till 2ms. D.v.s. ett spann på 1ms = 1000us.
Själva nyttopulsen blir bara justerbar i 12 steg. 1000/78.4 = 12 steg (av de 255) gör att man går från 1ms till 2ms.
D.v.s. dåligt.
Edit: har vi en 16-bitars-timer blir resultatet ett HELT annat:
1 steg på PWM-inställningen: 20000us/65535 = 0.3052 us/steg
Nu blir själva nyttopulsen justerbar i 3276 steg. 1000/0.3052 = 3276 steg (av de 65535) gör att man går från 1ms till 2ms.
MVH: Mikael
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Nu börjar poletten trilla ner!
Det blev mer självklart när du skrev det men 8-bitars upplösning blir ju givetvis 255, 10 bitar blir 1023 osv
Nu har jag aldrig gjort styrningen till ett servo men jag hänger med på vad du säger. Det borde innebära att upplösningen är avgörande vid steppermotor-drivning också?
Det blev mer självklart när du skrev det men 8-bitars upplösning blir ju givetvis 255, 10 bitar blir 1023 osv
Nu har jag aldrig gjort styrningen till ett servo men jag hänger med på vad du säger. Det borde innebära att upplösningen är avgörande vid steppermotor-drivning också?
Re: µC för nybörjare
Njaeae, jag tror inte det... Jag har faktiskt aldrig drivit en stegmotor. Nån annan får svara på det 
Det man oftast menar med PWM är iofs att man vill ha en signal på X Hz som varierar från:
1. Alltid låg (ja det är förstås rent tekniskt inte alls PWM just här
(allt däremellan)
2. 50% av tiden låg och 50% av tiden hög
(allt däremellan)
3. Alltid hög (ja det är förstås rent tekniskt inte alls PWM just här
Kan med fördel användas för lysdioder. Då tänker man lätt att 255 steg från helt av till helt på är ju helt ok,
Men om ens koppling är ett motstånd och en LED i serie och drivs av en PWM-utgång så blir ljusstyrkan väldigt
olinjär och då kan det vara bra med hög upplösning för att kunna simulera linjaritet.
(i fallet ovan: pulsbredd 0 av 255: helt släckt LED, pulsbredd 1 av 255 ganska "stark" LED och skillnaden mellan t.ex. 210 och 255 blir istället ytterst liten)

Det man oftast menar med PWM är iofs att man vill ha en signal på X Hz som varierar från:
1. Alltid låg (ja det är förstås rent tekniskt inte alls PWM just här

(allt däremellan)
2. 50% av tiden låg och 50% av tiden hög
(allt däremellan)
3. Alltid hög (ja det är förstås rent tekniskt inte alls PWM just här

Kan med fördel användas för lysdioder. Då tänker man lätt att 255 steg från helt av till helt på är ju helt ok,
Men om ens koppling är ett motstånd och en LED i serie och drivs av en PWM-utgång så blir ljusstyrkan väldigt
olinjär och då kan det vara bra med hög upplösning för att kunna simulera linjaritet.
(i fallet ovan: pulsbredd 0 av 255: helt släckt LED, pulsbredd 1 av 255 ganska "stark" LED och skillnaden mellan t.ex. 210 och 255 blir istället ytterst liten)
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Den dagen den sorgen säger vi men nu har jag mer förståelse!
För övrigt får man tacka Wiki-skrivaren av LCD-kapitlet med HD44780 styrning! Gick kanon att sparka igång en sån igår för första gången med info därifrån samt exempel från MikroElektronika. Nu blir utmaningen att försöka utan MicroC's färdiga bibiliotek för att få mer förståelse vad jag håller på med.
För att vara lite självgod så tycker jag att det här inlärningssättet fungerar ganska bra för mig. Få igång "komponenter" med Arduinon och PIC starterkitet med MikroC's färdiga moduler för delvis verifiera att det är rätt kopplat samt få lite självförtroende. Avslutningsvis gå ett snäpp djupare och prova utan bibiliotek.
För övrigt får man tacka Wiki-skrivaren av LCD-kapitlet med HD44780 styrning! Gick kanon att sparka igång en sån igår för första gången med info därifrån samt exempel från MikroElektronika. Nu blir utmaningen att försöka utan MicroC's färdiga bibiliotek för att få mer förståelse vad jag håller på med.
För att vara lite självgod så tycker jag att det här inlärningssättet fungerar ganska bra för mig. Få igång "komponenter" med Arduinon och PIC starterkitet med MikroC's färdiga moduler för delvis verifiera att det är rätt kopplat samt få lite självförtroende. Avslutningsvis gå ett snäpp djupare och prova utan bibiliotek.
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Som jag skrev ovan så började jag leka med min LCD igår. Det är en BC1602AYPLJB från Lawicel och på/i den sitter en KS0066 drivkrets som är HD44780 kompatibel.
I denna EF-Wiki så skriver man följande:
När man använder 4-bitars interface ansluter man endast D4, D5, D6 och D7. Det är viktigt att övriga datapinnar, alltså D0, D1, D2 och D3 kopplas till jord, det är vanligt att man missar detta och följden blir att displayen inte initieras rätt.
Ok, lät som ett klokt råd tyckte jag men mindes inte jag hade läst något om det i databladet för modulen. Det lät ändå som en så viktig sak och i och med att "man" tryckte på att det lätt kunde missas så gick Magnus vidare... Ok, då kollar jag i databladet för drivkretsen då.
Här såg det ut så här:
Jaha, tänkte jag hur i hela friden skulle jag tänkt på det om det inte skulle stått i wiki'n?
Fråga 1. I drivkretsens datablad (som jag klippt ur) står det "open these pins". Jag tolkar det som helt enkelt öppna, dvs varken till jord eller annat. Finns det något annat tänk kring det? Jag kanske tänker fel med just ordet open?
Fråga 2. Om det är som jag misstänker, att dessa pinnar måste jordas vid 4-bits kommunikation, borde inte det nämnas då i "modulens" datablad? (förutsatt att jag nu inte jag missat det...)
I denna EF-Wiki så skriver man följande:
När man använder 4-bitars interface ansluter man endast D4, D5, D6 och D7. Det är viktigt att övriga datapinnar, alltså D0, D1, D2 och D3 kopplas till jord, det är vanligt att man missar detta och följden blir att displayen inte initieras rätt.
Ok, lät som ett klokt råd tyckte jag men mindes inte jag hade läst något om det i databladet för modulen. Det lät ändå som en så viktig sak och i och med att "man" tryckte på att det lätt kunde missas så gick Magnus vidare... Ok, då kollar jag i databladet för drivkretsen då.
Här såg det ut så här:
Jaha, tänkte jag hur i hela friden skulle jag tänkt på det om det inte skulle stått i wiki'n?
Fråga 1. I drivkretsens datablad (som jag klippt ur) står det "open these pins". Jag tolkar det som helt enkelt öppna, dvs varken till jord eller annat. Finns det något annat tänk kring det? Jag kanske tänker fel med just ordet open?
Fråga 2. Om det är som jag misstänker, att dessa pinnar måste jordas vid 4-bits kommunikation, borde inte det nämnas då i "modulens" datablad? (förutsatt att jag nu inte jag missat det...)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Magnus_K 11 mars 2014, 10:43:18, redigerad totalt 1 gång.
Re: µC för nybörjare
Om det är sant som det står i databladet så borde de pinnarna ha intern pull down.
D.v.s. ett motstånd till jord från varje pinne i LCD-modulen, men det borde ju nämnas kan man tycka. Det kanske går att mäta om det är så.
MVH: Mikael
D.v.s. ett motstånd till jord från varje pinne i LCD-modulen, men det borde ju nämnas kan man tycka. Det kanske går att mäta om det är så.
MVH: Mikael
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Ja så måste det vara adent!
Hmm, ska läsa vidare ikväll och se om det går att mäta på något sätt.
Nu kanske man inte ska göra en höna av fjäder här utan man kan ju också "bara testa" men jag kanske är lite speciell med sånt här, tycker det är roligt att grotta ner mig i något fullkomligt onödigt...
Hmm, ska läsa vidare ikväll och se om det går att mäta på något sätt.
Nu kanske man inte ska göra en höna av fjäder här utan man kan ju också "bara testa" men jag kanske är lite speciell med sånt här, tycker det är roligt att grotta ner mig i något fullkomligt onödigt...
Re: µC för nybörjare
Wikin har fel!
Generellt gäller att vid 4-bitars mode så lämnas övriga data-pinnar öppna/oanslutna.
Orsaken är att om LCD modulen (av misstag eller annat) hamnar i 8-bitars mode
och driver pinnarna så får man en kortis om man har jordat pinnarna. Det brukar
alltid vara så att man helt enkelt lämnar dom öppna/oanslutna.
Generellt gäller att vid 4-bitars mode så lämnas övriga data-pinnar öppna/oanslutna.
Orsaken är att om LCD modulen (av misstag eller annat) hamnar i 8-bitars mode
och driver pinnarna så får man en kortis om man har jordat pinnarna. Det brukar
alltid vara så att man helt enkelt lämnar dom öppna/oanslutna.
- Magnus_K
- EF Sponsor
- Inlägg: 5854
- Blev medlem: 4 januari 2010, 17:53:25
- Ort: Skogen mellan Uppsala-Gävle
Re: µC för nybörjare
Om wiki'n har fel eller inte utlämnar jag till dom som kan. Eftersom du säger "generellt" och databladet säger precis det du skriver, alltså lämna dom öppna, så testar jag detta.
Återkommer med resultat om någon är intresserad...
Återkommer med resultat om någon är intresserad...
Re: µC för nybörjare
I datablad osv anges att man ska låta dom flyta, rent teknisk bör man montera pull-down motstånd på dom, enkom för att man inte ska ha flytande ingångar i digitalelektronik.
Jag är rimligt säker på att det kan kvitta med dessa pull-down men i syfte att vara konsekvent vill jag påpeka att man bör ha dom med. Om de sedan har interna pull-down vill jag inte sia om, det kan ju mycket väl vara så och då är det ju faktisk avklarat.
Jag är rimligt säker på att det kan kvitta med dessa pull-down men i syfte att vara konsekvent vill jag påpeka att man bör ha dom med. Om de sedan har interna pull-down vill jag inte sia om, det kan ju mycket väl vara så och då är det ju faktisk avklarat.
Re: µC för nybörjare
I Hitachis datablad till HD44780 står följande:
Pull-up MOS current
(DB0–DB7, RS, R/W)
–Ip 50 125 250 μA VCC = 5 V
Det är alltså aktiv pull-up på DB0-DB7 och de behöver inte anslutas någonstans
Det finns också ritning på hur ALLA ingångar ser ut:
Pull-up MOS current
(DB0–DB7, RS, R/W)
–Ip 50 125 250 μA VCC = 5 V
Det är alltså aktiv pull-up på DB0-DB7 och de behöver inte anslutas någonstans
Det finns också ritning på hur ALLA ingångar ser ut:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: µC för nybörjare
> ...enkom för att man inte ska ha flytande ingångar i digitalelektronik.
Det gäller ju det generella fallet med CMOS ingångar, men det är onödigt
*i just detta fall* just p.g.a av att det är ett HD44780 gränssnitt.
Det gäller ju det generella fallet med CMOS ingångar, men det är onödigt
*i just detta fall* just p.g.a av att det är ett HD44780 gränssnitt.