Motorize IoT med ESP8266 (4 / 6 steg)
Steg 4: Köra DC-motorer
A + PIN-koden (D1) styr PWM ut för den första DC-motorn och A-(D3) pin styr riktningen. PWM-ut driver motorn och tillåta fors varvtalsreglering. Till exempel skapar intermittensfaktor 50% i praktiken en lägre spänning. Det har ingenting att göra med puls räkningen. A - riktning kontrollen helt enkelt går låg eller hög, effektivt vända spänning och som sådan spin riktningen av motorn. Observera att du kan köra motorer med separat ström (vanligtvis högre spänning) genom att ansluta motor till VM och NodeMCU makten till VIN. Viktig anmärkning: om du använder två kraftkällor, ta bort bygeln som förbinder VM och VIN.
Prova det, gör så här:
- Anslut (-) (oftast svart) bly från motor till A -
- Ansluta till (+) (vanligtvis rött) bly från motor till A +
- Bifoga motor B på samma sätt
- Använda ESPlorer, ladda upp init.lua (nedan)
Efter uppladdningen, återställa och titta på en motors sväng, vända och stoppa. Att upprepa, tryck på återställer igen. Obviusly detta särskilt beteende är inte särskilt användbar annat än för demo ändamål. Motorerna ska styras över wifi men det är för del två av detta instructable. Efter lastning/kör filen kan du kontrollera motorerna från ESPlorer kommandot koppling med samtal till den motoriska funktion, t.ex.
> motor_a (FWD, 100)
--motordrive: init.lua
pin_a_speed = 1
pin_a_dir = 3
pin_b_speed = 2
pin_b_dir = 4
FWD = gpio. HÖG
REV = gpio. LÅG
skyldighet = 1023
--inleda motor A
gpio.mode (pin_a_speed, gpio. OUTPUT)
gpio.write (pin_a_speed, gpio. LÅG)
PWM.Setup(pin_a_speed,1000,Duty)--PWM 1KHz, plikt 1023
PWM.start(pin_a_speed)
PWM.setduty(pin_a_speed,0)
gpio.mode (pin_a_dir, gpio. OUTPUT)
--inleda motor B
gpio.mode (pin_b_speed, gpio. OUTPUT)
gpio.write (pin_b_speed, gpio. LÅG)
PWM.Setup(pin_b_speed,1000,Duty)--PWM 1KHz, plikt 1023
PWM.start(pin_b_speed)
PWM.setduty(pin_b_speed,0)
gpio.mode (pin_b_dir, gpio. OUTPUT)
--hastighet är 0 - 100
funktionen motor (pin_speed, pin_dir, dir, hastighet)
gpio.write(pin_dir,dir)
PWM.setduty (pin_speed, (hastighet * duty) / 100)
slutet
funktion motor_a (dir, hastighet)
motor (pin_a_speed, pin_a_dir, dir, hastighet)
slutet
funktion motor_b (dir, hastighet)
motor (pin_b_speed, pin_b_dir, dir, hastighet)
slutet
-------------------------------------------------
--start motorer 100% hastighet framåt
motor_a (FWD, 100)
motor_b (FWD, 100)
--vända motorer efter 4s
TMR.register (0, 4000, tmr. ALARM_SINGLE, function()
motor_a (REV, 100)
motor_b (REV, 100)
avsluta)
TMR.start(0)
--inaktiverar motorer efter 8s
TMR.register (1, 8000, tmr. ALARM_SINGLE, function()
motor_a (FWD, 0)
motor_b (FWD, 0)
avsluta)
TMR.start(1)