Innehållsförteckning:

Seriell styrd motor med variabel hastighet: 6 steg
Seriell styrd motor med variabel hastighet: 6 steg

Video: Seriell styrd motor med variabel hastighet: 6 steg

Video: Seriell styrd motor med variabel hastighet: 6 steg
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juli
Anonim
Seriell styrd motor med variabel hastighet
Seriell styrd motor med variabel hastighet

Kontrollera hastigheten på en liten likströmsmotor med bara seriell port på din dator, en enda MOSFET och lite trivial programvara. (MOSFET och den seriella porten utgör "hastighetskontrollen". Du behöver fortfarande en motor och en lämplig strömförsörjning för den motorn. t leverera den ström som behövs av en typisk motor.)

Steg 1: Titta på kretsen

Titta på kretsen
Titta på kretsen

Vi kommer att göra pulsbreddsmodulering med hjälp av en generisk N-kanals ström MOSFET ansluten till överföringsdatapinnen från datorns rs232-port. När den seriella porten är inaktiv kommer pinnen att sitta vid "1" -läget, vilket när det översätts till rs232 är ungefär -12V (beroende på drivrutiner kan det vara närmare -9V eller -5V), och transistorn kommer att vara ganska AV. När vi sänder "0" bitar på den seriella porten, kommer rs232 -stiftet att gå till +12V eller så, vilket är tillräckligt för att slå på de flesta mosfeter ganska bra.

Om vi sänder många "0" -bis i rad kommer motorn att vara nära helt PÅ och motorn går snabbt. Om vi överför mestadels "1" bitar går motorn långsammare.

Steg 2: Wire It Up

Koppla upp det
Koppla upp det

Eftersom det bara finns en enda komponent och bara ett fåtal anslutningar kan du bara lägga till ledningar "freeform".

MOSFET är statiskt känsliga, så var lite försiktig, men mycket lite är kritiskt.

Steg 3: Konfigurera filer med PWM -värden

Konfigurera filer med PWM -värden
Konfigurera filer med PWM -värden

Ett sätt att styra motorn utan att behöva skriva någon programvara är att förbereda några filer som innehåller lämpliga byte (med mer eller mindre 0 bitar) och helt enkelt KOPIERA dem till COM -porten där du har motorn ansluten. Jag har förberett flera filer (med hjälp av emacs, men det som fungerar för dig är bra):

  • 0.pwm:: innehåller 5000 NULL tecken (kontrollutrymme på de flesta tangentbord) [br] Detta är ungefär så nära "full speed" som vi kommer att kunna komma med den här tekniken.
  • 1.pwm:: innehåller 5000 kontroll-A-tecken (ascii 01) (en "1" bit per char)
  • 3.pwm:: innehåller 5000 kontroll-C-tecken (ascii 03) (två "1" bitar per char)
  • 7.pwm:: innehåller 5000 kontroll-G-tecken (ascii 07) (tre "1" bitar per char)
  • 15.pwm:: innehåller 5000 kontroll-O-tecken (ascii 15) (fyra "1" bitar per char)
  • 31.pwm:: innehåller 5000 kontroll-_ tecken (ascii 31) (fem "1" bitar per char)
  • 63.pwm:: innehåller 5000 "?" tecken (ascii 63) (sex "1" bitar per tecken)
  • 127.pwm:: innehåller 5000 DEL -tecken (ascii 127) (sju "1" bitar per tecken)

(Nu när jag har ritat bilder kommer du att märka att de faktiska bitmönstren inte är idealiska. Eftersom rs232 seriell sänder LSB först vill vi verkligen flytta till nollor istället för ettor. En övning för studenten!)

Steg 4: Spela med DOS: Konfigurera din COM -port och kopiera filerna

Spela med DOS: Konfigurera din COM -port och kopiera filerna
Spela med DOS: Konfigurera din COM -port och kopiera filerna

9600 bps är en vanlig bitrate. Det matchar fint till "ungefär" en byte per millisekund, så i det här fallet motsvarar det en PWM -frekvens på 1000Hz, vilket jag tycker borde vara ok för små motorer. Du kan experimentera med olika bithastigheter för att se hur saker fungerar, vilket är en av fördelarna med den här metoden. Skapa ett DOS -fönster (eller "Kommandotolken") (förutsatt att du använder ett Windows OS) och konfigurera din komport som: mode com1: 9600, n, 7, 1 "Det säger att kommaporten ska köras med 9600bps och skicka 7 bitar i varje tecken (för att matcha våra 7 olika bitlängder.)" n "betyder INGEN paritet, så det blir de enda databitarna. "1" betyder att det kommer att finnas en "stopp" -bit, som hindrar oss från att slå på motorn hela vägen (oj.) Så nu kan du slå på motorn med kommandon gillar: kopiera 0.pwm com1: Eftersom vi skickar 5000 tecken på cirka 1 per millisekund bör motorn slå på nära full hastighet i cirka 5 sekunder. Om du vill ha mindre än 5 sekunder gör du en kortare fil. På samma sätt, du kan göra: kopiera 127.pwm com1: för att köra motorn med lägsta möjliga varvtal. Med den inställning jag hade skulle motorn inte gå alls med något "långsammare" än 31.pwm, men YMMV (jag tunnar k Jag hade en 12V -motor som körde 5V batterier.) Kommandot COPY låter dig stränga ihop filer, så om du vill att din motor ska gå snabbare och sedan sakta ner igen kan du göra något som: kopiera 31.pwm+15. pwm+7.pwm+0.pwm+7.pwm+15.pwm+31.pwm com1:

Steg 5: Styr motorn från ett program

Styr motorn från ett program
Styr motorn från ett program

Om du skriver ett program kan du förmodligen öppna COM1: som en fil och helt enkelt skriva till det som om det vore någon annan fil. Att klara av de perioder som motorn är på genom att mata ut ett visst antal tecken verkar vara mycket praktiskt. Glöm inte att systemet med stor sannolikhet kommer att buffra tecknen som du skickar till serieporten, så bara för att ett WRITE -samtal återkommer betyder inte att motorn har gjort vad du sa till den. Eftersom vi inte gör något "snyggt" med komportsignalerna, ska du inte behöva undersöka de otroliga alternativen som det kan stödja. (även om du kan ta reda på hur du skickar en BREAK -sekvens till komporten, är det ett kontinuerligt "0" -läge och kommer att driva motorn hela vägen; mer än att skicka kontinuerliga 0 tecken.)

Om ditt programmeringsspråk inte låter dig mata ut till COM1:, kan du fortfarande styra motorn genom att "ringa" DOS för att utföra kopieringskommandon.. på ditt system, men jag kunde inte räkna ut exakt vilka bitar som behövdes. Programmet är både förenklat och svårare att förstå (förlåt) genom att vara flertrådad. En tråd gör inget annat än utmatning till serieporten och huvudtråden läser rullningslisten och uppdaterar information som används av serietråden.)

Steg 6: Experimentera

Experimentera!
Experimentera!

Om saker och ting fungerar i princip ger det mycket utrymme för experiment.

  • Fixa mina bitmönster!
  • Spelar bithastigheten mycket?
  • Måste du styra bredden på "på" och "av" pulser, eller är det helt enkelt att kontrollera deras förhållande?
  • Om du bara behöver kontrollera förhållandet kan du överväga sekvenser med flera tecken med högre bithastigheter för att få fler hastighetsnivåer. Utmatning 0 följt av 127 skulle vara ungefär hälften på.
  • Detta bör fungera för att dimma ficklampor också.

Rekommenderad: