Innholdsfortegnelse:

Seriell kontrollert motor med variabel hastighet: 6 trinn
Seriell kontrollert motor med variabel hastighet: 6 trinn

Video: Seriell kontrollert motor med variabel hastighet: 6 trinn

Video: Seriell kontrollert motor med variabel hastighet: 6 trinn
Video: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, November
Anonim
Seriell kontrollert motor med variabel hastighet
Seriell kontrollert motor med variabel hastighet

Kontroller hastigheten til en liten likestrømsmotor uten seriell port på datamaskinen, en enkelt MOSFET og litt triviell programvare. (MOSFET og den serielle porten utgjør "hastighetskontrollen". Du trenger fortsatt en motor og en passende strømforsyning for den motoren; mens den serielle porten kan gi spenningen for å slå en mosfet på og av, kan den " t levere strømmen som trengs av en typisk motor.)

Trinn 1: Se på kretsen

Se på kretsen
Se på kretsen

Vi skal gjøre pulsbreddemodulering ved hjelp av en generisk N-kanals strøm MOSFET koblet til overføringsdatapinnen fra datamaskinens rs232-port. Når den serielle porten er inaktiv, vil pinnen sitte i tilstanden "1", som når den er oversatt til rs232, er noe som -12V (avhengig av drivere kan den være nærmere -9V eller -5V), og transistoren vil være ganske AV. Når vi sender "0" -biter på den serielle porten, vil rs232 -pinnen gå til +12V eller så, noe som er nok til å slå på de fleste mosfeter ganske bra.

Hvis vi sender mange "0" bis på rad, vil motoren være nær fullt på og motoren vil kjøre fort. Hvis vi overfører for det meste "1" biter, vil motoren gå saktere.

Trinn 2: Wire It Up

Wire It Up
Wire It Up

Siden det bare er en enkelt komponent og bare noen få tilkoblinger, kan du bare legge til ledninger "freeform".

MOSFET er statisk sensitiv, så vær litt forsiktig, men veldig lite er kritisk.

Trinn 3: Sett opp filer med PWM -verdier

Sett opp filer med PWM -verdier
Sett opp filer med PWM -verdier

En måte å kontrollere motoren på uten å måtte skrive NOEN programvare er å forberede noen filer som inneholder passende byte (med mer eller mindre 0 bits), og ganske enkelt KOPIERE dem til COM -porten der du har motoren tilkoblet. Jeg forberedte flere filer (ved hjelp av emacs, men det som fungerer for deg er greit):

  • 0.pwm:: inneholder 5000 NULL tegn (kontrollrom på de fleste tastaturer) [br] Dette er omtrent så nær "full hastighet" som vi kan få med denne teknikken.
  • 1.pwm:: inneholder 5000 kontroll-A-tegn (ascii 01) (en "1" bit per tegn)
  • 3.pwm:: inneholder 5000 kontroll-C-tegn (ascii 03) (to "1" biter per røyke)
  • 7.pwm:: inneholder 5000 kontroll-G-tegn (ascii 07) (tre "1" biter per tegn)
  • 15.pwm:: inneholder 5000 kontroll-O-tegn (ascii 15) (fire "1" biter per røyke)
  • 31.pwm:: inneholder 5000 kontroll-_ tegn (ascii 31) (fem "1" biter per tegn)
  • 63.pwm:: inneholder 5000 "?" tegn (ascii 63) (seks "1" biter per tegn)
  • 127.pwm:: inneholder 5000 DEL -tegn (ascii 127) (syv "1" biter per tegn)

(Nå som jeg har tegnet bilder, vil du legge merke til at de faktiske bitmønstrene ikke er ideelle. Siden rs232 seriell sender LSB først, vil vi virkelig skifte i nuller i stedet for en. En øvelse for studenten!)

Trinn 4: Spill med DOS: Konfigurer COM -porten og kopier filene

Spill med DOS: Konfigurer COM -porten og kopier filene
Spill med DOS: Konfigurer COM -porten og kopier filene

9600 bps er en vanlig bithastighet. Den matcher fint til "omtrent" en byte per millisekund, så i dette tilfellet tilsvarer den en PWM -frekvens på 1000Hz, som jeg synes burde være ok for små motorer. Du kan eksperimentere med forskjellige bithastigheter for å se hvordan ting fungerer, noe som er en av fordelene med denne metoden. Lag et DOS -vindu (eller "kommandoprompt") -vindu (forutsatt at du bruker et Windows -operativsystem), og konfigurer din port som: mode com1: 9600, n, 7, 1 "Det forteller kommandoporten å kjøre på 9600bps, og sende 7 biter i hvert tegn (for å matche våre 7 forskjellige bitlengder.)" n "betyr INGEN paritet, så de vil være de eneste databitsene. "1" betyr at det vil være en "stopp" -bit, noe som forhindrer oss i å slå motoren helt på (oh well.) Så nå kan du slå på motoren med kommandoer liker: kopi 0.pwm com1: Siden vi sender 5000 tegn på omtrent 1 per millisekund, bør motoren slås på nær full hastighet i omtrent 5 sekunder. Hvis du vil ha mindre enn 5 sekunder, lager du en kortere fil. På samme måte, du kan gjøre: kopier 127.pwm com1: for å kjøre motoren med lavest mulig hastighet. Med oppsettet jeg hadde, ville motoren ikke snu i det hele tatt med noe "tregere" enn 31.pwm, men YMMV (jeg tynner k Jeg hadde en 12V -motor som gikk av med 5V batterier.) KOPIERING -kommandoen lar deg stryke filer sammen, så hvis du vil at motoren skal få fart og deretter bremse igjen, kan du gjøre noe som: kopier 31.pwm+15. pwm+7.pwm+0.pwm+7.pwm+15.pwm+31.pwm com1:

Trinn 5: Kontroller motoren fra et program

Kontroller motoren fra et program
Kontroller motoren fra et program

Hvis du skriver et program, kan du sannsynligvis åpne COM1: som en fil og bare skrive til det som om det var en annen fil. Det kan virke veldig praktisk å kunne tidsbestemme periodene motoren er på med å angi et bestemt antall tegn. Ikke glem at systemet med stor sannsynlighet vil buffere tegnene du sender til serieporten, så bare fordi et WRITE -anrop returnerer, betyr det ikke at motoren er ferdig med å gjøre det du fortalte den til. Siden vi ikke gjør noe "fancy" med com -portsignalene, bør du ikke måtte undersøke de grusomme alternativene det kan støtte. (selv om du kan finne ut hvordan du sender en BREAK -sekvens til com -porten, er det en kontinuerlig "0" -tilstand, og vil kjøre motoren HELT videre; mer enn å sende kontinuerlige 0 tegn.)

Hvis programmeringsspråket ditt ikke lar deg sende ut til COM1:, kan du fortsatt styre motoren ved å "ringe" DOS for å utføre kopieringskommandoer. (OK. Jeg har lastet ned Microsofts Visual Basic Express 2005 (som er gratis) og klarte å knytte en horisontal rullefelt til motorhastigheten, styrt via den serielle porten. Zip festet. Den har sannsynligvis mer enn den trenger for å duplisere programmet på systemet ditt, men jeg kunne ikke finne ut nøyaktig hvilke biter som trengs. Programmet er både forenklet og vanskeliggjort å forstå (beklager) ved å være flertrådet. En tråd gjør ingenting annet enn å sende ut til serieporten, og hovedtråden leser rullefeltet og oppdaterer informasjon som brukes av serietråden.)

Trinn 6: Eksperimenter

Eksperiment!
Eksperiment!

Hvis ting i utgangspunktet fungerer, gir dette fryktelig mye rom for eksperimentering.

  • Fix mine bitemønstre!
  • Har bitrate stor betydning?
  • Må du kontrollere bredden på "på" og "av" pulser, eller er det ganske enkelt å kontrollere forholdet?
  • Hvis du bare trenger å kontrollere forholdet, kan du vurdere sekvenser med flere tegn ved høyere bithastigheter for å få flere hastighetsnivåer. Outputing 0 etterfulgt av 127 ville være omtrent halvparten på.
  • Dette bør også fungere for å dimme lommelyktpærer.

Anbefalt: