Mysterium med PWM'et och de fyra knapparna
Postat: 27 juni 2019, 17:36:00
Hej!
Jag har gjort en liten maskin som kan köra fram och tillbaka, med fyra knappar, snabbt och långsamt.
Den har även 3 positioner som den kan spara, och radera.
Tillika en display som visar vad den gör.
Motorn drivs med en Curtis motorstyrning som har en 0-5V signal in för fram och tillbaka.
0.2V är bakåt i full spetta, ca 2,5V är stillastående och 5V är full spätta framåt.
Jag kör Arduino MEGA och har utgång 6 som PWM kopplad till en konding och en resistor, sedan vidare till motorkontrollen.
På så vis kan jag styra hastigheten och så. Vilket hittils fungerat bra.
Jag har dock velat få bort onödiga pull-down resistorer runtom kortet, och därav börja skriva om i så att den ska använda de inbyggda
pull-up resistorerna. Det fungerade på mina knappar som sparar position och tar bort positioner utan problem och jag kunde peta
bort ett gäng motstånd.
Men när jag kommer att göra likadant på mina knappar för att köra fram och tillbaka, så ballar det ur.
PWM port 6 ger fullt ös ut, dvs 5V. Trots att INGET i koden säger åt den att göra det.
Men bara att jag ställer om mina kör knappar till _PULLUP gör att PWM porten blir 5V trots att den tidigare var 0V.
Dessutom kör den full spetta oavsett vilken knapp jag trycker på.
Det är SOM OM att jag har knapp för "full fart framåt" intryckt hela tiden, fast jag inte har det, och fastän jag stänger av det
i koden. PWM porten ser ut att få signalen 255 (5V) från någonstans, fast den inte får det. Har letat överallt i koden
och även testat byta alla HIGH till LOW och viceversa, på flera olika sätt.
Jag har noterat att I/O pinne 6 (PWM) inte har något "grundvärde" från någonstans i koden, det vore kanske bättre att den stod på 2,5V (127)
istället, då det är motorkontrollerns "riktiga" stillastående noll läge.
Men jag tycker endå att det är konstigt att PWM utgången ger fullt ös ut fast man inte gjort nåt med den. Borde den inte bara stå kvar på noll?
Är det något jag missat helt här. T.ex. delar ut/in gångarna på samma pullup motstånd som är inbyggda i Atmel chipet?
Är vissa I/O's ihopkopplade? Detta problem verkar tyda på att man inte kan ställa detta helt individuellt för porten. Är det verkligen så?
Varför får en utgång helt plötsligt 5V ut, fastän jag inte gjort något med den så att säga?
Jag har gjort en liten maskin som kan köra fram och tillbaka, med fyra knappar, snabbt och långsamt.
Den har även 3 positioner som den kan spara, och radera.
Tillika en display som visar vad den gör.
Motorn drivs med en Curtis motorstyrning som har en 0-5V signal in för fram och tillbaka.
0.2V är bakåt i full spetta, ca 2,5V är stillastående och 5V är full spätta framåt.
Jag kör Arduino MEGA och har utgång 6 som PWM kopplad till en konding och en resistor, sedan vidare till motorkontrollen.
På så vis kan jag styra hastigheten och så. Vilket hittils fungerat bra.
Jag har dock velat få bort onödiga pull-down resistorer runtom kortet, och därav börja skriva om i så att den ska använda de inbyggda
pull-up resistorerna. Det fungerade på mina knappar som sparar position och tar bort positioner utan problem och jag kunde peta
bort ett gäng motstånd.

Men när jag kommer att göra likadant på mina knappar för att köra fram och tillbaka, så ballar det ur.

PWM port 6 ger fullt ös ut, dvs 5V. Trots att INGET i koden säger åt den att göra det.
Men bara att jag ställer om mina kör knappar till _PULLUP gör att PWM porten blir 5V trots att den tidigare var 0V.
Dessutom kör den full spetta oavsett vilken knapp jag trycker på.
Det är SOM OM att jag har knapp för "full fart framåt" intryckt hela tiden, fast jag inte har det, och fastän jag stänger av det
i koden. PWM porten ser ut att få signalen 255 (5V) från någonstans, fast den inte får det. Har letat överallt i koden
och även testat byta alla HIGH till LOW och viceversa, på flera olika sätt.
Jag har noterat att I/O pinne 6 (PWM) inte har något "grundvärde" från någonstans i koden, det vore kanske bättre att den stod på 2,5V (127)
istället, då det är motorkontrollerns "riktiga" stillastående noll läge.
Men jag tycker endå att det är konstigt att PWM utgången ger fullt ös ut fast man inte gjort nåt med den. Borde den inte bara stå kvar på noll?
Är det något jag missat helt här. T.ex. delar ut/in gångarna på samma pullup motstånd som är inbyggda i Atmel chipet?

Är vissa I/O's ihopkopplade? Detta problem verkar tyda på att man inte kan ställa detta helt individuellt för porten. Är det verkligen så?
Varför får en utgång helt plötsligt 5V ut, fastän jag inte gjort något med den så att säga?