Indholdsfortegnelse:

Seriel styret motor med variabel hastighed: 6 trin
Seriel styret motor med variabel hastighed: 6 trin

Video: Seriel styret motor med variabel hastighed: 6 trin

Video: Seriel styret motor med variabel hastighed: 6 trin
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juli
Anonim
Seriel styret motor med variabel hastighed
Seriel styret motor med variabel hastighed

Kontroller hastigheden på en lille DC -motor uden andet end den serielle port på din computer, en enkelt MOSFET og noget trivielt software. (MOSFET og den serielle port udgør "hastighedskontrollen". Du skal stadig bruge en motor og en passende strømforsyning til den pågældende motor; mens den serielle port kan levere spændingen til at tænde og slukke en mosfet, kan den ' t levere den strøm, som en typisk motor har brug for.)

Trin 1: Se på kredsløbet

Se på kredsløbet
Se på kredsløbet

Vi skal lave Pulse Width Modulation ved hjælp af en generisk N-kanal strøm MOSFET tilsluttet Transmit data pin fra computerens rs232 port. Når den serielle port er inaktiv, vil stiften sidde i tilstanden "1", som når den er oversat til rs232, er noget i stil med -12V (afhængigt af drivere kan den være tættere på -9V eller -5V), og transistoren vil være helt slukket. Når vi sender "0" bits på den serielle port, vil rs232 -stiften gå til +12V eller deromkring, hvilket er nok til at tænde de fleste mosfets ret godt.

Hvis vi sender mange "0" -bis i træk, vil motoren være tæt på helt TIL, og motoren vil køre hurtigt. Hvis vi hovedsageligt sender "1" bits, kører motoren langsommere.

Trin 2: Tråd det op

Tråd det op
Tråd det op

Da der kun er en enkelt komponent og kun få forbindelser, kan du bare tilføje ledninger "fri form".

MOSFET'er er statiske følsomme, så vær lidt forsigtig, men meget lidt er kritisk.

Trin 3: Konfigurer filer med PWM -værdier

Konfigurer filer med PWM -værdier
Konfigurer filer med PWM -værdier

En måde at styre motoren på uden at skulle skrive NOGEN software er at forberede nogle filer, der indeholder passende bytes (med mere eller mindre 0 bits), og simpelthen KOPIERE dem til COM -porten, hvor du har motoren tilsluttet. Jeg forberedte flere filer (ved hjælp af emacs, men hvad der fungerer for dig, er fint):

  • 0.pwm:: indeholder 5000 NULL tegn (kontrolrum på de fleste tastaturer) [br] Dette er omtrent så tæt på "fuld hastighed", som vi vil kunne komme med denne teknik.
  • 1.pwm:: indeholder 5000 kontrol-A-tegn (ascii 01) (en "1" bit pr. Tegn)
  • 3.pwm:: indeholder 5000 kontrol-C-tegn (ascii 03) (to "1" bits pr. Tegn)
  • 7.pwm:: indeholder 5000 kontrol-G-tegn (ascii 07) (tre "1" bits pr. Tegn)
  • 15.pwm:: indeholder 5000 kontrol-O-tegn (ascii 15) (fire "1" bits pr. Tegn)
  • 31.pwm:: indeholder 5000 kontrol-_ tegn (ascii 31) (fem "1" bits pr. Tegn)
  • 63.pwm:: indeholder 5000 "?" tegn (ascii 63) (seks "1" bits pr. tegn)
  • 127.pwm:: indeholder 5000 DEL -tegn (ascii 127) (syv "1" bits pr. Tegn)

(Nu hvor jeg har tegnet billeder, vil du bemærke, at de faktiske bitmønstre ikke er ideelle. Da rs232 seriel sender LSB først, vil vi virkelig skifte i nuller i stedet for dem. En øvelse for eleven!)

Trin 4: Spil med DOS: Konfigurer din COM -port, og kopier filerne

Spil med DOS: Konfigurer din COM -port, og kopier filerne
Spil med DOS: Konfigurer din COM -port, og kopier filerne

9600 bps er en almindelig bitrate. Det matcher pænt til "cirka" en byte pr. Millisekund, så i dette tilfælde svarer det til en PWM -frekvens på 1000Hz, hvilket jeg synes burde være ok for små motorer. Du kan eksperimentere med forskellige bithastigheder for at se, hvordan tingene fungerer, hvilket er en af fordelene ved denne metode. Opret et DOS (eller "Kommandoprompt") vindue (forudsat at du bruger et Windows OS), og konfigurer din com port som: mode com1: 9600, n, 7, 1 "Det fortæller comm-porten at køre med 9600bps og sende 7 bits i hvert tegn (for at matche vores 7 forskellige bitlængder.)" n "betyder INGEN paritet, så det vil være de eneste databit. "1" betyder, at der vil være en "stop" bit, som forhindrer os i at tænde motoren hele vejen (nåh.) Så nu kan du tænde motoren med kommandoer ligesom: kopi 0.pwm com1: Da vi sender 5000 tegn på cirka 1 pr. millisekund, bør motoren tænde tæt på fuld hastighed i cirka 5 sekunder. Hvis du vil have mindre end 5 sekunder, skal du lave en kortere fil. Tilsvarende, du kan gøre: kopier 127.pwm com1: for at køre motoren med den lavest mulige hastighed. Med den opsætning, jeg havde, ville motoren slet ikke dreje med noget "langsommere" end 31.pwm, men YMMV (jeg tynder k Jeg havde en 12V -motor, der kørte 5V batterier.) KOPIERING -kommandoen lader dig samle filer sammen, så hvis du vil have din motor til at køre hurtigere og derefter bremse igen, kan du gøre noget som: kopi 31.pwm+15. pwm+7.pwm+0.pwm+7.pwm+15.pwm+31.pwm com1:

Trin 5: Styr motoren fra et program

Styr motoren fra et program
Styr motoren fra et program

Hvis du skriver et program, kan du sandsynligvis åbne COM1: som en fil og blot skrive til det som om det var en anden fil. Det kan være meget praktisk at kunne tidsbestille de perioder, motoren er tændt ved at udsende et bestemt antal tegn. Glem ikke, at systemet med stor sandsynlighed vil buffer de tegn, du sender til den serielle port, så bare fordi et WRITE -opkald vender tilbage, betyder det ikke, at motoren er færdig med at gøre, hvad du fortalte den til. Da vi ikke gør noget "fancy" med com -portsignalerne, skal du ikke skulle undersøge de uhyggelige muligheder, som det muligvis understøtter. (selvom hvis du kan finde ud af at sende en BREAK -sekvens til com -porten, er det en kontinuerlig "0" -tilstand og vil køre motoren HELT videre; mere end at sende kontinuerlige 0 tegn.)

Hvis dit programmeringssprog ikke lader dig sende til COM1:, kan du stadig styre motoren ved at "kalde" DOS for at udføre kopieringskommandoer. (OK. Jeg har downloadet Microsofts Visual Basic Express 2005 (som er gratis) og det lykkedes at binde en vandret rullebjælke til motorhastigheden, der styres via den serielle port. Zip vedhæftet. Den har sandsynligvis mere end den behøver for at duplikere programmet på dit system, men jeg kunne ikke finde ud af præcis, hvilke bits der var nødvendige. Programmet er både forenklet og gjort vanskeligere at forstå (undskyld) ved at være multi-threaded. Én tråd gør ikke andet end output til den serielle port, og hovedtråden læser rullefeltet og opdaterer oplysninger, der bruges af den serielle tråd.)

Trin 6: Eksperimenter

Eksperiment!
Eksperiment!

Hvis tingene i bund og grund fungerer, giver dette frygtelig meget plads til eksperimentering.

  • Fix mine bitmønstre!
  • Betyder bitraten meget?
  • Skal du kontrollere bredden af "on" og "off" pulser, eller er det simpelthen tilstrækkeligt at kontrollere deres forhold?
  • Hvis du kun skal kontrollere forholdet, kan du overveje sekvenser med flere tegn ved højere bithastigheder for at få flere hastighedsniveauer. Output 0 efterfulgt af 127 ville være omkring det halve.
  • Dette bør også fungere til dæmpning af lommelygtepærer.

Anbefalede: